/* 完整性约束(6种) */
/* 主键约束 */
/*
1) 主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。
2) 是不可能(或很难)更新.
3) 主键列上没有任何两行具有相同值(即重复值),不允许空(NULL).
4) 主健可作外健,唯一索引不可;
*/
/* 使用列级约束设置单字段的主键约束 */
create table student01(
id int(8) primary key,
name varchar(20),
sex varchar(2)
);
/* 使用表级约束设置单字段的主键约束 */
create table student02(
id int(8),
name varchar(20),
sex varchar(2),
constraint pk_id primary key(id)
);
/*或者*/
create table student02(
id int(8),
name varchar(20),
sex varchar(2),
primary key(id)
);
/* 使用表级约束设置多字段的主键约束 */
create table student02(
id int(8),
name varchar(20),
sex varchar(2),
primary key(id,name)
);
/*在已存在的表添加主键约束 */
alter table student04 add primary key(id,name);
alter table student04 add constraint pk_id_name primary key(id,name);
/* 删除主键约束 */
alter table student04 drop primary key;
/* 唯一约束 */
/*
1) 唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,一个表上可以放置多个唯一性约束.
2) 只要唯一就可以更新.
3) 即表中任意两行在 指定列上都不允许有相同的值, 允许空(NULL).
4) 一个表上可以放置多个唯一性约束
*/
/* 使用列级约束添加唯一约束 */
create table student4(
id int(10) unique,
name varchar(20) unique,
age int(2)
);
/* 使用表级约束添加唯一约束 */
create table student4(
id int(10),
name varchar(20) unique,
age int(2),
constraint uk_id_name unique(id,name)
);
/* 或者 */
create table student4(
id int(10),
name varchar(20),
age int(2),
unique(id,name)
);
/* 注意,unique的列级约束和表级约束不同! */
/*在已存在的表添加唯一约束,中括号内的可以省略 */
alter table student4 add [constraint uk_unique] unique(id);
alter table student4 add [constraint uk_name] unique(name);
alter table student4 add [constraint pk_id_name] unique(id,name);
/* 删除唯一约束 */
alter table student4 drop index pk_id_name;/*如果没有给另起名,那删单字段的就是原本你的名字,多字段组合的就是第一个名字*/
/* 非空约束 */
/* 只能添加列级约束,无表级约束 */
/* 创建表时添加列级约束 */
create table student5(
id int(10)not null,
name varchar(20) not null,
age int(2)
);
/*在已存在的表添加非空约束 */
alter table student5 modify age int(2) not null;
/* 删除非空约束 ,中括号内的可以省略 */
alter table student5 modify age int(2) [null];
/* 默认值约束 */
/* 只能添加列级约束,无表级约束 */
/* 创建表时添加默认值约束 */
create table student6(
id int(10),
name varchar(20),
sex varchar(1) default '男'
);
/*在已存在的表添加默认值约束 */
alter table student6 modify id int(10) default 18;
/* 删除默认值约束 */
alter table student7 modify id int(10);
/* 自增约束 */
/* 创建表时添加自增约束 */
create table student7(
id int(10) primary key auto_increment,
name varchar(20),
sex varchar(1)
);
/*在已存在的表添加自增约束 */
alter table student7 modify id int(10) auto_increment;
/* 删除自增约束 */
alter table student7 modify id int(10);
/* 外键约束 */
/* 创建表时添加自增约束 */
create table clazz(
cla_no int(3) primary key,
cla_name varchar(20),
cla_loc varchar(30)
);
create table student8(
stu_id int(10) primary key,
stu_name varchar(20),
stu_clazz int(3),
constraint fk_stu_clazz foreign key(stu_clazz) references clazz(cla_no)
);
/*在已存在的表添加外键约束 中括号内的可以省略 */
create table student9(
stu_id int(10) primary key,
stu_name varchar(20),
stu_clazz int(3)
);
alter table student9 add [constraint fk_stu_clazz_1] foreign key(stu_clazz) references clazz(cla_no);
/* 删除外键约束 */
alter table student9 drop foreign key fk_stu_clazz_1;
/* 删除主表/父表 */
/* 先删除从表的外键约束,再删除主表 */
alter table student8 drop foreign key fk_stu_clazz;
drop table clazz;
mysql——表的六种约束
于 2023-03-10 17:29:11 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)