前言
在第一篇文章中,我们将所有的SQL语句分为三种,分别是DDL,DML,DCL。其分别对应的是数据定义语言,数据操作语言,数据控制语言。其中表的操作主要设计DDL与DML。DDL主要在建表、删表、修改表体现。而DML主要体现在插入表内容、删除表内容体现。
创建表
创建表的SQL如下:
CREATE TABLE [IF NOT EXISTS] table_name(
field1 datatype1 [COMMENT '注释信息'],
field2 datatype2 [COMMENT '注释信息'],
field3 datatype3 [COMMENT '注释信息']
)[CHARSET=charset_name] [COLLATE=collation_name] [ENGINE=engine_name];
说明:
- field 表示列名。
- datatype 表示列的类型。
- character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准。
- COMMENT用于对指定列添加注释信息。
- ENGINE用于指定表所采用的存储引擎。
创建表案例
创建一个users表,其用于表示某位人的基本信息:id号、用户名、用户的密码、生日。每个元素后面都带上注释,搜索引擎使用MyISAM,字符集使用utf8。
不要忘记,在创建表之前要先创建数据库并且use该数据库。
其创建案例如下:

不同的存储引擎,创建表的文件不一样。其中users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:
- users.frm:表结构
- users.MYD:表数据
- users.MYI:表索引
类似如下:
查看表结构
SQL语法如下:
desc 表名;
查看我们刚才创建的表,查询结果如下:

- Field表示该字段的名字。
- Type表示该字段的类型。
- Null表示该字段是否允许为空。
- Key表示索引类型,比如主键索引为PRI。
- Default表示该字段的默认值。
- Extra表示该字段的额外信息说明。
如果想要查看更详细的细节,可以采用show create tables 表名。该SQL语句。

修改表
在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。
ALTER TABLE table_name ADD 新增列名 新增列的属性;
ALTER TABLE table_name MODIFY 列名 修改后的列属性;
ALTER TABLE table_name DROP 列名;
ALTER TABLE table_name RENAME [TO] 新表名;
ALTER TABLE table_name CHANGE 列名 新列名 新列属性;
这里我们还是采用刚才创建的users表。
ADD
在users表中新增一列用于保存用户的电话。如下:

除此之外还可以将新增的列指定在表的位置,需要使用SQL语句的after。比如我们再新增addr在name后。

补充:新增列的其他属性如果不指定全为系统默认。
MODIFY
我们将刚才新增的addr修改为varchar(128)。
结果如下:

DROP
我们将addr列删除。

RANAME
我们将users表名修改为employee。
CHANGE
我们刚修改表名后的employee表中的tel修改为email。

删除表
删除表的SQL如下:
DROP [TEMPORARY] TABLE [IF EXISTS] table_name;
其中在创建表语句中加上TEMPORARY关键字,那么服务器将创建出一个临时表,该表会在你与服务器的会话终止时自动消失。TEMPORARY表的名字可以与某个已有的永久表相同,当有TEMPORARY表存在时,对应的永久表会隐藏起来(即无法访问)。为了避免重新连接后(TEMPORARY已经不存在),在未做检测的情况下调用DROP误删了对应永久表,因此在使用DROP删除临时表时需要带上TEMPORARY关键字。
将employee表删除。

