데이터베이스 구축 - SQL 응용
#절차형 SQL
절차 지향적인 프로그램이 가능한 SQL
종류: 트리거, 사용자 정의 함수, 프로시저
#SQL
SQL 문법 분류
■ 데이터 정의어 (DDL)
테이블이나 관계의 구조를 생성하는데 사용
CREATE, ALTER, DROP, TRUNCATE
■ 데이터 조작어 (DML)
데이터베이스에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어
SELECT, INSERT, UPDATE, DELETE
■ 데이터 제어어 (DCL)
데이터 보안, 무결성 유지, 병행 제어, 회복을 위해 사용하는 제어용 언어
GRANT, REVOKE
WHERE문 조건
■ 비교 : =, <, <=, >, >=, <> (<>: 다름)
■ 범위: BETWEEN ~ AND
■ 집합: IN, NOT IN
■ 패턴: LIKE
- LIKE와 같이 사용하는 와일드 문자
+
: 문자열 연결%
: 0개 이상의 문자열과 일치[]
: 1개의 문자와 일치[^]
: 1개의 문자와 불일치_
: 특정 위치의 1개의 문자와 일치
■ NULL: IS NULL, IS NOTE NULL
■ 복합조건: AND, OR, NOT
DML (Data Manipulation Language)
■ SELECT
데이터의 내용을 조회할 때 사용하는 명령어
SELECT [ALL | DISTICT] 속성명1, 속성명2...
FROM 테이블명, 테이블명2...
[WHERE 조건]
[GROUP BY 속성명1, 속성명2...]
[HAVING 그룹조건]
[ORDER BY 속성 [ABS | DESC]]
- SELECT절: 검색하고자 하는 속성명, 계산식
- DISTINCT: 중복 제거
- FROM절: 테이블명
- WHERE절: 검색할 조건
- GROUP BY절: 속성값을 그룹으로 분류할 때
- HAVING절: GROUP BY에 의해 분류한 그룹에 대한 조건
ORDER BY절: 정렬 (ASC DESC)
■ INSERT
데이터의 내용을 삽입할 때 사용하는 명령어
속성과 데이터 개수, 데이터 타입이 일치해야 함
INSERT INTO 테이블명(속성명)
VALUES (데이터)
■ UPDATE
데이터의 내용을 변경할 때 사용하는 명령어
WHERE 절을 통해 어떤 조건이 만족할 경우에만 특정 칼럼의 값을 수정하는 용도로 많이 사용됨
UPDATE 테이블명
SET 속성명 = 데이터
WHERE 조건
■ DELETE
데이터의 내용을 삭제할 때 사용하는 명령어
모든 레코드를 삭제할 때는 WHERE절 없이 DELETE만 사용 (레코드를 삭제해도 테이블이 남아있어 테이블 전체를 삭제하는 DROP 명령어와는 다름)
DELETE FROM 테이블명
WHERE 조건
DCL (Data Control Language)
■ 데이터 제어어 기능
- 데이터 보안
- 무결성 유지
- 병행수행 제어
- 회복
■ GRANT
사용자 권한 부여
WITH GRANT OPTION: 다른 사용자에게 부여할 수 있는 권한
GRANT 권한 TO 사용자
GRANT 권한 ON 테이블 TO 사용자
GRANT 권한 ON 테이블 TO 사용자 WITH GRANT OPTION
■ REVOKE
사용자 권한 회수
CASCADE CONSTRAINTS: WITH GRANT OPTION으로 부여된 권한까지 회수 가능
REVOKE 권한 FROM 사용자
REVOKE 권한 ON 테이블 FROM 사용자
REVOKE 권한 ON 테이블 TO 사용자 CASCADE CONSTRAINTS
■ COMMIT
트랜잭션 확정
■ ROLLBACK
업데이트 오류 발생 시 이전 상태로 되돌림
■ SAVEPOINT
세이브 포인트 지정
INSERT INTO A VALUES(1);
COMMIT; -- COMMIT 명령어 동작 시 기존 명령어가 DB에 영구적으로 삽입
INSERT INTO A VALUES(2)
ROLLBACK; -- ROLLBACK 명령어 동작시 COMMIT 이후 명령어는 원상 복구
윈도 함수
행과 행 간의 관계를 쉽게 정의하기 위해 만든 함수
SELECT 함수명
OVER
([PARITITION BY 칼럼1, ...]
[ORDER BY 컴럼A, ...])
FROM 테이블명
■ 집계 함수
- COUNT: 복수 행의 줄 수를 구하는 함수
- SUM: 복수 행의 해당 칼럼에 대한 합계를 구하는 함수
- AVG: 복수 행의 해당 칼럼간의 평균에 대한 평균을 구하는 함수
- MAX: 최댓값을 구하는 함수
- MIN: 최솟값을 구하는 함수
- STDDEV: 표준편차를 구하는 함수
- VARIANCE: 분산을 구하는 함수