1.1 直接创建表:
CREATE TABLE
[ IF NOT EXISTS] tb_name - - 不存在才创建,存在就跳过
(column_name1 data_type1 - - 列名和类型必写
[PRIMARY KEY - - 可选的约束,主键
| FOREIGN KEY - - 外键,引用其他表的主键
| AUTO_INCREMENT - - 自增ID
| COMMENT comment - - 列注释(评论)
| DEFAULT default_value - - 默认值
| UNIQUE - - 唯一性约束,不允许两条记录该列的值相同
| NOT NULL - - 该列非空
] , . . .
) [CHARACTER SET charset] - - 字符集编码
[ COLLATE collate_value ] - - 列排序和比较时的规则(是否区分大小写等)
1.2 从另一张表复制表结构创建表:CREATE TABLE tb_name LIKE tb_name_old
1.3 从另一张表的查询结果创建表:CREATE TABLE tb_name AS SELECT * FROM tb_name_old WHERE options
2.1 修改表:ALTER TABLE 表名 修改选项。
选项集合:
{ ADD COLUMN <列名> <类型> [ FIRST | AFTER COLUMN <旧列名> ] - - 增加列,默认添加到表的最后一列,FIRST指定到第一列,AFTER添加到某列之后
| CHANGE COLUMN <旧列名> <新列名> <新列类型> - - 修改列名或类型
| ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFALUT } - - 修改 / 删除 列的默认值
| MODIFY COLUMN <列名> <类型> - - 修改列类型
| DROP COLUMN <列名> - - 删除列
| RENAME TO <新表名> - - 修改表名
| CHARACTER SET <字符集名> - - 修改字符集
| COLLATE <校对规则名> } - - 修改校对规则(比较和排序时用到)
}
3. 删除表
3.1 DELETE
删除整张表:DELETE FROM TABLE tb_name;
删除部分数据,添加 where自居:DELETE FROM TABLE tb_name WHERE ...;
说明:
1)属于DML语言,每次删除一行,都在事务日志中为所删除的每行记录一项。产生 rollback,事务提交之后才生效;如果有相应的 Trigger,执行的时候将被触发,如果删除大数据量的表速度会很慢。
2)删除表中的数据而不删除表的结构(定义),同时也不释放空间。
3.2 TRUNCATE
只能操作表,将表中的数据全部删除,在功能上和不带 where字句的 delete语句相同:
TRUNCATE TABLE tb_name;
说明:
1)默认情况下,truncate通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放,所以使用的系统和事务日志资源少,可以使用 reuse storage; truncate会将高水线复位(回到最开始)。
2)truncate是DDL语言,操作立即生效,自动提交,原数据不妨到 rollback segment中,不能回滚,操作不触发 trigger。
3)删除内容、释放空间但不删除表结构(定义)。
3.3 DROP
drop语句将删除表的结构,以及被依赖的约束(constraint),触发器(trigger),索引(index);
DROP TABLE tb_name;
说明:
1)删除之后,依赖于该表的存储过程 / 函数将保留,但是变为 invalid状态。
2)drop也属于DDL语言,立即执行,执行速度最快。
3)删除内容和定义,释放空间。