데이터베이스와 DBMS
- 데이터베이스 : 데이터의 집합
- DBMS : 데이터를 효과적으로 관리하기 위한 시스템(Oracle, MySQL)
DBMS 구성 요소
- 계정 : 데이터 접근 제한을 위한 계정이 존재
- 테이블: DBMS의 DB에서 데이터가 저장되는 형식
- 스키마 : 테이블의 기본적인 구조를 정의
테이블이란
- 행(로우)와 열(컬럼)을 갖는 2차원 구조로 구성
- 컬럼은 속성이라고도 부름
테이블의 특징
- 하나의 테이블은 반드시 하나의 계정 소유여야 함
- 테이블 간의 관계는 1:1, 1:N, N:N의 관계를 가질 수 있다
- 테이블 명은 중복될 수 없지만 테이블을 소유한 계정이 다를 경우 같은 이름으로 생성 가능
SQL
- DBMS에서 데이터 조회 및 조작, 시스템 관리 기능을 명령하는 언어
- SQL 문법은 대소문자를 구분하지 않는다
DBMS의 특징
- 신뢰성이 높고 데이터의 무결성을 보장
- 데이터의 정렬 및 탐색 속도가 빠름
데이터 무결성이란
- 데이터의 정확성과 일관성을 유지하고 데이터에 부정합이 없음을 보장하는 것
데이터 무결성 종류
- 개체 무결성 : 테이블의 기본키는 NULL이나 중복값을 가질 수 없다
- 참조 무결성 : 외래키 값은 NULL이거나 참조 테이블의 기본키 값과 동일 해야한다
- 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값 이어야 한다
- NULL 무결성 : 특정 속성에 대해 NULL을 허용하지 않는 특성
- 고유 무결성 : 특정 속성에 대해 값이 중복되지 않는 특징
- 키 무결성 : 하나의 관계에는 적어도 하나의 키가 존재 해야한다
SQL 종류
- DDL : CREATE, ALTER, DROP, TRUNCATE
- DML : INSERT, DELETE, UPDATE, MERGE
- DCL : GRANT, REVOKE
- TCL : COMMIT, ROLLBACK
- DQL : SELECT
SELECT문 구조
- FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY 순으로 실행 된다
- *를 사용하여 전체 컬럼 명을 조회 가능
컬럼 Alias(별칭)
- 정의
- 컬럼 명 대신 출력 할 임시 이름 지정(SELECT 절에서만 정의 가능)
- 컬럼명 뒤에 AS와 컬럼 별칭 전달(AS는 생략 가능)
- 특징 및 주의사항
- SELECT 문 보다 늦게 출력되는 ORDER BY 절에서만 컬럼 별칭 사용 가능
- 이미 존재하는 예약어는 별칭으로 사용 불가(avg, count, decode, 등등)
- 별칭에 공백이나 특수문자를 포함하는 경우 쌍따옴표 전달 필요
FROM 절
- 데이터를 불러 올 테이블 명 또는 뷰 명 전달
- 테이블 여러개 전달 가능(, 로 구분)
- 테이블 별칭 선언 가능(ORCALE은 AS 사용 불가, SQL Server는 사용/생략 가능)
- ORACLE 에서는 FROM 절 생략 불가(DUAL 테이블을 선언하여 대체)
- SQL Server에서는 FROM 절이 필요없는 경우 생략 가능
함수 정의
- input value와 output value의 관계를 정의한 객체
- from 절을 제외한 모든 절에서 사용 가능
함수의 기능
- 데이터의 계산을 수행
- 데이터의 정보를 수정
- 데이터의 유형(type)을 변경
함수의 종류
- 단일행 함수와 복수행 함수로 구분
- 단일행 함수 : input과 output 관계가 1:1
- 복수행 함수 : 여러개의 데이터를 받아서 하나의 값으로 요약해서 리턴
타입에 따른 함수 종류 분류
WHERE 절
- 테이블의 데이터 중 원하는 조건에 맞는 데이터만 조회하고 싶을 경우 사용
- NULL 조회 시 IS NULL 또는 IS NOT NULL 연산자 사용
GROUP BY 절
- 각 행을 특정 조건에 따라 그룹으로 분리하여 계산하도록 하는 구문
- GROUP BY 절에 그룹으로 지정할 컬럼을 전달(여러개 가능)
- 그룹에 대한 조건은 WHERE에서 정의 불가능
- GROUP BY 절을 사용하면 데이터가 요약되므로 요약되기 전 데이터와 함께 출력 불가능
HAVING 절
- 그룹 함수 결과를 조건으로 사용할 때 사용한다
- 연산 순서가 SELECT 절 보다 먼저이므로 SELECT 절에서 선언 된 Alias 사용 불가
ORDER BY 절
- 출력되는 행의 순서를 사용자가 변경하고자 할 때 사용
- 유일하게 SELECT 절에 정의한 컬럼 별칭 사용 가능
- SELECT 절에 선언 된 순서대로의 숫자 전달 가능
ORDER BY 절 정렬 순서(오름차순)
- 한글 : 가, 나, 다, 라 ...
- 영어 : A, B, C, D ...
- 숫자 : 1, 2, 3, 4 ...
- 날짜 : 과거 날짜부터 최근 날짜로 정렬
NULL의 정렬
- ORACLE 에서는 기본적으로 NULL을 마지막에 배치(NULL LAST)
- SQL Server 에서는 기본적으로 NULL을 처음에 배치(NULL FIRST)
JOIN 이란
- 여러 테이블의 데이터를 사용하여 데이터를 동시 출력하거나 참조 할 경우 사용
- FROM 절에 JOIN 할 테이블 나열
- ORACLE 은 테이블 나열 순서 중요하지 않음
- ANSI 표준에서는 OUTER JOIN 시 테이블 나열 순서 중요함
- 동일한 열 이름이 테이블에 존재할 경우 테이블 Alias를 선언하여 구분
- N개의 테이블을 JOIN 하려면 최소 N-1 개의 조인 조건이 필요함
JOIN 종류
- EQUI JOIN : JOIN 조건이 동등 조건인 경우
- NON EQUI JOIN : JOIN 조건이 동등 조건이 아닌 경우
- INNER JOIN : JOIN 조건에 성립하는 데이터만 출력하는 경우
- OUTER JOIN : JOIN 조건에 성립하지 않는 데이터라도 출력하는 경우(LEFT JOIN, RIGHT JOIN)
- NATURAL JOIN : JOIN 조건 생략 시 두 테이블에 같은 조건 끼리 같은 이름으로 자연 연결되는 JOIN
- CROSS JOIN : JOIN 조건 생략 시 두 테이블에 발생 가능한 모든 행을 출력하는 JOIN(M * N 개 행 출력)
- SELF JOIN : 하나의 테이블을 두 번 이상 참조하여 연결하는 JOIN
ON 절
- ON 조건의 괄호는 생략 가능
- 컬럼명이 같을 경우 별칭을 사용하여 명확하게 지정
USING 조건 절
- JOIN 할 테이블 컬럼명이 같을 경우 사용
- Alias나 테이블 이름을 사용 불가
- 괄호 필수
OUTER JOIN 이란
- JOIN 조건에서 동일한 값이 없는 행도 반환 하고싶을 때 사용
- 조회하고 싶은 테이블 방향에 따라 LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN으로 구분
OUTER JOIN의 종류
- LEFT OUTER JOIN
- 왼쪽 테이블이 기준이 되어 오른쪽 테이블 데이터를 표현하는 방식
- 오른쪽 테이블에 값이 없는 경우 NULL로 표시
- RIGHT OUTER JOIN
- 왼쪽 테이블이 기준이 되어 오른쪽 테이블 데이터를 표현하는 방식
- 왼쪽 테이블에 값이 없는 경우 NULL로 표시
- FULL OUTER JOIN
- LEFT JOIN 과 RIGHT JOIN 을 합친 방식(UNION 연산과 동일)
'SQLD' 카테고리의 다른 글
[SQLD 개념 요약] 서브쿼리, 그룹함수, 계층형 질의 (1) | 2024.11.12 |
---|---|
[SQLD 개념 요약] DDL, DML, DCL, TCL (1) | 2024.11.11 |
[SQLD 개념 요약] 데이터 모델링 이해 (2) | 2024.11.09 |