MySQL-常用数据表操作SQL汇总
更新记录
2022年6月16日 发布。
2022年6月11日 将笔记迁移到博客中。
数据表操作
显示所有表
显示当前所在数据库的表
SHOW TABLES;
显示指定数据库的表
SHOW TABLES FROM <数据库名称>;
显示所有列
SHOW COLUMNS FROM 表名;
创建表
CREATE TABLE [IF NOT EXISTS] 表名
(
字段1 数据类型 [约束] [默认值],
字段2 数据类型 [约束] [默认值],
...
【表级别约束条件】
)[ENGINE=<存储引擎>] [CHARSET=<字符编码>] [COLLATE <排序方式>];
从其他表复制结构(全部字段)
CREATE TABLE 新表名 LIKE 旧表名;
从其他表复制结构和数据(指定字段)
CREATE TABLE 新表名
SELECT 旧表的列... FROM 旧表名;
从其他表复制结构(指定字段)
CREATE TABLE 新表名
SELECT 旧表的列... FROM 旧表名
WHERE 1=0;
从其他表复制结构(指定字段)(指定条件的数据)
CREATE TABLE 新表名
SELECT 旧表的列... FROM 旧表名
WHERE <条件>;
创建表后增加注释
CREATE TABLE user (
-- ...
) COMMENT='用户表';
注意:MySQL 中数据列不区分大小写,但数据库和数据表区分大小写
注意:该操作会使用默认的表字符类型和表默认引擎,而不是旧表的值
查看表结构
DESCRIBE 表名;
或者
DESC 表名;
查看创建表的语句
SHOW CREATE TABLE 表名;
字段约束与修饰
主键
字段 数据类型 PRIMARY KEY;
或者
[CONSTRAINT <约束名>] PRIMARY KEY ([字段名,字段名...])
主键约束 和 唯一约束对比
保证唯一性 | 是否允许为空 | 一个表中可以有多少个 | 是否允许组合 | |
---|---|---|---|---|
主键 | 是 | 否 | 至多有1个 | 可以 |
唯一 | 是 | 是 | 可以有多个 | 可以 |
外键
[CONSTRAINT <外键约束名>] FOREIGN KEY
(字段1,....)
REFERENCES <主表>(字段1,....);
或者
ALTER TABLE <表名> ADD [CONSTRAINT <外键约束名>] FOREIGN KEY
(字段1,....)
REFERENCES <主表>(字段1,....);
非空
字段 数据类型 NOT NULL;
唯一
字段 数据类型 UNIQUE;
或者
[CONSTRAINT <约束名>] UNIQUE(字段名);
或者
ALTER TABLE <表名> ADD [CONSTRAINT <约束名>] UNIQUE(字段名);
默认值
字段 数据类型 DEFAULT 默认值;
自增
字段 数据类型 AUTO_INCREMENT;
字段 数据类型 AUTO_INCREMENT = 666;
注意:必须时键才可以使用自增,比如(主键、唯一)
非负数
字段 数据类型 UNSIGNED;
注意:只能用于整数
填充零
字段 数据类型 ZEROFILL
注意:只能用于整数
修改表
修改表名
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
修改表的存储引擎
ALTER TABLE <表名> ENGINE = <改后的存储引擎>;
修改表的默认字符
ALTER TABLE <表名> CHARSET = '字符类型';
删除表的外键约束
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;
删除表
DROP TABLE [IF EXISTS] 表名,...;
优化表
OPTIMIZE TABLE 表名;
修改表的字段
添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST | AFTER 已存在字段名];
删除字段
ALTER TABLE <表名> DROP <字段名>;
修改字段的数据类型/约束/位置
ALTER TABLE <表名> MODIFY <字段名> <数据类型> [约束条件] [FIRST | AFTER 已存在字段名];
修改字段的排列顺序
ALTER TABLE <表名> MODIFY <字段名> <数据类型> FIRST | AFTER <字段2>;
修改字段的字段名
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
添加约束
ALTER TABLE 表名 ADD [CONSTRAINT 约束名] 约束类型(字段名)
本文来自博客园,作者:重庆熊猫,转载请注明原文链接:https://www.cnblogs.com/cqpanda/p/16366181.html