[SQLD] SQL 기본 - 함수, 조인, 표준 조인 요약

 

1. 함수 (Function)

데이터베이스 관리에서 SQL 함수는 데이터를 조회, 변환, 계산하는 데 사용되는 강력한 도구중 하나이다. SQL 함수는 입력 값을 받아 처리하고, 결과를 반환하는 일련의 SQL 문을 포함한다.

 

SQL 함수의 기본

SQL 함수는 크게 내장 함수(built-in function)와 사용자 정의 함수(user-defined function, UDF) 두 가지 유형으로 분류된다.

내장함수

데이터베이스 시스템에 사전에 정의된 함수로, 문자열 처리, 날짜 계산, 수학적 계산 등 다양한 기능을 제공한다.

사용자 정의 함수 (User-Defined-Function)

사용자가 특정 작업을 수행하기 위해 직접 작성한 함수로, 복잡한 로직이나 반복적인 작업을 처리하는 데 유용하다.

 

자주 사용하는 내장 함수

SQL에서 자주 사용되는 내장 함수들은 크게 여러 카테고리로 나눌 수 있으며, 각 카테고리에 따라 다양한 기능을 제공한다.

문자열 처리 함수

UPPER: 문자열을 대문자로 변환한다.
LOWER: 문자열을 소문자로 변환한다.
TRIM: 문자열 앞뒤의 공백을 제거한다.
SUBSTRING (또는 SUBSTR): 문자열에서 특정 부분을 추출한다.
LENGTH: 문자열의 길이를 반환한다.
CONCAT: 두 개 이상의 문자열을 결합한다.
REPLACE: 문자열 내의 특정 문자를 다른 문자로 바꾼다.

날짜 및 시간 함수

NOW (또는 CURRENT_TIMESTAMP): 현재 날짜와 시간을 반환한다.
DATE: 날짜 부분만 추출한다.
TIME: 시간 부분만 추출한다.
DATEDIFF: 두 날짜 간의 차이를 일 수로 반환한다.
DATE_ADD: 특정 날짜에 일정 기간을 더한다.
YEAR, MONTH, DAY: 날짜에서 년, 월, 일을 추출한다.

수학적 함수

ROUND: 숫자를 반올림한다.
FLOOR: 숫자를 내림한다.
CEIL 또는 CEILING: 숫자를 올림한다.
ABS: 절대값을 반환한다.
RAND: 임의의 숫자를 생성한다.
SUM: 집합의 합계를 계산한다.
AVG: 평균을 계산한다.
MIN: 최소값을 찾는다.
MAX: 최대값을 찾는다.

집계 함수

COUNT: 특정 조건을 만족하는 행의 개수를 계산한다.
SUM: 숫자 컬럼의 총합을 계산한다.
AVG: 숫자 컬럼의 평균값을 계산한다.
MAX: 컬럼의 최대값을 찾는다.
MIN: 컬럼의 최소값을 찾는다.
GROUP_CONCAT: 그룹별로 문자열을 결합한다.

변환 함수

CAST: 하나의 데이터 타입을 다른 데이터 타입으로 변환한다.
CONVERT: CAST와 유사하게 데이터 타입을 변환한다.

 

사용자 정의 함수 (UDF) 사용법

CREATE FUNCTION AddNumbers (a INT, b INT)
RETURNS INT
AS BEGIN
    RETURN a + b;
END;

위 함수를 사용하여 10과 20의 합을 구하는 쿼리는 다음과 같이 작성이 가능하다.

SELECT AddNumbers(10, 20) AS Result;

 


 

2. 조인 (Join)

조인(Join)은 SQL에서 두 개 이상의 테이블을 연결하여 데이터를 조회하는 방법이다. 각각의 조인 방법은 데이터를 결합하는 방식에 따라 다르며, 특정한 요구 사항에 맞춰 사용된다.

 

내부 조인 (INNER JOIN)

내부 조인은 두 테이블 간에 일치하는 행만 반환한다. 두 테이블에서 공통된 조건을 만족하는 데이터만 결과로 나타낸다. 아래 쿼리는 'employees' 테이블과 'departments'테이블을 'dept_id'와 'id'를 기준으로 조인하여 해당 부서에 속하는 모든 직원의 이름과 부서명을 반환하게 된다.

SELECT A.name, B.department
FROM employees A
INNER JOIN departments B ON A.dept_id = B.id;

외부조인 (OUTER JOIN)

외부 조인은 지정된 테이블의 모든 데이터와 다른 테이블의 일치하는 데이터를 반환한다. 외부 조인에는 좌측(L), 우측(R), 전체(FULL) 외부 조인이 있다. 아래 쿼리는 'employess' 테이블의 모든 직원과 'departments'테이블의 일치하는 부서를 반환한다. 부서가 없는 직원도 포함된다.

SELECT A.name, B.department
FROM employees A
LEFT OUTER JOIN departments B ON A.dept_id = B.id;

교차조인 (CROSS JOIN)

교차 조인은 두 테이블 간의 모든 가능한 조합을 생성한다. 즉, 한 테이블의 모든 행이 다른 테이블의 모든 행과 결합된다. 아래 쿼리는 'employees' 테이블의 각 직원과 'departments' 테이블의 모든 부서간의 가능한 모든 조합을 반환한다.

SELECT A.name, B.department
FROM employees A
CROSS JOIN departments B;

자연 조인 (NATURAL JOIN)

자연 조인은 두 테이블 간에 같은 이름을 가진 모든 열을 기준으로 자동으로 조인한다. 명시적으로 조인 조건을 지정하지 않아도 된다. 아래 쿼리는 'employees'와 departments' 테이블을 자동으로 조인하여 동일한 이름의 열을 기준으로 일치하는 행을 반환한다.

SELECT *
FROM employees
NATURAL JOIN departments;