DDL常用语句(一)
- 操作数据库
- 操作表
- 约束
- 增
- 查
- 删
- 改
操作数据库
创建库:
create database 数据库名;
创建库是否存在,不存在则创建:
create database if not exists 数据库名;
查看所有数据库:
show databases;
查看某个数据库的定义信息:
show create database 数据库名;
修改数据库字符信息:
alter database 数据库名 character set utf8;
删除数据库:
drop database 数据库名;
使用指定数据库:
use 数据库名;
操作表
以下我以列名为字段名,便于理解。
约束
一种限制,对表的数据做出约束,确保其完整性和唯一性。
- mysql中约束主要有六种
- NOT NULL :非空约束,用于约束该字段的值不能为空。
- DEFAULT :默认值约束,用于约束该字段有默认值,约束当数据表中某个字段不输入值时,自动为其添加一个已经设置好的值。
- PRIMARY KEY:主键约束,用于约束该字段的值具有唯一性,至多有一个,可以没有,并且非空。
- UNIQUE:唯一约束,用于约束该字段的值具有唯一性,可以有多个,可以没有,可以为空。
- CHECK:检查约束,用来检查数据表中,字段值是否有效。
- FOREIGN KEY:外键约束,外键约束经常和主键约束一起使用,用来确保数据的一致性,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。在从表添加外键约束,用于引用主表中某列的值。
增
创建表:
create table 表名(
列名1 类型 [约束],
列名2 类型 [约束],
列名3 int|bigint [约束] [auto_increment],
...
[constraint 外键名] foreign key(你的外键列名) references 被添加外键表名(设为被添加外键的列名) [外键中的级联关系]
)[engine=innoDB|myISAM default charset=字符集];
-- 注:[]里的内容为可加可不加,或根据需要加
-- [engine参数用来设置引擎类型,常用的有innoDB和myISAM引擎]
-- 外键中的级联关系:
[ON DELETE RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT]
[ON UPDATE RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT]
RESTRICT:限制外表中的外键改动,默认值
CASCADE:跟随外键改动
SET NULL:设空值
SET DEFAULT:设默认值
NO ACTION:无动作,默认的
复制表:
-- 只复制表结构及约束,但不复制数据
create table 复制出的表名 like 原表名;
-- 复制表结构及数据,但不复制约束
create table 复制出的表名 as select * from 原表名;
- 添加表的一列
alter table 表名 add [column] 列名 列类型 [约束] [first|after 某列名];
-- 注:[]里的内容为可加可不加,或根据需要加
- 添加主键和唯一标识
alter table 表名 add PRIMARY KEY(列名);
alter table 表名 add UNIQUE KEY(列名);
- 添加外键约束
-- 自己指定外键的名字(删除外键需要外键的名字)
alter table 表名 add constraint 外键名 foreign key(设为外键的列名) REFERENCES 外表表名(对应的表的主键列名);
-- 例:alter table student add constraint stu_1 foreign key(id) references class(id);
-- 系统自动生成一个外键的名字(用'show create table 表名'查看外键名字)
alter table 需要添加外键表名 add FOREIGN KEY 需要添加外键表名(设为外键的列名) REFERENCES 被添加外键表名(设为被添加外键的列名);
-- 例:alter table student add foreign key student(id) references class(id);
注:一个表可以又多个外键,每个外键必须参照另一个主键;被外键约束的列,取值必须参照其主表列中的值(通常先创建主表,再创建从表)
查
查看表结构
desc 表名;
查看创建表的SQL语句
show create table 表名;
删
删除表:
drop table 表名;
drop table if exists 表名;
- 删除表的一列
alter table 表名 drop [column] 列名;
- 删除表的列的约束
- 删除主键
alter table 表名 drop primary key;
- 删除外键
alter table 表名 drop foreign key 外键名;
- 删除索引
alter table 表名 drop index 索引的列名;
改
修改表名:
alter table 表名 rename [to] 新表名;
-- 注:[]里的内容为可加可不加,或根据需要加
rename table 表名 to 新表名;
- 修改表的列名的类型(不可修改列名)
alter table 表名 modify [column] 列名 列类型 [约束] [first|after 某列名];
-- 例:alter table teacher modify name varchar(10);
alter table 表名 change [column] 列名 列名 列类型 [约束] [first|after 某列名];
-- 例:alter table teacher change name name varchar(11) first;
- 修改表的列名(可修改列名)
alter table 表名 change [column] 原列名 新列名 列类型 [约束] [first|after 某列名];
-- 例:alter table teacher change id teacher_id varchar(11);
注:change也可以用来修改列的属性,但列名要写两次,所以只修改列的属性时用modify比较方便,修改列名用change