집 >데이터 베이스 >MySQL 튜토리얼 >SQL 무결성 제약 조건은 무엇입니까?
SQL 무결성 제약 조건에는 다음이 포함됩니다. 1. "NOT NULL" null이 아닌 제약 조건, 지정된 열은 null 값을 허용하지 않습니다. 2. "UNIQUE" 고유 제약 조건, 지정된 열에 중복 값이 없습니다. PRIMARY KEY" 기본 키 제약 조건은 테이블의 각 행을 고유하게 식별합니다. 4. "FOREIGN KEY" 외래 키 제약 조건 5. "CHECK" 조건 제약 조건.
무결성 제약 조건은 사용자가 수정한 내용이 데이터의 일관성을 파괴하지 않도록 하고 데이터의 정확성과 호환성을 보호하기 위한 수단입니다.
5가지 공통 제약 조건:
NULL: null이 아닌 제약 조건 C, 지정된 열은 null 값을 허용하지 않습니다.
UNIQUE: 고유 제약 조건 U, 지정된 열에 중복 값이 없습니다. 또는 모든 테이블의 값 값 또는 각 값 세트는 고유합니다
PRIMARY KEY: 기본 키 제약 조건 P는 테이블의 각 행을 고유하게 식별하며 null 값은 허용되지 않습니다. 테이블은 하나의 기본만 가질 수 있습니다. key 제약 조건
FOREIGN KEY: 외래 키 제약 조건 R, 한 테이블의 열이 다른 테이블의 열을 참조하여 자신을 참조하는 열을 가리킬 수 있는 종속 관계를 유발합니다.
CHECK: 조건부 제약 조건 C, 여부를 지정합니다. 열이 특정 조건을 만족합니다.
null이 아닌 제약 조건 NK
create table member( mid number, name varchar2(200) not null );
삽입 오류:
SQL> insert into member(mid,name) values(1,null); * 第 1 行出现错误: ORA-01400: 无法将 NULL 插入 ("SCOTT"."MEMBER"."NAME")
Unique 제약 조건 UK
drop table member purge;create table member( mid number, name varchar2(200) not null, email varchar2(50) unique );
삽입 오류
SQL> insert into member(mid,name,email) values (1,'scott','scott@163.com');
1개의 행이 생성되었습니다.
SQL> insert into member(mid,name,email) values (2,'jack','scott@163.com'); insert into member(mid,name,email) values (2,'jack','scott@163.com') * 第 1 行出现错误: ORA-00001: 违反唯一约束条件 (SCOTT.SYS_C0010891)
제약조건의 이름을 지정하세요
이 오류는 이전의 null이 아닌 제약조건과 같은 문제가 있는 필드를 사용자에게 정확하게 알려주지 않습니다. 이 제약조건의 이름을 지정할 수 있습니다.
create table member( mid number, name varchar2(200) not null, email varchar2(50), constraint uk_email unique(email) );
기본 키 제약조건 PK
기본 키 제약 조건 = null이 아닌 제약 조건 + 고유 제약 조건
create table member( mid number, name varchar2(200) not null, email varchar2(50), constraint pk_number primary key(mid), constraint uk_email unique(email) );
잘못된 데이터 삽입 및 오류 보고:
SQL> insert into member(mid,name,email) values (1,'jack','scott@163.com');
1 행 생성됨
SQL> insert into member(mid,name,email) values (1,'jack','jack@163.com'); insert into member(mid,name,email) values (1,'jack','jack@163.com') * 第 1 行出现错误: ORA-00001: 违反唯一约束条件 (SCOTT.PK_NUMBER)
제약 확인 중 CK
create table member( mid number, name varchar2(200) not null, age number check(age between 0 and 200), sex varchar2(10), email varchar2(50), constraint pk_number primary key(mid), constraint uk_email unique(email), constraint ck_sex check(sex in('男','女')) );
잘못된 데이터 삽입 및 오류 보고:
SQL> insert into member(mid,name,age,sex,email) values (1,'Jack','300','无','jack@163.com'); insert into member(mid,name,age,sex,email) values (1,'Jack','300','无','jack@163.com') * 第 1 行出现错误: ORA-02290: 违反检查约束条件 (SCOTT.CK_SEX)
기본 외래 키 제약 조건 FK
create table member( mid number, name varchar2(200) not null, constraint pk_mid primary key(mid) ); create table advice( adid number, content clob not null, mid number, constraint pk_adid primary key(adid), constraint fk_mid foreign key(mid) references member(mid) );
데이터를 올바르게 삽입하세요. mid는 첨부된 테이블에 이미 존재합니다.
insert into member(mid,name) values (1,'Scott'); insert into member(mid,name) values (2,'Jack'); insert into advice(adid,content,mid) values (1,'test',1); insert into advice(adid,content,mid) values (2,'test',2); commit;
부모 테이블에 없는 mid 데이터를 삽입하세요.
SQL> insert into advice(adid,content,mid) values (3,'test',3); insert into advice(adid,content,mid) values (3,'test',3) * 第 1 行出现错误: ORA-02291: 违反完整约束条件 (SCOTT.FK_MID) - 未找到父项关键字
기본 및 외래 키 제약 조건을 사용하면 새로운 키가 발생합니다. 테이블 삭제 및 데이터 삭제 문제
상위 테이블을 삭제하려면 하위 테이블을 먼저 삭제해야 합니다
SQL> drop table member;drop table member * 第 1 行出现错误: ORA-02449: 表中的唯一/主键被外键引用
상위 테이블 삭제가 필수이므로 purge 옵션을 사용할 수 없으며 기본 및 외래 키 제약 조건이 있습니다. word table은 더 이상 존재하지 않습니다
SQL> drop table member cascade constraint; 表已删除。 SQL> insert into advice(adid,content,mid) values (3,'test',3);
1개의 행이 생성되었습니다
상위 테이블의 데이터를 삭제하려면 먼저 word table의 데이터를 삭제하세요
SQL> delete from member where mid=1; delete from member where mid=1 * 第 1 行出现错误: ORA-02292: 违反完整约束条件 (SCOTT.FK_MID) - 已找到子记录
이 방법 외에도 캐스케이드 작업을 설정할 수도 있습니다 절
on delete cascade
create table advice( adid number, content clob not null, mid number, constraint pk_adid primary key(adid), constraint fk_mid foreign key(mid) references member(mid) on delete cascade );
이 경우 추가된 테이블 데이터를 삭제하면 테이블이라는 단어도 삭제됩니다.
on delete set null
create table advice( adid number, content clob not null, mid number, constraint pk_adid primary key(adid), constraint fk_mid foreign key(mid) references member(mid) on delete set null );
이런 식으로 상위 테이블의 데이터를 삭제하면 하위 테이블의 해당 관련 필드가 null
SQL> delete from member where mid=1; 已删除 1 行。 SQL> select * from advice; ADID CONTENT MID ---------- ---------- ---------- test test 2
View 제약 조건
SQL> select constraint_name,constraint_type,table_name from user_constraints; CONSTRAINT_NAME C TABLE_NAME ------------------------------ - ------------------------------ FK_DEPTNO R EMP PK_EMP P EMP PK_DEPT P DEPT
R foreign으로 설정됩니다. 키 제약 조건, C 검사 제약 조건, Q 고유 제약 조건, P 기본 키 제약 조건
제약 조건 수정
제약 조건 추가
alter table member add constraint pk_mid primary key(mid); alter table member add constraint ck_age check(age between 0 and 200); alter table member modify (name varchar2(50) not null);
null이 아닌 제약 조건은 수정 방법을 사용한다는 점에 유의해야 합니다
제약 조건 비활성화/활성화
비외래 키
alter table member disable constraint ck_age; alter table member enable constraint ck_age;
외부 키
alter table member disable constraint pk_mid cascade;
제약 조건 삭제
alter table member drop constraint pk_mid cascade; alter table member drop constraint ck_age;
위 내용은 SQL 무결성 제약 조건은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!