MySQL 复习(一):建表约束
MySQL 复习(一):建表约束
MySQL 复习(一):建表约束
1. 主键约束
-- 添加:alter table table_name add primary key (字段)
-- 删除:alter table table_name drop primary key
1.1 添加主键约束
1.1.1 建表前添加主键约束
create table user(
id int primary key, # primary key
name varchar(20)
);
describe user # 查找约束
1.1.2 建表后添加主键约束
-- alter table 表名 add primary key(字段名)
alter table user add primary key(id)
-- alter table 表名 modify 字段 字段类型 primary key
alter table user modify id int primary key
describe user # 查找约束
1.2 删除主键约束
alter table <表名> drop primary key;
alter table user drop primary key;
describe user # 查找约束
2. 外键约束
-- 添加:alter table table_name add constraint 约束名 foreign key(外键列)
-- references 主键表(主键列)
-- 删除:
-- 第一步:删除外键
-- alter table table_name drop foreign key 约束名
-- 第二步:删除索引
-- alter table table_name drop index 索引名
# 约束名(外键名)和索引名一样
2.1 添加外键约束
2.1.1 建表前添加外键约束
-- 班级表
create table class(
id int primary key,
name varchar(20)
);
-- 学生表
create table student(
id int primary key,
name varchar(20),
class_id int,
foreign key(class_id) references class(id) #建表前添加外键约束
);
describe user # 查找约束
2.1.2 建表后添加外键约束
-- alter table 表1
-- add FOREIGN KEY(表1的关联列) 或者 add constraint 外键名 FOREIGN KEY(表1的关联列)
-- references 表2(表2的关联列);
alter table table_name
add FOREIGN KEY(column_name)
references table_name(clolumn_name);
describe user # 查找约束
2.2 删除外键约束
-- alter table 表
-- drop FOREIGN KEY 表的外键名(可以通过 #show create table 表名;# 命令行查找外键名);
alter table student
drop FOREIGN KEY student_fk_name;
describe user # 查找约束
3. 自增约束
-- 添加:alter table table_name modify 列名 int auto_increment
-- 删除:alter table table_name modify 列名 int
3.1 添加自增约束
-- 3.1.1 建表前添加自增约束
drop table if exists user;
create table user(
id int primary key auto_increment, # auto_increment
name varchar(20)
);
describe user # 查找约束
3.1.2 建表后添加自增约束
-- 添加:alter table table_name modify 列名 int auto_increment (此前提是<列名>必须先是主键)
alter table user modify id int auto_increment; # id 为主键
describe user # 查找约束
3.2 删除自增约束
-- alter table table_name modify 列名 int
alter table user modify id int
describe user # 查找约束
4 唯一约束
-- 添加:alter table table_name add unique 约束名 (字段)
-- 删除:alter table table_name drop key 约束名
4.1 添加唯一约束
4.1.1 建表前添加唯一约束
约束修饰字段的值不能重复
drop table if exists user;
create table user(
id int primary key,
name varchar(20),
unique(name) # 唯一约束
);
describe user # 查找约束
4.1.2 建表后添加唯一约束
-- 添加:alter table table_name add unique(列名)
alter table user add unique(name) # name 添加唯一约束
describe user # 查找约束
4.2 删除唯一约束
-- 删除:alter table table_name drop key 列名
alter table user drop key name
describe user # 查找约束
5. 非空约束
-- 添加:alter table table_name modify 列名 数据类型 not null
-- 删除:alter table table_name modify 列名 数据类型 null
5.1 添加非空约束
5.1.1 建表前添加非空约束
-- 修饰字段不能为空
drop table if exists user;
create table user(
id int,
name varchar(20) not null # not null 非空约束
);
describe user # 查找约束
5.1.2 建表后添加非空约束
-- ALTER TABLE <数据表名>
-- CHANGE COLUMN<字段名>
-- <字段名> <数据类型> NOT NULL;
alter table user change name name varchar(20) not null;
describe user # 查找约束
5.2 删除非空约束
-- ALTER TABLE <数据表名>
-- CHANGE COLUMN<字段名>
-- <字段名> <数据类型> NULL;
alter table user change name name varchar(20) null;
describe user # 查找约束
6. 默认约束
6. 添加默认约束
-- 添加:alter table table_name alter 列名 set default '值'
-- 删除:alter table table_name alter 列名 drop default
6.1.1 建表前添加默认约束
当我们插入字段时候,如果没有传值,就会使用默认值
drop table if exists user;
create table user(
id int,
name varchar(20),
age int default 10 # 默认约束 default
);
describe user # 查找约束
6.1.2 建表后添加默认约束
添加:
alter table table_name alter 列名 set default '值'
alter table user alter age set default 10
describe user # 查找约束
6.2 删除默认约束
删除:alter table table_name alter 列名 drop default
alter table user alter age drop default
describe user # 查找约束
7 alter 如何改变<字段名>和<字段类型>以及<表名>
# 把表1<table_name1>更名为表2<table_name2>
rename table table_name1 to table_name2
# 增添一个字段,默认(不)为空
alter table table_name add COLUMN 字段列名 VARCHAR(20) DEFAULT (NOT) NULL;
# 删除一个字段
alter table table_name DROP COLUMN 字段列名;
# 修改一个字段的类型
alter table table_name MODIFY 字段列名1 字段类型;
# 修改一个字段的名称,此时一定要重新指定该字段的类型
alter table table_name CHANGE 字段列名1 字段列名2 字段类型;
1.主键约束
添加:alter table table_name add primary key (字段)
删除:alter table table_name drop primary key
2.非空约束
添加:alter table table_name modify 列名 数据类型 not null
删除:alter table table_name modify 列名 数据类型 null
3.唯一约束
添加:alter table table_name add unique 约束名(字段)
删除:alter table table_name drop key 约束名
4.自动增长
添加:alter table table_name modify 列名 int auto_increment
删除:alter table table_name modify 列名 int
5.外键约束
添加:alter table table_name add constraint 约束名 foreign key(外键列)
references 主键表(主键列)
删除:
第一步:删除外键
alter table table_name drop foreign key 约束名
第二步:删除索引
alter table table_name drop index 索引名
[^1]:
约束名和索引名一样
6.默认值
添加:alter table table_name alter 列名 set default '值'
删除:alter table table_name alter 列名 drop default
关注公众号,有惊喜哦!