| SQL 功能 | 动词 |
|---|---|
| 数据查询 | SELECT |
| 数据定义 | CREATE, DROP, ALTER |
| 数据操纵 | INSERT, UPDATE, DELETE |
| 数据控制 | GRANT, REVOKE |
| 对象 | 创建 | 删除 | 修改 |
|---|---|---|---|
| 数据库 | CREATE DATABASE | DROP DATABASE | - |
| 表 | CREATE TABLE | DROP TABLE | ALTER TABLE |
| 视图 | CREATE VIEW | DROP VIEW | - |
| 索引 | CREATE INDEX | DROP INDEX | - |
创建表
create table 表名(
字段1 字段1类型 [约束] [comment 字段1注释],
字段2 字段2类型 [约束] [comment 字段2注释],
......
字段n 字段n类型 [约束] [comment 字段n注释]
)[comment 表注释] ;约束
| 约束 | 描述 | 关键字 |
|---|---|---|
| 非空约束 | 限制该字段值不能为null | not null |
| 唯一约束 | 保证字段的所有数据都是唯一、不重复的 | unique |
| 主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | primary key |
| 默认约束 | 保存数据时,如果未指定该字段值,则采用默认值 | default |
| 外键约束 | 让两张表的数据建立连接,保证数据的一致性和完整性 | foreign key |
外键约束
-- 创建表时指定
create table 表名(
...
[constraint] [外键名称] foreign key (外键字段名) references 主表 (主表列名)
);
-- 建完表后,添加外键
alter table 表名 add constraint 外键名称 foreign key (外键字段名) references
主表(主表列名);数据类型
数值类型
| 类型 | 大小 | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 |
|---|---|---|---|---|
| TINYINT | 1byte | (-128,127) | (0,255) | 小整 数值 |
| SMALLINT | 2bytes | (-32768,32767) | (0,65535) | 大整 数值 |
| MEDIUMINT | 3bytes | (-8388608, 8388607) | (0,16777215) | 大整 数值 |
| INT/INTEGER | 4bytes | (-2147483648, 2147483647) | (0,4294967295) | 大整 数值 |
| BIGINT | 8bytes | (-2^63,2^63-1) | (0,2^64-1) | 极大 整数 值 |
| FLOAT | 4bytes | (-3.402823466 E+38, 3.402823466351 E+38) | 0 和 (1.175494351 E-38, 3.402823466 E+38) | 单精 度浮 点数 值 |
| DOUBLE | 8bytes | (-1.7976931348623157E+308,1.7976931348623157E+308) | 0 和 (2.2250738585072014 E- 308, 1.7976931348623157E+308) | 双精 度浮 点数 值 |
| DECIMAL | 依赖于M(精度)和D(标度) 的值 | 依赖于M(精度)和D(标度)的值 | 小数 值(精 确定 |
字符串类型
| 类型 | 大小 | 描述 |
|---|---|---|
| CHAR | 0-255 bytes | 定长字符串(需要指定长度) |
| VARCHAR | 0-65535 bytes | 变长字符串(需要指定长度) |
| TINYBLOB | 0-255 bytes | 不超过255个字符的二进制数据 |
| TINYTEXT | 0-255 bytes | 短文本字符串 |
| BLOB | 0-65 535 bytes | 二进制形式的长文本数据 |
| TEXT | 0-65 535 bytes | 长文本数据 |
| MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
| MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
| LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
| LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
时间日期类型
| 类型 | 描述 | 大小 | 范围 | 格式 | ||
|---|---|---|---|---|---|---|
| DATE | 日期值 | 3 | 1000-01-01至9999-12-31 | YYYY-MM-DD | ||
| TIME | 时间值或持续时间 | 3 | -838:59:59 至838:59:59 | HH:MM:SS | ||
| YEAR | 年份值 | 1 | 1901 至 2155 | YYYY | ||
| DATETIME | 混合日期和时间值 | 8 | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | XXXX-WW-aC HH:MM:SS | ||
| TIMESTAMP | 混合日期和时间值,时间戳 | 4 | 1970-01-01 00:00:01 至 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS |
修改表
添加字段:alter table 表名 add 字段名 类型(长度) [comment 注释][约束];
修改字段类型:alter table 表名 modify 字段名 新数据类型(长度);
修改字段名和字段类型:alter table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释][约束];
删除字段:alter table 表名 drop column 字段名;
修改表名:rename table 表名 to 新表名;
删除表:drop table [if exists] 表名;
索引
创建索引
create [ unique ] index 索引名 on 表名 (字段名,... ) ;
查看索引
show index from 表名;
删除索引
drop index 索引名 on 表名;