Structured Query Language ( SQL )

Yongs12 ㅣ 2024. 2. 11. 12:23

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