约束的是什么

1.1 约束概述

限制加入表中的数据的类型

create table 加约束 | alter table 加约束

1.2 约束的作用

保证数据的正确性,有效性和完善性

1.3约束分类

主键  primary key
唯一  unique
非空  not null
默认值 default
外键 foreign key
检查约束 check 

2.1主键约束 

都说主键自增长 啊 这两个是不一样的 ,主键是主键 增长是增长;

先说主键 

特点

唯一 ,不重复,主索引,不为空 null

格式:

create table 表名 (

字段名   字段类型  primary key  , ....

)

添加 alter table 表名 add primary key (字段名) # 增加

删除 alter table 表名 drop primary key  # 直接 给我删除

一定要注意哦!

非空 not null      唯一性

在设计表的时候通常 会单独 设计一下 id 字段 为主键

2.2 自增   主键

create table 表名(

字段名字 字段类型 primary key auto_increment  

.....

) #主键 加 自增

2.2.1

修改主键自增的起始值

格式 1:

alter table 表名 auto_increment = 起始值;

不能小于当前的自增值

格式2:

创建表

create table 表名(

字段名 类型 primary key auto_increment

auto_increment = 起始值;

delete 删除后,自增长是从最后一条记录开始的

truncate 删除后,自增长字段从1开始的;

3. 唯一约束

不允许出现重复记录

create table 表名(

字段名  类型  unique

....

注意:

null 表示 是没有数据 ,所以不存在重复问题

1.非空约束

不可为空

格式:

create table 表名 (

字段 字段类型 not null

)

字段设置了唯一和不为null与主键区别?

表中只能有一个主键 

自增长只能在主键上

唯一和不为空null可以设置任何字段

2.默认值

格式

create table 表名 (

字段 类型 default #默认值

注意:

插入数据时,可以考虑使用default 默认值关键字

3.外键约束******

3.1数据冗余

数据重复出现,同一数据存储在不同的数据主键

解决冗余:分表

出现员工表 加入员工 没有部门

外键约束 解决方法

3.2外键约束

主表(父表):补外键约束引用的字段,必须有唯一性

子表:定义外键约束表,外键取值受主键取值约束,要么取null

格式

create table 表名(

id int 

age int 

...

[ constraint][外键约束名称] foreign key (外键字段名) references 主表名称 (主键字段名)

[] : 表示可写    可不写

alter table 表名 add [constraint][外键约束名称] foreign key (外键字段名) references 主表名称 (主键字段名)

删除 外键约束

alter table 表名 drop foreign key 外键约束名称

---- 级联操作

主表与子表的关系,外键约束 ,才会考虑级联

解决问题:

主表的主键改变 子表的外键改变是否跟着改变?

1.1操作(外键约束)

删除主表中的所有记录,必须要把子表中的记录清楚

修改主表中的记录时 ,必须要把子表中的记录修改

子表在增加记录时外键不能是主表中当前没有主键

1.2 级联 分类

(经常习惯性要去改变主表信息)想级联必有外键约束 #必须建表时才可以创建

级联更新  on update cascade

级联删除 on delete cascade

级联创建表:

create table  stu(

sid int primary key auto_increment,

sname varchar(20) ,

ssex varchar(2),

stell varchar(11),

sdate  date ,

srmark varchar(30),

scid int ,

constraint stu_calsses_fk foreign key(scid) references calss(cid) on update cascade on delete cascade

)

级联删除:update calsses set cid = 3 where cid = 2;

级联修改:delete from class where cid = 3;

2 检查约束

某字段的值必须满足布尔表达式

2.1行级添加

格式:create table 表名(

check (表达式)

字段名  类型 check(表达式)

字段名  类型 constraint 唯一约束名 check (表达式) [not enforced] #[]可有 可无

create table  stu(

phone varchar(11) check (length(phone) = 11) #长度 小于11 大于11 不可存储

)

2.2 表示添加

create table  表名 (

字段名 类型

...

constraint 唯一约束名 check(表达式)[ not enforced]

2.3 表后添加

alter table 表名 add constraint 唯一约束名 check(表达式)

2.4 检查约束删除

alter table 表名 drop check 检查约束名

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值