「前言」文章内容大致是数据库表的基本操作。

一、创建表

创建表语法:

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
「 声明 」 余之才疏学浅,故所撰文疏漏难免,
          或有谬误或不准确之处,敬请读者批评指正。