0. 바로 실습으로 가세요.1. DB2. DB, RDB, DBMS, RDBMS3. 관계형 데이터베이스의 구성 요소3.1 키의 개념 및 종류3.2 데이터베이스의 종류4. SQL(Structured Query Language)5. SQL 명령어의 분류6. Data 분석 과정7. 정형 데이터와 비정형 데이터8. CRUD9. 홈페이지를 제작한다면!10. 다음 무료 강의 추천(실습) 환경설정(실습) SELECT Statement(실습) SELECT DISTINCT Statement(실습) ORDER BY(실습) AS(실습) 산술연산(실습) 연결 연산자(실습) 논리 연산(실습) BETWEEN 연산(실습) IN 연산(실습) LIKE 연산(실습) IS NULL(실습) bit 단위 논리연산자(실습) WHERE(실습) INSERT(실습) Null Values 찾아내기(실습) UPDATE(실습) DELETE(실습) TOP과 LIMIT(실습 안함) CREATE, DROP(실습 안함) SHOW, DESC
0. 바로 실습으로 가세요.
이론적인 부분을 건너뛰시고, 나중에 보세요.
(실습)
이라고 되어있는 부분으로 바로 가셨다가 나중에 이론이 궁금하시다면 다시 돌아오세요. 1. DB
데이터베이스(영어: database, DB)는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다. 작성된 목록으로써 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음이다. - Wikidipia
읽어도 무슨 뜻인지 잘 모르시겠죠? 이렇게 기억해주세요!
데이터를 저장하는 공간!
2. DB, RDB, DBMS, RDBMS
- DB → DBMS
- RDB → RDBMS
RDBMS(stands for Relational Database Management System)는 DB를 관리하는 시스템입니다. TOP3 오픈소스 RDBMS는 MySQL, PostgreSQL, SQLite입니다. 오픈소스가 아닌 것에서는 Oracle이 독보적입니다.
3. 관계형 데이터베이스의 구성 요소
여기서부터는 전문 용어가 들어갑니다. 혹시 실습을 안하고 오셨다면 꼭 실습을 하고 이 챕터를 보시기 바랍니다.
- TABLE(행, 열), VIEW(데이터를 선택하여 만든 가상의 부분 집합), INDEX(주소), SEQUENCE(시퀀스, 고유번호 자동생성), SYNONYM(시노임, 객체의 별칭) 등의 객체로 구성
- ENTITY, RELATIONE들의 집합

- 튜플(Tuple)은 테이블의 행입니다.
- 속성(Attribute)은 HTML로 따지자면 Table Heading 입니다. 여기서는 학번, 이름, 주소, 전화번호가 속성이죠.
- 도메인(Domain)은 하나의 속성에서 취할 수 있는 값의 범위를 말합니다. 예를 들어 위에서는 신청 과목에서 전체 과목의 범위를 얘기합니다.
- 차수(Degree)는 속성의 개수입니다. 학생 릴레이션에서는 학번, 이름, 주소, 전화번호이니 총 4개가 될 것입니다.
- 기수(Cardinality)는 튜플의 개수입니다. 위에서는 어트리뷰트를 제외하고 총 5개의 튜플이 존재합니다.
3.1 키의 개념 및 종류
- 기본키 : 메인으로 사용할 키를 말합니다. 고유한(유일한) 주민등록번호나, 계좌번호, 전화번호 등을 기본키로 사용할 수 있습니다. 기본키는 NULL을 사용할 수 없습니다.
- 후보키 : 기본키를 제외하고 고유한 키들을 말합니다.
- 외래키 : 관계되어 있는 테이블에서 참고하고 있는 키를 얘기합니다. 여기서 학생 릴레이션과 수강신청 과목 릴레이션은 서로 학번으로 연결되어 있죠.
3.2 데이터베이스의 종류
- 계층형 데이터베이스(1:N)
- 망형 데이터베이스(N:M)
- 관계형 데이터베이스(단순한 표 형태의 상호 관계, 1:1, 1:N, N:M관계 표현)
- 객체 지향형 데이터베이스
4. SQL(Structured Query Language)
SQL은 스토리지 언어의 표준입니다. 여러분이 만약 MySQL, MsSQL, Oracle, Postgres 등의 DB를 사용하여 어떤 프로젝트를 한다면 SQL을 다루실 수 있어야 합니다.
하지만 대부분의 강좌들이 '설치'부터 SQL 강의를 시작하는데, 설치하다가 지치시는 분들이 많으십니다. 이 수업은 본질에 집중합니다. SQL만 배워봅시다. 그렇다고 이론을 전혀 안하는 것은 아니고, 가장 마지막 챕터에서 다뤄보도록 하겠습니다.
5. SQL 명령어의 분류
중요한 것은 굵은 글씨로 해두었으니, 충분히 숙련되도록 연습해보세요.
- 데이터 조작어(DML)
- SELECT
- INSERT
- UPDATE
- DELETE
- 데이터 정의어(DDL)
- CREATE DATABASE
- CREATE TABLE
- CREATE INDEX
- ALTER DATABASE
- ALTER TABLE
- DROP TABLE
- DROP INDEX
- RENAME
- TRUNCATE
- 데이터 제어어(DCL)
- GRANT : 권한 부여
- REVOKE : 권한 제거
- 트랜젝션 제어어(TCL)
- COMMIT
- ROLLBACK
- SAVEPOINT
6. Data 분석 과정

