🖍️ SQL Query
구조적 쿼리 언어
관계형 DB 내에서 데이터를 정의, 조작 및 제어하는데 사용하고 다양한 유형의 SQL 문과 명령을 이해
@ DDL (데이터 정의 언어)
Table, Index, Schema 같은 DB 개체의
구조 정의하고 수정하는데 사용
CREATE
새 Table, View, Index 또는 기타 DB 개체 생성
CREATE TABLE employees (
id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
hire_data DATE
);
ALTER
기존 DB 개체 수정
ALTER TABLE employees ADD COLUMN email VARCHAR(100);
DROP
기존 DB 개체 삭제
DROP TABLE employees;
TRUNCATE
Table 에서 모든 Record 제거하지만 Table 구조는 그대로 유지
TRUNCATE TABLE employees;
@ DML (데이터 조작 언어)
SELECT
DB 에서 데이터를 검색
Select first_name, last_name FROM employees;
INSERT
Table 에 새 행을 추가
INSERT INTO employees (id, first_name, last_name, hire_date) VALUES (1, 'John', 'Doe', '2023-01-01');
UPDATE
Table 의 기존 데이터를 수정
UPDATE employees SET email = 'john.doe@example.com WHERE id = 1;
DELETE
Table 에서 행을 제거
DELETE FROM employees WHERE id = 1;
@ DCL (데이터 제어 언어)
GRANT
사용자에게 권한 부여
Select first_name, last_name FROM employees;
REVOKE
사용자의 권한 제거
INSERT INTO employees (id, first_name, last_name, hire_date) VALUES (1, 'John', 'Doe', '2023-01-01');
@ TCL (트랜잭션 제어 언어)
COMMIT
현재 트랜잭션 중에 변경된 내용 저장
COMMIT;
ROLLBACK
현재 트랜잭션 중에 변경된 내용 취소
ROLLBACK;
SAVEPOINT
나중에 롤백할 수 있는 트랜잭션 내 지점 설정
SAVEPOINT savepoint1;
RELEASE SAVEPOINT
저장점 제거
RELEASE SAVEPOINT savepoint1;
@ DQL (데이터 쿼리 언어)
SELECT
하나 이상의 Table 에서 Data 를 검색
SELECT * FROM employees;
@ 추가 SQL 개념
INNER JOIN
두 Table 모두에서 일치하는 값을 가진 Record 선택
SELECT e.first_name, d.department_name FROM employees e INNER JOIN department d ON e.department_id = d.id;
LEFT JOIN (또는 LEFT OUTER JOIN)
Left Table 의 모든 Record 를 선택하고
Right Table 의 일치하는 Record 선택
SELECT e.first_name, d.department_name FROM employees e LEFT JOIN department d ON e.department_id = d.id
RIGHT JOIN (또는 RIGHT OUTER JOIN)
Right Table 의 모든 Record 를 선택하고
Left Table 의 일치하는 Record 선택
SELECT e.first_name, d.department_name FROM employees e RIGHT JOIN department d ON e.department_id = d.id
FULL JOIN (또는 FULL OUTER JOIN)
Left Or Right Table 중 하나에 일치하는
Record 가 있을 때 모든 Record 선택
SELECT e.first_name, d.department_name FROM employees e FULL OUTER JOIN department d ON e.department_id = d.id
INDEX
CREATE INDEX : Table 에 Index 를 생성
CREATE INDEX idx_last_name ON employees(last_name)
DROP INDEX : Index 를 삭제
DROP INDEX idx_last_name