2021-04-25
8893 단어 sql
실체 완전 성
관계 모델 의 실체 완전 성 은 CREATE TABLE 에서 PRIMARY KEY 로 정의 합 니 다.단일 속성 으로 구 성 된 코드 에 대해 두 가지 설명 방법 이 있 는데 하 나 는 열 급 제약 조건 으로 정의 되 고 다른 하 나 는 표 급 제약 조건 으로 정의 된다.여러 속성 으로 구 성 된 코드 는 하나의 설명 방법 만 있 는데 그것 이 바로 표 급 제약 조건 으로 정의 된다.
예제 5.1 Student 표 의 Sno 속성 을 코드 로 정의 합 니 다.
create table Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
CREATE TABLE Student
(Sno CHAR(9),
Sname CHAR(20) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20),PRIMARY KEY (Sno));
예 5.2 SC 표 의 Sno, Cno 속성 그룹 을 코드 로 정의 합 니 다.
CREATE TABLE SC
( Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT,
PRIMARY KEY (Sno,Cno)); --
실체 완전 성 검사 와 위약 처리 (1) 메 인 코드 값 이 유일 한 지, 유일 하지 않 으 면 삽입 이나 수정 을 거부 합 니 다.(2) 메 인 코드 의 각 속성 이 비어 있 는 지 확인 하고 하나 가 비어 있 으 면 삽입 이나 수정 을 거부 합 니 다.
완전 성 관계 모델 의 참조 완전 성 을 참조 하여 CREATE TABLE 에서 FOREIGN KEY 구문 으로 어떤 것 을 외부 코드 로 정의 하 는 지, REFERENCES 구문 으로 이러한 외부 코드 가 어떤 표 의 메 인 코드 를 참조 하 는 지 알려 줍 니 다.예 를 들 어 관계 SC 의 한 원 조 는 한 학생 이 선택 과목 의 성적 을 나타 내 는데 (Sno, Cno) 는 메 인 코드 이다.Sno, Cno 는 각각 Student 표를 인용 한 메 인 코드 와 Course 표 의 메 인 코드 를 참조 했다.
예 5.3 SC 의 참조 완전 성 을 정의 합 니 다.
CREATE TABLE SC
(Sno CHAR(9)NOT NULL,Cno CHAR(4) NOT NULL,Grade SMALLINT,
PRIMARY KEY (Sno, Cno),--
FOREIGN KEY (Sno) REFERENCES Student(Sno),--
FOREIGN KEY (Cno)REFERENCES Course(Cno));--
일반적으로 참조 표 와 참조 표 의 조작 이 참조 완전 성 을 위반 할 때 시스템 은 기본 정책 을 선택 하여 실행 을 거부 합 니 다.시스템 이 다른 정책 을 사용 하려 면 참조 표를 만 들 때 명시 적 으로 설명해 야 합 니 다.
예 5.4 현식 설명 은 완전 성의 위약 처리 예 시 를 참조한다.
create table SC
(Sno char(9) not null,
Cno char(4) not null,
Grade smallint,
primary key(Sno,Cno),
foreign key(Sno) references Studen(Sno)
on delete cascade -- SC3
on update cascade -- SC3
foreign key (Cno) references Course(Cno)
on delete on action -- course SC
on update cascade -- course cno , SC
);
DELETE UPDATE 。 , 5.4 Course , (SC ) , ; 。
, 、 , 。
사용자 정의 완전 성
1. 속성 상 제약 조건 의 정 의 는 CREATE TABLE 에서 속성 을 정의 하 는 동시에 응용 요구 에 따라 속성 상의 제약, 즉 속성 값 제약 을 정의 할 수 있 습 니 다. 이 는 열 값 이 비어 있 지 않 고 열 값 이 유일 하 며 열 값 이 하나의 조건 표현 식 에 만족 하 는 지 확인 하 는 것 을 포함 합 니 다.(1) 빈 값 을 가 져 올 수 없습니다. 5.5 는 SC 를 정의 할 때 Sno, Cno, Grade 속성 에서 빈 값 을 가 져 올 수 없습니다.
CREATE TABLE SC
Sno CHAR(9) NOT NULL,Cno CHAR(4) NOT NULL,Grade SMALLINT NOT NULL,
PRIMARY KEY (Sno, Cno),
…
);
(2) 열 값 의 유일한 예 5.6 은 부서 표 DEPT 를 만 들 고 부서 명 Dname 열 에서 유일 하 게 값 을 추출 하도록 요구 하 며 부서 번호 Deptno 열 주 코드 를 요구한다.
create table Dept
(Deptno numeric(2)
Dname char(9) unique not null,
--Dname
location char(10),
primary lkey(Deptno)
);
(3) 해당 요건 에 해당 하 는 5.7 Student 표 의 Ssex 는 CHECK 구문 으로 열 값 을 지정 합 니 다.
create char(9)primary key
Sname char(8) not null,
Ssex char(2) check(Ssex in(' ',' ')),
Sage smallint,
Sdept char(20)
);
예 5.8 SC 표 의 Grade 값 은 0 과 100 사이 여야 합 니 다.
create table SC
(Sno char(9),
Cno char(4),
grade smallint check (Grade>=0 and Grade<=100),
--Grade 0-100
primary key (Sno,Cno),
foreign key (Sno) references Student(Sno),
foreign key(Cno)references Course(Cno)
);
2. 속성 상 제약 조건 의 검사 와 위약 처 리 는 표 에 땀 을 닦 거나 속성 값 을 수정 할 때 관계 데이터 베이스 관리 시스템 은 속성 상의 제약 조건 이 만족 하 는 지 확인 하고 만족 하지 않 으 면 실행 을 거부 합 니 다.
모듈 의 제약 조건
예 5.9 학생 의 성별 이 남자 일 때 그 이름 은 Ms 로 시작 할 수 없다.표 에 원 그룹 을 삽입 하거나 속성 값 을 수정 할 때 관계 데이터 베이스 관리 시스템 은 속성 상의 제약 조건 이 만족 하 는 지 확인 하고 만족 하지 않 으 면 작업 이 거부 된다.속성 상 제약 조건 의 정의 와 유사 하 며, CREATE TABLE 구문 에 서 는 모듈 의 제약 조건, 즉 모듈 급 의 제한 을 CHECK 구문 으로 정의 할 수 있 습 니 다.속성 값 제한 에 비해 원 그룹 급 의 제한 은 서로 다른 속성 간 의 수치 에 대한 상호 제약 조건 을 설정 할 수 있 습 니 다.
create table Student4
( Sno char(9),
Sname char(8) not null,
Ssex char(2),
Sage smallint,
Sdept char(20),
primary key(Sno),
check (Ssex=' 'or Sname not like 'Ms.%')
-- Sname Ssex
);
표 에 원 그룹 을 삽입 하거나 속성 값 을 수정 할 때 관계 데이터 베이스 관리 시스템 은 원 그룹의 제약 조건 이 만족 하 는 지 확인 하고 만족 하지 않 으 면 실행 을 거부 합 니 다.
완전 성 제약 조건 명명 자구
CONSTRAINT 완전 성 제약 조건 은 NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK 구문 등 을 포함한다.
예 5.10 학생 등록 표 를 작성 한 학생 은 학 번 이 90000 - 99999 사이 이 고 이름 은 빈 값 을 찾 을 수 없 으 며 연령 이 30 보다 적 으 며 성별 은 '남' 또는 '여' 만 있 을 수 있다.
create table Student
( Sno numeric(6)
constraint C1 check(Sno between 90000 and 99999),
Sname char(20)
constraint C2 not null,
Sage numeric C3 check (Sage<30),
Ssex char(2)
constraint C4 check(Ssex in(' ',' ')),
constraint StudentKey primary e=key(Sno)
);
Student 표 에 5 개의 제약 조건 을 만 들 었 는데 메 인 코드 제약 (Student Key 라 고 명명) 과 C1, C2, C3, C4 네 개의 열 급 제약 을 포함한다.
예 5.11 교사 표 TEACHER 를 작성 하여 각 교사 의 급여 가 3000 위안 보다 낮 지 않도록 요구한다.지급 해 야 할 임금 은 급여 열 Sal 과 공제 항 Deduct 의 합 이다.
create table Teacher
( Eno numeric(4) primary key --
Ename char(10)
Job char(8)
Sal numeric(7,2),
Deduct numeric(7,2),
Deptno numeric(2),
constraint Teacherfkey foreign key(Deptno)
references Dept(Deptno),
constraint C1 check(Sal+Deduct>=3000)
);
수정 표 의 완전 성 제한 예 5.12 제거 예 5.10 Student 표 에서 성별 에 대한 제한.
alter table Student
drop constraint C4;
예 5.13 표 Student 의 제약 조건 을 수정 하여 학 번 을 900000 ~ 999999 사이 로 바 꾸 고 나 이 는 30 미 만 에서 40 미 만 으로 바 꾸 면 원래 의 제약 조건 을 먼저 삭제 한 다음 에 새로운 제약 조건 을 추가 할 수 있다.
alter table Student
drop constraint C1;
alter table Student
add constraint C1 check (Sno between 900000 and 99999);
alter table Student
drop constraint C3;
alter table Student
add constraint C3 check (Sage<40);
단언 이 단언 을 만 드 는 구문 형식 CREATE ASSERTION 은 모든 단언 에 하나의 이름 을 부여 합 니 다. 제약 조건 은 WHERE 자구 의 조건 표현 식 과 유사 합 니 다. /(T - SQL 에는 이 기능 이 없 음) 예 5.18 데이터베이스 과정 을 최대 60 명의 학생 이 선택 과목 으로 제한 합 니 다.
CREATE ASSERTION ASSE_SC_DB_NUM
CHECK (60 >= (select count(*)
From Course,SC
Where SC.Cno=Course.Cno and Course.Cname =' ')
);
예 5.19 한 과목 당 최대 60 명의 학생 선택 과목 을 제한한다.
CREATE ASSERTION ASSE_SC_CNUM1
CHECK(60 >= ALL (SELECT count(*)
FROM SC
GROUP BY cno)
);
트리거 트리거 트리거 는 사용자 가 관계 표 에 정의 하 는 이벤트 로 구동 되 는 특수 한 과정 이다.정의 되면 트리거 는 데이터베이스 서버 에 저 장 됩 니 다.표 에 대한 모든 삭제 작업 은 서버 가 해당 하 는 트리거 를 자동 으로 활성화 시 키 고 관계 데이터 베이스 관리 시스템 의 핵심 층 에서 집중 적 인 완전 성 통 제 를 한다.
정의 트리거
트리거 는 사건 - 조건 - 동작 규칙 이 라 고도 부른다.SQL 은 CREATE TRIGGER 명령 으로 트리거 를 만 듭 니 다. 일반적인 형식 은 CREATE TRIGGER {BEFOR | AFTER} ON REFERENCING NEW | OLD ROW AS FOR EACH {ROW | STATEMENT} [WHEN] 입 니 다.
예 5.21 표 SC 의 grade 속성 을 수정 할 때 점수 가 10% 증가 하면 이번 조작 을 다른 표 SC 에 기록 합 니 다.U (Sno, Cno, Oldgrade, Newgrade) 중.
create trigger SC_T
after update of Grade on SC
referencing
oldrow as OldTuple,
newrow as NewTuple
for each row
when(NewTuple.Grade>1.1*OldTuple.Grade)
insert into SC_U (Sno,Cno,OldGrade,NewGrade)
values(OldTuple.Sno,OldTuple.Cno,OldTuple.Grade,NewTuple.Grade)
예 5.22 표 Student 의 삽입 작업 에 추 가 된 학생 개 수 를 표 Student - InsertLog 에 기록 합 니 다.
for each statement
insert into StudentInsertLog(Numbers)
select count(*)
from delta
이 예 에서 나타 난 for each statement 은 트리거 이벤트 인 INSERT 문 구 를 실행 한 후에 야 트리거 의 동작 을 한 번 수행 하 는 것 을 나타 내 는데 이 트리거 를 구문 급 트리거 라 고 합 니 다.5.21 의 트리거 시 행 급 트리거.기본 트리거
트리거 트리거 를 활성화 하 는 실행 은 트리거 이벤트 에 의 해 활성화 되 고 데이터베이스 서버 에서 자동 으로 실 행 됩 니 다.하나의 데이터 시트 에 여러 개의 트리거 가 있 을 수 있 습 니 다. 같은 표 의 트리거 가 활성화 되 었 을 때 다음 과 같은 실행 순 서 를 따 릅 니 다. (1) 이 표 의 BEFORE 트리거 (2) 트리거 SQL 문 구 를 활성화 합 니 다 (3) 이 표 의 AFTER 트리거 를 실행 하여 트리거 SQL 문 구 를 DROP TRIGGER ON 으로 삭제 합 니 다.트리거 는 만 든 트리거 여야 하 며 권한 이 있 는 사용자 만 삭제 할 수 있 습 니 다.
저장 프로 세 스 저장 프로 세 스 는 프로 세 스 화 된 SQL 문 구 를 작성 하 는 과정 으로 이 과정 은 컴 파일 과 최적화 를 거 쳐 데이터베이스 서버 에 저장 되 기 때문에 저장 프로 세 스 라 고 부 르 며 사용 할 때 호출 하면 된다.1. 저장 과정의 약간 (1) 저장 과정 이 실 행 된 SQL 문 구 를 해석 하 는 것 처럼 조작 요 구 를 할 때 문법 분석 과 최적화 작업 을 하지 않 기 때문에 효율 이 높다.(2) 저장 과정 은 클 라 이언 트 와 서버 간 의 통 신 량 을 낮 춘 다.(3) 기업 규칙 을 실시 하 는 데 편리 하 다.2. 저장 프로 세 스 의 사용자 인터페이스 (1) 생 성 저장 프로 세 스 CREATE OR REPLACE PROCEDURE 프로 세 스 이름 ([매개 변수 1, 매개 변수 2,...] AS;(2) 저장 프로 세 스 CALL / PERFORM PROCEDURE 프로 세 스 명 ([매개 변수 명 1, 매개 변수 명 2...]) 을 실행 합 니 다.CALL 이나 PERFORM 등 방식 으로 저장 과정의 실행 을 활성화 합 니 다.프로 세 스 화 SQL 에서 데이터베이스 서버 는 프로 세 스에 서 다른 저장 프로 세 스 를 호출 하 는 것 을 지원 합 니 다.(3) 저장 과정 을 수정 하면 ALTER PROCEDURE 를 사용 하여 저장 과정 이름 을 바 꿀 수 있 습 니 다.ALTER PROCEDURE 프로 세 스 명 1 RENAME to 프로 세 스 명 2;ALTER PROCEDURE 를 사용 하여 저장 과정 을 다시 컴 파일 할 수 있 습 니 다.ALTER PROCEDURE 프로 세 스 이름 COMPILE;(4) 저장 프로시저 DROP PROCEDURE 프로 세 스 이름 삭제 ();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깊이 중첩된 객체를 정확히 일치 검색 - PostgreSQL목차 * 🚀 * 🎯 * 🏁 * 🙏 JSON 객체 예시 따라서 우리의 현재 목표는 "고용주"사용자가 입력한 검색어(이 경우에는 '요리')를 얻고 이 용어와 정확히 일치하는 모든 사용자 프로필을 찾는 것입니다. 즐거운 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.