The ALTER TABLE statement can be used to add new columns in MySQL. For small tables, just use ALTER TABLE. For large tables, you can use the pt-online-schema-change tool to modify without locking the table, or create a new table and copy data to reduce the impact on the business. Backing up a database is crucial to prevent data loss.
MySQL add column? This question seems simple, but it actually has a secret. Do you think it's just a simple ALTER TABLE
sentence? Naive! In actual operation, there are many pitfalls. If you are not careful, the data will be inconsistent at the least, and the database will be crashed at the worst, making you cry without tears. This article will take you to understand easily and avoid those "reefs and dangerous shoals".
Let’s talk about the most basic ones. The ALTER TABLE
statement can indeed add columns, but its efficiency and security depend on your operation method and the amount of data in the table. For small tables, directly ALTER TABLE your_table ADD COLUMN new_column INT DEFAULT 0;
This command is enough, simple and crude, and done in one go. But for giant watches, don't do this! The database will lock the table, and the entire table will be unavailable. During this period, all read and write operations on the table will be blocked. Think about it, how does business paralysis feel?
So, for large tables, we need some strategies. One way is to use pt-online-schema-change
tool, which can modify the table structure without locking the table. This tool is part of Percona Toolkit and is powerful, but you need to read the documentation carefully before using it and figure out its parameter settings, otherwise unexpected problems are likely to occur. For example, it requires extra storage space, and you need to estimate the space size to avoid insufficient space causing operation failure. Moreover, the performance of this tool is also affected by the network environment and hardware conditions, so it is also important to choose the right server configuration. I used to ignore network delay, which caused this tool to run for too long and I almost got fired by my boss.
Another way is to create a new table, contain new columns, then copy the data of the old table to the new table, finally delete the old table, and rename the new table to the old table's name. Although this approach may seem cumbersome, it minimizes the impact on the business as the entire process does not lock tables. However, this approach requires considering data consistency, and you need to ensure the integrity of the data replication process, otherwise it will cause data loss. In addition, this method requires additional storage space and needs to be planned in advance.
Code example, suppose your table is called users
, you want to add a column named email
, type VARCHAR(255)
:
Method 1 (small table):
<code class="sql">ALTER TABLE users ADD COLUMN email VARCHAR(255) DEFAULT NULL;</code>
Method 2 (large table, using pt-online-schema-change):
<code class="bash">pt-online-schema-change --alter "ADD COLUMN email VARCHAR(255) DEFAULT NULL" D=your_database,t=users --execute ``` (記得替換`your_database`為你的數(shù)據(jù)庫名) **方法三(大型表,創(chuàng)建新表):**</code>
CREATE TABLE users_new LIKE users;
ALTER TABLE users_new ADD COLUMN email VARCHAR(255) DEFAULT NULL;
INSERT INTO users_new SELECT * FROM users;
RENAME TABLE users TO users_old, users_new TO users;
DROP TABLE users_old;
<code>記住,選擇哪種方法取決于你的實際情況。 沒有絕對的好壞,只有適合與否。 別盲目跟風,要根據(jù)你的表大小、數(shù)據(jù)量、業(yè)務需求等因素綜合考慮。 最后,別忘了備份你的數(shù)據(jù)庫! 這可是最重要的! 數(shù)據(jù)庫崩潰了,你哭都沒地方哭去。 這可是血淚教訓??!</code>
The above is the detailed content of How to add columns in MySQL?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

MySQL query performance optimization needs to start from the core points, including rational use of indexes, optimization of SQL statements, table structure design and partitioning strategies, and utilization of cache and monitoring tools. 1. Use indexes reasonably: Create indexes on commonly used query fields, avoid full table scanning, pay attention to the combined index order, do not add indexes in low selective fields, and avoid redundant indexes. 2. Optimize SQL queries: Avoid SELECT*, do not use functions in WHERE, reduce subquery nesting, and optimize paging query methods. 3. Table structure design and partitioning: select paradigm or anti-paradigm according to read and write scenarios, select appropriate field types, clean data regularly, and consider horizontal tables to divide tables or partition by time. 4. Utilize cache and monitoring: Use Redis cache to reduce database pressure and enable slow query

Temporary tables are tables with limited scope, and memory tables are tables with different storage methods. Temporary tables are visible in the current session and are automatically deleted after the connection is disconnected. Various storage engines can be used, which are suitable for saving intermediate results and avoiding repeated calculations; 1. Temporary tables support indexing, and multiple sessions can create tables with the same name without affecting each other; 2. The memory table uses the MEMORY engine, and the data is stored in memory, and the restart is lost, which is suitable for cache small data sets with high frequency access; 3. The memory table supports hash indexing, and does not support BLOB and TEXT types, so you need to pay attention to memory usage; 4. The life cycle of the temporary table is limited to the current session, and the memory table is shared by all connections. When choosing, it should be decided based on whether the data is private, whether high-speed access is required and whether it can tolerate loss.

Ordinary investors can discover potential tokens by tracking "smart money", which are high-profit addresses, and paying attention to their trends can provide leading indicators. 1. Use tools such as Nansen and Arkham Intelligence to analyze the data on the chain to view the buying and holdings of smart money; 2. Use Dune Analytics to obtain community-created dashboards to monitor the flow of funds; 3. Follow platforms such as Lookonchain to obtain real-time intelligence. Recently, Cangming Money is planning to re-polize LRT track, DePIN project, modular ecosystem and RWA protocol. For example, a certain LRT protocol has obtained a large amount of early deposits, a certain DePIN project has been accumulated continuously, a certain game public chain has been supported by the industry treasury, and a certain RWA protocol has attracted institutions to enter.

The security of remote access to MySQL can be guaranteed by restricting permissions, encrypting communications, and regular audits. 1. Set a strong password and enable SSL encryption. Force-ssl-mode=REQUIRED when connecting to the client; 2. Restrict access to IP and user rights, create a dedicated account and grant the minimum necessary permissions, and disable root remote login; 3. Configure firewall rules, close unnecessary ports, and use springboard machines or SSH tunnels to enhance access control; 4. Enable logging and regularly audit connection behavior, use monitoring tools to detect abnormal activities in a timely manner to ensure database security.

The method of viewing the storage engine of MySQL is as follows: 1. You can use the command SHOWVARIABLESLIKE'default_storage_engine'; 2. You can use the storage engine used to view a certain table to view the storage engine through SHOWCREATETABLE or query information_schema.TABLES; 3. You can use SELECTTABLE_NAME,ENGINEFROMinformation_schema.TABLESWHERETABLE_SCHEMA='your_database'; 4. Other methods include on the command line

To configure MySQL's SSL/TLS encrypted connection, first generate a self-signed certificate and correctly configure the server and client settings. 1. Use OpenSSL to generate CA private key, CA certificate, server private key and certificate request, and sign the server certificate yourself; 2. Place the generated certificate file in the specified directory, and configure the ssl-ca, ssl-cert and ssl-key parameters in my.cnf or mysqld.cnf and restart MySQL; 3. Force SSL on the client, restrict users from connecting only through SSL through the GRANTUSAGE command, or specify the --ssl-mode=REQUIRED parameter when connecting; 4. After logging in, execute \s to check SSL status confirmation

To reset the starting value of the MySQL self-increment field, you can set the AUTO_INCREMENT value through ALTERTABLE, clear the table and reset it with TRUNCATE, or manually set it after DELETE; you can check the current self-increment value and execute SHOWCREATETABLEyour_table_name; information similar to AUTO_INCREMENT=100 will be displayed in the output; when setting manually, make sure that the setting value is the current maximum ID 1, otherwise MySQL will automatically adjust; TRUNCATE will delete data and reset the self-increment value, but DELETE will not; be careful that the actual maximum ID 1 may be restored after the InnoDB engine restarts to avoid conflicts caused by too small settings.

CTE is a temporary result set in MySQL used to simplify complex queries. It can be referenced multiple times in the current query, improving code readability and maintenance. For example, when looking for the latest orders for each user in the orders table, you can first obtain the latest order date for each user through the CTE, and then associate it with the original table to obtain the complete record. Compared with subqueries, the CTE structure is clearer and the logic is easier to debug. Usage tips include explicit alias, concatenating multiple CTEs, and processing tree data with recursive CTEs. Mastering CTE can make SQL more elegant and efficient.
