一、创建表
1.创建表的基本语法
创建一张表使用的也是create命令,和创建一个数据库有点类似,只不过创建数据库是create database,而创建表是create table。
语法:
create table 表名称 (
列名称 列类型
列名称 列类型
) charset=字符集 collate 校验规则 engine 存储引擎;
- 创建表的语句可以写成一行,分开多行来写目的是方便阅读。
- 创建表的时候可以指定字符集,如果没有指定字符集,则默认为数据库的字符集。
- 创建表的时候同样也可以指定校验集,如果没有指定校验集,则默认为数据库的校验集。
2.创建表的案例
我们可以演示一下表的创建语句,创建一个名字为users的表,其中有两列,分别为name和age,字符集设置为utf8,存储引擎设置为MyISAM。
create table `users` (
name varchar(20) comment '用户名',
age int comment '年龄'
)charset=utf8 engine MyISAM;
自此一张表就建立成功了,其中comment可以指定当前列的说明,这个可以选择加上也可以选择省略。
我们可以在MySQL中查看一下刚刚创建表的具体信息:
我们也可以在Linux中查看MySQL存储路径下的文件变化,可以发现刚刚创建的表实际上是三个相同前缀不同后缀的文件:
事实上,不同的存储引擎,创建出来的表文件是不一样的,上图是在MyISAM存储引擎下创建的表文件,如果我们创建一张表,存储引擎设置为InnoDB,创建出来的表文件如下图所示:
二、删除表
删除表使用的是drop指令,基本语法如下:
drop [temporary] table [if exists] 表名称 [, 表名称]...;
其中if exists可以省略,代表如果表存在才删除。drop指令可以同时删除多个表,只需要罗列需要删除的所有表即可,用逗号分隔开。
例如,我们删除刚刚创建的users表,输入指令drop table if exists users;
,此时再查看当前数据库内的表就不存在users表了:
三、查看表
1.查看表名称
如果我们想要查看当前数据库内有哪些表,也就是查看表名称,可以使用:
show tables;
2.查看表结构
如果我们想查看指定一个表的具体结构,可以使用以下语句:
desc 表名;
比如我们想查看student表的结构,输入指令desc student;
,即可查看到该表的具体结构:
3.查看表的创建语句
表和数据库一样也可以查看创建语句,使用语句:
show create table 表名称;
比如我们想查看student表的创建语句,输入指令show create table student;
即可查看该表的创建语句:
但是这样查看的创建语句不便于阅读,因为格式乱了,可以加上\G调整一下格式,输入指令show create table student\G;
即可:
四、修改表
在项目的实际开发中,经常会修改表的某个结构,比如某个字段的名字、字段的大小、字段的类型、表的字符集校验集、表的存储引擎等等。修改表使用的是alter指令,修改的操作主要是指修改表的属性,包括增加表的属性、修改表的属性、删除表的属性。其基本语法如下:
alter table 表名 add (字段名 字段类型 说明 加入位置);
alter table 表名 modify (字段名 字段类型 说明);
alter table 表名 drop (列名);
例如上面创建好的student表中目前已经存在两列,分别为name和age,我们想在最后一列添加id列,输入指令alter table student add id int;
即可添加成功:
如果我们想在name列后面添加上sex列,输入指令alter table student add sex char(1) after name;
即可:
如果我们想修改name列的字段大小,varchar(20)太小了我们想改成varchar(60),输入指令alter table student modify name varchar(60);
即可:
需要注意的是,这里的修改是覆盖式的修改,比如说如果我们之前设置的name列是有comment说明的,修改之后如果只填了varchar(60)的话,会覆盖原来的内容,也就是说原来的说明也会不存在了。
最后再演示一下删除功能,如果我们想删除id列,输入指令alter table student drop id;
即可:
除此之外,我们还可以修改列名称以及表名称,例如我们将name列名称改为xingming,使用以下语句:
alter table student change name xingming varchar(60); //新字段需要完整定义
或者我们想将student的表名改成users,使用以下语句:
alter table student rename to `user`;