1. SQL 데이터베이스 개요

1. 1강. 데이터베이스와 SQL

데이터란 컴퓨터 안에 기록되어 있는 숫자를 의미하여, 이러한 데이터의 집합을 데이터베이스라고 한다. 넓은 의미에서는 '컴퓨터 안에 기록된 모든 것’을 데이터베이스라고 할 수 있다.

데이터 베이스 내의 데이터는 영구적으로 보존되어야 한다. 주기억장치(컴퓨터 메모리, RAM)에만 데이터를 저장한다면, 전원을 끄는 순간 모든 데이터는 사라져 버린다. 이런 상태에서는 영구적이라 말할 수 없다. 따라서 데이터베이스의 데이터는 하드디스크나 플래시메모리(SSD) 등 비휘발성 저장장치에 저장한다.

1.1. DB와 DBMS

데이터베이스는 DB라는 약자로 통용된다. 데이터베이스는 저장장치 내에 정리되어 저장된 데이터의 집합이고, 이를 효율적으로 관리하는 소프트웨어를 데이터베이스 관리 시스템(Database Management System)
약자로 DBMS라 부른다. DBMS가 필요한 이유는 다음과 같다.

1.1.1. 생산성

시스템 개발 과정에서의 생산성 향상을 도모할 수 있다. 어떤 시스템에서든지 데이터 검색, 추가, 삭제, 갱신과 같은 처리가 이루어지게 된다. 이와 같은 기본 기능을 DBMS가 제공한다. 시스템을 구축할 때
기본 기능부터 구현하는 것은 비용측면에서 효율적이지 않다.

1.1.2. 기능성

DBMS는 데이터베이스를 다루는 기능을 많이 제공한다. 복수 유저의 요청에 대응하거나, 대용량의 데이터를 저장하고 고속으로 검색하는 기능을 제공하기도 한다. 나아가 데이터베이스 관리 기능을 유저가
확장할 수도 있어 유연하게 시스템을 개발할 수 있다.

1.1.3. 신뢰성

대규모 데이터베이스는 많은 요청에 대응할 수 있도록 만들어져 있다. 이를위해 하드웨어를 여러 대로 구성하여 신뢰성을 높이는 동시에 성능 향상을 꾀하기도 한다. 실제로 일부 DBMS는 컴퓨터 여러 대를 두고, 소프트웨어를 통해 확장성(Scalability)과 부하 분산(load balancing)을 구현한다. 이를 보통 ‘클러스터 구성’ 또는 '스케일 아웃’이라 부른다.

또한 많은 DBMS가 데이터베이스의 데이터를 다른 저장장치로 내보내거나(export), 반대로 데이터베이스 안에 데이터를 집어넣는 import 기능을 갖췄다. 이때 집어넣기 및 내보내기 기능을 통해 데이터베이스를
간단하게 백업할 수 있다.

1.2. 데이터베이스를 조작하는 언어 SQL

DBMS를 이용하면 간접적으로 데이터베이스를 참조할 수 있고, 혹은 데이터를 추가하거나 삭제, 갱신할 수도 있다. SQL은 IBM이 개발한 SEQUEL이라는 관계형 데이터베이스 조작용 언어를 기반으로 만들어졌다. 현재 ISO등에 의해 표준화가 진행되어, C 언어나 자바와 마찬가지로 표준 언어이다.

1.2.1. SQL 명령의 종류

SQL 명령은 다음과 같이 3가지로 나뉠 수 있다.

DML(Data Manipulation Language)

데이터베이스에 새롭게 데이터를 CRUD 할 때 사용한다. SQL의 가장 기본이 되는 명령셋(set) 이다.

SELECT
데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 함

INSERT, UPDATE, DELETE
데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류(데이터 삽입, 수정, 삭제)의 명령어들을 말함.

DDL(Data Definition Language)

데이터를 정의하는 명령어. 데이터베이스는 데이터 베이스 객체(object)라는 데이터 그릇을 이용하여 데이터를 관리하는데, 이 같은 객체를 만들거나 삭제하는 명령어이다.

CREATE, ALTER,DROP,RENAME,TRUNCATE
테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 (생성, 변경, 삭제, 이름변경) 데이터 구조와 관련된 명령어들을 말함.

DCL(Data Control Language)

데이터를 제어하는 명령어. DCL에는 트랜잭션을 제어하는 명령과 데이터 접근권한을 제어하는 명령이 포함되어 있다.

GRANT,REVOKE
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어들을 말함.

TCL(Transaction Control Language)

트랜잭션 제어어라 칭한다.

  • COMMIT, ROLLBACK,SAVEPOINT*
    논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어를 말함.