본문 바로가기
IT

SQL의 기본 개념 - 2

by 힁구띠 2022. 7. 13.

SQL의 역할

SQL의 역할은 크게 DML, DDL 두 가지로 볼 수 있다.

DML(데이터 조작어, Data Mainpulation Language)은 데이터 추출, 저장, 삭제 등 데이터를 조작하는 것에 관한 것이고, DDL(데이터 정의어, Data Definition Language)은 데이터가 저장되는 테이블이나 각종 객체들을 생성하는 역할을 한다.

 

DML

데이터를 조작하는 역할인 DML의 기본 패턴에는 3이 아닌 4가지 유형이 존재한다. 실제 SQL문에서는 데이터를 저장하는 행위를 데이터의 입력과 수정 두 가지로 다시 구분하기 때문이다. 다시 말하자면, 새로 생성되어 들어가는 데이터는 입력(Insert)에 속하고, 기존 데이터를 변경하는 것은 수정(Update)에 속한다.

  • 조회: SELECT
  • 삭제: DELETE
  • 저장: INSERT
  • 변경: UPDATE

 

SELECT

데이터를 조회할 때 사용한다. RDBMS에서 모든 데이터들은 2차원 구조의 테이블에 저장된다. 일반 적으로 널리 사용되는 엑셀 시트와 동일한 구조를 가지고 있는 가장 기본적인 데이터베이스 객체이다.

형식:

SELECT 컬럼1, 컬럼2...

FROM 테이블1, 테이블2...

WHERE 조건 사항 등

영문으로 된 부분이 패턴에 해당되고 한글로 표시된 부분은 목적 데이터들을 조회하기 위해 여러 값들을 넣는 영역이다. SELECT 뒤에 보고자 하는 컬럼 이름을 설정하고, FROM 뒤에 대상 테이블을 나열한다. WHERE 절에는 조건식을 추가할 수 있는데, 이 조건식을 만족하는 데이터들만 조회된다. 조건식은 일종의 필터 역할을 수행한다고 볼 수 있다. WHERE 절은 필요에 의해 생략이 가능하지만, SELECT, FROM 절은 필수 사항이다.

예시를 보면,

SELECT last_name, first_name

FROM employee

WHERE hire_date >= '2022-07-13';

위 쿼리문처럼 인간이 사용하는 언어와 매우 흡사하다. 기본적인 패턴은 SELECT, FROM, WHERE이고 필요에 따라 추가되게 된다. 데이터의 정렬을 원한다면 ORDER BY, 그룹별로 묶어 집계하는 데이터를 보고 싶다면 GROUP BY 절을 추가하면 된다.

 

INSERT

테이블에 새로운 데이터를 적재할 때  사용하는 것으로, 아래와 같은 타입이 있다.

1. 

INSERT INTO 테이블 (컬럼1, 컬럼2...)

VALUES (값1, 값2...);

 

2.

INSERT INTO 테이블

VALUES (값1, 값2...)

 

컬럼 리스트와 그 컬럼에 삽입될 값의 순서는 정확히 매칭 되어야 하며, 두 번째 타입은 컬럼 리스트의 생략이 가능하다. 이 케이스는 해당 테이블에 있는 모든 컬럼에 데이터를 넣는다는 의미이다. 물론 테이블을 생성할 컬럼 순서를 정확히 지켜야 한다. 따라서 두 번째 타입을 사용했을 경우 VALUES절에 컬럼의 값 중 단 하나라도 없으면 오휴가 발생한다. INSERT는 테이블에 데이터를 로우 단위로 입력한다. 한 개의 INSERT 문장은 하나의 로우를 입력하게 된다. 또한 다음과 같은 형태로도 사용이 가능하다.

이 것은 다른 테이블의 데이터를 선택해서 새로운 데이터를 넣는 타입이다. INSERT 문에서 사용되는 SELECT 문은 SELECT 문장에서 제공되는 모든 용법을 사용할 수 있다. 이와 같은 타입의 경우 INSERT 문장은 비록 하나지만 실제로 입력되는 값은 1개의 로우 이상이 가능하다. 이유는 SELECT 문에 의해 선택되는 로우들은 입력하기 때문에 새로 생성되는 로우의 수는 SELECT 문의 반환 결과에 의존하게 되기 때문이다. 이 타입과 마찬가지로 INSERT 문장의 컬럼 리스트와 SELECT 리스트의 컬럼 값의 순서는 정확히 맞아야 한다.

 

UPDATE

기존 테이블에 저장되어 있는 데이터들을 새로운 값으로 변경할 때 사용한다.

UPDATE 테이블

SET 컬럼1 = 변경될 값1,

        컬럼2 = 변경될 값2

WHERE 조건절...

 

UPDATE는 변경할 테이블과 컬럼, 변경될 값을 작성해 주면 된다. 변경할 값은 값 또는, SELECT문이 올 수 있다. WHERE 절을 명시해서 조건에 일치하는 데이터들만 갱신할 수 있다. WHERE 절을 생략할 경우에는 테이블 데이터 전체가 변경된다.

 

DELETE

테이블의 데이터를 삭제할 때 사용한다.

DELETE FROM 테이블

WHERE 조건...

데이터를 삭제 즉, 테이블의 로우를 삭제하는 작업이다. DELETE는 INSERT와 반대이다. 특정 조건에 맞는 데이터만 삭제하려고 한다면 WHERE 절을 추가해서 작성해야 한다.

 

INSERT, UPDATE, DELETE를 시행하더라도 실제 저장소에 바로 적용되지는 않는다. 실제 데이터의 변경은 데이터 파일에 변경사항이 반영될 때 발생하게 된다. 즉, COMMIT을 실행했을 때이다.

 

COMMIT

데이터 변경 작업(INSERT, UPDATE, DELETE)을 한 뒤, COMMIT을 실행하면 변경된 데이터들이 데이터 파일에 반영된다.

COMMIT (WORK) (TO SAVEPOINT savepoint_name);

()로 되어있는 부분은 생략이 가능하다. SAVEPOINT는 특정 시점까지 작업한 내용을 반영할 경우 사용한다. COMMIT으로 반영되는 데이터는 이전 COMMIT이나 ROLLBACK을 실행한 시점부터 현재 COMMIT을 실행하는 동안에 발생된 내용을 적용시킨다.

 

ROLLBACK

COMMIT과는 반대 개념이다. 변경된 데이터들을 변경 전 상태로 되돌리는 역할을 한다. 데이터 삭제 시, ROLLBACK 문을 실행하면 이전 ROLLBACK이나 COMMIT이 실행된 시점 이후에 변경된 사항은 모두 본래의 상태로 되돌아간다.

ROLLBACK (WORK) (TO SAVEPOINT savepoint_name);

 

'IT' 카테고리의 다른 글

스파크 데이터 구조  (0) 2022.08.26
스파크의 기본 개념 - 1  (0) 2022.07.25
SQL의 기본 개념 - 1  (0) 2022.07.12
AWS 부하 테스트 도구 - 1  (0) 2022.07.11
AWS 부하 테스트 목적 - 1  (0) 2022.07.08

댓글