SQL 문장들의 종류
<데이터 조작어 DML>
데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어
데이터베이스의 테이블에 들어있는 데이터에 변형을 가하는 종류의 명령어들 새로운 값을 넣거나 값을 삭제 or 수정할때 사용한다.
<데이터 정의어 DDL>
테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 테이블의 구조를 생성하거나 변경하거나 삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령어들이다.
<데이터 제어어 DCL>
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어
<트랜잭션 제어어 TCL>
논리적인 작업의 단위를 물어서 DML에 의해 조작된 결과를 작업단위(트랜잭션)별로 제어하는 명령어
DDL 작성
생성 (CREATE)
- CREATE TABLE은 테이블을 생성하는 명령
- CREATE TABLE에서 하나의 컬럼(속성)에 대해 '컬럼명 데이터 타입 제약조건'으로 구성
CREATE TABLE 테이블명
{
컬럼명 데이터 타입 [제약조건]
};
CREATE TABLE의 제약 조건
PRIMARY KEY
- 테이블의 기본 키를 정의
- 유일하게 테이블의 각 행을 식별
FOREIGN KEY
- 외래 키를 정의
- 참조 대상을 테이블(컬럼명)로 명시
- 열과 참조된 테이블의 열 사이의 외래키 관계를 적용하고 설정
UNIQUE
- 테이블 내에서 얻은 유일한 값을 갖도록 하는 제약 조건
- NULL 입력이 가능하다.
NOT NULL
- 해당 컬럼은 NULL 값을 포함하지 않도록 하는 제약조건
CHECK
- 개발자가 정의하는 제약조건
- 참(TRUE)이어야 하는 조건을 지정
DEFAULT
- 데이터를 INSERT를 할 때 해당 컬럼의 값을 넣지 않는 경우 기본값으로 설정해주는 제약조건
CREATE VIEW
- CREATE VIEW는 뷰를 생성하는 명령
CREATE VIEW 뷰이름 AS 조회쿼리;
- VIEW 테이블의 SELECT문에는 UNION이나 ORDER BY 절을 사용할 수 없음
- 컬럼명을 기술하지 않으면 SELECT 문의 컬럼명이 자동으로 사용
CREATE OR REPLACE VIEW 기본문법
- CREATE OR REPLACE VIEW는 뷰를 교체하는 명령
- OR REPLACE라는 키워드를 추가하는 것을 제외 하고는 CREATE VIEW와 사용 방법이 동일
CREATE OR REPLACE VIEW 뷰이름 AS 조회쿼리;
CREATE INDEX
- CREATE INDEX는 인덱스를 생성하는 명령
- UNIQUE는 생략 가능
- 인덱스 걸린 컬럼에 중복 값을 허용하지 않음
- 복수 컬럼을 인덱스로 걸 수 있음
CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명1, 컬럼명2, ...};
수정 (ALTER)
- ALTER TABLE은 테이블을 수정하는 명령
ALTER TABLE 컬럼 추가
- 테이블에 필요한 컬럼을 추가하는 문법
- CREATE TABLE의 컬럼에 사용되는 제약조건인 PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK, DEFAULT를 ALTER 테이블에서도 사용 가능
ALTER TABLE 테이블명 ADD 컬럼명 데이터타입 [제약조건];
ALTER TABLE 컬럼 수정
- 테이블에 필요한 컬럼을 수정하는 문법
- 테이블 생성을 위한 CREATE 문에 제약조건을 명시 후에 ALTER를 통해 테이블 제약조건의 변경이 가능
ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입 [제약조건];
ALTER TABLE 컬럼 수정
ALTER TABLE 테이블명 DROP 컬럼명;
ALTER INDEX
ALTER [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명1, 컬럼명2, ...);
삭제(DROP, TRUNCATE)
DROP TABLE
-
DROP TABLE은 테이블을 삭제하는 명령
DROP TABLE 테이블명 [CASCADE | RESTRICT];
-
DROP TABLE 명령어의 옵션에는 CASCASE와 RESTRICT가 있음
-
CASCADE는 참조하는 테이블까지 연쇄적으로 제거하는 옵션
-
RESTRICT는 다른 테이블이 삭제할 테이블을 참조 중이면 제거하지 않는 옵션
-
CASCADE와 RESTRICT의 경우 외래 키(FOREIGN KEY)가 걸려 있을 때 해당
TRUNCATE TABLE
- TRUNCATE TABLE은 테이블 내의 데이터들을 삭제하는 명령
- TRUNCATE 후 자동으로 커밋을 한다. TRUNCATE의 삭제는 롤백 불가능
TRUNCATE TABLE 테이블명;
DROP VIEW
DROP VIEW 뷰이름;
DROP INDEX
- DROP INDEX는 인덱스를 삭제하는 명령어
DROP INDEX 인덱스명;
RENAME TABLE
- RENAME TABLE은 테이블명을 변경
RENAME 변경할_테이블명 TO 새로운테이블명;
DML 관련 문제
- 비절차적 데이터 조작어(DML)는 사용자가 무슨 데이터를 원하는지는 알려주지만, 어떻게 그것을 접근해야 되는지를 명세하지는 않는다.
NULL 관련 문제
NULL 에 대한 설명