[데이터베이스] SQL 개념
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 |