Oracle 约束 (非空约束、默认值约束、唯一约束 & 主键约束的添加/联合和注意事项)

约束

1.非空约束(not null)

非空约束 限定某个字段不能为null

		create table testNull(
            id number(3),
            name varchar2(20) not null
        );

2.默认值的约束(default)

如果字段没有给值给默认值

default + "默认值"

create table  testDefaul(
	id number(10) not null, 
	name varchar2(20) default '老宋',
	age  number(2) default 18
);

3.唯一约束(unique)

保证某个字段的具体值是唯一的

create table testUnique(
	id number(5) unique,
	name varchar2(20)
);

3.1注意事项

  • 唯一性可以为null,2个都为null不算违背了唯一性原则一般使用unique要加 not null 约束
  • 一个字段可以添加多个约束 unique not null

4.主键约束(primary key)

主键类型 unique + not null

语法: 字段primary key;

create table testPrimary(
	id number(3) primary key,
	name varchar2(20)
); 

4.1添加主键

  1. 代码设置
 alter table 表名 add constraint 标识符 primary key(字段名称);
  1. 使用视图工具

4.2联合主键

多个字段联合其来成为主键

4.3注意事项

  • 主键唯一性,一张表只能有一个主键
  • 一张表可以有多个 unique not null

5.外键约束

外键: 把2张表进行关联 , 从表中重复出现,在主表中作为主键存在

	  --主表:  一方 
      create table t_class(
          cid number(3) primary key,
          cname varchar2(20)
       ); 
      
      --从表:  多方 
      create table t_stu(
         tid number(3) primary key,
         sname varchar2(20), 
         -- 添加 主表的pk 字段
         cid number(3),
         -- 设置 外键 (从表和 主表进行关联) 
         constraint fk_stu_class foreign key (cid) references t_class(cid)
      );
      
     fk_stu_class --外键的标识符  外键取名 
     foreign key  --定义外键 
     references   --关联那个表的那个字段 
     
      --创建表以后 如果设置外键(命令)
      -- 创建表完成后添加外键 
      alter table t_stu add constraint fk_stu_class foreign key(classId) references t_class(cid);

5.1注意事项:

  1. 外键可以在从表中重复出现 ,他在主表中是主键

  2. 一张表可以有多个外键

  3. 外键可以为null

  4. 外键的作用是关联多表,可以建立表之间的关系 (一对一 一对多 多对多)

  5. 删除主表时候如果从表有使用主表的数据是不能删除的,从表的数据可以直接删除

  6. 2表关联了先删除从表再删除主表

  7. 外键是多表查询时必要条件

  8. 开发过程中建议是逻辑外键 (有逻辑关系不用设置外键关联)

6.check 约束 (了解)

check: 保证我们的字段按照一定的格式在指定的范围内存储

create table t_person(
	sname varchar2(20),
	sage number(3) check(sage > 20)		--规定age > 20 	
	sage number(3) check(sage between  20 and 30)		--规定age 在 20 - 30 之间
	sage number(3) check(sage in(18,19,20)) 		--规定age 必须在 18,19,20
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值