表结构的增删改(DDL)

操作常用语句说明
增(创建表)CREATE TABLE [IF NOT EXISTS] 表名 ( id INT PRIMARY KEY AUTO_INCREMENT, 列名 类型 约束, ... ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;可指定存储引擎、字符集、自增列、索引等。也可用 
• CREATE TABLE ... AS SELECT ... :根据查询出来的数据创建新表,包含数据。
• CREATE TABLE ... LIKE 旧表 :根据另一个表的定义创建一个空表,包括原始表中定义的任何列属性和索引,但没有数据。
删(删除表)DROP TABLE [IF EXISTS] 表名;彻底删除表结构和数据,不可回滚(除非在事务中且适用引擎)。若只想清空数据保留结构,用 TRUNCATE TABLE 表名;。
改(修改表)ALTER TABLE 表名 ...常用子句:
• 加列:ADD 列名 类型 [约束];
• 删列:DROP COLUMN 列名;
• 修改列类型:MODIFY 列名 新类型;
• 重命名列:CHANGE 旧名 新名 类型;
• 重命名表:RENAME TABLE 旧名 TO 新名; 或 ALTER TABLE 旧名 RENAME TO 新名;
• 加/删索引、主键、外键等。

sql示例

-- 创建用户表
CREATE TABLE IF NOT EXISTS users (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) DEFAULT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 
-- 新增一列
ALTER TABLE users ADD COLUMN age TINYINT UNSIGNED;
 
-- 删除列
ALTER TABLE users DROP COLUMN email;
 
-- 重命名表
RENAME TABLE users TO accounts;
 
-- 通过表查询创建表
DROP TABLE IF EXISTS company_in_out_label_tmp;
create table company_in_out_label_tmp as 
select *
from data_center.t_company_changes
WHERE project_name = "地址变更(住所地址、经营场所、驻在地址等变更)" and credit_code != ''
  • 如何为导入数据创建表格