본문 바로가기

Programming/국비학원

220919 - 오라클 - 무결성

  • 등수 동점 처리 프로시저
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;