SQL
ㄴ relational DBMS의 표준 언어
ㄴ 종합적인 database언어 : DDL + DML + VDL
| relational data model | SQL |
| relation | table |
| attribute | column |
| tuple | row |
| domain | domain |
데이터 타입
| 종류 | 설명 | 크기 | MySQL |
| 정수 | 정수를 저장할 때 사용 | 1 Byte | TINYINT |
| 4Byte | INT | ||
| 8 Byte | BIGINT | ||
| 부동 소수점 방식 | 실수를 저장할 때 사용 고정 소수점 방식에 비해 정확하지 않다. |
4 Byte | FLOAT |
| 8 Byte | DOUBLE | ||
| 고정 소수점 방식 | 실수를 정확하게 저장할 때 사용 DECIMAL(5, 2) => [-999.99 ~ 999.99] |
variable | DECIMAL |
| 고정 크기 문자열 | 최대 몇개의 문자를 가지는 문자열을 저장할지를 지정 저장될 문자열의 길이가 최대 길이보다 작으면 나머지를 space로 채워서 저장 |
CHAR(n) 0 <= n <= 255 |
|
| 가변 크기 문자열 | 최대 몇개의 문자를 가지는 문자열을 저장할지를 지정 저장될 문자열의 길이 만큼만 저장 |
VARCHAR(n) 0 <= n <= 65535 |
|
| 사이즈가 큰 문자열 | 사이즈가 큰 문자열을 저장할 때 사용 | TEXT MEDIUM TEXT LONG TEXT |
|
| 날짜 | 년, 월, 일을 저장 YYYY-MM-DD |
DATE 1000-01-01 ~ 9999-12-31 |
|
| 시간 | 시, 분, 초를 저장 hh:mm:ss or hhh:mm:ss |
TIME -838:59:59 ~ 838:59:59 |
|
| 날짜와 시간 | 날짜와 시간을 같이 표현 YYYY-MM-DD hh:mm:ss |
DATETIME 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
|
| 날짜와 시간 | 날짜와 시간을 같이 표현 YYYY-MM-DD hh:mm:ss TIMESTAMP는 time-zone이 반영됨 |
TIMESTAMP 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC |
|
database 만드는법 예시
Create
SQL 명령어 예시
// 데이터베이스들 목록 보기
SHOW DATABASES;
// 데이터베이스 생성
CREATE DATABASE company;
// 사용할 데이터베이스 지정
USE company;
// 사용중인 데이터베이스 확인
SELECT database();
// 데이터베이스 삭제
DROP DATABASE company;
Key Constraint
PRIMARY KEY
ㄴ table의 tuple을 식별하기 위해 사용 하나 이상의 attribute로 구성하며
ㄴ 중복된 값을 가질수 없고 NULL도 값으로 가질 수 없다.
PRIMARY KEY 선언 방법
UNIQUE도 같은 방법으로 선언 가능
NOT NULL은 컬럼명 타입 뒤에 적어준다.
CREATE TABLE department(
id INT PRIMARY KEY,
name VARCHAR(20) NOT NULL UNIQUE, // 고유값 지정 UNIQUE
leader_id INT DEFAULT 10 // 넣는 값이 없을 경우 기본 값 지정 DEFAULT
);
CREATE TABLE player(
team_id VARCHAR(12),
back_number INT,
...
PRIMARY KEY (team_id, back_number)
);
///////////////////////////////////
CHECK 선언 사용 방법
CREATE EMPLOYEE(
...
age INT CHECK (age >= 20) // 컬럼 값에 조건을 걸 수 있다.
);
CREATE PROJECT(
start_date DATE,
end_date DATE,
...
CHECK (start_date < end_date) // 2개 이상일 경우 사용 방법
FOREIGN KEY
| reference option | 설명 |
| CASCADE | 참조값의 삭제, 변경을 그대로 반영 |
| SET NULL | 참조값이 삭제, 변경 시 NULL로 변경 |
| RESTRICT | 참조값이 삭제, 변경되는 것을 금지 |
| NO ACTION | RESTRICT와 유사 |
| SET DEFAULT | 참조값이 삭제, 변경 시 default 값으로 변경 |
Referential integrity constraint : FOREIGN KEY
ㄴ attribute가 다른 table의 primary key나 unique key를 참조할 때 사용
create table employee(
id INT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
salary INT DEFAULT 50000000,
dept_id INT,
FOREIGN KEY (dept_id) references department (id)
on delete SET NULL on update CASCADE, // FK 옵션 설정
CHECK (salary >= 50000000)
);
Constraint 이름 명시
create table TEST(
age INT CONSTRAINT age_over_20 CHECK ( age > 20 )
);
제약사항 위반 시
Check constraint 'age_over_20' is violated. 로 이름 표기
table의 constraint 이름 확인 하고 싶을 땐
show create table TEST;
ALTER TABLE
ㄴ table의 schema를 변경하고 싶을 때 사용
ㄴ 서비스 중인 변경할 경우 백엔드에 영향이 없을지 검토한 후에 변경하는 것이 중요
| 유형 | MySQL 예제 |
| attribute 추가 | ALTER TABLE employee ADD blood VARCHAR(10); |
| attribute 이름 변경 | ALTER TABLE employee RENAME COLUMN phone TO phone_num; |
| attribute 타입 변경 | ALTER TABLE employee MODIFY COLUMN blood CHAR(10); |
| table 이름 변경 | ALTER TABLE logs RENAME TO backend_logs; |
| primary key 추가 | ALTER TABLE log ADD PRIMARY KEY (id);l |
DROP TABLE
ㄴ table을 삭제할 때 사용
DROP TABLE table_nmame;'데이터베이스' 카테고리의 다른 글
| 관계형 데이터베이스 ( Relational Database ) (0) | 2024.02.10 |
|---|---|
| Database System 관련 용어 (0) | 2024.02.09 |