제 3장. SQL 기본
1. 관계형 데이터 베이스
- 관계형 데이터 베이스는 정규화를 통해 합리적인 모델링으로 이상현상을 제거하고 데이터 중복을 피할 수 있다.
- 동시성 관리, 병행 제어를 통해 많은 사용자들이 동시에 데이터를 공유 및 조작할 수 있다.
- 보안 기능을 제공하며 데이터 무결성을 보장한다.
2. SQL문 종류
1- DDL : 데이터 정의어
예) CREATE / ALTER / DROP / RENAME
2- DML : 데이터 조작어
예) SELECT / INSERT / UPDATE / DELETE
3- DCL : 데이터 제어어
예) GRANT / REVOTE
4- TCL : 트랜잭션 제어어
예) COMMIT / ROLLBACK
3. 테이블명 설정 시 유의사항
- 단수형 권고한다.
- 다른 테이블명과 중복되면 안된다.
- 데이터 유형을 반드시 지정해야 한다.
- 테이블 생성 시 끝은 ';'로 끝나야 한다.
- A-Z , a-z , 0-9 , _, $, # 문자만 허용 함.
- 테이블 명과 칼럼 명은 문자로 시작한다.
주요 데이터 타입
CHAR : 고정길이 문자열
VARCHAR : 가변길이 문자열
NUMBER : 정수 및 실수
DATE : 날짜와 시각
4. 제약 조건
기본키(PK)
- 하나의 테이블에 단하나의 기본키만 정할 수 있다.
- UNIQUE & NOT NULL
고유키
NOT NULL
CHECK
외래키(FK)
- 두개의 테이블을 연결하는 연결다리 역할
- null 값 허용
5. TCL 특징
트랜잭션
- 트랜잭션은 데이터베이스의 논리적 연산단위
- 하나의 트랜잭션에는 하나 이상의 sql문장이 포함된다.
- 트랜잭션은 분할할 수 없는 최소의 단위이며 전부 적용하거나 전부 취소한다.
트랜잭션의 4가지 특성
1- 원자성: 모두 성공적으로 끝나거나 모두 실패해야 한다.
2- 일관성: 실행되기 이전 데이터가 온전하다면, 실행된 이후에 데이터베이스의 내용에 잘못이 있으면 안된다.
3- 고립성: 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
4- 지속성: 성공적으로 트랜잭션이 수행되면 영구적으로 저장된다.
COMMIT / ROLLBACK / SAVEPOINT
1- COMMIT
- COMMIT 명령어를 통해 트랜잭션을 완료할 수 있다.
- COMMIT 이전에는 데이터 변경 이전 상태로 복구 가능하다. 또한 현재 사용자는 결과를 확인할 수 있지만, 다른 사용자는 현재 사용자가 수행한 명령을 확인할 수 없다. 다른 사용자가 변경 불가능하다.
- COMMIT 이후에는 이전 데이터는 영원히 잃어버리게 된다. 모든 사용자가 결과를 확인할 수 있으며, 잠금이 풀리고 다른 사용자들이 조작할 수 있다.
2- ROLLBACK
3- SAVEPOINT
6. WHERE 절
- WHERE절을 통해 자료에 대한 필터 기능을 수행할 수 있다.
- 연산자 우선 순위
1- 괄호()
2- NOT
3- 비교연산자
4- AND
5- OR
6. 단일 행 함수
문자형 함수
- LOWER, UPPER, SUBSTR, LENGTH, RTRIM, LIRIM 등
숫자형 함수
- ABS, MOD, ROUND, TRUNC, SIGN, CEIL, FLOOR 등
날짜형 함수
변환형 함수
- TO_NUMBER, TO_CHAR, TO_DATE 등
NULL 관련 함수
- NVL, ISNULL, NULLIF, COALESCE 등
8. GROUP BY 절
- 집계함수의 통계 정보는 NULL 값을 가진 행을 제외하고 수행함
- 예외적으로 COUNT(*)
은 NULL 값을 포함한 행의 수를 출력한다.
- GROUP BY 절에는 ALIAS명을 사용할 수 없음 (FROM절에도 AILAS 사용불가)
- 집계 함수는 WHERE 절에는 올 수 없다.
- HAVING 절은 GROUP BY 절에 조건을 주는 역할로 일반적으로 GROUP BY 절 뒤에 위치하지만, GROUP BY 절 앞에도 위치 할 수 있다.
9. ORDER BY절
- 특정 컬럼을 기준으로 정렬할 때 사용
- SELECT 절에서 사용된 ALIAS 명이나 컬럼 순서를 나타내는 정수도 사용할 수 있다.
- 기본적으로 오름차순(ASC) 정렬이 된다.
- ORACLE 내에서는 NULL 값을 가장 큰값으로 간주하기 때문에 오름차순으로 정렬할 때는 가장 마지막에, 내림차순으로 정렬할 때는 가장 먼저 위치한다.
- SELECT 절 내에 위치하고 있지 않은 컬럼도 ORDER BY룰 수향할 수 있다.
SELECT 문의 실행순서
1- FROM절
2- WHERE절
3- GROUP BY절
4- HAVING절
5- SELECT절
6- ORDER BY절
참고 :
https://brunch.co.kr/@4ec2ea79b44a440/158