☄️ DB 문법 정리 ☄️
테이블 생성
컬럼 이름, 타입, 제약 사항, 기본키/외래키 정의
CREATE TABLE <table_name> (
<column_name> <type|table_constraint>
)
ex.
CREATE TABLE users (
user_id INT PRIMARY KEY
user_name VARCHAR NOT NULL,
user_age BIGINT NULL,
user_likes BIGINT DEFAULT 0,
FOREIGN KEY (board_id) REFERENCES boards(board_id)
)
테이블, 데이터 조회
SELECT <columns> FROM <table_name> <conditions>
ex.
SELECT * FROM users //전체 유저 조회
SELECT * FROM users WHERE user_name = '예시'
컬럼(속성) 추가
ALTER TABLE <table_name> ADD COLUMN <column_name> <type>
ex.
ALTER TABLE users ADD COLUMN user_nickname VARCHAR
컬럼 변경
ALTER TABLE <table_name> MODIFY COLUMN <new_type|contraint>
ex.
ALTER TABLE users MODIFY COLUMN user_age INT NOT NULL
컬럼 이름 변경
ALTER TABLE <table_name> CHANGE COLUMN <pre_column_name> <new_column_name> <type|table_constraint>
ex.
ALTER TABLE users CHANGE COLUMN user_likes likes BIGINT DEFAULT 0
컬럼 삭제
ALTER TABLE <table_name> DROP COLUMN <column_name>
ex.
ALTER TABLE users DROP COLUMN like
테이블 이름 변경
ALTER TABLE <table_name> RENAME <new_table_name>
ex.
ALTER TABLE users RENAME user_tb
데이터(행) 삽입
INSERT INTO <table_name> (<columns>) VALUES (<values>)
ex.
INSERT INTO user_tb(user_name, user_age) VALUES ('예시', 100)
데이터(행) 수정
UPDATE <table_name> SET <column_name> = <new_value> WHERE <condition>
ex.
UPDATE user_tb SET user_age = 25 WHERE user_name = '예시'
데이터 삭제
DELETE FROM <table_name> WHERE <condition>
ex.
DELETE FROM user_tb WHERE user_name = 예시
테이블 삭제
DROP TABLE <table_name>
ex.
DROP TABLE user_tb
가상 테이블
CREATE VIEW <view_name> AS <query> WITH CHECK OPTION
ex.
CREATE VIEW user_view AS SELECT * FROM user_tb WHERE user_id < 10 WITH CHECK OPTION
제약조건을 이용해 데이터 필터링
뷰 생성 시 WHERE 조건절에 사용된 컬럼에 적용
WHERE 조건절에 사용된 컬럼값 변경을 막아 동일한 뷰를 공유하도록 함
테이블 FK에 인덱스를 생성
CREATE INDEX <index_name> ON <table_name> (<column>)
ex.
CREATE INDEX idx_user_name ON user_tb(user_name)
권한 부여
GRANT <privileges> ON <schema> TO <user>
GRANT <privileges> ON <schema> TO <user> WITH GRANT OPTION
ex.
GRANT ALL PRIVILGES TO 'user'@'%' // user에게 대한 모든 권한 부여
GRANT SELECT, UPDATE ON db.* TO developer WITH GRANT OPTION
// 개발자에게 db에 대한 select, update 권한 부여,
// 이때 개발자는 다른 사용자에게 select, update 권한 부여 가능
권한을 부여 받는 사람이 다른 사용자에게 해당 권한 부여가 가능하도록 하는 설정