본문 바로가기

IT 일기/DB

SQL 과 PL/SQL 알아보기

반응형

1. SQL의 개요

SQL은 구조화된 질의 언어( Structured Query Language )의 약자로 DBMS 상에서 데이터를 읽고 쓰고 삭제하는 등 데이터를 관리하기 위한 일종의 프로그램 언어입니다.

 

C나 자바와 같은 일반 프로그래밍 언어는 절차적 언어라고 할 수 있는데 반해, SQL은 집합적 언어입니다.

집합적 언어는 데이터를 특정 집합 단위로 분류해 이 단위별로 한번에 처리하는 언어라고 볼 수 있습니다.

 

SQL의 시초는 1970년에 IBM의 시스템 R에서 도입한 SEQUEL(Structured English Query Language)입니다. 

SEQUEL은 SQL이라는 명칭으로 변경되었고 관계형 데이터베이스에서 SQL이 표준 언어로 체택되어 사용되고 있습니다.

 

  • SQL 표준
SQL 표준 특징
SQL86 ANSI에서 제정한 최초의 표준
SQL92 대규모 개정 및 정리. 실질적인 첫 표준
SQL99 정규 표현식, 트리거, 절차적 흐름.
SQL2003 XML 관련 기능 추가. 시퀀스 생성기. MERGE 구문 추가
SQL2008 INSTEAD OF 트리거 추가. TRUNCATE 구문 추가
SQL2011 임시 데이터베이스 지원
SQL2016 JSON 지원. 행 패턴 인식. DECFLOAT 타입 추가

 


 

2. SQL 구문

데이터베이스 언어 SQL 문법의 종류는 다음 세 가지로 분류됩니다.

 

  • 데이터 정의 언어 (DDL : Data Definition Language)
  • 데이터 조작 언어 (DML : Data Manipulation Language)
  • 데이터 제어 언어 (DCL : Data Control Language)

2-1. DDL (데이터 정의 언어)

데이터 정의 언어(DDL, Data Definition Language)는 데이터베이스 관리 시스템(DBMS)에서 데이터 구조를 정의하고 조작하는 데 사용되는 언어입니다. DDL은 데이터베이스 개체(테이블, 인덱스, 뷰 등)를 생성, 수정 및 삭제하는 데 사용됩니다. 


DDL 종류


CREATE: 
CREATE 문은 새로운 데이터베이스 개체를 생성합니다. 예를 들어, CREATE TABLE 문을 사용하여 새로운 테이블을 생성할 수 있습니다.

ALTER:
 ALTER 문은 이미 존재하는 데이터베이스 개체의 구조를 변경합니다. ALTER TABLE 문을 사용하여 테이블에 열을 추가하거나 삭제하거나 열의 속성을 수정할 수 있습니다.

DROP: 
DROP 문은 데이터베이스 개체를 삭제합니다. DROP TABLE 문을 사용하여 테이블을 삭제할 수 있으며, DROP DATABASE 문을 사용하여 전체 데이터베이스를 삭제할 수도 있습니다.

TRUNCATE: 
TRUNCATE 문은 테이블에서 모든 행을 제거합니다. DELETE와 달리 TRUNCATE는 로그 파일에 기록하지 않고 바로 공간을 해제하기 때문에 더 빠르게 작업할 수 있습니다.

RENAME: 
RENAME 문은 데이터베이스 개체의 이름을 변경합니다. 예를 들어, RENAME TABLE 문으로 테이블의 이름을 변경할 수 있습니다.

COMMENT: 
COMMENT 문은 주석(comment) 정보를 추가하거나 수정합니다. 주석은 특정 데이터베이스 개체에 대한 설명 및 메타데이터 정보로 사용됩니다.

위에서 언급한 DDL 종류는 일반적으로 많이 사용되는 것들입니다.

 


2-2. DML (데이터 조작 언어)

데이터 조작 언어(DML, Data Manipulation Language)은 데이터베이스에서 데이터를 조회, 삽입, 수정 및 삭제하는 데 사용되는 언어입니다. DML은 데이터베이스에 저장된 실제 데이터를 조작하는 데 사용됩니다.

DML 종류

SELECT: SELECT 문은 데이터베이스에서 데이터를 조회하는 데 사용됩니다. 특정 테이블의 열을 선택하거나 필터링 조건을 지정하여 원하는 결과를 가져올 수 있습니다.


INSERT: INSERT 문은 새로운 행을 테이블에 삽입하는 데 사용됩니다. INSERT INTO 문을 사용하여 특정 테이블에 값을 추가할 수 있습니다.


