这里介绍MySQL比较常用的DDL语句。包括如下:
- create table
- alter table
- drop table
- truncate table
1. create table
create table为建表语句,看如下几个示例:
- 在列名后面声明主键
create table t1(id int primary key, name varchar(20));
- 在表级别声明主键
create table t1(id int, name varchar(20), primary key(id));
- 多字段主键(只能在表级别声明)
create table t1(id int, name varchar(20), primary key(id, name));
- 建表时指定索引
create table t1(id int, name varchar(20),primary key(id),index idx_t1_name(name));
- 建表时指定外键
create table t3(id int, name varchar(20),primary key(id),constraint cst_t1_fk foreign key(id) references t2(id));
- 在表的结尾声明表的属性如存储引擎和字符集等等
create table t1(id int, name varchar(20), primary key(id, name)) engine=innodb default charset=utf8;
- 使用if not exists关键字。如果这个表不存在则建立这个表,如果已经存在则报一个warning
create table if not exists t1(id int, name varchar(20), primary key(id));
- 表建立完成后可以用desc t1;或show create table t1\G查看表的结构,一般情况下desc出来的结果已经够用,但是如果要获得建表的语句最好用show create table t1\G
2. alter table
alter table可以修改表的结构和属性,以下alter table后面的语句可以使用逗号分隔在同一条语 句中执行。看如下几个示例:
- 增加字段
alter table t1 add (column) age int;=======>默认增加字段到表的最后,column关键字可以省略
alter table t1 add (column) age first;=======>增加字段到表的开头
alter table t1 add (column) age after name;=======>增加字段到name字段之后
- 修改字段
alter table t1 modify age tinyint; ========>修改字段数据类型
alter table t1 modify age tinyint first; ========>修改字段数据类型并将字段移动到表的开头
alter table t1 modify age tinyint after id;========>修改字段数据类型并将字段移动到字段id之后
alter table t1 change age student_age tinyint; ========>修改字段名称和数据类型
- 删除字段
alter table t1 drop (column) age;
- 添加索引
alter table t1 add index idx_t1_name(name);=======>添加普通索引,index关键字可以换成key,idx_t1_name为索引的名称
alter table t1 add unique index idx_t1_name(name);=======>添加唯一索引
- 删除索引
alter table t1 drop index idx_t1_name;
- 删除主键
alter table add drop primary key;
- 添加主键
alter table add primary key(id);
- 添加外键
alter table t1 add constraint cst_t1_fk foreign key(id) references t2(id);
- 删除外键
alter table t1 drop foreign key cst_t1_fk;
- 重命名表 (下面三种语句都可以)
rename table t1 to t2;
alter table t1 rename t2;
alter table t1 rename to t2;
- 修改存储引擎或者字符集
alter table t1 engine=myisam;
alter table t1 default charset=latin1;
3. drop table
意思很简单,把表删除。
drop table t1; =========>直接删除表,如果没有这个表会报错
drop table if exists t1; ========>如果没有这个表不会报错,只会报一个warning
4. truncate table
truncate table为截断表的命令,相当于把这个表删除并立即重建。
truncate table t1;