「前言」文章内容大致是数据库表的基本操作
「归属专栏」MySQL
「主页链接」个人主页
「笔者」枫叶先生(fy)
「枫叶先生有点文青病」「句子分享」
人生当苦无妨,良人当归即好。
——烽火戏诸侯《雪中悍刀行》

 
目录
- 一、创建表
 - 二、修改表
 - 三、 删除表
 
一、创建表
创建表语法:
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
...
field datatype
) character set 字符集 collate 校验规则 engine 存储引擎
 
说明:
- field 表示列名
 - datatype 表示列的类型
 - character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
 - collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
 
查看自己现在所在的数据库
select database();
 

 创建表案例1:
create table if not exists user1(
id int,
name varchar(20) comment '用户名',
password char(32) comment '用户密码',
birthday date comment '用户生日'
)character set utf8 collate utf8_general_ci engine MyIsam;
 

ls /var/lib/mysql/user -l
 

 不同的存储引擎,创建表的文件不一样,表存储引擎是MyISAM ,在数据目中有三个不同的文件,分别是:
- user1.frm:表结构
 - user1.MYD:表数据
 - user1.MYI:表索引
 
查看表结构
desc 表名;
 
注:desc的全称是describe
 
 各个列的意思:
 
 创建表案例2,与创建表案例1进行索引对比
create table if not exists user2(
id int,
name varchar(20) comment '用户名',
password char(32) comment '用户密码',
birthday date comment '用户生日'
)charset=utf8 collate=utf8_general_ci engine=InnoDB;
 

 索引的不同,创建表的文件不一样。
 
二、修改表
在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表
查看数据库的表
语法:
show tables;
 

修改表名
alter table 表名 rename to 新的表名;
 
注意:to可以省掉
 例如,将 user1 修改表名为employee
alter table user1 rename to employee;
 

查看表创建时的信息
语法:
show create table 表名;
 
例如(在我这里,这个命令打印格式有点问题)
 
给表增加列
语法:
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,columndatatype]...);
 
说明:
- 大写的表示关键字
 - [] 是可选项,可以选择不写
 
例如,给表在最后新增一列
alter table employee add path_image varchar(128) comment '用户头像路径' after birthday;
 
after birthday意思是在birthday这列之后插入,插入新字段后,对原来表中的数据没有影响
 
修改表的某一列
语法:
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,columndatatype]...);
 
- 大写的表示关键字
 - [] 是可选项,可以选择不写
 
例如,修改表的name列,将其长度改成60
alter table employee modify name varchar(60);
 

 但是,查看创建表时的信息,注解comment没有了,旧的的属性直接被新的属性直接覆盖了
 
删除表的某一列
语法:
alter table 表名 drop 表的哪一列;
 
例如,删除birthday列
alter table employee drop birthday;
 

 注意:删除字段一定要小心,删除字段及其对应的列数据都没了,不建议使用
修改某一列的名字
 alter table 表名 change 旧的列名 新的列名+属性;
 
注意:新字段需要完整定义,即增加该列的属性
例如,将name列修改为xingming
table employee change name xingming varchar(60);
 

三、 删除表
语法格式:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
 
- 大写的表示关键字
 - [] 是可选项,可以选择不写
 
例如,删除一个表
 drop table user2;
 

 注意:不要轻易删除表
 --------------------- END ----------------------
「 作者 」 枫叶先生
「 更新 」 2023.7.9
「 声明 」 余之才疏学浅,故所撰文疏漏难免,
          或有谬误或不准确之处,敬请读者批评指正。
                
















