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)删除内容和定义,释放空间。