UPDATE: UPDATE 문은 이미 존재하는 행의 값을 수정하는 데 사용됩니다. UPDATE 문을 사용하여 특정 테이블의 열 값을 변경할 수 있습니다.


DELETE: DELETE 문은 테이블에서 행을 삭제하는 데 사용됩니다. DELETE FROM 문을 사용하여 지정된 조건에 맞는 행을 제거할 수 있습니다.


MERGE: MERGE 문은 주어진 조건에 따라 대상(타겟)과 원본(소스)테이블의 데이터를 병합합니다. 대상과 원본 사이에서 일치하는 경우 업데이트하고, 일치하지 않는 경우 삽입 또는 삭제 작업을 수행합니다.


CALL/EXECUTE: CALL문(또는 EXECUTE문)은 저장 프로시저나 함수 등의 서버측 코드를 호출하기 위해 사용됩니다.
DML 구문들은 주로 SQL(Structured Query Language)에서 사용되며, 데이터베이스 관리 시스템(DBMS)마다 약간의 차이가 있을 수 있습니다.

 


2-3. DCL (데이터 제어 언어)

데이터 제어 언어(DCL, Data Control Language)는 데이터베이스의 보안 및 권한 관리를 담당하는 SQL(SQL, Structured Query Language)의 하위 집합입니다. DCL은 사용자가 데이터에 대한 액세스를 허용하거나 거부하는 권한을 제어합니다.

 

DCL 종류


GRANT
: 이 명령은 사용자에게 특정 작업을 수행할 수 있는 권한을 부여합니다. 예를 들어, 사용자가 테이블에서 데이터를 읽거나 쓰는 것을 허용할 수 있습니다.


REVOKE: 이 명령은 사용자로부터 이미 부여된 권한을 제거합니다. 예를 들어, 사용자가 더 이상 테이블에서 데이터를 읽거나 쓸 수 없도록 할 수 있습니다.


DCL 명령은 주로 DBA(DataBase Administrator) 또는 데이터베이스 보안 관리자가 실행하며, 일반적인 개발 작업에서는 비교적 덜 사용됩니다. 그러나 DCL의 중요성은 강조할 필요가 있으며, 잘못된 권한 설정으로 인해 중요한 데이터 손실 또는 정보 유출 등의 심각한 문제가 발생할 수 있기 때문입니다.

 


3. PL/SQL

PL/SQL(Procedural Language for SQL)은 오라클 데이터베이스 시스템을 위해 개발된 절차적 프로그래밍 언어입니다. 이 언어는 SQL의 기능을 확장하여 절차적인 기능, 조건 처리, 루프 등의 복잡한 프로그래밍 요소를 제공합니다.


3-1. PL/SQL의 주요 특징 및 장점

 

블록 구조: PL/SQL 코드는 실행 단위인 블록으로 구성됩니다. 각 블록은 선언부, 실행부, 예외 처리부로 구성될 수 있습니다.


절차적 언어 기능: PL/SQL은 if-then-else 조건문, 반복문(loop), 배열 등의 절차적 프로그래밍 요소를 지원합니다.


에러 처리: PL/SQL은 예외 처리 메커니즘을 제공하여 실행 중 발생할 수 있는 에러를 캐치하고 적절하게 대응할 수 있게 합니다.


커서 관리: 커서를 사용하여 SQL 문의 결과 집합을 한 번에 한 행씩 검색하거나 수정하는 작업을 자동화 할 수 있습니다.


저장 프로시저와 함수: PL/SQL 코드는 저장 프로시저나 함수 형태로 데이터베이스에 저장되어 필요할 때마다 재사용될 수 있습니다.


트리거 생성 가능: 데이터베이스에서 특정 이벤트(예: 테이블 변경)가 발생했을 때 자동으로 실행되도록 하는 특수한 저장 프로시저인 '트리거'를 생성할 수 있습니다.


보안 강화: 애플리케이션 로직을 데이터베이스 내부에 저장함으로써 외부 액세스로부터 보호하고 보안성을 강화합니다.


PL/SQL은 오라클 데이터베이스와 밀접하게 연동되므로 데이터베이스 관련 작업에서 고효율성과 안정성을 보장합니다.

 


IT관련 글은 개인 공부겸 해서 올립니다!

 

반응형

'IT 일기 > DB' 카테고리의 다른 글

[MySQL] INSERT 문의 이해와 활용  (38) 2024.01.11
[MySQL] SELECT문의 이해와 활용  (1) 2024.01.09
데이터 베이스 객체란?  (63) 2023.10.24