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