데이터베이스와 관계형 데이터베이스 개요
데이터베이스와 DBMS(Database Management System)
- 데이터베이스 : 특정 목적에 맞게 데이터를 저장하고 관리하는 집합입니다.
- DBMS : 데이터를 효과적으로 관리하기 위한 시스템으로, 대량의 데이터를 쉽게 저장하고 검색할 수 있도록 도와줍니다.
관계형 데이터베이스
관계형 데이터베이스는 데이터를 테이블 형태로 저장하여 테이블 간의 관계를 통해 효율적으로 데이터를 관리합니다. 관계형 데이터베이스는 SQL을 통해 데이터를 조회하고 관리하며, 데이터의 무결성과 일관성을 보장하기 위해 정규화 및 다양한 무결성 제약 조건을 적용합니다.
- 특징
- 데이터의 분류, 정렬, 탐색하는 속도가 빠릅니다.
- 신뢰성이 높으며, 데이터 무결성을 보장합니다.
- 기존의 작성된 스키마를 수정하기 어렵습니다.
- 데이터베이스의 부하를 분석하는 것이 어렵습니다.
- 주요 구성 요소
- 계정 : 데이터의 접근 제한을 위한 여러 업무/시스템 별 계정이 존재해야 합니다.
- 테이블(Table) : 행과 열로 구성된 데이터의 집합으로, 데이터베이스의 기본 단위입니다.
- 스키마(Schema) : 테이블이 어떤 구성으로 되어 있는지, 어떤 정보를 가지고 있는지에 대한 기본적인 구조를 정의합니다.
- 테이블 : 데이터의 저장 단위로 행과 열을 가지는 2차원 구조입니다.
- 하나의 테이블은 반드시 하나의 계정 소유입니다. 즉, 여러 소유자가 하나의 테이블을 소유할 수 없습니다. 그러나, 여러 유저가 조회할 수는 있습니다.
- 테이블 간의 관계는 1:1, 1:N, N:M 관계를 가질 수 있습니다.
- 테이블명은 중복될 수 없으나, 소유자가 다를 경우에는 같은 이름으로 생성할 수 있습니다.
- 데이터는 행 단위로 입력되고 삭제되며, 수정은 값의 단위로 가능합니다.
데이터 무결성
데이터 무결성이란, 데이터에 결점이 없다는 의미로 데이터의 정확성과 일관성을 유지하고 데이터에 결손과 부정합이 없음을 보장하는 것입니다. 데이터베이스에 저장된 값과 그것이 표현하는 현실의 비즈니스 모델의 값이 일치하는 것을 의미합니다. 이 데이터 무결성을 유지하는 것이 데이터베이스 관리시스템(DBMS)에서 중요한 기능을 합니다.
- 데이터 무결성의 종류
- 개체 무결성 : 테이블의 기본 키를 구성하는 컬럼 NULL 값 또는 중복 값을 가질 수 없습니다.
- 참조 무결성 : 외래키 값은 NULL이거나 참조 테이블의 기본키 값과 동일해야 합니다.
- 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 합니다.
- NULL 무결성 : 특정 속성에 대해 NULL을 허용하지 않는 특성을 가질 수 있습니다.
- 고유 무결성 : 특정 속성에 대해 값이 중복되지 않는 특징을 가질 수 있습니다.
- 키 무결성 : 하나의 릴레이션(관계)에는 적어도 하나의 키가 존재해야 합니다.
*도메인 : 각 컬럼(속성)이 갖는 범위를 의미합니다.
*릴레이션 : 테이블 간 관계를 말합니다.
*튜플 : 하나의 행을 의미합니다.
*키 : 식별자를 의미합니다.
ERD(Entity Relationship Diagram)
ERD란, 테이블 간 서로의 상관관계를 그림으로 표현한 것으로 구성요소에는 엔터티, 관계, 속성이 있습니다.
현실 세계의 데이터는 이 3가지 구성으로 모두 표현이 가능합니다.
SQL 기본 개념
SQL(Structured Query Language)은 관계형 데이터베이스(RDB)에서 데이터를 관리하고 처리하는 언어입니다. SQL의 주요 기능은 데이터를 조회하고 수정하는 것이며, 이 외에도 데이터베이스의 구조를 정의하거나 접근 권한을 관리하는 역할도 수행합니다.
SQL 언어의 종류
SQL은 기능에 따라 다음처럼 구분할 수 있습니다.
- DDL(Data Definition Language) : 데이터베이스 구조를 정의하는 언어입니다. (CREATE, ALTER, DROP, TRUNCATE)
- DML(Data Manipulation Language) : 데이터를 조작하는 언어입니다. (INSERT, UPDATE, DELETE, MERGE)
- DCL(Data Control Language) : 데이터의 접근 권한을 관리하는 언어입니다. (GRANT, REVOKE)
- TCL(Transaction Control Language) : 트랜잭션을 제어 및 관리하는 언어입니다. (COMMINT, ROLLBACK)
- DQL(Date Query Language) : 데이터를 조회하는 언어입니다. (SELECT)
*TRUNCATE
TRUNCATE는 데이터 구조를 지우지는 않지만, 데이터를 모두 지우는 명령어로 취소가 불가능한 AUTO COMMIT이기 때문에 DDL에 속합니다.
SELECT 문 : 데이터 조회
SELECT문은 SQL에서 가장 기본적이고 중요한 조회문으로, 데이터베이스에서 데이터를 검색하는 데 사용됩니다. SELECT절에서 표시할 대상 컬럼에 Alias(별칭)을 지정할 수 있으며, 대소문자 구분이 필요 없습니다.
- * 을 사용해서 테이블 내 전체 컬럼명을 불러올 수 있습니다.
- 원하는 컬럼을 , 로 나열하여 순서대로 출력될 수 있게 작성할 수 있습니다.
- 표현식이란 원래의 컬럼명을 제외한 모든 표현 가능한 대상입니다.
SELECT
[열 목록]
*,
컬럼명1,
컬럼명2,
표현식
FROM [테이블 명]
[WHERE 조건]
[GROUP BY 그룹화 기준]
[HAVING 그룹 조건]
[ORDER BY 정렬 기준];
// SELECT 기본 예제
SELECT name AS 직원이름, age AS 나이
FROM employees
WHERE age > 30;
//위 예제는 employees 테이블에서 age가 30보다 큰 직원들의 이름과 나이를 조회합니다.
FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY 순서대로 실행됩니다.
- 특징
- SELECT절에서 표시할 대상 컬럼에 Alias(별칭)을 지정할 수 있습니다.
- 대소문자 구분이 필요 없습니다.
- 컬럼 Alias(별칭) 특징 및 주의사항
- 컬럼명 대신 출력한 임시 이름을 지정할 수 있습니다. 컬럼명 뒤에 AS와 함께 컬럼 별칭을 전달하며, AS는 생략 가능합니다.
- SELECT문 보다 늦게 수행되는 ORDER BY 절에서만 컬럼 별칭 사용이 가능합니다.
- 한글 사용 가능하며, 이미 존재하는 예약어는 별칭으로 사용이 불가능합니다.
- 별칭에 공백을 포함하거나, 특수문자를 포함하거나, 그대로 전달할 경우 " "를 작성해야 합니다.
FROM 절 : 테이블 호출
- 데이터를 불러올 테이블 명 또는 뷰 명을 작성합니다.
- 뷰(View) : 테이블과 동일하게 데이터를 조회할 수 있는 객체지만 테이블처럼 실제 데이터가 저장된 것이 아닌, SELECT문 결과에 이름을 붙여 그 이름만으로 조회가 가능하도록 한 기능입니다.
- 테이블 여러 개를 전달 가능하며, 조인 조건 없이 테이블명만 나열 시 카티시안 곱이 발생하는 것을 주의해야 합니다.
- 테이블 별칭 선언이 가능합니다. (ORACLE은 AS 사용이 불가능하며, SQL Server는 사용 및 생략이 가능합니다.)
- 테이블 별칭 선언 시 컬럼 구분자는 테이블 별칭으로만 전달합니다.
- *ORACLE에서는 FROM 절이 생략 불가능합니다. → DUAL 테이블을 선언해서 대체할 수 있습니다.
- *SQL Server에서는 FROM 절 필요 없을 경우 생략이 가능합니다.
WHERE 절 : 조건을 통한 필터링
WHERE절은 테이블의 데이터 중 특정 조건식에 맞게 필터링하여 선별적으로 조회합니다. 여러 조건을 동시에 전달이 가능하며, NULL 조회 시 IS NULL / IS NOT NULL 연산자를 사용합니다. 그 외에도 연산자를 사용하여 다양한 표현이 가능합니다. 그리고 조건 전달 시 비교 대상의 데이터 타입은 일치하는 것이 좋습니다.
연산자 종류 | 설명 |
= | 같은 조건을 검색 |
!= | 같지 않은 조건을 검색 |
>, < | 큰 조건을 검색 |
>=, <= | 크거나 같은 조건을 검색 |
BETWEEN a AND b | A 와 B 사이에 있는 범위 값을 모두 검색 |
IN(a, b, c) | A이거나 B이거나 C인 조건을 검색 |
LIKE | 특정 패턴을 가지고 있는 조건을 검색 |
IS NULL / IS NOT NULL | NULL 값을 검색 / NULL이 아닌 값을 검색 |
A AND B | A 조건과 B 조건을 모두 만족하는 값만 검색 |
A OR B | A 조건이나 B 조건 중 한 가지라도 만족하는 값을 검색 |
NOT A | A가 아닌 모든 조건을 검색 |
- IN 연산자 : 포함 연산자로 여러 상수와 일치하는 조건을 전달할 때 사용합니다. 상수는 괄호로 묶어 동시에 전달합니다.
- BETWEEN A AND B 연산자 : A~B 이상, 이하로 생각하면 됩니다. 숫자뿐만이 아니라 문자, 날짜로 대소 비교가 가능합니다.
- LIKE 연산자 : 정확하게 일치하지 않아도 되는 패턴 조건 전달 시에 사용합니다.
- % : 자리수 제한 없는 모든의 의미입니다.
- _ : 하나 당 한 자릿수를 의미합니다.
- NOT 연산자 : 조건 결과의 반대 집합을 출력합니다.
- 주로, NOT IN, NOT BETWEEN A AND B, NOT LIKE, NOT NULL를 사용합니다.
// WHERE절 예제
SELECT name, department
FROM employees
WHERE department = 'Sales' AND age > 25;
// 위 쿼리는 employees 테이블에서 department가 'Sales'이며 age가 25를 초과하는 직원의 이름과 부서를 조회합니다.
주의사항
문자나 날짜 상수 표현 시 반드시 홑따옴표를 사용해야 합니다.
ORACLE은 문자 상수의 경우 대소문자를 구분합니다.
MSSQL은 기본적으로 문자 상수의 대소문자를 구분하지 않습니다.
GROUP BY, HAVING 절 : 데이터 그룹화 및 필터링
- GROUP BY 절
- 데이터를 특정 컬럼 기준으로 그룹화하여 요약된 결과를 조회할 때 사용합니다.
- 만약 그룹 연산에서 제외할 대상이 있다면 WHERE 절이 먼저 수행되므로 해당 행을 제외할 수 있습니다.
- 그룹에 대한 조건은 WHERE 절에서 사용할 수 없습니다.
- GROUP BY 절을 사용하면 데이터가 요약되므로 요약되기 전 데이터와 함께 출력할 수 없습니다.
- HAVING 절
- GROUP BY(그룹 함수) 결과를 조건으로 사용하는 절입니다.
- HAVING 절이 GROUP BY 절 앞에 올 수는 있지만 뒤에 사용하는 것을 권장합니다.
- WHERE절을 사용해서 그룹을 제한할 수 없기 때문에 HAVING 절을 사용합니다.
- 내부적 연산 순서가 SELECT 절보다 먼저 사용하기 때문에 SELECT 절에서 선언된 Alias 별칭 사용이 불가능합니다.
// GROUP BY, HAVING 예제
SELECT department, COUNT(*) as emp_count
FROM employees
GROUP BY department
HAVING emp_count > 5;
// 이 쿼리는 각 부서별 직원 수를 구한 후, 직원 수가 5명 이상인 부서만 조회합니다.
// 잘못된 사용
SELECT department, COUNT(*) as emp_count, depart_addr
FROM employees
GROUP BY department
// depart_addr은 요약된 정보가 아니기 때문에 SELECT에서 사용할 수 없습니다.
// GROUP BY 절에 명시되지 않은 컬럼은 SELECT 절에 사용이 불가능합니다.
ORDER BY 절 : 결과 정렬
ORDER BY 절은 조회된 결과를 특정 기준으로 정렬하는 데 사용됩니다. 기본 정렬은 오름차순(ASC)이며, 내림차순은 DESC를 명시합니다. 그리고 유일하게 SELECT 절에 정의한 별칭 사용이 가능합니다.
- NULL의 정렬
- ORACLE는 ORDER BY 절에 NULLS LAST 혹은 NULLS FIRST를 명시해서 NULL 정렬 순서를 변경할 수 있습니다.
- NULL을 포함한 값의 정렬 시 ORACLE는 기본적으로 NULL을 마지막에 배치하고 SQL Server는 처음에 배치하게 됩니다.
// ORDER BY 예제
SELECT name, salary
FROM employees
ORDER BY salary DESC, 1 ASC;
// 위 쿼리는 employees 테이블에서 직원들의 이름과 급여를 조회하되, 급여를 내림차순으로 정렬하여 보여줍니다
// 1차 정렬한 후 1번(name) 컬럼을 오름차순으로 정렬합니다.
복합 정렬
먼저 정렬한 값의 동일한 결과가 있을 경우 추가적으로 정렬이 가능합니다.
1차 정렬한 값이 같은 경우 그 값 안에서 2차 정렬 컬럼 값의 정렬이 일어납니다.
JOIN (조인) : 여러 테이블 결합
JOIN은 여러 테이블에서 데이터를 결합하여 동시에 조회하거나 참조할 때 사용됩니다. 동일한 열 이름이 여러 테이블에 존재할 경우 열 이름 앞에 테이블 이름 또는 테이블 Alias를 붙여서 사용합니다. N개의 테이블을 조인하려면 최소 N-1개의 조인 조건이 필요합니다.
조인의 종류는 다음과 같습니다.
- 조건의 형태에 따라
- EQUI JOIN(등가 JOIN) : JOIN 조건이 동등 조건인 경우에 데이터를 반환합니다.
- 조인 조건이 =(equal) 비교를 통해 같은 값을 가지는 행을 연결하여 결과를 얻는 조인 조건
- NON EQUI JOIN : JOIN 조건이 동등 조건이 아닌 경우에 데이터를 반환합니다.
- 테이블을 연결하는 조인 컬럼에 대한 비교 조건이 <, BETWEEN A AND B와 같이 = 조건이 아닌 연산자를 사용하는 경우의 조인 조건
- EQUI JOIN(등가 JOIN) : JOIN 조건이 동등 조건인 경우에 데이터를 반환합니다.
- 조인 결과에 따라
- INNER JOIN : 양쪽 테이블에서 JOIN 조건에 성립하는 데이터만 반환합니다.
- OUTER JOIN : 양쪽 테이블에서 JOIN 조건에 성립하지 않은 데이터도 함께 반환합니다.
- LEFT JOIN : 왼쪽 테이블의 모든 데이터와 일치하는 오른쪽 테이블의 데이터와 함께 반환합니다.
- RIGHT JOIN : 오른쪽 테이블의 모든 데이터와 일치하는 왼쪽 테이블의 데이터와 함께 반환합니다.
- FULL OUTER JOIN : 양쪽 테이블의 모든 데이터를 반환합니다. 일치하지 않은 경우 NULL로 포함됩니다.
- NATURAL JOIN : 조인 조건 생략 시 두 테이블에 같은 이름으로 자연 연결되는 조인입니다.
- CROSS JOIN : 조인 조건 생략 시 두 테이블의 발생 가능한 모든 행을 출력하는 조인입니다.
- SELF JOIN : 하나의 테이블을 두 번 이상 참조하여 연결하는 조인입니다.
표준 조인
ANSI SQL-92 표준 조인은 명확한 조인 조건을 지정하는 방식으로, 코드의 가독성을 높여주며 복잡한 쿼리에서 효율적입니다. ASNI 표준으로 작성되는 INNER JOIN, LEFT JOIN, CROSS JOIN, NATURAL JOIN, OUTER JOIN를 일컫습니다.
- INNER JOIN (ORACLE 조인 기본)
- 내부 조인이라고 하며, 조인 조건이 일치하는 행만 추출합니다.
- ANSI 표준의 경우 FROM 절에 INNER JOIN 또는 JOIN을 명시하며, USING 또는 ON 조건절을 필수로 사용해야 합니다.
- ON 조건절
- 조인할 양 컬럼의 컬럼명이 다르더라도 사용이 가능합니다.
- 컬럼명이 같을 경우에는 테이블 이름이나 별칭을 사용해야 합니다.
- ANSI 표준의 경우 FROM 절에 INNER JOIN 혹은 줄여서 JOIN을 명시하며, USING이나 ON 조건절을 필수로 사용해야 합니다.
- USING 조건절
- 조인할 컬럼명이 같을 경우에 사용합니다. Alias나 테이블 이름이 같은 접두사를 붙이는 것이 불가능합니다.
- 괄호를 필수로 사용해야 합니다.
- NATURAL JOIN
- 두 테이블 간의 동일한 이름을 가지는 모든 컬럼에 대해 EQUI JOIN을 수행합니다.
- USING, ON, WHERE 절에서 조건을 정의할 수 없습니다.
- JOIN에 사용된 컬럼들은 데이터 유형이 동일해야 하며 접두사 사용이 불가능합니다.
- CROSS JOIN
- 테이블 간 JOIN 조건이 없는 겨우 생성 가능한 모든 데이터들의 조합입니다.
- 양쪽 테이블 행 수의 곱한 수의 데이터 조합(m * n) 카타시안 곲이 발생합니다.
- OUTER JOIN
- JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용합니다.
- 두 테이블 중 한 쪽이 NULL을 가지면 EQUI JOIN 시 출력되지 않은데, OUTUR JOIN을 사용하여 출력합니다.
- 테이블 기준 방향에 따라 LEFT/RIGHT/FULL OUTER JOIN으로 구분됩니다. (OUTER는 생략이 가능합니다.)
- LEFT OUTER JOIN
- FROM 절에 나열된 왼쪽 테이블에 해당하는 데이터를 읽은 후, 우측 테이블에서 JOIN 대상 테이블을 읽어옵니다.
- 왼쪽 테이블이 기준이 되어 오른쪽 테이블 데이터를 채우는 방식으로, 우측 값에서 같은 값이 없는 경우 NULL로 출력됩니다.
- RIGHT OUTER JOIN
- LEFT OUTER JOIN의 반대로, 오른쪽 테이블 기준으로 왼쪽 테이블 데이터를 채우는 방식입니다.
- FROM 절에 테이블 순서를 변경하면 LEFT OUTER JOIN으로 수행이 가능합니다.
- FULL OUTER JOIN
- 두 테이블 전체 기준으로 결과를 생성하여 중복 데이터는 삭제 후 리턴됩니다.
- LEFT/RIGHT OUTER JOIN 결과의 UNION 연산 리턴과 동일합니다.
- ORACLE 표준에는 없습니다.
SQL 함수
SQL에서는 FROM 절을 제외한 모든 절에서 사용이 가능하며, 데이터 조회 시 다양한 함수를 사용하여 데이터를 가공할 수 있습니다.
- 함수의 기능
- 기본적인 쿼리문을 더 강력하게 만들어줍니다.
- 데이터의 계산을 수행합니다.
- 개별 데이터의 항목을 수정합니다.
- 표시할 날짜 및 숫자 형식을 지정합니다.
- 열 데이터의 유형(데이터 타입)을 반환합니다.
- 입력값의 수에 따른 함수의 종류
- 단일행 함수 : 입력과 출력의 관계가 1:1입니다.
- 복수행 함수 : 여러 건의 데이터를 동시에 입력받아서 하나의 요약값으로 반환합니다.
문자열 함수
문자열 데이터를 조작할 수 있습니다. (CONCAT, UPPER, LOWER, SUBSTR 등)
단일행 함수의 형태로 OUTPUT은 대부분 문자값입니다.
문자형 함수 | 설명 |
LOWER(문자열) | 문자열을 소문자로 변환 |
UPPER(문자열) | 문자열을 대문자로 변환 |
ASCII(문자) | 문자나 숫자를 ASCII 코드번호로 변환 |
CHR/CHAR(ASCII번호) | ASCII 코드번호를 문자나 숫자로 변환 |
CONCAT(문자열1,문자열2) | 문자열1과 문자열2를 연결(결합) |
SUBSTR/SUBSTRING(문자열, m, n) | 문자열 중 m 위치에서 n개의 문자열을 추출 |
LTRIM(문자열 [,지정문자]) | 문자열 중 특정 문자열을 왼쪽에서 삭제 |
RTRIM(문자열 [,지정문자]) | 문자열 중 특정 문자열을 오른쪽에서 삭제 |
TRIM(지정문자) | 문자열 중 특정 문자열을 양쪽에서 삭제 |
LENGTH/LEN(문자열) | 문자열의 길이를 반환 |
REPLACE(문자열, 찾을 문자열, 바꿀 문자열) | 문자열을 치환 하거나 삭제 |
LPAD(문자열, n, 문자열2) | 문자열 왼쪽에 문자열2를 추가해 총 n의 길이를 반환 |
RPAD(문자열, n, 문자열2) | 문자열 오른쪽에 문자열2를 추가해 총 n의 길이를 반환 |
집계 함수
여러 행의 데이터를 하나의 값으로 요약할 수 있습니다. (SUM, AVG, COUNT, MAX, MIN 등)
날짜 함수
날짜 데이터를 조작할 수 있습니다. (NOW, DATE_ADD, DATE_DIFF 등)
ORACLE과 SQL Server 함수가 거의 다릅니다.
날짜 함수 | 설명 |
SYSDATE | 현재 날짜와 시간을 반환 |
CURRENT_DATE | 현재 날짜를 반환 |
CURRENT_TIMESTAMP | 현재 시간을 반환 |
ADD_MONTHS(날짜, n) | 날짜에서 n개월 후의 날짜를 반환 |
MONTHS_BETWEEN(날짜1, 날짜2) | 날짜1과 날짜2의 개월 수 차이를 반환 |
LAST_DAY(날짜) | 주어진 월의 마지막 날을 반환 |
NEXT_DAY(날짜, n) | 주어진 날짜 이후의 지정된 요일의 첫번째 날짜를 반환 |
ROUND(날짜, 자리수) | 날짜를 반올림 |
TRUNC(날짜, 자리수) | 날짜를 버림 |
수학 함수
숫자를 계산할 수 있습니다. (ROUND, CEIL, FLOOR, ABS 등)
단일행 함수의 형태로, ORACLE과 SQL Server의 함수가 거의 동일합니다.
숫자형 함수 | 설명 |
ASB(숫자) | 숫자의 절대값을 반환 |
ROUND(숫자, 자리수) | 소수점 특정 자리에서 반올림 |
TRUNC(숫자, 자리수) | 소수점 특정 자리에서 버림 |
SIGN(숫자) | 숫자가 양수면 1, 음수면 -1, 0이면 0을 반환 |
FLOOR(숫자) | 작거나 같은 최대 정수를 반환 |
CEIL(숫자) | 크거나 같은 최소 정수를 반환 |
MOD(숫자1, 숫자2) | 숫자1을 숫자2로 나누어 나머지를 반환 |
POWER(m, n) | m의 n 거듭제곱 |
SQRT(숫자) | 루트값을 반환 |
변환 함수
값의 데이털르 변환합니다. 문자를 숫자로, 숫자를 문자로, 날짜를 문자로 변경합니다.
변환 함수 | 설명 |
TO_NUMBER(문자) | 숫자 타입으로 변경하여 반환 |
TO_CHAR(대상, 포맷) | 날짜/숫자의 포맷을 변경 |
TO_DATE(문자, 포맷) | 주어진 문자를 포맷 형식에 맞게 날짜로 반환 |
FORMAT(날짜, 포맷) | 날짜의 포맷을 변경 |
CAST(대상 AS 데이터타입) | 대상을 주어진 데이터타입으로 변환하여 반환 |
그룹 함수
그룹 함수는 다중행 함수로, 여러 값의 input 값으로 들어가서 하나의 요약된 값으로 반환합니다. GROUPT BY와 함께 자주 사용됩니다.
ORACLE과 MYSQL Server 끼리 함수가 거의 동일합니다.
그룹 함수 | 설명 |
COUNT(대상) | 행의 수를 반환 |
SUM(대상) | 총 합을 반환 |
AVG(대상) | 평균 값을 반환 |
MIN(대상) | 최소값을 반환 |
MAX(대상) | 최대값을 반환 |
VARIANCE(대상) | 분산을 반환 |
STDDEV(대상) | 표준편차값을 반환 |
일반 함수
일반 함수 | 설명 |
DECODE(대상, 값1, 리턴1, 값2, 리턴2, 그 외 리턴) | 대상이 값1이면 리턴2, 값2면 리턴2 그 외에는 그 외를 반환 |
NVL(대상, 치환값) | 대상이 NULL이면 치환값으로 변환하여 반환 |
NVL2(대상, 치환값1, 치환값2) | 대상이 NULL이면 치환값2으로 변환하여 리턴 아니면 치환값1로 변환하여 반환 |
COALESCE(대상1, 대상2, .... 그 외 리턴) | 대상들 중 NULL이 아닌 값을 첫 번째로 출력, 모든 대상이 NULL이면 그 외 리턴을 반환 |
ISNULL(대상, 치환값) | 대상이 NULL이면 치환값 반환 |
NULLIF(대상1, 대상2) | 대상이 같으면 NULL 반환, 다르면 대상1 반환 |
CASE 문 | 조건 별 치환 및 연산을 수행 |
'Qualifications[자격증] > SQLD' 카테고리의 다른 글
[SQLD] 5장. SQL 관리 구문 (0) | 2024.11.16 |
---|---|
[SQLD] 4장. SQL 활용과 고급 기능 (0) | 2024.11.15 |
[SQLD] 2장. 데이터 모델과 정규화 (0) | 2024.11.11 |
[2024 SQLD] 1장. 데이터 모델링의 이해 (0) | 2024.10.30 |