MySQL数据库约束点击次数_MySQL数据库笔记四:MySQL的约束

<1>概念

是一种限制,它是对表的行和列的数据做出约束,确保表中的数据的完整性和唯一性。

<2>使用场景

创建表的时候,添加约束

<3>分类

1. default:默认约束,域完整性

2. not null:非空约束,域完整性

3. unique:唯一约束,实体完整性

4. primary key:主键约束,实体完整性

5. foreign key:外键约束,参照完整性

6. check:检查约束(MySQL不支持),域完整性

7. atuo_increment:自增长约束

8. unsigned:无符号约束

9. zerofill:零填充约束

数据库中有三个完整性:域、实体、参照完整性

域(列)完整性:

域完整性是对数据表中字段属性的约束。

实体完整性在MySQL中实现:

通过主键约束和候选键约束实现的

参照完整性

也就是说是MySQL的外键

1.default

<1>概念

指定某列的默认值,插入数据的时候,此列没有值,则用default指的的值来填充。

<2>添加

在创建表的时候添加 : create .....default

create table t1(

id int default 1,

name varchar(20) default '老王'

);

通过alter语句添加:alter....modify/change.........

alter table t1 modify id int default 2;

alter table t1 change name name varchar(32) default '大拿';

<3>删除: alter.....modify/change

alter table t1 modify id int;

alter table t1 change name name varchar(32);

2.not null

<1>概念

指定某列的值不为空,在插入数据的时候必须非空 "" 不等于 null ,0不等于 null

<2>添加

在创建表的时候添加 : create .....not null

create table t1(

id int not null,

name varchar(20) not null

);

通过alter语句添加:alter....modify/change.........

alter table t2 modify id int;

alter table t2 change name name varchar(32) null;

<3>删除: alter.....modify/change

3.unique

<1>概念

指定列或者列组合不能重复,保证数据的唯一性

不能不限重复的值,但是可以有多个null

同一张表可以有多个唯一的约束

<2>添加唯一约束

在创建表的时候添加 : create .....unique

create table t3(

id int unique,

name varchar(32) not null

);

insert t3 value (1,'老王');

insert t3 value (1,'老李'); -- id唯一约束,添加异常

create table t3(

id int,

name varchar(32) not null,

constraint id_unique unique(id,name) -- 添加复合约束

);

通过alter语句添加:alter....modify/change......... / alter .... add unique.....

alter table t3 modify id int unique;

alter table t3 add unique(name);

alter table t3 add constraint un_id unique(id);

<3>删除唯一约束:alter .... drop...index 名称 / drop index 名称 on 表名

alter table t3 drop index id_unique

<4>注意:如果删除的唯一约束列具有自增长约束,则必须要先删除自增长约束,再去删除唯一约束。

4.主键约束

<1>概念

当前行的数据不为空并且不能重复

相当于:唯一约束+非空约束

<2>添加主键约束

在创建表的时候添加 : create .....primary key

create table t4(

id int primary key,

name varchar(20)

);

create table t4(

id int,

name varchar(32),

[constraint id_unique] primary key (id,name) -- 联合约束

);

通过alter语句添加:alter....modify/change......... / alter .... add primary key.....

alter table t4 modify id int primary key;

alter table t4 add constraint pk_id_name primary key(id,name);

<3>删除主键:alter ... drop primary key

alter table t4 drop primary key

<4>注意:如果删除的主键列具有自增长约束,则必须要先删除自增长约束,再去删除主键约束。

5.auto_increment:自增长约束

<1>概述

列的数值自动增长,列的类型只能是整数类型

通常给主键添加自增长约束。

<2>添加

在创建表的时候添加 : create .....auto_increment

create table t5(

id int auto_increment,

name varchar(20)

);

通过alter语句添加:alter....modify/change......... auto_increment

alter table t5 change id id int auto_increment;

<3>删除:alter ... modify/change....

alter table t5 modify id int;

<4>注意:

一张表只能有一个自增长列,并且该列需要定义约束。

6.unsigned:无符号约束

<1>概念

指定当列的数值未非负数

age tinyint 1 -128~127 UNSIGNED 0~255

<2>添加

在创建表的时候添加 : create .....UNSIGNED

create table t5(

id int,

age tinyint UNSIGNED

);

通过alter语句添加:alter....modify/change.........

alter table t5 change age age int tinyint UNSIGNED;

alter table t5 modify age tinyint UNSIGNED;

<3>删除:alter ... modify/change....

alter table t5 modify age tinyint;

alter table t5 change age age int;

7.zerofill:零填充约束

<1>概述:

指定当前列的数值的显示格式,不影响当前列显示范围

<2>

在创建表的时候添加 : create .....zerofill

create table t6(

id int,

age tinyint zerofill

);

<3>删除:alter ... modify/change....

alter table t5 modify age tinyint;

alter table t5 change age age int;

8.外键约束

通过建立外键,设置表于表之间的约束性,限制数据的录入

员工表(从表) 部门表(主表)

员工号 员工姓名 部门名称 部门号 部门名称

1 张三 1 1 人力

2 李四 2 2 销售

3 王五 3

<1>概述

建立表和表之间的关系,建立参照完整性。一个表可以有多个外键,每个外键必须参照另一个主键。

被外键约束的列,取值必须参照其主表列中的值。

注意:通常先创建主表,再创建从表

create table dept(

deptno int primary key auto_increment,

dname varchar(32),

loc varchar(32)

);

create table emp(

empno int primary key auto_increment,

ename varchar(32) not null,

deptno int

);

<2>添加外键约束

create table emp(

empno int primary key auto_increment,

ename varchar(32) not null,

deptno int

[constraint fk_name] foreign key (deptno) references dept(deptno); -- 添加外键约束

);

使用alter add constraint....

alter table emp add constraint fk_name foreign key (deptno) references dept(deptno);

<3>删除外键约束

alter drop foreign key fk_name

在创建表时,不去明确的指定外键约束的名称,系统辉自动的随机生成一个外键的名称,

使用 show create table 表名。查看具体的外键名称。

alter table emp drop foreign key fk_name;

<4>设置外键中的级联关系

1.on delete cascade:删除主表中的数据时,从表中的数据随之删除。

2.on update cascade:更新主表中的数据时,从表中的数据随之删除。

3.on delete set null:删除主表中的数据时,从表中的数据置空

级联删除

create table emp(

empno int primary key auto_increment,

ename varchar(32) not null,

deptno int

[constraint fk_name] foreign key (deptno) references dept(deptno) on delete cascade; -- 添加外键约束

);

注意:

插入数据时,先插入主表的数据,在插入从表的数据。

删除数据时候,先删除从表的数据,在删除主表中的数据。

总结:数据库的约束

主键约束、自增长约束、外键约束、唯一约束、非空约束、默认约束

这就是微学网-程序员之家为你提供的"MySQL数据库笔记四:MySQL的约束"希望对你有所帮助.本文来自网络,转载请注明出处:http://www.weixuecn.cn/article/10383.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值