约束


文章目录

  • 约束
  • 1.非空约束(not null)
  • 2.默认值的约束(default)
  • 3.唯一约束(unique)
  • 3.1注意事项
  • 4.主键约束(primary key)
  • 4.1添加主键
  • 4.2联合主键
  • 4.3注意事项
  • 5.外键约束
  • 5.1注意事项:
  • 6.check 约束 (了解)


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
);