文章目录
-
- [1. 创建表](#1. 创建表)
- [2. 创建表案例](#2. 创建表案例)
- [3. 查看表结构](#3. 查看表结构)
- [4. 修改表](#4. 修改表)
-
- [4.1 修改表名为 user](#4.1 修改表名为 user)
- [4.2 在 user 表中添加两条记录](#4.2 在 user 表中添加两条记录)
- [4.3 在 user 表中添加一个字段(新增一列)](#4.3 在 user 表中添加一个字段(新增一列))
- [4.4 修改 name 字段的属性,将其长度改成 60](#4.4 修改 name 字段的属性,将其长度改成 60)
- [4.5 删除 password 列](#4.5 删除 password 列)
- [4.6 将 name 列修改为 xingming](#4.6 将 name 列修改为 xingming)
- [5. 删除表](#5. 删除表)
1. 创建表
语法
sql
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
说明:
- field 表示列名
- datatype 表示列的类型
- character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
- collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
2. 创建表案例
老规矩,在建表之前,我们先创建一个 user_db
的数据库:
sql
// 建库
create database user_db;
// 使用库
use user_db;
结果如下:

建表的语法:
sql
create table users (
id int,
name varchar(20) comment '用户名',
password char(32) comment '密码是32位的md5值',
birthday date comment '生日'
) character set utf8 engine MyISAM;
结果如下:

说明:不同的存储引擎,创建表的文件不一样。users
表存储引擎是 MyISAM
,在数据目中有三个不同的文件,分别是:
- users.frm:表结构
- users.MYD:表数据
- users.MYI:表索引
我们可以在 /var/lib/mysql/user_db
目录下查看:

此时,我们再建一个 engine
是 innodb
的数据库,观察存储目录:

此时可以看到存储引擎为 innodb
的表只有 2 个配置文件。

3. 查看表结构
查看表结构之前,先确认自己在哪一个数据库中:
sql
select database();
结果如下:

再查看我当前所在的这个数据库里面有几张表:
sql
show tables;
结果如下:

接着再查看表的详细信息:
sql
desc 表名;
结果如下:

其中,每一列的含义如下:

除此之外,我们还可以查看表创建的时候的详细信息:
sql
show create table user1 \G
结果如下:

4. 修改表
在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。
语法如下:
sql
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...);
ALTER TABLE tablename DROP (column);
我们来看几个案例:
4.1 修改表名为 user
语法:
sql
alter table users rename to employee;
结果如下:

注意: to
可以省掉。
4.2 在 user 表中添加两条记录
语法:
sql
insert into user value (1, '张三', '123456', '2000-10-1');
insert into user value (2, '李四', '1234567', '2002-12-25');
结果如下:

4.3 在 user 表中添加一个字段(新增一列)
主要用于保存图片路径,并且把新增的列放到表的最后。
sql
alter table user add image_path varchar(128) comment '用户的头像路径' after birthday;
结果如下,并且可以看到插入新字段后,对原来表中的数据没有影响:

4.4 修改 name 字段的属性,将其长度改成 60
sql
alter table user modify name varchar(60);
结果如下:

4.5 删除 password 列
sql
alter table user drop password;
结果如下:

注意:删除字段一定要小心,删除字段及其对应的列数据都没了。
4.6 将 name 列修改为 xingming
sql
alter table user change name xingming varchar(60) comment '用户的名字';
结果如下:

5. 删除表
语法:
sql
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
示例:
sql
drop table user;
结果如下:
