CREATE TABLE 문과 제약조건 설정
create table 테이블명
(속성명 데이터타입 [DEFALT 기본값] [NOT NULL],[PRIMARY KEY(col1, col2)]
[UNIQUE (col1, B)] -- 후보기
[FOREIGN KEY(A, B)]
REFERENCES 참조T(참조속성)
[ON DELETE 옵션][ON UPDATE 옵션]
[CONSTRAINT PK명 PRIMATY KEY (PK속성)]
[CHECK(조건문)]
문제유형 1. on update/delete
on update : 참조(1쪽원본) 테이블 값이 수정되었을 때 기본(M쪽)이 해야할 action지정
on delete : 참조(1쪽원본) 테이블 값이 삭제되었을 때 기본(M쪽)이 해야할 action지정
옵션: no action, cascade, set null, defalt
cascade :참조테이블속성이 변경되면 기본테이블 속성도 같이 변경
set null: 참조테이블 속성이 변경되면 기본테이블 속성도 null로 변경
defalt: 참조테이블 속성이 변경되면 기본테이블 속성도 defalt값으로 변경
문제유형 2. 테이블 명 특수문자는 _ $ #만 사용가능
문제유형 3. UNIQUE 카는 NULL이 허용된다.
문제유형 4. PK는 1개만 존재하나 구성속성은 2개이상이 가능하다.
문제유형 5. FK는 NULL이 허용된다.
문제유형 6. SQLSERVER는 ALTER TABLE시 복수컬럼을 변경할 수 없다.
오라클 ex)
ALTER TABLE T1 MODIFY COLUMN (col1 varchar2 not null, col2 varchar2)
이 때 "반드시 모든 제약조건을 다시 명시"해야한다. (일부만 하면 그 일부로 변환된다.)
문제유형 7. 제약조건 설정 예시(1) Create table 이용, [RANDOM pk명, 지정 pk명] (2) alter 이용
(1) random pk명 사용
create table (ID VARCHAR2(10), PRIMARY KEY )
(2) 지정 pk명 사용(PK_1)
create table (ID VARCHAR2(10),
constraint PK_1 PRIMARY KEY(ID))
(3) alter table 사용(PK_1)
alter table ID column add constraint PK_1
PK, FK와 참조무결성(참조동작)
삭제구문
| 삭제 | 구현 |
|---|
| CASCADE | 부모삭제시 자식도 삭제 |
| SET NULL | 부모삭제시 자식 NULL |
| SET DEFALT | 부모삭제시 자식 DEFALT |
| RESTRICT | 자식에게 PK값이 없을 때만 삭제허용 |
입력구문
| 입력 | 구현 |
|---|
| AUTOMATIC | PK가 없을 때 자동 PK테이블에 데이터 생성 후 FK를 입력 |
| DEPENDENT | PK가 존재할 때만 FK에 데이터 입력 가능 |
| SET NULL | PK가 없을 때 자식 NULL처리 |
| SET DEFALT | PK가 없을 때 자식 DEFALT로 입력 |
키의 종류
1. PK, 2. FK, 3. 슈퍼키(unique존재 모두[pk, unique]) 4. 후보키(unique)
TOP (N)쿼리 사용법
가장 높은것 3개 골라내는 것.
select top(3) with ties col1, col2
from 성적
order by 승리건수 desc;
1. with ties
3위가 3명이면 , 중복된 3명도 출력 => 5건 출력
2. order by
order by를 빠뜨리면, 결과는 같아도, 출력순서가 다르다.