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 |