- 등수 동점 처리 프로시저
alter table depy_copy add constraint depy_dno_pk primary key(dno); 
alter table emp_copy add constraint emp_dno_fk foreign key(dno) references depy_copy(dno); 
--e 테이블에서 d.dno - e.dno(외래키) 연결, d 테이블 참조create or replace procedure sp_rank1
is
  old score%rowtype;
  temp score.rank%type;
  cursor cur is select * from score order by tot desc;
  
begin
temp := 1;
for rec in cur loop
  exit when cur%notfound;
  if (old.tot = rec.tot) then
    rec.rank:=old.rank;
  else
     rec.rank:=temp;
  end if;
  update score set rank=rec.rank where hakbun = rec.hakbun;
  temp:=temp+1;
  old:=rec;
end loop;
end;
https://chlee21.tistory.com/63
https://fordeveloper2.tistory.com/9492
https://hoyeonkim795.github.io/posts/%ED%82%A4-%EA%B0%9C%EB%85%90-%EB%B0%8F-%EC%A2%85%EB%A5%98/
무결성 (CONSTRAINT)
: 컬럼을 지정하는 성질(설정)
=> 데이터의 정확성, 일관성, 신뢰성 유지
- 무결성 삭제
 1. ALTER TABLE 테이블명
    DROP PRIMARY KEY;
    -- 같은 형식으로만 삭제 가능 (키 지정 불가, 모든 키 삭제)
 2. ALTER TABLE 테이블명
    DROP CONSTRAINT 키명 ;
    -- 모든 키, 특정 키 모두 삭제 가능
- CASCADE CONSTRAINTS : 제약조건 포함 테이블 삭제
DROP TABLE 테이블명
CASCADE CONSTRAINTS;
- 기본키 (PRIMARY KEY) : 유일무이한 값 갖는 키
중복 X, null X
테이블당 한 개만 지정 가능 (내부에 여러 컬럼이 있을 수 있음)
ex. 주민등록번호, 학번
 1. CREATE TABLE 테이블명(
       컬럼명 데이터형식(크기) PRIMARY KEY
     );
 2. CREATE TABLE 테이블명(
       컬럼명 데이터형식(크기) CONSTRAINT 키명 PRIMARY KEY
    );
 3. CREATE TABLE 테이블명(
       컬럼명1 데이터형식(크기),
       컬럼명2 데이터형식(크기)
       CONSTRAINT 키명 PRIMARY KEY(컬럼명1, 컬럼명2)
     );
--기존 테이블에 추가
 1. ALTER TABLE 테이블명
    ADD PRIMARY KEY (컬럼명1, 컬럼명2..);
 2. ALTER TABLE 테이블명
    ADD CONSTRAINT 키명
    PRIMARY KEY(컬럼명);
- 고유키 (UNIQUE KEY)
중복 X, null O
1. CREATE TABLE 테이블명(
       컬럼명 데이터형식(크기) UNIQUE
     );
 2. CREATE TABLE 테이블명(
        컬럼명 데이터 형식(크기) CONSTRAINT 키명 UNIQUE
     );
ALTER TABLE 테이블명 
ADD UNIQUE(컬럼명);
ALTER TABLE 테이블명
ADD CONSTRAINT 키명
UNIQUE(컬럼명);
https://bamdule.tistory.com/45
- 외래키 (FOREIGN KEY)
: 관련 있는 테이블들 간 데이터의 일관성 보장 & 두 테이블 연결해주는 키
1) 부모 테이블의 기본키/고유키(=참조키)만 외래키로 지정할 수 있다.
2) 외래키 값은 NULL이거나 참조키 값과 동일해야 한다. (참조 무결성 제약조건)
3) 참조키가 여러 개의 컬럼이면 참조키 컬럼을 원하는 개수만큼 묶어서 외래키로 지정할 수 있다. 
4) 외래키&참조키는 같은 데이터 타입이어야 한다.
5) 외래키의 크기는 참조키의 크기보다 작으면 안 된다
중복 O, null O
※
자식 테이블 : 외래키가 포함된 테이블 
부모 테이블 : 외래키 값을 제공하는 테이블
 CREATE TABLE 테이블명(
     컬럼 데이터타입(크기),..
     CONSTRAINT 키명 FOREIGN KEY(컬럼명)
        REFERENCES 대상테이블명(기본/고유키 컬럼명)
  );
ALTER TABLE 자식테이블명 
ADD FOREIGN KEY(컬럼명) 
REFERENCES 부모테이블명(컬럼명);
ALTER TABLE 테이블명
ADD CONSTRAINT 키명
FOREIGN KEY(컬럼명)
REFERENCES 부모테이블명(컬럼명);
alter table depy_copy add constraint depy_dno_pk primary key(dno); 
alter table emp_copy add constraint emp_dno_fk foreign key(dno) references depy_copy(dno); 
--e 테이블에서 d.dno - e.dno(외래키) 연결, d 테이블 참조
- CHECK : 값 범위 지정 (지정된 값 외에 사용 불가)
중복 O, NULL O
CREATE TABLE TB_CHECK(
     컬럼명1 데이터형식(크기),
     컬럼명2 데이터형식(크기),
     CONSTRAINT 키명 ( 조건 ex. 컬럼명1 IN('지정값1', '지정값2', '지정값3') ),
     CONSTRAINT 키명 ( 조건 ex. 컬럼명2 > 범위1 AND 컬럼명2 <= 범위2)
  );
ALTER TABLE 테이블명 
ADD CONSTRAINT 키명
CHECK(조건/범위);
- NOT NULL
중복 O, NULL X
CREATE TABLE 테이블명(
	컬럼명 데이터타입(크기) NOT NULL,
);
ALTER TABLE 테이블명 
MODIFY 컬럼명 NOT NULL;
'Programming > 국비학원' 카테고리의 다른 글
| 220921 - 서버 - 서블릿 매핑, 응답 및 요청 처리 (0) | 2022.09.22 | 
|---|---|
| 220920 - 서버 - 웹 애플리케이션 개발 환경 구축 (0) | 2022.09.21 | 
| 220916 - PL/SQL - 트리거 (0) | 2022.09.17 | 
| 220915 - PL/SQL - 커서, 함수, 프로시저 (0) | 2022.09.16 | 
| 220914 - PL/SQL - 제어문, 커서 (0) | 2022.09.15 | 
 
                  
                 
                  
                