- 사전에 데이터를 분석해야 하는 이유와 기획을 하게 됩니다.
- 1번에서 3번까지의 단계가 전체 과정에 70% ~ 80%를 차지하고 있습니다.
- 기업에 들어가도 데이터 없습니다. 또는 쓸 수 없습니다. 또는 완전히 의미없는 데이터 일 수 있습니다. 데이터 수집부터, 가공하는 것까지 SQL을 사용할 수 있습니다. 물론 분석에도 쓸 수 있지만 분석에는 더 좋은 도구들이 많죠.
7. 정형 데이터와 비정형 데이터
- 정형데이터는 RDBMS에서 사용하는 테이블 안에 들어가 있는 형식이 잡혀 있는 데이터를 말합니다.
- 비정형 데이터(unstructured data, unstructured information, 비정형 정보), 비구조화 데이터, 비구조적 데이터는 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보를 말한다.(출처 : WIKI)
8. CRUD
- Create
- Read
- Update
- Delete
9. 홈페이지를 제작한다면!
- HTML/CSS + PHP + MySQL로 홈페이지 게시판 한 번 만들어보세요. 최대한 간소하게 만들어보십시오. (실 서비스는 보안 이슈로 인해 Framework를 사용하시길 권해드립니다.)
서버 세팅하는 부분을 어려워 하시는 분이 많으셔서 아래 영상으로 녹화해 두었습니다.

10. 다음 무료 강의 추천
다음 강의를 순서대로 추천해드립니다.
- PHP와의 연동을 먼저 추천해드립니다.
- 간단하게 이론을 살펴보세요.
- MySQL을 좀 더 살펴보세요.
(실습) 환경설정
앞서 말씀드린 것처럼, 설치하는 작업과 데이터를 세팅하는 것 자체가 우리에게 큰 허들이 되므로, 우리는 설치 없이 아래 사이트에서 바로 실습을 하도록 하겠습니다.

Try it Yourself
를 클릭해주세요. 한번만 누르시면 됩니다. 나머지는 이 강의를 보시면서 따라가시면 됩니다.
(실습) SELECT Statement
select는 데이터를 조회하거나 산술식, 함수 등을 실행할 때 사용합니다. SQL은 대소문자를 가리지 않지만, 구문에 해당되는 것은 대문자로만 적도록 하겠습니다.
*(에스터리스크, 별표)
는 모든 항목을 다 출력할 때 사용합니다. 여기서 원하는 컬럼만 출력하고 싶을 때에는 아래와 같이 사용합니다.
아래와 같이 대괄호로 묶어줄 수도 있지만, 여기서는 묶어주지 않고 사용하도록 하겠습니다.
아래 보이시는 것처럼 일반 수식을 출력할 때에도 Select 구문을 사용합니다. 함수도 사용할 수 있지만 아직 함수를 배우지 않았으므로 뒤에게서 해보도록 하겠습니다.
오른쪽에 있는 Customers, Categories 등을 하나씩 클릭해보고 데이터를 파악해보세요. 여러개의 열을 SELECT문을 사용해 직접 출력해보세요. 기억하세요. 타이핑을 친 만큼만 내 실력입니다.

(실습) SELECT DISTINCT Statement
DISTINCT는 중복값을 제거합니다.
(실습) ORDER BY
출력 결과 정렬합니다. 아래처럼 개행을 하여도 괜찮습니다. 마지막에 세미콜론 잊지마세요.
- 오름차순 : ASC(기본, 작은 수에서 큰 수로, Ascending)
- 내림차순 : DESC(큰 수에서 작은 수로, Descending)
(실습) AS
별칭을 정합니다. 기존 Table의 값은 변하지 않습니다.
(실습) 산술연산
더하고 빼고 나누고 곱하는 것이 가능합니다.
각각 컬럼끼리 연산도 가능합니다.
해당 값은 0, 나누기를 하면 null로 반환합니다. 이어붙이려면 아래 있는 연결 연산자를 사용해야 합니다.
(실습) 연결 연산자
Oracle에서는 ||, MsSQL은 +, MySQL은 공백으로 연결 가능. CONCAT함수는 공통으로 사용 가능합니다. 하지만 초급자 단계에서 이런 것들을 구분지어 기억하는 것은 크게 의미있지 않으니, 문법이 조금 상이하다 정도로 기억해주세요.
다양한 쿼리를 만들어 다른 table에서도 여러분 만에 문장을 만들어보세요.
(실습) 논리 연산
우선순위는 NOT, AND, OR입니다. True는 1로, False는 0으로, and는 곱으로, or는 덧셈으로 이해하시면 계산이 쉽습니다. 뒤에서 나올 비교 연산자,
WHERE 조건 절
을 미리 사용하였습니다. 비교 연산자는 같다(=
), 다르다(!=
), 크다(>
), 작다(<
)를 표현하는 연산자입니다.- 기본실습
- AND
- OR
- NOT
<>
같지 않다.(IOS 표준)
(실습) BETWEEN 연산
A AND B : A와 B를 포함한 사이의 값
(실습) IN 연산
IN A : A안에 값과 일치하는 값을 조회
(실습) LIKE 연산
- LIKE '비교문자'
- 비교 문자와 형태가 일치(%(모든 문자), _(한 글자) 사용)
- 대소문자를 안가림
만약 데이터가 Paullab, Paultest, Paulcode가 있다면 모두 검색
만약 언더바가 3개라면 위 데이터 중 Paullab 만 출력합니다. 이런 문자열들은 와일드카드라고 부르며 다양한 예제가 있습니다.
- 자주쓰는 예제
Paul이 들어가는 모든 값
아래 코드를 실습해보세요.
(실습) IS NULL
- NULL 값을 갖는 값(0은 값이 있는 것입니다.)
(실습) bit 단위 논리연산자
차례대로 AND, OR, XOR입니다.
(실습) WHERE
- 조회하려는 데이터에 조건 부여
- 여러 연산자를 결합하여 사용 가능
- 결합 가능한 연산자의 종류 : 비교연산자(=, <, >, !=, >=, <=), SQL연산자(BETWEEN), 논리 연산자(AND, OR) 등
(실습) INSERT
아래 코드를 사용한 후 다시 한 번 전체 컬럼을 조회해보세요. 나머지 값은
null
로 들어가게 됩니다. 클릭을 3번 하면 3개의 데이터가 들어가게 됩니다.- 문제 1번
국적이 한국이면서, 제주시에 살고 있는 사람을 구해주세요. 기본 데이터에 해당 데이터가 없다면, 위에 코드(INSERT)를 다시 실행시켜 주세요.
- 문제 2번
PostalCode값이 null 값인 사람을 구해주세요.
비어있는 문자열과 NULL값은 다른 값입니다.
(실습) Null Values 찾아내기
위 실습에서 일부러 몇 개의 값을 입력하지 않고 null값을 찾아보세요. 위에서 데이터를 삽입한 것 중 명시하지 않은 것들은 null 값으로 들어갔기 때문에 ContactName에 조회가 가능합니다.
is not 구문도 가능하답니다.
(실습) UPDATE
값을 바꿉니다. 이 행위는 되돌릴 수 없습니다. where로 여러개를 select하여 바꿀 수 있습니다.
(실습) DELETE
주의하세요. WHERE 안적으면 다 삭제 됩니다. 이런일이 실무에서도 종종 발생됩니다.
(실습) TOP과 LIMIT
최 상단 3개의 행(row)을 보는 방법입니다.
(실습 안함) CREATE, DROP
해당 실습은 여기서 하지 않습니다. 영상강의 마지막 수업에서 클라우드 서버에 DB를 설치하고 생성할 때 사용합니다.
(실습 안함) SHOW, DESC
실습은 안하지만 자주 쓰는 명령어를 정리해드립니다.