主键约束-primary key

  • 主键:它的值用于唯一地标识表中的某一条记录,且不能为空
  • 创建:
    • 在确定为主键的字段后添加
    • primary key关键字:create table student(snum number(10) primary key)
    • 在创建表的后面使用
    • constraints pk_表名_字段名 primary key(字段名):create table student(snum number(10),constraints pk_student_snum primary key(sum))
    • 在创建表后使用 alter table 表名 add constraints pk_表名_字段名 primary key(字段名)
    • alter table student add constraints pk_student_snum primary key(snum)
  • 删除主键:alter table 表名 drop constraints pk_表名_字段名
  • alter table student drop constraints pk_student_snum–删除主键

非空约束-not null

  • 用于指定的字段添加非空约束,让其字段值不能为空
  • 创建:
    • 创建表的时候在字段后面添加not null
    • create table student(snum number(10) not null)
    • 在创建表字段后使用 constraints ck_表名_字段名 check(字段名 is not null) 了解
    • constraints ck_student_sna check(sna is not null)
    • 在创建表后使用:alter table 表名 modify 字段名 类型 not null
    • alter table student modify sna varchar2(100) not null;
  • 修改字段可以存储空值:alter table 表名 modify 字段名 类型 null;
  • alter table student modify sna varchar2(100) null;–修改字段为空

检查约束-check

  • 字段按照条件输入,但是会允许空值的出现,并且默认值只有在字段不声明的情况下生效
  • 创建:
    • 创建表的时候在字段后使用 default 值 check(条件),
    • sex char(4) default ‘男’ check(sex=’男’ or sex=’女’) not null
    • 在创建表所有字段后使用:constraints ck_表名_字段名 check(条件)
    • constraints ck_student_sex check(sex =’男’ or sex=’女’)
    • 在创建表后使用:alter table 表名 add constraints ck_表名_字段名 check(条件)
    • alter table student add constraints ck_student_sex check(sex=’男’ or sex=’女’)
  • alter table student drop constraints ck_student_sex –删除检查约束

唯一约束-unique

  • 唯一约束保证在一个字段或者一组字段里的数据与表中其它行的数据相比是唯一的。
  • 创建:
    • 在字段后直接使用unique关键字
    • qq number unique
    • 在所有字段后使用:constraints uk_表名_字段名 unique(字段名)
    • constraints uk_student_qq unique(qq)
    • 在创建表后使用:alter table 表名 add constraints uk_表名_字段名 unique(字段名)
    • alter table student add constraints uk_student_qq unique(qq)
  • 删除唯一约束:alter table 表名 drop constraints uk_表名_字段名
  • alter table student drop constraints uk_student_qq

外键约束-foreign key

  • 用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。

  • 外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键的值必须等于另一个表中主键的某个值。

  • 创建:

    • 在字段后使用 references 参照表表名(参照字段)
    • info number(10) references clazz(cid)–外键
    • 在所有字段后使用 constraints fk_表名_字段名 foreign key(字段名) references 参照表名(参照字段名)
    • constraints fk_stu_cinfo foreign key(cinfo) references clazz(cid)
    • 在创建表后使用alter table 表名 add constraints fk_表名_字段名 foreign key(字段名) references 参照表名(参照字段名)
    • alter table stu add constraints fk_stu_cinfo foreign key(cinfo) references clazz(cid) –添加外键
  • 删除外键 alter table 表名 drop constraints fk_表名_字段名

  • alter table stu drop constraints fk_stu_cinfo drop table stu

  • 问题:

    • 在删除父表数据的时候需要先删除子表数据?
    • 解决方式1:先解除主外键关联,然后删除数据,再然后添加主外键关联
    • 解决方式2:在创建外键的时候使用级联操作。
    • 级联就是当父表删除或更新数据时,子表进行你指定的相应操作
    • alter table stu add constraints fk_stu_cinfo foreign key(cinfo) references clazz(cid) on delete cascade-父表删除时删除子表相应内容
    • alter table stu add constraints fk_stu_cinfo foreign key(cinfo) references clazz(cid) on delete set null-父表删除时子表设置为空
  • 总结:约束有几种方式可以进行创建,只需熟练掌握一种即可。