本文对MySQL的数据定义语言(DDL)学习,DDL中比较常用的有create(创建),show(查),alter(修改),drop(删除),实现对表结构的增删改查
创建表
下面是例子的表结构,其中就是用到了create(创建)关键字
create table me(
id int unsigned auto_increment,
name varchar(20) not null comment '姓名',
phone varchar(20) comment '手机号',
site varchar(20) default '地址不详'comment '地址',
primary key(id)
);
查询表
使用上面的例子
show tables; #查询数据库所有的表
desc me; #查询表结构
show create table me\G #查询表结构所使用的语法
修改表名
对例子的表名进行修改使用alter(修改)关键字
将me表名修改为message表名
修改表名的格式为alter table <旧表名> rename to <新表明>;
alter table me rename to message;
添加新列
如果我们要对上面的例子添加列,我们需要使用alter(修改)关键字,添加列的位置无非有两种首列(first)以及非首列(after)。
为整个表第一列之前添加列,使用first,我们来添加一个学号(number)的列
添加首列的格式为alter table <表名> add <新列名> <数据类型> <约束条件> <其他> first;
其中新列名后面的参数根据自己的需求选择加与不加
alter table message add numer int not null commment '学号' first;
为非首列添加列,使用after,此处我们给phone(手机号)列后面添加一个score(成绩)列
添加非首列格式为alter table <表名> add <新列名> <数据类型> <约束条件> <其他> after <需要在那个列后面添加列的列名>;
此处成绩我采用varchar是因为我使用的默认值为varchar型的’不及格’,只是为其演示
alter table message add score varchar(4) default '不及格' comment '成绩' after phone;
修改列名
此处我们将score(成绩)列名修改成java列名,并把数据类型修改成tinyint
修改列名格式为alter table <表名> change <旧列名> <新列名> <新数据类型>;
数据类型不可省略
alter table message change score java tinyint;
修改列的数据类型
我们将上面添加的学号列的数据类型修改成varchar类型
修改列的数据类型格式为alter table <表名> modify <列名> <数据类型>;
alter table message modify number varchar(20);
修改列的排序位置
将name(姓名)列排到首列
格式为alter table <表名> modify <列名> <数据类型> first;
此处的虽然是换行但数据类型不可省略
alter table message modify name varchar(20) first;
将name(姓名)列排在java列后面
格式为alter table <表名> modify <列名> <数据类型> after <需要排在那个列名后面>;
此处数据类型不可省略
alter table message modify name varchar(20) after java;
删除列
将number(学号)列删除
删除列的格式为alter table <表名> drop <需要删除的列名>;
alter table message drop number;
删除数据库表
此处我们需要用到drop(删除)关键字
我们将整个message表删除
删除表的格式为drop table <表名>;
下面删除语句中的if exists可有可无,这句是判断数据库中是否存在此表,有的话删除,没的话不报错
drop table if exists message;