资讯详情

数据库-完整性约束

在数据库设计中,表的数据具有一定的值范围和连接,多表之间的数据有时具有一定的参考关系。在创建和修改表时,可以定义约束条件,以确保数据的完整性和一致性。约束条件是一些规则,在插入、删除和修改数据时验证这些规则,从而发挥约束作用。

  • 非空约束:NN表名列名
  • 唯一约束:UK表名列名
  • 主键约束:PK_表名
  • 外键约束:FK表名列名
  • 检查约束:CK表名列名

  • 列级约束只能作用于一列
  • 表级约束可以作用于多列(当然表级约束也可以作用于一列)
  • 定义方法:列约束必须遵循列的定义,表约束不与列相同,而是单独定义。
  • 非空(not null) 约束只能定义在列上

1.表的创建及其约束定义:

1)直接在表中定义约束模式

2)先定义表,然后定义约束

2.测试主键,非空,检查,只有四种约束

  drop table if exists student; --oracle没有这种语法,mysql和KES存在   ---------------------------------------------- -----分段1:创建和测试约束表 ---------------------------------------------- ---1,直接定义表和列的约束 CREATE TABLE student (  stu_nmb number(8) primary key,  --主键  stu_name char(8) not null,  --非空约束  gender varchar2(2) check (gender in ('男','女')),  --检查约束  age number(2) CHECK (age BETWEEN 18 AND 30),   --检查约束  class varchar2 (40) not null,  email varchar2 (30) UNIQUE,  sdate DATE );   ---2.定义约束的另一种形式:先定义列,然后定义约束 --问题,非空约束不支持写以下内容? --constraint  con_name not null (stu_name), CREATE TABLE student (  stu_nmb number(8),  stu_name char(8) not null,  gender varchar2(2),  age number(2),   --检查约束  class varchar2 (40) not null,  email varchar2 (30),  sdate DATE,  constraint  con_nmb primary key (stu_nmb),  constraint con_check check ( gender in (男,女),  constraint ch_age CHECK (age BETWEEN 18 AND 30),   --检查约束  constraint uk_student_email UNIQUE (email) );   select * from student;   ---约束测试 --首先插入,正确 INSERT INTO student VALUES19.高三第六班,28@qq.com',SYSDATE); --重复主键,报错 INSERT INTO student VALUES(2314,吴海峰,男,18,高三第一班,21@qq.com',SYSDATE); --违反gender约束,报错 INSERT INTO student VALUES(2614,五德田,变化,29,高三第八班,24@qq.com',SYSDATE); --违反非空约束,报错 INSERT INTO student VALUES(2614,‘女’,24,高三第三班,'98@qq.com',SYSDATE); --唯一的约束检查,报错 INSERT INTO student VALUES(9874,张华乐,19,高三第四班,28@qq.com',SYSDATE);     ---------------------------------------------- -----分段2:创建表后定义约束 ---------------------------------------------- --三、无约束表,现在创建它 CREATE TABLE student (  stu_nmb number (8),  stu_name char (8),  gender varchar2 (2),  age number (2),  class varchar2 (40),  email varchar2 (30),  sdate DATE );   --开始创造约束 alter table student add constraint pk_nmb primary key (stu_nmb); --oracle需要在add后打括号 alter table student add constraint ck_gender check (gender in ('男',);--oracle需要在add后打括号 --非空约束和oracle区别很大 --oracle:alter table student modify(stu_name constraint con_name not null); ALTER TABLE student ALTER COLUMN stu_name SET NOT NULL;  ALTER TABLE student ADD CONSTRAINT uq_email UNIQUE (email);   select * from student;   ---约束测试 --首先插入,正确 INSERT INTO student VALUES(2314,张德田,男,19,高三第六班,28@qq.com',SYSDATE); --重复主键,报错 INSERT INTO student VALUES(2314,吴海峰,男,18,高三第一班,'21@qq.com',SYSDATE); --违反检查约束,报错 INSERT INTO student VALUES(2614,五德田,变化,29,高三第八班,24@qq.com',SYSDATE); --违反非空约束,报错 INSERT INTO student VALUES(2614,‘女’,24,高三第三班,‘98@qq.com',SYSDATE); --唯一的约束检查,报错 INSERT INTO student VALUES(9874,张华乐,女,19,高三第四班,'28@qq.com',SYSDATE);   --移除指定列的四种约束 ALTER TABLE student ALTER COLUMN stu_name DROP NOT NULL; ALTER TABLE student DROP CONSTRAINT uq_email; ALTER TABLE student DROP CONSTRAINT ck_gender; ALTER TABLE student DROP CONSTRAINT pk_nmb;  --禁用和启用约束 ALTER TABLE student DISABLE CONSTRAINT con_nmb ALTER TABLE student ENABLE CONSTRAINT con_nmb INSERT INTO student VALUES(2314,望德田,男性,21,高三第一班,42@qq.com',SYSDATE);

标签: nmb悬臂梁传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台