SQL Syntax
SQL Syntax: SQL 기본 문법과 사용법
- *SQL(Syntax)**는 데이터를 정의하고, 조작하며, 제어하는 명령어들을 이해하기 쉽게 표현하는 규칙입니다. SQL 문법은 데이터를 검색하거나 조작할 때 사용되는 명령어들의 구조를 정의하며, SQL 문법을 정확히 이해하면 데이터베이스 작업을 효과적으로 수행할 수 있습니다. 이 글에서는 SQL의 주요 문법과 기본 구조를 설명하고, 각 문법 요소에 대한 사용 예제를 제공합니다.
1. SQL 문법의 기본 구조
SQL 쿼리는 보통 다음과 같은 형식을 따릅니다:
SELECT 열이름1, 열이름2, ...
FROM 테이블이름
WHERE 조건
GROUP BY 열이름
HAVING 조건
ORDER BY 열이름 [ASC|DESC];
SQL 문은 대소문자를 구별하지 않지만, 일반적으로 SQL 키워드는 대문자로 작성하는 것이 관례입니다.
2. 주요 SQL 명령어
2.1 SELECT: 데이터 조회
SELECT
문은 데이터베이스에서 데이터를 조회할 때 사용됩니다. 기본 구조는 다음과 같습니다:
SELECT 열이름1, 열이름2, ...
FROM 테이블이름
WHERE 조건;
- 열이름: 조회하려는 열의 이름을 지정합니다. 모든 열을 조회하려면 ``를 사용합니다.
- 테이블이름: 데이터를 조회할 테이블 이름을 지정합니다.
- WHERE 조건: 특정 조건을 만족하는 데이터만 선택합니다.
예제:
SELECT name, salary
FROM employees
WHERE department = 'Sales';
이 쿼리는 employees
테이블에서 부서가 Sales
인 직원들의 이름과 급여를 조회합니다.
2.2 INSERT: 데이터 삽입
INSERT INTO
문은 테이블에 새로운 데이터를 삽입할 때 사용됩니다.
INSERT INTO 테이블이름 (열이름1, 열이름2, ...)
VALUES (값1, 값2, ...);
예제:
INSERT INTO employees (name, department, salary)
VALUES ('John Doe', 'Sales', 6000);
이 쿼리는 employees
테이블에 새로운 데이터를 삽입합니다.
2.3 UPDATE: 데이터 수정
UPDATE
문은 테이블에 있는 데이터를 수정할 때 사용됩니다.
UPDATE 테이블이름
SET 열이름 = 새로운값
WHERE 조건;
예제:
UPDATE employees
SET salary = 7000
WHERE name = 'John Doe';
이 쿼리는 employees
테이블에서 John Doe
의 급여를 7,000으로 수정합니다.
2.4 DELETE: 데이터 삭제
DELETE
문은 테이블에서 데이터를 삭제할 때 사용됩니다.
DELETE FROM 테이블이름
WHERE 조건;
예제:
DELETE FROM employees
WHERE name = 'John Doe';
이 쿼리는 employees
테이블에서 John Doe
라는 직원을 삭제합니다.
3. 조건 및 필터링: WHERE 절
WHERE
절은 조회하거나 수정할 데이터를 필터링할 때 사용됩니다. WHERE
절에서는 다양한 조건과 논리 연산자를 사용할 수 있습니다.
3.1 비교 연산자
=
: 같음!=
또는<>
: 같지 않음>
: 큼<
: 작음>=
: 크거나 같음<=
: 작거나 같음
예제:
SELECT * FROM employees WHERE salary > 5000;
3.2 논리 연산자
AND
: 두 조건이 모두 참일 때.OR
: 두 조건 중 하나라도 참일 때.NOT
: 조건을 반전할 때.
예제:
SELECT * FROM employees
WHERE salary > 5000 AND department = 'Sales';
4. 데이터 정렬: ORDER BY 절
ORDER BY
절은 쿼리 결과를 특정 열을 기준으로 정렬할 때 사용됩니다. 기본값은 오름차순(ASC)이지만, 내림차순(DESC)으로 정렬할 수 있습니다.
SELECT * FROM employees
ORDER BY salary DESC;
이 쿼리는 급여가 높은 순으로 직원 목록을 정렬합니다.
5. 그룹화: GROUP BY 절
GROUP BY
절은 같은 값을 가진 행을 그룹화하여 집계 함수와 함께 사용됩니다.
SELECT department, AVG(salary)
FROM employees
GROUP BY department;
이 쿼리는 각 부서별 평균 급여를 계산합니다.
6. 집계 함수
SQL에는 여러 개의 값을 하나의 값으로 변환하는 집계 함수가 있습니다. 주로 GROUP BY
와 함께 사용됩니다.
- COUNT(): 행의 개수를 셉니다.
- SUM(): 값의 합계를 구합니다.
- AVG(): 값의 평균을 구합니다.
- MAX(): 최대값을 반환합니다.
- MIN(): 최소값을 반환합니다.
예제:
SELECT department, COUNT(*), AVG(salary)
FROM employees
GROUP BY department;
이 쿼리는 각 부서의 직원 수와 평균 급여를 계산합니다.
7. 테이블 조인: JOIN 절
JOIN
절은 두 개 이상의 테이블을 연결하여 데이터를 조회할 때 사용됩니다. 자주 사용되는 조인 방식은 다음과 같습니다:
7.1 INNER JOIN
INNER JOIN
은 두 테이블에서 공통된 값이 있는 행만 반환합니다.
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department = departments.id;
이 쿼리는 employees
와 departments
테이블을 조인하여 직원 이름과 부서 이름을 조회합니다.
7.2 LEFT JOIN
LEFT JOIN
은 왼쪽 테이블의 모든 행과, 일치하는 경우 오른쪽 테이블의 값을 반환합니다.
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department = departments.id;
8. 서브쿼리
서브쿼리는 쿼리 안에 포함된 또 다른 쿼리입니다. 서브쿼리는 SELECT, INSERT, UPDATE, DELETE 등의 문에서 사용할 수 있습니다.
예제:
SELECT name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
이 쿼리는 전체 평균 급여보다 높은 급여를 받는 직원들의 이름을 조회합니다.
9. 데이터베이스와 테이블 관리
9.1 데이터베이스 생성 및 삭제
-
CREATE DATABASE: 새 데이터베이스를 생성합니다.
CREATE DATABASE company_db;
-
DROP DATABASE: 데이터베이스를 삭제합니다.
DROP DATABASE company_db;
9.2 테이블 생성 및 삭제
-
CREATE TABLE: 테이블을 생성합니다.
CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), department VARCHAR(50), salary DECIMAL(10, 2) );
-
DROP TABLE: 테이블을 삭제합니다.
DROP TABLE employees;
10. 인덱스
-
*인덱스(Index)**는 데이터를 더 빠르게 검색할 수 있도록 도와주는 데이터베이스 객체입니다.
-
CREATE INDEX: 테이블의 특정 열에 인덱스를 생성합니다.
CREATE INDEX idx_salary ON employees (salary);
-
DROP INDEX: 인덱스를 삭제합니다.
DROP INDEX idx_salary ON employees;
11. 트랜잭션
-
*트랜잭션(Transaction)**은 데이터베이스에서 일련의 SQL 작업을 하나의 단위로 묶어 실행하는 것을 의미합니다. 트랜잭션이 성공적으로 완료되면
COMMIT
을 호출하여 변경 사항을 저장하고, 오류가 발생하면ROLLBACK
을 사용하여 변경 사항을 취소할 수 있습니다. -
START TRANSACTION: 트랜잭션을 시작합니다.
START TRANSACTION;
-
COMMIT: 트랜잭션을 완료하고 변경 사항을 저장합니다.
COMMIT;
-
ROLLBACK: 트랜잭션을 취소합니다.
ROLLBACK;
요약
SQL은 데이터베이스에서 데이터를 정의하고 조작하는 강력한 언어입니다. SQL의 주요 문법인 SELECT
, INSERT
, UPDATE
,
DELETE
를 포함하여, 데이터를 필터링하는 WHERE
절, 정렬하는 ORDER BY
, 그룹화하는 GROUP BY
,
그리고 테이블 간의 데이터를 연결하는 JOIN
을 이해하면 데이터베이스 관리 및 조작을 효과적으로 수행할 수 있습니다.