五大约束和三大范式

一.五大约束(z,w,f,m,w)

记忆方法:
追我费马哇,
主键、唯一、非空、默认、外键
主键、unique、not null、default、外键

1.1 主键约束:唯一主键

1.特点:唯一 非空 一张表中只有一个主键

1.2唯一约束unique

1.关键字 unique

2.特点: 唯一 不能重复 可以为null

3.主键约束与唯一约束的区别
A.主键约束 张表中只能有唯一约束****一张表中可以有
B.主键约束不能为空 唯一约束是可以设置空
C.唯一约束可以设置为联合唯一约束 (多个列组成约束条件)

4.唯一约束两种创建方式
A.创建表的时候设置
B.表创建完成之后设置

a:创建表的时候设置唯一约束

CREATE TABLE p1(
 pid INT(11) PRIMARY KEY AUTO_INCREMENT, 
 pname VARCHAR(20) 	UNIQUE
 );

b:创表之后设置唯一约束

#创建表
CREATE TABLE p1(
 pid INT(11) PRIMARY KEY AUTO_INCREMENT, 
 pname VARCHAR(20) 	
 );

#加主键约束
语法:
alter table 表名 add CONSTRAINT 唯一约束的名称 unique(列名)
#增加唯一约束
 ALTER TABLE p2 ADD CONSTRAINT u_name UNIQUE(pname)

#删除唯一约束
ALTER TABLE p2 DROP INDEX u_name

c 联合唯一约束

CREATE TABLE p3( 
pid INT(11) PRIMARY KEY AUTO_INCREMENT, 
pname VARCHAR(20), 
pwd VARCHAR(20), UNIQUE(pname,pwd) 
);
INSERT INTO p3(pname,pwd)VALUES("毛哥","123");

1.3非空约束not null

1.关键字: not null
2.作用: 插入数据的时候必须插入数据 不能插入 null
3.在创建表的时候进行设置

1.4默认约束default

1.关键字:default
2.作用:用于设置列的默认值
3.在创建表的时候进行设置

4.说明:
A.指定列设置默认约束之后 未插入数据 显示默认值
B.指定列设置默认约束之后 插入 default 也是默认值
C.插入具体的数据时候 才会替换默认值

1.5 外键约束

外键约束用于两张表之间,用来保证关联数据的完整性。
注意:

键关联时要注意的是:
1.外键一定是主表的主键,
2.删除表时要先删子表在删主表。
3.可以强制删除,而不用管约束条件:drop table orders cascade constraint;
4.可以使用级联更新和级联删除,这样在主表中进行更新或者删除操作,子表中的数据也会保证同步更新或者删除

例子:
order表

create table orders(

order_id number(10),

total_price number(10,2),

order_time date,
constraint orders_order_id_pk primary key (order_id)

);

order明细表

create table order_detail(

detail_id number(10),

order_id number(10),//在order表中是主键

item_name varchar2(10),

quantity number(10),

constraint order_detail_detail_id_pk primary key (detail_id),

constraint order_detail_order_id_fk foreign key (order_id) 
referencs orders(order_id)|on delete cascade|on update cascade
 );

二.三大范式

2.1

三大范式也是用于来约束数据库 保证数据的完整性 以及正确性

2.2

A.第一大范式(原子性): 表中的每一列是最小的原子单位 不能进行再拆分
B.第二大范式(依赖性): 一张表必须有一个主键;非主键类必须完全依赖于主键,而不能只依赖主键的一部分
C.第三大范式(): 在遵循前两大范式的基础上 不能出现局部依赖(不能传递依赖) 只能与主键建立依赖关系

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值