SQL 명령 구조
•
DDL : 데이터 정의 언어
•
DQL : 데이터 쿼리 언어
•
DML : 데이터 조작 언어
•
DCL : 데이터 제어 언어
•
TCL : 트랜잭션 제어 언어
DDL(데이터 정의 언어)
•
실제 데이터베이스 스키마 정의에 사용할 수 있는 SQL 명령
•
데이터 베이스 스키마에 대한 설명을 다루며 데이터베이스에서 데이터베이스 개체의 구조를 생성하고 수정하는 데 사용
•
데이터가 아닌 데이터베이스 구조를 생성, 수정 및 삭제하는 데 사용되는 SQL 명령 집합
•
일반적으로 애플리케이션을 통해 데이터베이스에 액세스해야 하는 일반 사용자가 사용하지 않음
명령 | 설명 | SQL 구문 |
데이터베이스 또는 해당 개체(테이블, 인덱스, 함수, 뷰, 저장 프로시저 및 트리거) 만들기 | CREATE TABLE table_name (column1 data_type, column2 data_type, ...); | |
데이터베이스에서 객체 삭제 | DROP TABLE table_name; | |
데이터베이스 구조 변경 | ALTER TABLE table_name ADD COLUMN column_name data_type; | |
레코드에 할당된 모든 공간을 포함하여 테이블에서 모든 레코드를 제거합니다. | TRUNCATE TABLE table_name; | |
데이터 사전에 설명 추가 | COMMENT 'comment_text' ON TABLE table_name; | |
데이터베이스에 존재하는 개체의 이름 바꾸기 | RENAME TABLE old_table_name TO new_table_name |
DQL(데이터 쿼리 언어)
•
스키마 객체 내의 데이터에 대한 쿼리를 수행하는 데 사용
•
전달된 쿼리에 따라 일부 스키마 관계를 가져오는 것
•
데이터베이스에 데이터를 가져오고 이에 순서를 부여할 수 있는 SQL문 구성 요소
명령 | 설명 | SQL 구문 |
데이터베이스에서 데이터를 검색하는 데 사용됩니다 | SELECT column1, column2, ...FROM table_name<br>WHERE condition; |
DML(데이터 조작 언어)
•
데이터베이스에 있는 데이터를 조작하는 SQL 명령은 DML 또는 데이터 조작 언어
•
데이터와 데이터베이스에 대한 액세스를 제어하는 SQL 문의 구성 요소
•
DCL 문은 DML 문과 그룹화
명령 | 설명 | SQL 구문 |
테이블에 데이터 삽입 | INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); | |
테이블 내의 기존 데이터 업데이트 | UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition; | |
데이터베이스 테이블에서 레코드 삭제 | DELETE FROM table_name WHERE condition; | |
테이블 제어 동시성 | LOCK TABLE table_name IN lock_mode; | |
CALL | PL/SQL 또는 JAVA 하위 프로그램 호출 | CALL procedure_name(arguments); |
EXPLAIN PLAN | 데이터에 대한 액세스 경로를 설명합니다. | EXPLAIN PLAN FOR SELECT * FROM table_name; |
DCL(데이터 제어 언어)
•
데이터베이스 시스템의 권리, 사용 권한 및 기타 제어 처리 언어
명령 | 설명 | SQL 구문 |
사용자 계정에 새로운 권한을 할당해 특정 데이터베이스 개체, 작업 또는 기능에 액세스 제어 | GRANT privilege_type [(column_list)] ON [object_type] object_name TO user [WITH GRANT OPTION]; | |
이전에 부여된 권한을 사용자 계정에서 제거하여 특정 데이터베이스 개체나 작업에 대한 액세스 권한을 제거 | REVOKE [GRANT OPTION FOR] privilege_type [(column_list)] ON [object_type] object_name FROM user [CASCADE]; |
TCL(거래 제어 언어)
트랜잭션 : 작업 집합을 단일 실행 단위로 그룹화
트랜잭션은 특정 작업으로 시작하여 그룹의 모든 작업이 성공적으로 완료되면 끝납니다. 작업 중 하나라도 실패하면 트랜잭션이 실패
트랜잭션은 성공 또는 실패라는 두 가지 결과만 가짐
•
트랜잭션 실행 제어 언어
명령 | 설명 | 통사론 |
새로운 트랜잭션 시작 | BEGIN TRANSACTION [transaction_name]; | |
트랜잭션 중에 변경된 모든 내용 저장 | COMMIT; | |
트랜잭션중에 변경된 모든 내용 취소 | ROLLBACK; | |
현재 트랜잭션 내에 저장점 생성 | SAVEPOINT savepoint_name; |
중요 SQL 명령
1.
SELECT : 데이터베이스에서 데이터를 검색하는 데 사용
2.
INSERT : 데이터베이스에 새로운 데이터를 추가하는 데 사용
3.
UPDATE : 데이터베이스의 기존 데이터를 수정하는 데 사용
4.
DELETE : 데이터베이스에서 데이터를 제거하는 데 사용
5.
CREATE TABLE : 데이터베이스에 새로운 테이블을 만드는 데 사용
6.
ALTER TABLE : 기존 테이블의 구조를 수정하는 데 사용
7.
DROP TABLE : 데이터베이스에서 전체 테이블을 삭제하는 데 사용
8.
WHERE : 지정된 조건에 따라 행을 필터링하는 데 사용
9.
ORDER BY : 결과 집합을 오름차순 또는 내림차순으로 정렬하는 데 사용
10.
JOIN : 두 개 이상의 테이블의 행을 해당 테이블의 관련 열을 기준으로 결합하는 데 사용
SQL Command | SQL 구문 |
SELECT | SELECT * FROM employees; |
INSERT | INSERT INTO employees (first_name, last_name, email) VALUES ('John', 'Doe', 'john.doe@example.com'); |
UPDATE | UPDATE employees SET email = 'jane.doe@example.com' WHERE first_name = 'Jane' AND last_name = 'Doe'; |
DELETE | DELETE FROM employees WHERE employee_id = 123; |
CREATE TABLE | CREATE TABLE employees ( employee_id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50)); |
ALTER TABLE | ALTER TABLE employees ADD COLUMN phone VARCHAR(20); |
DROP TABLE | DROP TABLE employees; |
WHERE | SELECT * FROM employees WHERE department = 'Sales'; |
ORDER BY | SELECT * FROM employees ORDER BY hire_date DESC; |
JOIN | SELECT e.first_name, e.last_name, d.department_name FROM employees e JOIN departments d ON e.department_id = d.department_id; |