SQL 기본 개념

SQL 뜻

SQL : Structured Query Language
현업에서 쓰이는 relational DBMS의 표준 언어
종합적인 database 언어 : DDL + DML + VDL

SQL 주요 용어

relational data model SQL
relation table
attribute column
tuple row
domain domain

SQL에서 relation이란?

multiset(= bag) of tuples @ SQL
중복된 tuple을 허용한다

SQL & RDBMS

SQL은 RDBMS의 표준 언어이지만 실제 구현에 강제가 없기 때문에
RDBMS마다 제공하는 SQL의 스펙이 조금씩 다르다.

예제를 통해 SQL로 DB 정의하기

IT회사 관련 RDB 만들기

부서, 사원, 프로젝트 관련 정보들을 저장할 수 있는 관계형 데이터베이스를 만들자
사용할 RDBMS는 MySQL(InnoDB)

database 정의하기

CREATE DATABASE company;  

ㄴ company database 생성

USE company;  

ㄴ company database 선택

잘 적용되었는지 확인

SELECT database();  

삭제

DROP DATABASE company;


DATABASE vs SCHEMA

MySQL에서는 DATABASE와 SCHEMA가 같은 뜻을 의미
CREATE DATABASE company = CREATE SCHEMA company
다른 RDBMS에서는 의미가 다르게 쓰임
i.g. PostgreSQL에서는 SCHEMA가 DATABASE의 namespace를 의미

DEPARTMENT

밑줄 = PRIMARY KEY

id name leader_id


EMPLOYEE

id name birth_date sex position salary dept_id

|

PROJECT

id name leader_id start_date end_date

|

WORKS_ON

iempl_idd proj_id


attribute data type : 숫자

종류 설명 사이즈 MySQL
정수 정수를 저장할 때 사용 1 byte TINYINT
2 byte SMALLINT
3 byte MEDIUMINT
4 byte INT or INTEGER
8 byte BIGINT
부동 소수점 방식
(floating-point)
- 실수(real number)를 저장할 때 사용
- 고정 소수점 방식에 비해 정확하지 않다
4 byte FLOAT
8 byte DOUBLE or DOUBLE PRECISION
고정 소수점 방식
(fixed-point)
- 실수를 정확하게 저장할 때 사용
- DECIMAL(5, 2) => [-999.99 ~ 999.99]
variable DECIMAL or NUMERIC
variable

DECIMAL(5, 2) » (precision, scale) 최대 몇자리까지 표현할지, 소수점 이하 몇자리까지 표현할지


attribute data type : 문자열

종류 설명 MySQL
고정 크기 문자열 - 최대 몇 개의 '문자'를 가지는 문자열을 저장할지를 지정
- 저장될 문자열의 길이가 최대 길이보다 작으면 나머지를 space로 채워서 저장
- name char(4)일 때 다음과 같이 저장 : 'a(공백)(공백)','한국(공백)','고고고고','WOW(공백)'
CHAR(n)
(0 <= n <= 255)
가변 크기 문자열 - 최대 몇 개의 '문자'를 가지는 문자열을 저장할지를 지정
- 저장될 문자열의 길이 만큼만 저장
- name char(4)일 때 다음과 같이 저장 : 'a','한국','고고고고','WOW'
VARCHAR(n)
(0 <= n <= 65,535)
사이즈가 큰 문자열 - 사이즈가 큰 문자열을 저장할 때 사용 TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT