栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySQL数据库 约束类型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL数据库 约束类型

Mysql数据库的约束类型有物种:主键约束(Primary Key),唯一性约束(Unique),非空约束(Not Null),默认约束(Default),外键约束(Foreign Key)。

一、主键约束 primary key

主键约束 primary key:它能够唯一确定一张表中的一条记录,通过向某个字段添加约束,可以使得该字段不重复且不为空。

primary key:

创建一个有主键约束的数据表:

 create table user1(
     id int primary key,
     name varchar(20)
    );

一个主键只能有一条记录,且主键不能为 NULL。

insert into user values(1,'spider');
insert into user values(1,'spider'); #不能重复插入主键为 1 的记录,会报错
insert into user values(2,'spider');
select * from user;
insert into user values(NULL,'spider'); #不能插入主键为 NULL 的记录,会报错

联合主键:

创建一个联合主键为(id,name)的数据表:

create table user2(
    id int,
    name varchar(20),
    password varchar(20),
    primary key(id,name)
);

 

联合的主键值加起来不重复就可以。 

insert into user2 values(1,'spider','123');
insert into user2 values(2,'spider','123');

自增约束 auto_increment:
create table user3(
    id int primary key auto_increment,
    name varchar(20)
);

 自增约束可以插入重复的数据记录,数据表会自动更新 id 值:

insert into user3 (name) values('spider');
insert into user3 (name) values('spider'); 

如何添加和删除主键约束?

先创建一个没有主键约束的数据表:

create table user4(
    id int,
    name varchar(20)
);

 通过修改数据表的结构的方式,添加主键:

alter table user4 add primary key(id);

 删除主键:

alter table user4 drop primary key;

通过使用 modify 修改字段的当时,添加主键:

alter table user4 modify id int primary key;
二、唯一约束 unique

唯一约束 unique:约束修饰的字段的值不可以重复。

创建一个有唯一约束的数据表:

法一:

create table user5(
    id int,
    name varchar(20)
);

 给 name 添加一个唯一约束:

alter table user5 add unique(name);

法二:

create table user6(
    id int,
    name varchar(10),
    unique(name)
);

#还可以添加两个约束 unique(id,name) 这样 id 和 name 加在一起不能重复,类似联合主键

 

法三:

create table user7(
    id int,
    name varchar(20) unique
);

 

 给数据表 user5 添加一条记录:

 insert into user5 values(1,'batman');

重复添加 name 为 batman 的记录会报错:

 

 如何删除唯一约束?
alter table user7 drop index name;

 通过 modify 的方式添加:
alter table user7 modify name varchar(20) unique;

三、非空约束 not_null

非空约束 not_null:修饰的字段不能为空 NULL

create table user9(
    id int,
    name varchar(20) not null
);

只插入 id 就会报错:

insert into user9 (id) values(1);

 

 id 可以为空:

insert into user9 values(1,'batman');
insert into user9 (name) values('batman');

 

四、默认约束 default 

 默认约束 default :当插入字段值的时候,没有传值,就使用默认值

创建 age 的默认值为10:

create table user10(
    id int,
    name varchar(20),
    age int default 10
);

 插入数据时没有写 age 值,会默认为10:

insert into user10 (id,name) values(1,'batman');

 插入数据时写了 age 值,就不会使用默认值:

 

 五、外键约束 foreign_key

外键约束 foreign_key:涉及到两个表:主表、副表

注意:主表中没有的数据值,在副表中是不可以使用的。

           主表中的记录被副表引用,是不可以被删除的

创建主表、副表: 

#班级表
create table classes(
    id int primary key,
    name varchar(20)
);

#学生表
create table students(
    id int primary key,
    name varchar(20),
    class_id int,
    foreign key(class_id) references classes(id)
);

 

 给班级表插入数据:

insert into classes values(1,'一班');
insert into classes values(2,'二班');
insert into classes values(3,'三班');
insert into classes values(4,'四班');

给学生表插入数据:

insert into students values(100,'batman',1);
insert into students values(101,'batman',2);
insert into students values(102,'batman',3);
insert into students values(103,'batman',4);

 

 班级表里面没有5班,所以插入不存在的5班失败:

 主表(班级表)中的的 id=4 被副表(学生表)引用,所以删除会报错:

delete from classes where id =4;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/715653.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号