■ SQL

TERM SUMMARY OF SQL

JH 2024. 8. 24. 20:50

1. SQL 문법(구문)

기본 SQL 문

  • SELECT: 데이터를 조회함.
    • 예: SELECT * FROM employees;
  • DISTINCT: 중복된 데이터를 제거하고 고유한 값만 반환함.
    • 예: SELECT DISTINCT department FROM employees;
  • INSERT INTO: 데이터를 테이블에 추가함.
    • 예: INSERT INTO employees (name, position) VALUES ('John Doe', 'Manager');
  • UPDATE: 기존 데이터를 수정함.
    • 예: UPDATE employees SET salary = 70000 WHERE id = 1;
  • DELETE: 데이터를 삭제함.
    • 예: DELETE FROM employees WHERE id = 1;

추가적인 SQL 문

  • CREATE TABLE: 새로운 테이블을 생성함.
    • 예: CREATE TABLE employees (id INT PRIMARY KEY, name VARCHAR(50), salary INT);
  • ALTER TABLE: 기존 테이블의 구조를 변경함.
    • 예: ALTER TABLE employees ADD COLUMN birthdate DATE;
  • DROP: 테이블이나 데이터베이스 등을 삭제함.
    • 예: DROP TABLE employees;
  • TRUNCATE: 테이블의 모든 데이터를 삭제함.
    • 예: TRUNCATE TABLE employees;
  • INDEX: 검색 속도를 높이기 위해 인덱스를 생성함.
    • 예: CREATE INDEX idx_name ON employees (last_name);
  • VIEW: 복잡한 쿼리 결과를 가상의 테이블로 저장함.
    • 예: CREATE VIEW high_salary AS SELECT * FROM employees WHERE salary > 100000;
  • TRANSACTION: 여러 SQL 문을 하나의 작업 단위로 묶어서 처리함.
    • 예:
      sql
      Copy code
      BEGIN TRANSACTION; UPDATE accounts SET balance = balance - 500 WHERE account_id = 1; UPDATE accounts SET balance = balance + 500 WHERE account_id = 2; COMMIT;
  • GRANT와 REVOKE: 사용자에게 권한을 부여하거나 회수함.
    • 예: GRANT SELECT ON employees TO user1;

2. 조인(Join)

  • INNER JOIN: 두 테이블에서 공통된 데이터만 반환함.
    • 예: SELECT * FROM employees INNER JOIN departments ON employees.department_id = departments.id;
  • LEFT JOIN: 왼쪽 테이블의 모든 데이터와 매칭되는 오른쪽 테이블의 데이터만 반환함.
    • 예: SELECT * FROM employees LEFT JOIN departments ON employees.department_id = departments.id;
  • RIGHT JOIN: 오른쪽 테이블의 모든 데이터와 매칭되는 왼쪽 테이블의 데이터만 반환함.
    • 예: SELECT * FROM employees RIGHT JOIN departments ON employees.department_id = departments.id;
  • FULL JOIN: 두 테이블의 모든 데이터를 반환하며 매칭되지 않는 부분은 NULL로 표시함.
    • 예: SELECT * FROM employees FULL JOIN departments ON employees.department_id = departments.id;
  • CROSS JOIN: 두 테이블의 모든 가능한 조합을 반환함.
    • 예: SELECT * FROM employees CROSS JOIN departments;

3. 서브쿼리(Subquery)

  • 서브쿼리는 쿼리 내에서 다른 쿼리를 포함하여 사용함.
    • 예: SELECT * FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);

4. 조건문(Conditional Statements)

IF 문

  • IF 문은 주로 프로시저나 함수 내에서 조건을 처리할 때 사용됨.
    • 예:
      sql
      Copy code
      IF salary > 50000 THEN SET bonus = salary * 0.10; ELSE SET bonus = salary * 0.05; END IF;

CASE 문

  • CASE 문은 SQL 쿼리 내에서 조건에 따라 다른 결과를 반환함.
    • 예:
      sql
      Copy code
      SELECT employee_id, salary, CASE WHEN salary > 100000 THEN 'High' WHEN salary BETWEEN 50000 AND 100000 THEN 'Medium' ELSE 'Low' END AS salary_level FROM employees;

WHERE 절의 조건문

  • WHERE 절에서 조건을 사용하여 특정 조건을 만족하는 행만을 선택함.
    • 예: SELECT * FROM employees WHERE salary > 50000;

5. SQL 함수

집계 함수(Aggregate Functions)

  • COUNT(): 특정 열의 데이터 수를 계산함.
  • SUM(): 숫자 데이터의 합계를 계산함.
  • AVG(): 숫자 데이터의 평균을 계산함.
  • MAX(), MIN(): 최대값 또는 최소값을 반환함.

문자열 함수(String Functions)

  • UPPER(): 문자열을 대문자로 변환함.
  • LOWER(): 문자열을 소문자로 변환함.
  • CONCAT(): 두 개 이상의 문자열을 연결함.
  • SUBSTRING(): 문자열의 일부분을 추출함.
  • LENGTH(): 문자열의 길이를 반환함.

날짜 함수(Date Functions)

  • NOW(): 현재 날짜와 시간을 반환함.
  • DATEADD(): 특정 날짜에 시간을 더함.
  • DATEDIFF(): 두 날짜 사이의 차이를 계산함.
  • FORMAT(): 날짜 형식을 지정된 방식으로 변환함.

수학 함수(Math Functions)

  • ROUND(): 숫자를 반올림함.
  • ABS(): 절대값을 반환함.
  • MOD(): 나머지를 계산함.
  • POWER(): 제곱값을 계산함.
  • CEILING()와 FLOOR(): 숫자를 올림 또는 내림함.

윈도우 함수(Window Functions)

  • ROW_NUMBER(): 결과 집합 내에서 각 행의 순번을 반환함.
  • RANK(): 순위를 매기되, 동일한 값이 있을 때 같은 순위를 부여함.
  • DENSE_RANK(): 순위를 매기되, 같은 값이 있더라도 순위가 건너뛰지 않음.
  • NTILE(n): 결과를 n개의 동일한 크기로 나누고, 각 그룹에 순번을 매김.
  • LEAD(): 다음 행의 값을 반환함.
  • LAG(): 이전 행의 값을 반환함.

집합 함수(Set Functions)

  • UNION: 두 쿼리의 결과를 합치되, 중복된 행은 하나만 반환함.
  • UNION ALL: 중복된 행을 포함하여 두 쿼리의 결과를 모두 합침.
  • INTERSECT: 두 쿼리의 공통된 결과만 반환함.
  • EXCEPT: 첫 번째 쿼리 결과에서 두 번째 쿼리 결과를 제외한 결과를 반환함.

기타 다양한 함수들

  • COALESCE(): 여러 표현식 중 첫 번째로 NULL이 아닌 값을 반환함.
  • NULLIF(): 두 값이 동일하면 NULL을 반환하고, 그렇지 않으면 첫 번째 값을 반환함.
  • ISNULL(): 값이 NULL이면 대체 값을 반환함.
  • CAST()와 CONVERT(): 데이터 타입을 변환함.