「前言」文章内容大致是数据库表的基本操作
「归属专栏」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
「 声明 」 余之才疏学浅,故所撰文疏漏难免,
或有谬误或不准确之处,敬请读者批评指正。