SQL 기초(표준, 종류, 실행순서)
포스트
취소

SQL 기초(표준, 종류, 실행순서)

해당 포스트는 SQLD를 학습하며 정리한 내용에 대한 포스트입니다.


이론을 학습한 내용을 정리하고 퀴즈, 기출문제 등을 기록하려고 합니다.


🌈 SQL

💻 SQL이란?

SQL은 관계형 데이터베이스에 대해서 데이터의 구조를 정의, 데이터 조작, 데이터 제어 등을 할 수 있는 절차형 언어이다.

관계형 데이터베이스는 데이터베이스를 연결하고 SQL문을 사용하여 데이터베이스를 누구나 쉽게 사용할 수 있도록 한다.

SQL은 ANSI/ISO 표준을 준수하기 때문에 데이터베이스 관리 시스템이 변경되어도 그대로 사용할 수 있다.


SQL 표준

  
ANSI/ISO SQL 표준INNER JOIN, NATURAL JOIN, USING 조건, ON 조건절을 사용한다.
ANSI/ISO SQL3 표준DBMS 벤더별로 차이가 있었던, SQL을 표준화하여 제정했다.


💻 SQL 종류 🎯

SQL은 데이터 정의, 데이터 조작, 데이터 제어 등의 기능을 지원한다.


SQL 문장들의 종류

종류명령어설명
데이터 조작어
DML
(Data Manipulation Language)
SELECT데이터베이스에 들어 있는 데이터를 조회하거나
검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 한다.
 INSERT
UPDATE
DELETE
데이터베이스의 테이블에 들어 있는 데이터에 변형을 하는 종류의 명령어들
데이터를 테이블에 새로운 행을 집어넣거나
원하지 않는 데이터를 수정/삭제하는 것들의 명령어들을 DML이라고 한다.
데이터 정의어
DDL
(Data Definition Language)
CREATE
ALTER
DROP
RENAME
테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들
구조를 생성하거나 변경하거나 삭제하거나
이름을 바꾸는 데이터 구조와 관련된 명령어들을 DDL 이라고 부른다.
데이터 제어어
DCL
(Data Control Language)
GRANT
REVOKE
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고
회수하는 명령어를 DCL이라고 한다.
트랜잭션 제어어
TCL
(Transaction Control Language)
COMMIT
ROLLBACK
논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를
작업단위(트랜잭션) 별로 제어하는 명령어


DDL문데이터베이스 테이블을 생성하거나 변경, 삭제하는 것으로 데이터를 저장할 구조를 정의하는 언어이다.

DML데이터 구조가 DDL로 정의되면 해당 데이터 구조에 데이터를 입력하거나 수정, 삭제, 조회할 수 있다.

DCLDDL로 정의된 구조에 어떤 사용자가 접근할 수 있는지 권한을 부여하는 것이다.


DROP vs DELETE vs TRUNCATE

DROPTRUNCATEDELETE
DDLDDL
(일부 DML 성격을 가짐)
DML
ROLLBACK ❌ROLLBACK ❌COMMIT이전 ROLLBACK ✅
AUTO COMMITAUTO COMMIT사용자 COMMIT
WHERE절 ❌WHERE절 ❌WHERE절 ✅
데이블 정의 자체
완전 삭제
테이블을 최초 생성된
초기상태로 만듦
데이터만 삭제
  
DROP- 테이블이 사용했던 STORAGE 모두 RELEASE
- 테이블 정의 자체를 완전히 삭제함
- 테이블 자체를 완전히 제거
- 관련된 모든 것들도 함께 제거
( 데이터 인덱스, 트리거, 제약조건 등)
-테이블 구조, 모든 데이터 한번에 삭제
- 속도 빠름
TRUNCATE- 테이블이 사용했던 STORAGE 중
최초 테이블 생성 시 할당된 STORAGE만 남기고 RELEASE
- 전체 테이블을 빠르게 제거
- 로그를 기록하지 않음
- 데이터만 제거, 구조는 그대로 유지
- 매우 빠름
- 로그없이 전체 테이블을 비움
DELETE데이터를 모두 DELETE해도 사용했던 STORAGE는 RELEASE되지 않음
- 테이블에서 하나 이상의 레코드를 제거
- WHERE절을 사용하여 특정 레코드 지정가능
- 데이터만 삭제, 구조는 그대로 유지
- 상대적으로 느림
- 개별 로우를 삭제하고 각각의 삭제 작업을 로깅

TRUNCATE

TRUNCATE TABLE은 테이블 자체가 삭제되는 것이 아니라, 해당 테이블에 들어있던 모든 행들이 제거되고 저장 공간을 재사용 가능하도록 해제한다.

테이블 구조를 완전히 삭제하기 위해서는 DROP TABLE을 실행하면 된다.

image

  • 작업의 순서를 보면 데이터베이스의 사용자에게 권한을 부여하고 권한이 부여되면 DDL로 데이터 구조를 정의한다.

  • 데이터 구조가 정의되면 데이터를 입력한 후에 개발자 및 사용자가 그 데이터를 조회하는 것이다.


SQL문의 실행 순서

개발자가 작성한 SQL문(DDL, DML, DCL 등)은 3단계를 걸쳐서 실행된다.

  1. SQL문의 문법을 검사하고 구문분석을 한다.

  2. 구문분석 이후에 SQL을 실행한다.

  3. SQL이 실행되면 데이터를 인출하게 된다.


SQL 실행 순서설명
파싱
(Parsing)
- SQL문의 문법을 확인하고 구문분석한다.
- 구문분석한 SQL문은 Library Cache에 저장한다.
실행
(Execution)
- 옵티마이저(Optimizer)가 수립한 실행 계획에 따라 SQL을 실행한다.
인출
(Fetch)
- 데이터를 읽어서 전송한다.



🎯 추가 내용

PL/SQL

PL/SQL은 SQL프로그래밍을 오라클에서 부르는 명칭이다.

CURCOR는 테이블의 레코드(행,듀플)의 위치를 저장하고 있는 부분이다.

인출(FETCH)는 DML구문에서 조건에 해당하는 레코드를 가져오는 행위이다.

FETCH 이전에 CURSOR ~ FETCH ~ CLOSE CURSOR의 구문을 지닌다.


PK순서를 결정하는 기준

인덱스 정렬구조를 이해한 상태에서 인덱스를 효율적으로 이용할 수 있도록 PK순서를 지정해야한다.

인덱스의 특징은 여러개의 속성이 하나의 인덱스로 구성되어 있을 때 앞쪽에 위치한 속성의 값이 비교자로 있어야 인덱스가 좋은 효율을 낼 수 있다.

앞쪽에 위치한 속성 값이 가급적 =아니면 최소한 범위 BETWEEN, <>가 들어와야 인덱스를 이용할 수 있는 것이다.

즉, =로 들어온 조건에 해당하는 컬럼이 인덱스의 가장 앞쪽에 위치할 때 인덱스의 이용 효율성이 가장 높다고 할 수 있다.


📚 레퍼런스

정미나. (유튜브 선생님에게 배우는) 유선배 SQL개발자(SQLD) 과외노트 / [정미나 저] (2023). Print.

한국데이터산업진흥원. SQL 자격검정 실전문제 : 국가공인 SQL전문가·국가공인 SQL개발자 / 한국데이터산업진흥원 [편] (2020). Print.

SQL 개발자 (SQLD) 자격증 따기 Part.2 / [유용한IT학습]

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.