前面说过数据库的相关操作,接下来是对表进行操作,对表进行操作的前提是进入到数据库当中,因此需要先使用 USE 指定使用的某个数据库。
创建表
:
CREATE TABLE <表名> ([表定义选项]) [表选项] [分区选项];
- CREATE TABLE 用于创建表的关键字
- <表名>:指定要创建表的名称(必须符合标识符命名规则),表名称格式为 db_name.tbl_name(其中db_name是数据库名称,tbl_name是数据表的名称),在当前数据库中建表可省略数据库的名字,例如 tbl_name
- 表定义选项用于定义表中的各个字段信息,包括列名、数据类型、空值、默认值、完整性约束或表索引等
:
修改表
有时候创建表的时候,我们可能会忘掉了某个字段或者写错了数据类型,这个时候就可以通过下面的命令来修改表结构、表名称等
:
ALTER TABLE <表名> [修改选项]
其中修改选项如下:
ADD COLUMN <列名> <类型> # 添加新列
CHANGE COLUMN <旧列名> <新列名> <新列类型> <位置> # 列重命名、改变数据类型和位置移动
MODIFY COLUMN <列名> <类型> # 改变类型和位置移
ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT } # 给某列删除或者添加默认值
DROP COLUMN <列名> # 删除某列
RENAME TO <新表名> # 表重命名
CHARACTER SET <字符集名> # 修改表字符集
COLLATE <校对规则名> # 修改表校对规则
:
修改表名:
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
修改表字符集和校对规则
ALTER TABLE 表名 [DEFAULT] CHARACTER SET <字符集名> [DEFAULT] COLLATE <校对规则名>;
查看表
:
以表格形式展示表结构
DESCRIBE <表名>; #
DESC <表名>; # 上一行代码的简写
以SQL语句的形式展示表结构
SHOW CREATE TABLE <表名>; # 可以通过 \g 或者 \G 控制格式,此时不需要加分号 ;
两者区别
SHOW CREATE TABLE 展示的内容更加丰富,它可以展示出表的存储引擎和字符编码;
:
删除表
:
DROP TABLE [IF EXISTS] 表名1 [ ,表名2, 表名3 ...]
- IF EXISTS 用于在删除数据表之前判断该表是否存在。如果不加 IF EXISTS,当数据表不存在时 MySQL 将提示错误,中断 SQL 语句的执行;加上 IF EXISTS 后,当数据表不存在时 SQL 语句可以顺利执行,但是会发出警告。
- 表名1 [ ,表名2, 表名3 ...] 表示要被删除的数据表的名称。DROP TABLE 可以同时删除多个表,只要将表名依次写在后面,相互之间用逗号隔开即可。
- 删除时用户必须有删除权限并且删除表后,用户在该表上的权限不会自动删除。
:
该数据库中只有一张表,因此删除之后在查看时,数据库为空
删除表时可能遇到的问题
一、删除被其他表关联的主表(两种方案)
- 方案一:删除字表,在删除父表,缺点是删除数据过多
- 方案二:取消关联,在删除父表
删除关联的语句如下:
ALTER TABLE 字表 DROP FOREIGN KEY 子表中与父表关联的字段;
表字段的操作
上面的都是整体对表结构的设计,设计好之后难免会遇到增加,删除字段的操作,所以下面介绍的是表字段的 增删改查 操作
增加字段
:
ALTER TABLE <表名> ADD <新字段名><数据类型> [约束条件]; # 在末尾增加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST; # 在开头增加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] AFTER <已经存在的字段名>; # 在已存在的字段名后添加
- <表名> 为数据表的名字;
- <新字段名> 为所要添加的字段的名字;
- <数据类型> 为所要添加的字段能存储数据的数据类型;
- [约束条件] 是可选的,用来对添加的字段进行约束。
:
先查看表结构,然后增加 age 字段,最后在查看增加后的表结构
查看字段
:
:
修改字段
:
修改表名称和数据类型
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
- <旧字段名>:指修改前的字段名;
- <新字段名>:指修改后的字段名;
- <新数据类型>:指修改后的数据类型,可以将新数据类型设置成与原来一样
仅修改数据类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
- <表名>:指要修改数据类型的字段所在表的名称;
- <字段名>:指需要修改的字段;
- <数据类型>:指修改后字段的新数据类型
:
删除字段
:
ALTER TABLE <表名> DROP <字段名>;
:
删除表中的 age 字段