ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Mysql之数据完整性约束

2020-06-29 21:08:42  阅读:254  来源: 互联网

标签:数据完整性 int 约束 key Mysql id table alter


Mysql之DDL操作


四、数据完整性约束
实体完整性、域完整性、引用完整性、自定义完整性

1、实体完整性
主键约束、唯一约束、主键自增

1)主键约束
特点:唯一的,不能为空
关键字:primary key
添加约束语法:alter table 表名 add constraint 约束名 primary key(字段名);
约束名:PK_字段
删除约束语法:alter table 表名 drop primary key;

规定:在每一个表中有且只有一个主键约束

create table student(
id int primary key,
name varchar(20),
age int
)

alter table userinfo add uid int;
#表已经创建好了,如何添加主键约束
#alter table 表名 add constraint 约束名 primary key(字段名);
#约束名:PK_字段
alter table userinfo add constraint PK_uid primary key(uid);

#删除约束
#alter table 表名 drop primary key;
alter table userinfo drop primary key;

2)唯一约束
特点:不能重复,可以为空,可以添加多个
关键字:unique
添加约束语法:alter table 表名 add constraint 约束名 unique(字段名);
约束名:UQ_字段
删除约束语法:alter table 表名 drop key 约束名;

create table student(
id int primary key,
name varchar(20),
age int,
id_card varchar(20) unique
)

alter table userinfo add constraint UQ_login_name unique(login_name);

alter table userinfo drop key UQ_login_name;

3)主键自增
特点:从1开始,每次自身加1(在oracle中不能使用)
关键字: auto_increment
只能在创建表的时候添加主键自增的约束,而且必须是主键才可以添加

create table student(
id int primary key auto_increment,
name varchar(20),
age int,
id_card varchar(20) unique
)

-- 删除主键自增约束
-- 1:去除自增性
alter table student modify id int;
-- 2:删除主键约束
alter table student drop primary key;

2、域完整性
域完整性约束保证字段的数据准确的
域完整性包括类型约束、非空约束、默认值

1)非空约束
特点:字段不允许为空
关键字: not null

2)默认值
特点:设置默认的值
关键字: default

create table student(
id int primary key auto_increment,
name varchar(20) not null,
age int not null,
sex char(2) default '男',
id_card varchar(20) unique
)

3、引用完整性
一张表中通用列的取值必须参考另外一张表的主键
引用完整性有外键约束

1)外键约束
特点:设置外键的字段的取值只能参考另一张表中同一个字段的值
关键字: foreign key
添加外键约束的语法:alter table 表名1 add constraint 约束名 foreign key(字段名) references 表名2(字段名)
删除外键的语法:alter table 表名 drop foreign key 约束名;


注意:
1、主外键关联
2、外键关联字段名称可以不一样,但是类型必须一致

--外键约束
create table student(
id int primary key auto_increment,
name varchar(20) not null,
age int not null,
sex char(2) default '男',
id_card varchar(20) unique,
class_id int #添加外键约束
)

create table classroom(
class_id int PRIMARY key,
class_name varchar(20)
)

-- 添加外键约束的语法:alter table 表名1 add constraint 约束名 foreign key(字段名) references 表名2(字段名)
-- 约束名 FK_字段名

alter table student add constraint FK_class_id foreign key(class_id) references classroom(class_id);

-- 删除外键的语法:alter table 表名 drop foreign key 约束名;
alter table student drop foreign key FK_class_id;

 

标签:数据完整性,int,约束,key,Mysql,id,table,alter
来源: https://www.cnblogs.com/gskk/p/13210251.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有