MySQL中,我们会对不同的项目创建不同的数据库来容纳它们的数据,而在这些库结构(关于 ‘库’ 的那点事)中,又细分成很多的表,而数据就是存储在这些表里的。
表是数据库中最小的结构,也是我们大部分时间进行操作的对象。
本篇就将介绍常用的表操作。
1. 表的创建
创建表的语法如下:
// 创建一个名为tableName的表
create table tableName(
列名1 类型1,
列名2 类型2,
列名3 类型3,
...
) character set 字符集 collate 校验规则 engine 存储引擎;
字符集校验规则和存储引擎的设置是可选选项。如果不进行设置,字符集默认为utf8,校验规则默认为utf8_general_ci,存储引擎默认为innodb。
字符集和校验规则在之前的文章里都解释过了,这里对存储引擎进行解释。
存储引擎决定了表存储在磁盘里的的文件形式。MySQL里有两种存储引擎:innodb和myisam,前者是MySQL默认存储引擎。区别如下:
创建表t1,t2。t1采用innodb存储引擎。t2采用myisam存储引擎。
存储结构如下。
接下来,看一个创建表的完整过程。
create database test;
use test;
// 字符集设置可以简写为 charset=字符集 的形式。SQL语句可以多行书写,以分号结尾即可
create table Person(name varchar(32), age int)
charset=utf8 collate utf8_general_ci engine myisam;
如图:
使用如下语句进行表结构的查询:
desc tableName;
对我们刚创建的Person表使用该语句,可以看到如下结果:
表的结构中个列的含义如下:
- Field:列名
- Type:列的类型
- NULL:列的元素是否允许为空
- key: 索引
- Default:该列默认值
- Extra:扩展
2. 表的修改
表在创建完了也不是一劳永逸,在之后的维护中,我们可能会对表进行一些修改,以适应新的数据。
表的修改操作使用 alter 关键字,接下来,具体介绍。
- 添加列 add
// 在表的最后添加新列,可选部分可以指定新列添加的位置
alter table tableName add colName colType [after 已存在列列名]
插入新的列之后,对原来表中的数据没有任何影响。
- 修改列类型 modify
// 修改colName列的类型
alter table tableName modify colName newType;
- 修改列名 change
// 将oldName列列名修改为newName,这里newName需要完整定义,所以还要加上类型名,当然,可以顺带将类型也进行修改
alter table tableName change oldName newName newType;
注意,change修改列类型时,规定新类型不能比旧的类型小,否则会报错。
- 删除列 drop
// 删除colName列
alter table tableName drop colName;
删除列属于高危操作,要谨慎。
- 修改表名 rename
// 将表tableName更名为newName,这里的 to 可以省略不写
alter table tableName rename [to] newName;
- 修改表的字符集/校验规则
// 修改表字符集
alter table tablName character set 字符集;
// 修改表校验规则
alter table tableName collate 校验规则
一般来说,创建表的时候指定的字符集和校验规则轻易不要该表,有可能影响表内其他的数据以及已规定好的操作。
表修改操作如下:
add:
modify,change,drop:
rename: