본문 바로가기

Computer Science/Database

[DB] SQL 기본 정리

반응형

1. SQL

SQL (Structured Query Language) 는 관계형 데이터베이스 관리 시스템, RDBMS의 데이터를 관리하기 위해 개발된 프로그래밍 언어이다. 관계형 데이터베이스에서 데이터의 검색과 관리, 스키마 생성과 수정, DB 객체 접근 조정 관리 등을 위해 고안되었다.

SQL 문법의 종류는 다음 세가지로 구분할 수 있다.

- DDL (Data Definition Language, 데이터 정의 언어)

 

DB에서 새로운 데이터의 정의 및 제거, 기존에 존재하는 데이터의 재정의 등의 역할을 하는 언어이다.
CREATE, DROP, ALTER, TRUNCATE 등이 존재한다.

- DML (Data Manipulation Language, 데이터 조작 언어)

 

DB에서 데이터 검색, 등록, 삭제, 갱신 등을 수행하는 언어이다.
SELECT, INSERT, UPDATE, DELETE 가 존재한다.

- DCL (Data Control Language, 데이터 제어 언어)


DB에서 데이터에 대한 액세스를 제어하기 위한 언어이다.
GRANT, REVOKE 가 존재한다.


2. SQL 기본 명령어

1) DDL

- CREATE

CREATE는 DB와 테이블을 생성하는 기능을 한다.

 

# DB_NAME의 이름을 가지는 데이터베이스 생성
CREATE DATABASE {DB_NAME};

# TABLE_NAME의 이름을 가지는 테이블 생성
# 테이블에 들어갈 컬럼과 해당 컬럼의 데이터 타입을 정의할 수 있다.
CREATE TABLE {TABLE_NAME} (
	{COLUMN} {DATA_TYPE}
);


- DROP

DROP은 DB와 테이블을 제거하는 기능을 한다.

 

# 해당 이름을 가진 데이터베이스, 테이블을 제거한다.
DROP DATABASE {NAME};
DROP TABLE {NAME};


- ALTER

기존에 존재하는 DB 객체의 구조를 변경한다. 테이블에 컬럼을 추가하거나 제한을 추가하는 경우에 사용한다.

# 해당 테이블에 컬럼을 추가한다.
ALTER TABLE {TABLE_NAME}
  ADD {COLUMN} {DATA_TYPE};

 

2) DML

- SELECT

SELECT는 데이터를 조회하는 기능을 한다.

 

# 테이블에서 조건에 부합하는 컬럼들을 조회한다.
SELECT {COLUMN}
 FROM {TABLE}
WHERE {CONDITION}


- INSERT

INSERT는 테이블에 데이터를 삽입하는 기능을 한다.

# 테이블에 해당 열에 값을 가지는 행을 추가한다.
INSERT INTO {TABLE} ({COLUMN1}, {COLUMN2}, ... )
VALUES ({VALUE1}, {VALUE2}, ... );



- UPDATE

UPDATE는 데이터를 수정하는 기능을 한다.

 

# 테이블에 해당 조건에 부합하는 행의 열 값을 변경한다.
UPDATE {TABLE}
   SET {COLUMN} = {VALUE}
 WHERE {CONDITION}


- DELETE

DELETE는 테이블에서 데이터를 제거한다.

 

# 테이블에서 조건에 부합하는 행들을 제거한다.
DELETE
  FROM {TABLE}
 WHERE {CONDITION}


3) DCL

- GRANT

사용자에게 접속, 객체 생성, DBA 권한 등의 권한을 부여한다.

 

# 사용자에게 해당 시스템의 권한을 부여한다.
# with admin option 을 사용하면 권한을 부여받은 사용자가 다른 사용자에게 해당 권한을 부여할 수 있게된다.
GRANT {SYS_AUTH}
   TO {USER} {WITH ADMIN OPTION};


- REVOKE

사용자에게 부여된 권한을 다시 회수한다.

 

# 사용자에게서 해당 권한을 회수한다.
REVOKE {SYS_AUTH}
  FROM {USER}


3. JOIN문

조인문은 두 테이블을 비교하여 매칭되는 값이 있는 경우에만 값을 반환하도록 하는 문법이다. 조인문은 매칭을 성사하는 방식에 따라 inner join, outer join 으로 나뉜다.

- (INNER) JOIN: 두 테이블의 교집합들로 해당 컬럼들이 모두 매칭 되는 경우에만 반환한다.
- OUTER JOIN: 한 테이블의 데이터를 기준으로 매칭하여 반환한다. 한쪽에만 값이 있고 다른 쪽 테이블에는 값이 없는 경우 null 로 표현이된다.
  • LEFT JOIN: 왼쪽의 테이블을 기준으로 조인한다.
  • RIGHT JOIN: 오른쪽 테이블을 기준으로 조인한다.
  • FULL JOIN: 양쪽 테이블의 데이터를 모두 포함하여 반환한다.

조인문은 on 키워드와 함께 사용하는데, on 뒤에는 양 테이블에서 비교할 컬럼들의 조건이 작성된다.


4. 기타 문법

- WHERE 절

쿼리에 조건을 부여할 때 사용하는 문법이다. WHERE 뒤에 조건을 적어서 사용한다.
조건에는 =, <, >, BETWEEN, LIKE, IN 등의 연산자를 사용할 수 있다.

- IN

조건을 줄 때 주로 사용한다. 해당 데이터 행 중에 조건으로 준 값이 있는 지 확인한다.

 

# TABLE1 에서 COL1 을 조회한다.
# 이때 해당 행의 COL2 값이 서브쿼리 데이터 셋에 존재하는 경우만 조회한다.
SELECT {COL1}
  FROM {TABLE1}
 WHERE {COL2} IN (
SELECT {COL3}
  FROM {TABLE2}
)

 

- BETWEEN

두 값 사이에 존재하는 값만 선택하도록 조건을 줄 때 사용한다.

 

# TABLE1 에서 COL1 을 조회한다.
# 이때 해당 행의 COL2 값이 VAL1 과 VAL2 사이에 존재하는 경우만 조회한다.
SELECT {COL1}
  FROM {TABLE1}
 WHERE {COL2} BETWEEN {VAL1} AND {VAL2}


- LIKE

정규표현식과 같이 문자의 패턴을 비교하는데 사용한다.
%는 0개 이상의 문자, _는 문자 1개를 의미한다.

 

# A로 시작하는 col을 찾는다.
...
WHERE COL LIKE 'A%'

# A로 시작하고 뒤에 다른 문자가 하나 더 위치하는 col을 찾는다.
...
WHERE COL LIKE 'A_'

 

- AND, OR, NOT

조건에서 사용할 수 있는 키워드 연산자들이다.

- ORDER BY

데이터를 정렬할 때 사용하는 키워드이다. ORDER BY 뒤에 나오는 속성들을 기준으로 정렬한다. 여러가지 속성들을 기준으로 삼기 위해서는 콤마를 사용해서 해당 속성들을 나열해주면 된다. 나열된 속성들의 순서에 따라 우선적으로 기준을 삼는다.

 

# 데이터들을 COL1, COL2, COL3 열의 값들을 기준으로 정렬한다.
SELECT *
  FROM TABLE
 ORDER BY COL1, COL2, COL3
반응형