2 minute read

관계형 데이터베이스

SQL(Structured Query Language)

SQL은 관계형 데이터베이스를 조작하기 위해 만들어진 표준 언어로 데이터베이스 관리 시스템(DBMS)과 통신하기 위한 언어이다. 데이터베이스에 쿼리를 보내 원하는 데이터를 가져오거나 삽입할 수 있다.

쿼리(query)란?

쿼리는 ‘질의문’ 이라는 뜻으로 예를 들면 검색할 때 입력하는 검색어가 일종의 쿼리이다. 즉, 쿼리는 저장되어 있는 데이터를 필터하기 위한 질의문으로도 볼 수 있습니다.


SQL 명령어는 특성에 따라 4가지로 나뉜다.

구분 명령어 설명
DML
(Data Manipulation Language)
SELECT
INSERT
UPDATE
DELETE
- 데이터베이스에서 데이터를 검색(SELECT)
- 데이터베이스 테이블5에서 새로운 행을 삽입((INSERT)하고, 기존의 행을 수정(UPDATE)하거나 삭제(DELETE)
DDL
(Data Definition Language)
CREATE
ALTER
DROP
RENAME
TRUNCATE
테이블의 데이터를 정의하고 구조를 생성하거나 수정 또는 제거
DCL
(Data Control Language)
GRANT
REVOKE
데이터베이스에 대해 접근 권한을 부여하거나 제거
TCL
(Transaction Control Language)
COMMIT
ROLLBACK
SAVEPOINT
DML로 실행한 변경 사항을 저장 관리

이 중 데이터를 조작하고 분석하는데 가장 기본으로 사용되는 SQL 명령어는 DML이다. 우선 기본적으로 사용되는 문법들을 익혀두자.

  • Select
  • Where
  • And, Or, Not
  • Order By
  • Insert Into
  • Null Values
  • Update
  • Delete
  • Count
  • Like
  • Wildcards
  • Aliases
  • Joins
    • Inner Join
    • Left Join
    • Right Join
  • Group By

각 문법의 사용법은 레퍼런스를 확인해서 충분히 숙달해두자.

데이터베이스 생성

CREATE DATABASE 데이터베이스_이름;


데이터베이스 사용

데이터베이스를 이용해 테이블을 만들거나 수정하거나 삭제하는 등의 작업을 하려면, 먼저 데이터베이스를 사용하겠다는 명령을 전달해야 한다

USE 데이터베이스_이름;


테이블 생성

테이블은 필드(표의 열)와 함께 만들어야 한다. 다음과 같은 필드 조건을 가진 테이블을 생성해보자.

필드 이름 필드 타입 그 외의 속성
id 숫자 Primary key이면서 자동 증가하도록 설정 (이후에 천천히 배웁니다)
name 문자열 (최대 255개의 문자)  
email 문자열 (최대 255개의 문자)  
CREATE TABLE user (
  id int PRIMARY KEY AUTO_INCREMENT,
  name varchar(255),
  email varchar(255)
);


테이블 정보 확인

DESCRIBE 명령어를 통해 테이블 정보를 확인할 수 있다.DESC로도 가능하다.

DESCRIBE user;
DESC user;


다음과 같이 user 테이블의 정보를 확인할 수 있습니다.

mysql> describe user;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int          | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255) | YES  |     | NULL    |                |
| email | varchar(255) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

주의해야 할 점은 자바스크립트와 다르게 반드시 명령문 마지막에 새미콜론(;)을 붙여줘야 실행된다.



트랜잭션

트랜젝션은 데이터베이스의 데이터 무결성이 보장되는 상태에서 DML 작업을 완수하기 위한 기본 작업 단위를 말한다. 관계형 데이터베이스 시스템은 데이터를 처리할 대 트랜잭션을 통해 정상 종료나 사용자 프로세스 실패나 시스템 실패와 같은 비정상 종료에 대해 데이터의 신뢰성과 일관성을 보장한다.

트랜잭션은 왜 필요할까? 예를 들어 A은행에서 B은행으로 송금하는 상황을 가정해보자. A은행에서 돈을 출금하고 나서 B은행으로 송금하려고 하는데 갑자기 시스템이 멈추면 어떻게 될까. 돈은 출금됐지만 송금되지 않는 상황이 발생할 수도 있다. 트랜잭션은 이런 상황을 방지하도록 보장해준다.

트랜잭션은 ACID라는 다음과 같은 특징을 가진다.

개념 내용
원자성(Atomicity) 트랜잭션의 처리가 완전히 끝나지 않았을 경우에는 전혀 이루어지지 않은 것과 같아야 한다(all or nothing).
일관성(Consistency) 트랜잭션의 실행이 성공적으로 완료되면 데이터베이스는 모순 없이 일관성이 보존된 상태여야 한다.
고립성(Isolation) 어떤 트랜잭션도 다른 트랜잭션의 부분적 실행 결과를 볼 수 없다
지속성(Durability) 트랜잭션이 성공하면 트랜잭션의 결과를 영구적으로 보장해야 한다.