본문 바로가기

자격증/정보처리기사 - 필기

데이터베이스 구축 - SQL 응용

728x90

SQL : 관계대수와 관계해석을 기초로 한 혼합 데이터 언어

< 종류 >

1. DDL

스키마, 도메인, 테이블, 뷰, 인덱스를 정의/변경/삭제 시 사용

● 논리/물리적 데이터 구조 사상 정의

● DB 관리자나 DB 설계자가 사용

- CREATE SCHEMA

스키마 이름과 소유권자나 허가권자 정의

[ 표기 형식 ]

- CREATE DOMAIN

속성에서 취할 수 있는 값의 범위가 전체 데이터 타입의 값이 아니고 일부분일 때, 그 값의 범위를 도메인으로 정의

[ 표기 형식 ]

- CREATE TABLE

속성명, 속성의 데이터 타입, 기본 값, NOT NULL 여부 지정

[ 표기 형식 ]

- CREATE VIEW

SELECT문을 서브 쿼리로 사용하여 SELECT문의 결과로서 뷰 생성

● 서브 쿼리인 SELECT문에는 UNION이나 ORDER BY 절 사용 X

[ 표기 형식 ]

- CREATE INDEX

[ 표기 형식 ]

[ 설명 ]

● UNIQUE

-> 사용될 때 : 중복 값이 없는 속성으로 인덱스 생성

-> 생략될 때 : 중복 값을 허용하는 속성으로 인덱스 생성

● 정렬 여부 지정

-> ASC : 오름차순

-> DESC : 내림차순

 

- ALTER TABLE

[ 표기 형식 ]

[ 설명 ]

● ADD : 새로운 속성( 열 ) 추가

● ALTER : 특정 속성의 Default 값 변경

● DROP COLUMN : 특정 속성 삭제

 

- DROP

● 스키마, 도메인, 기본/뷰 테이블, 인덱스, 제약 조건 등 제거

[ 표기 형식 ]

[ 설명 ]

● CASCADE : 제거할 요소를 참조하는 다른 모든 개체를 함께 제거

● RESTRICTED : 다른 개체가 제거할 요소를 참조중일 때는 제거 취소

 

2. DML

질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용

● DB 사용자와 DB 관리 시스템 간 인터페이스 제공

< 종류 >

- 검색문 : 조건에 맞는 튜플 검색

[ 표기 형식 ]

[ 설명 ]

● PREDICATE

-> DISTINCT : 중복된 튜플이 있으면 그 중 한 개만 검색

-> DISTINCTROW : 중복된 튜플 제거, 한 개만 검색( 튜플 전체 대상 )

● FROM : 테이블 명 기술

● WHERE : 검색할 조건

[[ 조건 연산자 ]]

1. LIKE 연산자

-> % : 모든 문자를 대표함

-> _ : 문자 하나를 대표함

-> # : 숫자 하나를 대표함

2. NULL 사용

-> NULL 인 값 : IS NULL

-> NULL이 아닌 값 : IS NOT NULL

● ORDER BY : 특정 속성을 기준으로 정렬하여 검색

● Window 함수

-> ROW_NUMBER() : 각 레코드에 대한 일련 번호 반환

-> RANK() : 순위를 반환, 공동 순위 반영

-> DENSE_RANK() : 공동 순위 무시하고 순위 부여

-> PARTITION BY : Window 함수가 적용될 범위로 사용할 속성 지정

-> ORDER BY : PARTITION 안에서 정렬 기준으로 사용할 속성 지정

[[ 예시 ]]

1. <상여금> 테이블에서 '상여내역'별로 '상여금'에 대한 일련 번호를 구하시오( 단. 순서는 내림차순, 속성명은 'NO'로 할 것 )

-> SELECT 상여내역, 상여금,

      ROW_NUMBER() OVER ( PARTITION BY 상여내역 ORDER BY 상여금 DESC ) AS NO

    FROM 상여금;

 

- 하위 질의 : 조건절에 주어진 질의를 먼저 수행 후 그 검색 결과를 조건절의 피연산자로 사용

[ 예시 ]

● '취미'가 "나이트 댄스"인 사원의 '이름'과 '주소'를 검색하시오.

-> SELECT 이름, 주소

    FROM 사원

    WHERE 이름 = ( SELECT 이름 FROM 여가활동 WHERE 취미 = '나이트 댄스');

 

- 삽입문 : 새로운 튜플 삽입

[ 표기 형식 ]

- 삭제문 : 특정 튜플( 행 ) 삭제

[ 표기 형식 ]

- 갱신문 : 특정 튜플 내용 변경

[ 표기 형식 ]

- JOIN : 2개의 테이블에 대해 연관된 튜플들을 결합하여, 하나의 새로운 릴레이션 반환

[ 종류 ]

1. INNER JOIN

● 조건이 없는 INNER JOIN을 수행 시 CROSS JOIN과 동일한 결과

-> CROSS JOIN : 교차 조인, 반환되는 테이블의 행의 수 = 두 테이블의 행 수 곱

-> EQUI JOIN : 공통 속성을 기준으로 = 비교에 의해 같은 값을 가지는 행을 연결하여 결과 생성

( 동일한 속성 2번 나타나는데 NATURAL JOIN 시 동일한 속성 한번만 표기 )

-> NON-EQUI JOIN : JOIN 조건에 = 이 아닌 나머지 비교 연산자 사용

2. OUTER JOIN

● JOIN 조건에 맞지 않는 튜플도 결과로 출력

-> LEFT OUTER JOIN : 좌측 릴레이션이 기준이 되어 좌측 릴레이션에 있는 튜플 모두 표시, 우측 릴레이션에는 관련 있는 튜플만 표시

-> RIGHT OUTER JOIN : 우측 릴레이션이 기준이 되어 우측 릴레이션에 있는 튜플 모두 표시, 좌측 릴레이션에서는 연관된 튜플만 표시

 

3. DCL

● 데이터의 보안, 무결성, 회복, 병행 수행 제어 등 정의

● 데이터 관리 목적

< 종류 >

- GRANT : 권한 부여

[ 표기 형식 ]

1. 사용자 등급 지정

2. 테이블 및 속성에 대한 권한 부여

[ 설명 ]

WITH GRANT OPTION : 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한을 부여함

 

- REVOKE : 권한 취소

[ 표기 형식 ]

1. 사용자 등급 해제

2. 테이블 및 속성에 대한 권한 취소

[ 설명 ]

GRANT OPTION FOR : 다른 사용자에게 권한을 부여할 수 있는 권한을 취소함

CASCADE : 권한 취소 시 권한을 부여받았던 사용자가 다른 사용자에게 부여한 권한도 연쇄적으로 취소함

 

- COMMIT : 변경된 모든 내용을 DB에 반영

[ 표기 형식 ]

- ROLLBACK : COMMIT 되지 않은 변경된 모든 내용들을 취소하고 DB를 이전 상태로 되돌리는 명령

 

- SAVEPOINT : 트랜잭션 내 ROLLBACK 할 위치인 저장점을 지정