SQL(Structured Query Language)
관계형 데이터베이스에서 데이터 정의, 데이터 조작, 데이터 제어를 하기 위해 사용하는 언어.
DDL(Data Definition Language)
데이터 정의어.
데이터베이스의 구조를 정의한다.
테이블을 생성, 수정, 제거한다.
CREATE
테이블 생성
CREATE TABLE 테이블명 (
컬럼명1 데이터타입(사이즈),
컬럼명2 데이터타입(사이즈),
...
[DEFAULT 기본값]
[무결성 제약 조건]
);
- 기존 테이블의 내용을 복사하여 새로운 테이블 생성
CREATE TABLE 테이블명
AS
SELECT * FROM 복사할테이블명
- 기존 테이블의 구조를 복사하여 새로운 테이블 생성
WHERE절에 '0 = 1'과 같이 항상 거짓이 되는 조건식을 사용하면 테이블의 구조만 복사된다.
무결성 제약 조건은 NOT NULL만 복사되고,
기본키, 외래키, DEFAULT값과 같은 제약 조건은 복사되지 않는 다.
CREATE TABLE 테이블명
AS
SELECT * FROM 복사할테이블명
WHERE 0 = 1;
DROP
테이블 삭제
기본키를 다른 테이블에서 참조하고 있으면 삭제할 수 없다.
DROP TABLE 테이블명;
다른 테이블에서 참조하고 있을 경우 CASCADE CONSTRAINTS를 사용하면 삭제할 수 있다.
DROP TABLE 테이블명 CASCADE CONSTRAINTS;
ALTER
테이블 컬럼 수정
- 컬럼 추가
ALTER TABLE 테이블명
ADD 컬럼명 데이터타입(사이즈);
ALTER TABLE 테이블명
ADD(컬럼명 데이터타입);
- 컬럼 변경
데이터가 존재할 경우 크기를 줄일 수 없다.
NULL값만 있거나 데이터가 존재하지 않아야 크기를 줄일 수 있다.
데이터가 존재할 경우 타입은 CHAR와 VARCHAR2만 변경할 수 있다.
변경된 DEFAULT값은 변경한 시점부터 적용된다.
ALTER TABLE 테이블명
MODIFY 컬럼명 데이터타입(사이즈);
- 컬럼 삭제
ALTER TABLE 테이블명
DROP COLUMN 컬럼명;
TRUNCATE
테이블 내의 모든 데이터 삭제
TRUNCATE TABLE 테이블명;
RENAME
테이블명 변경
RENAME 기존테이블명 TO 새테이블명
DML (Data Manipulation Language)
데이터 조작어.
데이터를 입력, 수정, 삭제한다.
SELECT
데이터 조회
- 부분 조회
SELECT 컬럼1
, 컬럼2
FROM 테이블명
WHERE 조건식;
- 전체 조회
SELECT * FROM 테이블명;
- 중복 제외 조회
SELECT DISTINCT 칼럼명
FROM 테이블명;
INSERT
데이터 입력
기술한 컬럼의 수, 순서와 값의 수, 순서가 일치해야 한다.
컬럼의 데이터 타입이 문자, 날짜일 경우 반드시 작은 따옴표(' ')를 사용한다.
INSERT INTO 테이블명 (컬럼1, 컬럼2, ...)
VALUES (값1, 값2, ...);
INTO절에 컬럼을 명시하지 않으면, 테이블을 생성했을 때 정의한 컬럼 순서와 동일한 순서로 입력된다.
INSERT INTO 테이블명
VALUES (값1, 값2, ...);
UPDATE
데이터 수정
UPDATE 테이블명
SET 컬럼1 = 값1,
컬럼2 = 값2
WHERE 조건식;
DELETE
데이터 삭제
DELETE FROM 테이블명
WHERE 조건식;
DCL (Data Control Language)
데이터 제어어.
사용자의 권한을 제어한다.
GRANT
권한 생성
GRANT 권한1, 권한2 TO 사용자
REVOKE
권한 삭제
REVOKE 권한1, 권한2 FROM 사용자
TCL (Transaction Control Language)
트랜잭션 제어어.
트랜잭션 : 데이터베이스 처리 작업을 모두 완료하거나, 모두 취소하도록 하는 작업 단위.
COMMIT
모든 작업(DML)이 정상적으로 처리 된 후 데이터베이스에 반영하는 명령어.
하나의 트랜잭션을 종료하며, 변경된 내용을 영구 저장한다.
DDL과 DCL은 자동으로 COMMIT된다.
COMMIT;
ROLLBACK
작업 중 문제가 생겼을 때, 트랜잭션을 처리하는 과정에서 발생한 변경사항을 취소하고 종료하는 명령어.
최종 COMMIT 이후의 작업들을 전부 취소한다.
ROLLBACK;