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