일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 지독한 컨셉충
- 플러터
- 다음에 또 만나자
- 교수님 과제 이제 그만..
- 확진
- CRUDS
- 정보처리기사 2022
- 정보처리기사2022
- 레이튼 교수와 이상한 마을
- 자가격리
- 뽀모도로 타이머
- 모바일 청첩장
- 생일축하해 나 자신
- 다들 안잊어서
- 얘들아 잘 지내니
- 재택치료
- 대학생
- 다행이야...ㅎ
- 수제비 2022
- 2022 정보처리기사
- 아싸의 생일
- 스프링 MVC
- AWS
- 개강해짐
- FLUTTER
- N-Queen
- 수제비2022 정리
- pem키 분실
- 대외활동
- 교육봉사
- Today
- Total
Rei’s Tech diary
Chapter 1. SQL 응용 본문
[1] 절차형 SQL 작성
#. 트리거(Trigger)
- 트리거는 데이터베이스 시스템에서 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL 이다.
#. 트리거 구성
- 선언부 (DECLARE)
- 이벤트부 (EVENT)
- 시작/종료부 (BEGIN/END)
- 제어부 (CONTROL)
- SQL
- 예외부 (EXCEPTION)
#. 사용자 정의 함수 구성
- 선언부 (DECLARE)
- 시작/종료부 (BEGIN/END)
- 제어부 (CONTROL)
- SQL
- 예외부 (EXCEPTION)
- 반환부 (RETURN)
#. SQL 문법의 분류 ★
분류 | 설명 |
데이터 정의어(DDL) | · 데이터 정의어는 데이터를 정의하는 언어 · 테이블이나 관계의 구조를 생성하는 데 사용 · CREATE, ALTER, DROP, TRUNCATE 문이 있음 |
데이터 조작어(DML) | · 데이터베이스에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어 · SELECT, INSERT, UPDATE, DELETE 문이 있음 · SELECT 문은 특별히 질의어 (Query)라고 부름 |
데이터 제어어(DCL) | · 데이터베이스 관리자가 데이터 보안, 무결성 유지, 병행 제어, 회복을 위해 DBA가 사용하는 제어용 언어 · GRANT, REVOKE 문이 있음 |
#. WHERE 조건 ★
구분 | 연산자 | 사례 |
비교 | =, < >, <, <=, >, >= | PRICE < 50000 · 가격(PRICE)이 50000미만 · < > 은 다름을 의미 |
범위 | BETWEEN | PRICE BETWEEN 50000 AND 80000 · 가격(PRICE)이 50000보다 크거나 같고 80000보다 작거나 같음 |
집합 | IN, NOT IN | PRICE IN (40000,50000,60000) · 가격(PRICE)이 40000 또는 50000 또는 60000 |
패턴 | LIKE | NAME LIKE '정보%' · 이름(NAME)이 '정보'로 시작되는 문자열 |
NULL | IS NULL, IS NOT NULL | PRICE IS NULL · 가격(PRICE)이 NULL 값인 경우 |
복합조건 | AND, OR, NOT | (PRICE < 50000) AND (NAME LIKE '정보%') · 가격(PRICE)이 50000 미만이고 이름(NAME)이 '정보'로 시작되는 문자열 |
#. LIKE와 같이 사용하는 와일드 문자
와일드 문자 | 설명 | 사례 |
+ | 문자열을 연결 | · '축구' + '감독' : '축구 감독' |
% | 0개 이상의 문자열과 일치 | · LIKE '키워드%' |
[ ] | 1개의 문자와 일치 | · '[0-8]%' : 0-8 사이 숫자로 시작하는 문자열 |
[ ^ ] | 1개의 문자와 불일치 | · '[^0-8]%' : 0-8 사이 숫자로 시작하지 않는 문자열 |
- | 특정 위치의 1개의 문자와 일치 | · '_동%' : 두 번째 위치에 '동'이 들어가는 문자열 |
[2] 응용 SQL 작성
#. 데이터 조작어(DML; Data Manipulation Language)의 개념
- 데이터 조작어는 데이터베이스에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어이다.
#. 데이터 조작어(DML)의 유형
- 데이터 조작어의 유형에는 SELECT, INSERT, UPDATE, DELETE가 있다.
① SELECT(데이터 조회) 명령어
구분 | 설명 |
SELECT 절 | · 검색하고자 하는 속성명, 계산식 · 2개 이상의 테이블을 대상으로 검색할 때는 '테이블명, 속성명'으로 표현 · 술어 부분은 ALL이 기본값 * ALL : 모든 튜플을 검색할 때 사용, 명시하지 않을 때 ALL로 인식 * DISTINCT : 중복된 속성이 조회될 경우 그중 한 개만 검색 |
FROM 절 | · 질의에 의해 검색될 데이터들을 포함하는 테이블명을 기술 |
WHERE 절 | · 검색할 조건을 기술 |
GROUP BY 절 | · 속성값을 그룹으로 분류하고자 할 때 사용 |
HAVING 절 | · GROUP BY에 의해 분류한 후 그룹에 대한 조건을 기술 |
ORDER BY 절 | · 속성값을 정렬하고자 할 때 사용 · ASC : 오름차순 / DESC : 내림차순 |
② INSERT(데이터 삽입) 명령어
구문 | 설명 |
INSERT INTO 테이블명 (속성명1, ...) VALUES (데이터1, ...) |
속성과 데이터 개수, 데이터 타입이 일치해야 함 속성명 생략가능 |
③ UPDATE(데이터 변경) 명렁어
구문 | 설명 |
UPDATE 테이블명 SET 속성명 = 데이터, ... WHERE 조건; |
UPDATE 명령문은 WHERE 절을 통해 어떤 조건이 만족할 경우에만 특정 컬럼의 값을 수정하는 용도로 자주 사용됨 |
④ DELETE(데이터 삭제) 명령어
구문 | 설명 |
DELETE FROM 테이블명 WHERE 조건; |
모든 레코드를 삭제할 때는 WHERE절 없이 DELETE만 사용 레코드를 삭제해도 테이블 구조는 남아 있어서 디스크에서 테이블을 완전히 삭제하는 DROP 명령과는 다름 |
#. 데이터 제어어 (DCL; Data Control Language)
- 데이터 제어어는 DB 관리자가 데이터 보안, 무결성 유지, 병행 제어, 회복을 위해 사용하는 언어이다.
#. 데이터 제어어 기능
1) 데이터 보안
- 불법적인 사용자로부터 데이터를 보호하는 기능
2) 무결성 유지
- 데이터의 정확성과 일관성을 유지하는 기능
3) 병행수행 제어
- 여러 트랜잭션을 수행할 때 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 기능
4) 회복
- 데이터베이스 장애가 발생할 경우, 데이터베이스를 장애 발생 이전의 상태로 복원하는 기능
#. DCL의 명령어
유형 | 명령어 | 동작 | 설명 |
DCL |
GRANT | 사용권한 부여 | 관리자(DBA)가 사용자에게 데이터베이스에 대한 권한을 부여하는 명령어 |
REVOKE | 사용권한 취소 | 관리자(DBA)가 사용자에게 부여했던 권한을 회수하기 위한 명령어 | |
DCL/TCL |
COMMIT | 트랜잭션 확정 | 데이터베이스 트랜잭션의 내용 업데이트를 영구적으로 확정하는 명령어 |
ROLLBACK | 트랜잭션 취소 | 데이터베이스에서 업데이트 오류가 발생할 때, 이전 상태로 되돌리는 명령어 | |
SAVEPOINT (= CHECKPOINT) |
저장 시기 설정 | 트랜잭션의 특정 지점에 이름을 지정하고, 그 지점 이전에 수행한 작업에 영향을 주지 않고 그 지점 이후에 수행한 작업을 롤백할 수 있는 명령어 |
① GRANT(권한 부여) 명령어
권한 | 구문 | 설명 |
시스템 권한 | GRANT 권한 TO 사용자; | 관리자가 사용자에게 테이블/뷰/프로시저 등을 생성하고 삭제할 수 있는 권한 부여 |
객체 권한 | GRANT 권한 ON 테이블 TO 사용자; | 관리자가 사용자에게 테이블을 수정, 삽입, 삭제, 조회와 프로시저 실행을 할 수 있는 권한을 부여 |
※ GRANT 구문 마지막에 WITH GRANT OPTION 키워드를 붙이면 권한이 필요할 경우 다른 사용자에게 부여할 수 있는 권한을 부여할 수 있다.
② REVOKE (권한 취소) 명령어
권한 | 구문 | 설명 |
시스템 권한 | REVOKE 권한 FROM 사용자; | 관리자가 사용자에게 테이블/뷰/프로시저 등을 생성하고 삭제할 수 있는 권한 회수 |
객체 권한 | REVOKE 권한 ON 테이블 FROM 사용자; | 관리자가 사용자에게 테이블을 수정, 삽입, 삭제, 조회와 프로시저 실행을 할 수 있는 권한 회수 |
※ REVOKE 구문에 CASCADE CONSTRAINTS 키워드를 붙이면 WITH GRANT OPTION으로 부여된 사용자들의 권한까지 회수할 수 있다.
③ TCL 명령어
명령어 | 구분 | 설명 |
트랜잭션 확정 | COMMIT; | 데이터베이스 트랜잭션 내용 업데이트를 영구적으로 확정 |
트랜잭션 취소 | ROLLBACK; | 데이터베이스 업데이트 오류 발생 시 이저 상태로 되돌림 |
세이브 포인트 지정 | SAVEPOINT 이름; | 특정 지점을 지정 |
세이브 포인트 롤백 | ROLLBACK TO SAVEPOINT 이름; |
SAVEPOINT로 지정한 부분 이후에 발생한 트랜잭션 취소 |
#. 윈도 함수 (Window Function)
구문 | 설명 |
SELECT 함수명(파라미터) OVER ([PARTITION BY 컬럼1, ...] [ORDER BY 컬럼A, ...]} FROM 테이블명 |
· PARTITION BY는 선택 항목이며, 순위를 정할 대상 범위의 컬럼을 설정 PARTITION BY구에는 GROUP BY구가 가진 집약 기능이 없으며, 이로 인해 레코드가 줄어들지 않음 · PARTITION BY를 통해 구분된 레코드 집합을 윈도라고 함 · 윈도 함수에는 OVER 문구가 필수적으로 포함 · ORDER BY 뒤에는 SORT 컬럼을 입력 (어떤 열을 어떤 순서로 순위를 정할지를 지정) |
#. 윈도 함수의 분류
분류 | 설명 |
집계 함수 | · 여러 행 또는 테이블 전체 행으로부터 하나의 결괏값을 반환하는 함수 |
순위 함수 | · 레코드의 순위를 계산하는 함수 · RANK, DENSE_RANK, ROW_NUMBER 함수가 존재 |
행 순서 함수 | · 레코드에서 가장 먼저 나오거나 가장 뒤에 나오는 값, 이전 이후 값들을 출력하는 함수 · FIRST_VALUE, LAST_VALUE, LAG, LEAD 함수가 존재 |
그룹 내 비율 함수 | · 백분율을 보여주거나 행의 순서별 백분율 등 비율과 관련된 통계를 보여주는 함수 · RATIO_TO_REPORT, PERCENT_RANK 함수가 존재 |
#. 집계 함수
- COUNT
- SUM
- AVG
- MAX
- MIN
- STDDEV
- VARIAN
#. 순위 함수
- RANK
- DENSE_RANK
- ROW_NUMBER
'정보처리기사 > [3] 데이터베이스 구축' 카테고리의 다른 글
Chapter 5. 데이터 전환 (0) | 2022.03.20 |
---|---|
Chapter 4. 물리 데이터베이스 설계 (0) | 2022.03.20 |
Chapter 3. 논리 데이터베이스 설계 (0) | 2022.03.18 |
Chapter 2. SQL 활용 (2) | 2022.03.15 |