SQL 功能动词
数据查询SELECT
数据定义CREATE, DROP, ALTER
数据操纵INSERT, UPDATE, DELETE
数据控制GRANT, REVOKE
对象创建删除修改
数据库CREATE DATABASEDROP DATABASE-
CREATE TABLEDROP TABLEALTER TABLE
视图CREATE VIEWDROP VIEW-
索引CREATE INDEXDROP INDEX-

创建表

create table 表名( 
字段1 字段1类型 [约束] [comment 字段1注释],
字段2 字段2类型 [约束] [comment 字段2注释],
...... 
字段n 字段n类型 [约束] [comment 字段n注释]
)[comment 表注释] ;

约束

约束描述关键字
非空约束限制该字段值不能为nullnot null
唯一约束保证字段的所有数据都是唯一、不重复的unique
主键约束主键是一行数据的唯一标识,要求非空且唯一primary key
默认约束保存数据时,如果未指定该字段值,则采用默认值default
外键约束让两张表的数据建立连接,保证数据的一致性和完整性foreign key

外键约束

-- 创建表时指定
create table 表名(
 ...
 [constraint] [外键名称] foreign key (外键字段名) references 主表 (主表列名)
);
-- 建完表后,添加外键
alter table 表名 add constraint 外键名称 foreign key (外键字段名) references
主表(主表列名);

数据类型

数值类型

类型大小有符号(SIGNED)范围无符号(UNSIGNED)范围描述
TINYINT1byte(-128,127)(0,255)小整
数值
SMALLINT2bytes(-32768,32767)(0,65535)大整
数值
MEDIUMINT3bytes(-8388608, 8388607)(0,16777215)大整
数值
INT/INTEGER4bytes(-2147483648, 2147483647)(0,4294967295)大整
数值
BIGINT8bytes(-2^63,2^63-1)(0,2^64-1)极大
整数
FLOAT4bytes(-3.402823466 E+38, 3.402823466351 E+38)0 和 (1.175494351 E-38, 3.402823466 E+38)单精
度浮
点数
DOUBLE8bytes(-1.7976931348623157E+308,1.7976931348623157E+308)0 和 (2.2250738585072014 E-
308, 1.7976931348623157E+308)
双精
度浮
点数
DECIMAL依赖于M(精度)和D(标度) 的值依赖于M(精度)和D(标度)的值小数
值(精
确定

字符串类型

类型大小描述
CHAR0-255 bytes定长字符串(需要指定长度)
VARCHAR0-65535 bytes变长字符串(需要指定长度)
TINYBLOB0-255 bytes不超过255个字符的二进制数据
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

时间日期类型

类型描述大小范围格式
DATE日期值31000-01-01至9999-12-31YYYY-MM-DD
TIME时间值或持续时间3-838:59:59 至838:59:59HH:MM:SS
YEAR年份值11901 至 2155YYYY
DATETIME混合日期和时间值81000-01-01 00:00:00 至 9999-12-31 23:59:59XXXX-WW-aC
HH:MM:SS
TIMESTAMP混合日期和时间值,时间戳41970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-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 表名;