SQLD 6~20번 문제 해설

0

SQLD 요약 정리

목록 보기
3/10

Oracle로 DDL 짜기

CREATE문

CREATE TABLE 테이블명
(컬럼명 데이터타입 (NOT NULL일경우 적기)
, 컬럼명2 데이터타입 (NOT NULL일 경우 적기));
ALTER TABLE 테이블명 ADD PK명 PRIMARY KEY (컬럼명);
이렇게 쓰면 컬럼에 PK를 추가해서 테이블 생성이 가능하다.

CREATE TABLE 테이블명
(컬럼명 데이터타입 (NOT NULL일경우 적기)
, 컬럼명2 데이터타입 (NOT NULL일 경우 적기)
, ADD PK명 PRIMARY KEY(컬럼명));

위와 같이 짜면 된다.


ALTER문

ORACLE
ALTER TABLE 테이블명 MODIFY 컬럼이름 데이터유형 NOTNULL/NULL

SQL SERVER
ALTER TABLE 테이블명 ALTER 컬럼이름 데이터유형 NOTNULL/NULL

을 사용한다.


NULL이란?

  • 모르는 값을 의미한다.
  • 값의 부재를 의미한다.
  • NULL과 모든 비교(IS NULL을 제외)는 알 수 없음(Unknown)을 반환한다.
    • 공백이나 숫자 0을 의미한다(X)

ON DELETE CASCADE

참조하고 있는 컬럼이 지워지면 데이터가 있는 모든 행을 지워버린다.
이와 달리 ON DELETE SET NULL은 지워질 경우 NULL을 반환한다.


제약조건

1) UNIQUE : 테이블에서 중복되는 값이 없으며 NULL 입력 가능
2) PK : 테이블에서 중복되는 값이 없으며 NULL 입력 불가능
주 키로 테이블당 1개만 생성이 가능하다.
3) FK : 외래키로 테이블당 여러개 생성이 가능하다.
4) NOT NULL : 명시적으로 NULL 입력을 방지한다.


물리적 테이블 명명법

  • 문자 시작이 원칙
  • 테이블끼리는 이름 중복 금지
  • 단수형을 권고한다.
  • 테이블 내에서 컬럼명 중복 금지
  • 벤더에서 사전에 정의한 예약어를 사용할 수 없다.
  • 벤더별로 길이의 한계가 있다.
  • 숫자, 영어, _, 8, # 문자만 가능하다.

Index란?

데이터 베이스 안에서 검색의 속도를 빠르게 도와주는 역할
데이터 베이스의 성능 개선을 위해 가장 먼저 확인하고 있음.
실무에서도 데이터의 속도가 느려지면 Index가 없거나 잘못 만들어졌을 경우가 많고 성능에서 중요한 역할을 함.

Index 생성 문법
CREATE INDEX 인덱스명 ON 테이블명(컬럼명);


외래키(FK)

  • 테이블 생성 시 설정할 수 있다.
  • 외래키 값은 널 값을 가질 수 있다.
  • 한 테이블에 하나 이상 존재할 수 있다.
  • 외래키 값은 참조 무결성 제약을 받을 수 있다.

제약조건(Constrait)

  • Check 제약조건은 데이터베이스에서 데이터의 무결성을 유지하기 위해 테이블의 특정 컬럼(Column)에 설정하는 제약이다.
  • 기본키(Primary Key)는 반드시 테이블 당 하나의 제약만을 정의할 수 있다.
  • 고유키(Unique Key)로 지정된 모든 컬럼들은 Null 값을 가질 수 있다.
  • 외래키(Foriegn Key)는 테이블 간의 관계를 정의하기 위해 기본키(Primary Key)를 다른 테이블의 외래키가 참조하도록 생성한다.

자주 나오는 내용인데 UK가 Null값을 가질 수 있음을 항상 기억하자 PK와의 차이는 Null값을 가질 수 있는지 없는지이다.


특정 컬럼을 지우는 쿼리문

ALTER TABLE 테이블명 DROP 컬럼명;
을 이용하여 특정 컬럼을 삭제할 수 있다.


테이블 명을 변경하는 쿼리문

RENAME 기존테이블명 TO 변경할 테이블명;


참조동작 정리

1. 입력참조

1) DEPENDENT : 참조되는(부모) 테이블에 PK 값이 존재할 때만 입력을 허용
2) AUTOMATIC : 참조되는(부모) 테이블에 PK 값이 없는 경우는 PK를 생성 후 입력
3) DEFAULT : 참조되는(부모) 테이블에 PK 값이 없는 경우 지정된 기본값으로 입력
4) CUSTOMIZED : 특정한 조건이 만족할 때만 입력을 허용
5) NULL : 참조되는(부모) 테이블에 PK 값이 없는 경우 외부키를 NULL 값으로 처리
6) NO EFFECT : 조건 없이 입력을 허용

2. 수정/삭제

1) CASCADE : Master 삭제 시 Child 같이 삭제
2) SET NULL : Master 삭제 시 Child 해당 필드 Nulll 처리
3) SET DEFAULT : Master 삭제 시 Child 해당 필드 Default 값으로 설정
4) RESTRICT : Child 테이블에 PK 값이 없는 경우만 Master 삭제 허용
5) NO ACTION : 참조 무결성을 위반하는 삭제/수정 액션을 취하지 않음.
6) NO EFFECT : 조건 없이 삭제/수정 허용
7) COSTOMIZED : 특정 조건을 만족할 때만 수정/삭제 허용
8) DEFAULT : 참조되는(부모) 테이블의 수정을 항상 허용하고 참조하는(자식) 테이블의 외부키를 지정된 기본값으로 변경


INSERT문

  • INSERT INTO 테이블명 VALUES(컬럼명, 컬럼명, 컬럼명, 컬럼명);
    이 때는 테이블에 있는 모든 테이블에 값이 있어야지만 성공한다.

  • INSERT INTO 테이블명(컬럼명, 컬럼명) VALUES(데이터값, 데이터값);
    특정 컬럼을 지정해서 해당 컬럼에만 데이터를 넣고 나머지는 NULL로 들어간다.

profile
비전공자 개발초보입니다!

0개의 댓글