코딩 스쿨 SQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

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;

이 쿼리는 employeesdepartments 테이블을 조인하여 직원 이름과 부서 이름을 조회합니다.

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을 이해하면 데이터베이스 관리 및 조작을 효과적으로 수행할 수 있습니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com