3 min read

SQL 첫걸음 1장

1강: 데이터베이스

데이터: 컴퓨터 안에 기록되어 있는 숫자 데이터베이스: 데이터들의 집합 데이터베이스 내의 데이터는 영구적으로 저장되어야하기 때문에, 하드디스크나 SSD 등 비휘발성 저장장치에 저장한다.

1. 시스템 내의 데이터베이스

일반적으로 데이터베이스는 데이터센터의 서버에서 운용되었고, 현재는 개인 기기에 내장되어 있기도 하다. 인터넷에서 쇼핑을 하거나 뭔가를 예약할 때 웹 시스템을 통해 데이터베이스에 접근한다. 시스템을 직접 사용하지 않아도 데이터베이스에 데이터가 전송되기도 한다. 계산대(POS 시스템)에서 데이터가 데이터베이스로 전송되는 경우다. 이 외에도 많은 방식이 있는데, 데이터베이스는 다양한 시스템에서 사용한다.

2. DB와 DBMS

DB는 Database의 약자이고, DB를 관리하는 소프트웨어를 DBMS(Database Management System)이라고 부른다.

DBMS 사용목적

  • 생산성 향상

  • 기능성 확보

  • 신뢰성 확보

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

DBMS를 사용하면 간접적으로 데이터베이스를 참조할 수 있고, 혹은 데이터를 추가하거나 삭제, 갱신할 수도 있다. 이 과정을 수행하기 위해서는 SQL을 쓰면 된다. SQL은 특히 RDBMS(Relational Database Management System)을 조작할 때 사용한다. SQL은 SEQUEL이라는 관계형 데이터베이스 조작용 언어 기반으로 만들어졌다.

  • SQL 명령의 종류

DML(Data Manipulation Language): 데이터베이스에 새롭게 데이터를 추가하거나 삭제하거나 내용을 경신하는 등, 데이터를 조작할 때 사용한다. SQL의 가장 기본이 되는 명령 set이다.

DDL(Data Definition Language): 데이터베이스는 ‘데이터베이스 object’라는 데이터 그릇을 이용하여 데이터를 관리하는데, 이 같은 객체를 만들거나 삭제하는 명령어다.

DCL(Data Control Language): 데이터를 제거하는 명령어다. DCL에는 트랜젝션을 제어하는 명령과 데이터 접근권한을 제어하는 명령이 포함되어 있다.

2강: 다양한 데이터베이스

1. 데이터베이스 종류

  • 계층형 데이터베이스

폴더와 파일 등의 계층 구조로 데이터를 저장하는 방식의 데이터베이스. 하드디스크나 DVD도 계층형 데이터베이스다. 현재는 많이 사용하지 않는 DBMS다.

  • 관계형 데이터베이스

‘relational algebra’를 착안하여 고안한 DB. 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 DB. 표 형식이기 때문에 2차원 데이터를 뜻한다. RDB는 SQL로 조작한다.

  • 객체지향 데이터베이스

‘객체(object)‘라는 것을 중심으로 프로그래밍하는 언어. ‘가능하면 객체 그대로를 데이터베이스의 데이터로 저장하는 것’이 핵심이다.

  • XML 데이터베이스

XML은 자료 형식을 가르키는 용어로, 태그를 이용해 마크업 문서를 작성할 수 있게 정의한 것이다. HTML과 매우 흡사한 형태를 가지고 있다. 이 형태를 저장하는 DB다. XML DB는 SQL 명령어를 쓸 순 없지만, XQuery를 대신 사용할 수 있다.

  • Key-Value Store(KVS)

키와 그에 대응하는 값이라는 단순한 형태의 데이터를 저장하는 데이터베이스. Key와 Value의 조합은 연상배열이나 Hash table에서 자주 볼 수 있다. NoSQL(Not only SQL)이라는 슬로건에서 생겨난 데이터베이스로, 열 지향 데이터라고 부른다.

3. 데이터베이스 제품

  • Oracle

  • DB2

  • SQL Server

  • PostgreSQL

  • MySQL

  • SQLite

4. SQL의 방언과 표준화

각 DB 제품별로 기능 확장이 이루어지는 과정에서 ‘비슷한 조작을 실행하더라도 서로 다른 명령어가 필요한’ 상황이 생김. 따라서 특정 제품에만 있는 방언이 생기게 된다. 가장 대표적인 예는 키워드 생략이다. 방언 대신에 표준 SQL을 사용하는 것이 좋다.

##3강: 데이터베이스 서버

RDBMS는 복수의 클라이언트가 보내오는 요청에 응답할 수 있도록 클라이언트/서버 모델로 동작한다. 클라이언트는 서버에 접속 요청이나 SQL 명령 실행 요청을 보낼 수 있다. 서버는 이를 처리하고 클라이언트에 그 결과를 반환한다.

1. 클라이언트/서버 모델

사용자의 조작에 따라 요청을 전달하는 ‘클라이언트’와 해당 요청을 받아 처리하는 ‘서버’로 소프트웨어를 나누고, 복수의 컴퓨터 상에서 하나의 모델을 구현하는 시스템이다.

  • 웹 시스템에서의 클라이언트/서버

웹 시스템: 브라우저와 웹 서버로 구성되는 클라이언트/서버 모델의 시스템

보통 웹 클라이언트가 서버에 요청을 하고, 웹 서버에서 응답을 하는 방식으로 이루어진다. 대부분의 요청은 ‘이 페이지를 열람하고 싶다’일 것이다. 요청을 받은 웹 서버는 그에 맞게 HTML로 된 데이터를 클라이언트로 네트워크를 통해 반환한다. 실제 웹에서는 이 과정이 계속 반복된다.

  • RDBMS의 클라이언트/서버

웹 시스템과는 다르게 사용자 인증이 필요하다. RDBMS는 사용자 별로 DB 접근을 제한할 수 있다. 인증을 성공해야 SQL 명령을 요청할 수 있다.

##2. 웹 어플리케이션 구조**

웹 어플리케이션은 일반적으로 웹 서버와 데이터베이스 서버의 조합으로 구축된다. 웹 사이트가 정적 HTML로 구성되어 있다면 웹 서버만으로 시스템을 구축할 수 있지만, 웹 어플리케이션 정도의 규모가 되면 DB가 필수적이다.

웹 서버에서 동적 HTML을 생성하려면 제어용 프로그램이 필요하다. CGI라고 불리는 동적 콘텐츠를 위한 확장 방식이 있다. 이 CGI를 이용해서 프로그램과 웹 서버간을 연동, 통신하여 처리한다. CGI 프로그램이 데이터베이스의 클라이언트가 된다. 클라이언트/서버 모델은 유연한 하드웨어 구성을 실현한다.

3. MySQL 서버와 mysql 클라이언트

이 책에서는 MySQL 기반으로 진행되는데, MySQL 서비스가 데이터베이스 서버가 되고, mysql 커맨드가 클라이언트가 된다. PC 한 대로 클라이언트와 서버 모두 실행할 수 있다. 이 기능에는 네트워크가 필수인데, 네트워크를 경유해서 PC의 서버로 되돌아오는 형태로 진행된다. 이를 ‘루프 백 접속’이라고 한다.