Abstract
웹 프로젝트 킥오프 때 가장 많이 고민하고 시간을 소요하는 것이 서비스에 적합하면서 확장성을 가지고 있는 DB Structure Design 이다.
한번 Production
환경에 올라가면 수정하기 거의 불가능에 가까운 것이 DB이기 때문에 프로젝트 첫 페이즈일때 실제 데이터 수정이 빈번하게 일어나게 된다.
이때 자주 사용하게 되는 기본 Query 들을 이번 포스팅에서 소개하고자 한다.
사실 부족한 내 기억력을 대비하고자 작성한 나만을 위한 포스팅이다.
Queries
Database
데이터베이스 생성 및 제거
/* create */
CREATE DATABASE database_name;
/* remove */
DROP DATABASE database_name;
Table
테이블 생성 및 제거
/* create */
CREATE TABLE table_name (
/* primary key */
id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'Primary Key',
/* nullable or not nullable */
key_name_1 VARCHAR(100) NOT NULL,
key_name_2 VARCHAR(100) NOT NULL,
key_name_3 TEXT DEFAULT NULL,
/* for managing CRUD history */
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'Create Time',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Update Time',
deleted_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Delete Time'
) COMMENT 'Table Description';
/* remove */
DROP TABLE table_name;
/* rename */
ALTER TABLE table_name RENAME new_table_name;
테이블 전체 데이터 조회
SELECT * FROM table_name;
Data
데이터 생성 및 수정
/* create */
INSERT INTO table_name (key_name_1, key_name_1, key_name_1)
VALUES
('value_1', 'value_2', 'value_3'),
('value_1', 'value_2', 'value_3'),
('value_1', 'value_2', 'value_3');
/* change */
ALTER TABLE table_name
CHANGE table_name new_table_name;
관계 생성 및 제거
/* create foreign key */
ALTER TABLE table_name
ADD FOREIGN KEY (table_1_id) REFERENCES table_1(id);
/* remove foreign key */
ALTER TABLE table_name
DROP FOREIGN KEY table_ibfk_1;
Naming Convention
Table
테이블 이름은
Singular
테이블 이름은
Lowercase
-
Join Table (Relationship Table)
이름은 테이블 관계에 따라_has_
,_and_
사용-
todo
테이블 하위 개념인task
테이블일 경우Join Table
이름은todo_has_task
-
keyboard
테이블과 동등 개념인mouse
테이블일 경우Join Table
이름은keyboard_and_mouse
-
ball
테이블과ball_type
테이블일 경우ball_has_type
-
-
테이블에는 무조건 히스토리를 관리
-
created_at
,updated_at
,deleted_at
-
Data
- 키 이름은
snake case
-
foreign key
의 경우 관계되는 테이블의 이름을 참조-
book
테이블에 연결할foreign key
는book_id
관계 대상은book(id)
-
Join Table
의 경우 -
ball_has_type
테이블의 경우ball
테이블foreign key
는ball_id
,ball_type
테이블의foreign key
는type_id
-
Boolean
값은is_
로 시작
Conclusion
서문에서 언급한대로 이번글은 부족한 기억력을 보완하고자 쓴 포스팅이기 때문에 따로 언급할만한 내용은 없다.
앞으로 계속 추가 예정...
Top comments (0)