정처기 데이터베이스 구축 - 3.3 SQL 응용
<SQL의 개념> ☆★★★
1. SQL(Structed Query Language)의 개요
- 국제 표준 데이터베이스 언어이며, 많은 회사에서 관계형 데이터베이스를 지원하는 언어로 채택하고 있음
- 관계대수와 관계해석을 기초로 한 혼합 데이터 언어
- 질의어 + 데이터 구조의 정의 + 데이터 조작 + 데이터 제어 기능
2. SQL의 분류
- DDL(Data Define Language, 데이터 정의어)
- SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의, 변경, 삭제할 때 사용하는 언어
- 논리적 데이터 구조와 물리적 데이터 구조의 사상을 정의함
- 데이터베이스 관리자나 데이터베이스 설계자가 사용함
- DDL(데이터 정의어)의 세 가지 유형
- CREATE
: SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의함
- ALTER
: TABLE에 대한 정의를 변경하는데 사용함
- DROP
: SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제함
- DML(Data Manipulation Language, 데이터 조작어)
- 데이터베이스 사용자가 응용 프로그램, 질의어를 통해 저장된 데이터를 실질적으로 처리하는데 사용하는 언어
- 데이터베이스 사용자와 데이터베이스 관리 시스템 간의 인터페이스를 제공함
- DML(데이터 조작어)의 네 가지 유형
-SELECT
: 테이블에서 조건에 맞는 튜플을 검색
- INSERT
: 테이블에서 새로운 튜플을 삽입
- DELETE
: 테이블에서 조건에 맞는 튜플을 삭제
- UPDATE
: 테이블에서 조건에 맞는 튜플의 내용을 변경
- DCL(Data Control Language, 데이터 제어어)
- 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는데 사용되는 언어
- 데이터베이스 관리자가 데이터 관리를 목적으로 사용함
- DCL(데이터 제어어)의 종류
- COMMIT
: 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장,
데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려줌
- ROLLBACK
: 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구함
- GRANT
: 데이터베이스 사용자에게 사용 권한을 부여함
- REVOKE
: 데이어베이스 사용자의 사용 권한을 취소함
<DML> ☆★★★
1. DML(Data Manipulation Language, 데이터 조작어)
- 데이터베이스 사용자가 응용 프로그램, 질의어를 통해 저장된 데이터를 실질적으로 처리하는데 사용하는 언어
- 데이터베이스 사용자와 데이터베이스 관리 시스템 간의 인터페이스를 제공함
- DML(데이터 조작어)의 네 가지 유형
-SELECT
: 테이블에서 조건에 맞는 튜플을 검색
- INSERT
: 테이블에서 새로운 튜플을 삽입
- DELETE
: 테이블에서 조건에 맞는 튜플을 삭제
- UPDATE
: 테이블에서 조건에 맞는 튜플의 내용을 갱신
2. 삽입문(INSERT INTO~)
- 기본 테이블에 새로운 튜플을 삽입할 때 사용함
- 일반 형식
- INSERT INTO 테이블명([속성명1, 속성명2,..])
VALUEW(데이터1, 데이터2,...);
- 대응하는 속성과 데이터는 개수와 데이터 유형이 일치해야 함
- 기본 테이블의 모든 속성을 사용할 때는 속성명을 생략할 수 있음
- SELECT 문을 사용하여 다른 테이블의 검색 결과를 삽입할 수 있음
3. 삭제문(DELETE FROM~)
- 기본 테이블에 있는 튜플들 중에 특정 튜플(행)을 삭제할 때 사용함
- 일반 형식
- DELETE
FROM 테이블명
[WHERE 조건];
- 모든 레코드를 삭제할 때는 WHERE 절을 생략함
- 모든 레코드를 삭제하더라도 테이블 구조는 남아 있음(디스크에서 테이블을 완전히 제거하는 DROP과는 다름)
4. 갱신문(UPDATE~ SET~)
- 기본 테이블에 있는 튜플들 중에서 특정 튜플의 내용을 변경할 때 사용함
- 일반 형식
- UPDATE 테이블명
SET 속성명 = 데이터[, 속성명=데이터, ...]
[WHERE 조건];]
<DML - SELECT -1 > ★★★★
1. 일반 형식
- SELEDT[PREDICATE] [테이블명.]속성명 [AS 별칭][, [테이블명.]속성명, ...]
[, 그룹함수(속성명) [AS 별칭]]
[, Window함수 OVER (PARTITION BY 속성명1, 속성명2, ...
ORDER BY 속성명3, 속성명4, ...)]
FROM 테이블명[, 테이블명, ...]
[WHERE 조건]
[GROUP BY 속성명, 속성명, ...]
[HAVING 조건]
[ORDER BY 속성명 [ASC | DESC]];
- SELECT 절
- PREDICATE
: 불러올 튜플 수를 제한할 명령어를 기술함
- ALL
: 모든 튜플을 검색할 때 지정하는 거으로, 주로 생략함
- DISTINCT
: 중복된 튜플이 있으면 그 중 첫 번째 한 개만 검색함
- DISTINCTROW
: 중복된 튜플을 제거하고 한 개만 검색하지만 선택된 속성의 값이 아닌, 튜플 전체를 대상으로 함
- 속성명
: 검색하여 불러올 속성(열) 또는 속성을 이용한 수식을 지정함
- 기본 테이블을 구성하는 모든 속성을 지정할 때는 '*'를 기술함
- 두 개 이상의 테이블을 대상으로 검색할 때는 '테이블명.속성명'으로 표현함
- AS
: 속성 및 연산의 이름을 다른 제목으로 표시하기 위해 사용됨
- FROM 절
: 질의에 의해 검색될 데이터들을 포함하는 테이블명을 기술함
- WHERE 절
: 검색할 조건을 기술함
- ORDER BY절
: 특정 속성을 기준으로 정렬하여 검색할 때 사용함
- 속성명
: 정렬의 기준이 되는 속성명을 기술함
- [ASC | DESC]
: 정렬 방식으로서 'ASC'는 오름차순, 'DESC'는 내림차순. 생략하면 오름차순으로 지정됨
2. 기본 검색
- SELECT 절에 원하는 속성을 지정하여 검색함
3. 조건 지정 검색
- WHERE 절에 조건을 지정하여 조건에 만족하는 튜플만 검색
4. 정렬 검색
- ORDER BY 절에 특정 속성을 지정하여 지정된 속성으로 자료를 정렬하여 검색
5. 하위 질의
- 조건절에 주어진 질의를 먼저 수행하여 그 검색 결과를 조건절의 피연산자로 사용함
6. 복수 테이블 검색
- 여러 테이블을 대상으로 검색을 수행함
<DML - SELECT - 2> ★★★★
1. 일반 형식
- SELECT [PREDICATE][테이블명.][속성명 [AS 별칭][, [테이블명.]속성명, ...]
[, 그룹함수(속성명) [AS 별칭]]
[, WINDOW함수 OVER (PARTITION BY 속성명1, 속성명2, ...
ORDER BY 속성명3, 속성명4, ...) [AS 별칭]]
FROM 테이블명[, 테이블명, ...]
[WHERE 조건]
[GROUP BY 속성명, 속성명, ...]
[HAVING 조건]
[ORDER BY 속성명 [ASC | DESC]];
- 그룹함수
: GROUP BY절에 지정된 그룹별로 속성의 값을 집계할 함수를 기술함
- WINDOW 함수
: GROUP BY절을 이용하지 않고, 속성의 값을 집계할 함수를 기술함
- PARTITION BY
: WINDOW 함수가 적용될 범위로 사용할 속성을 지정함
- ORDER BY
: PARTITION 안에서 정렬 기준으로 사용할 속성을 지정함
- GROPU BY절
: 특정 속성을 기준으로 그룹화하여 검색할 때 사용함. 일반적으로 GROUP BY절은 그룹 함수와 함께 사용됨
- HAVING 절
: GROUP BY와 함께 사용되며, 그룹에 대한 조건을 지정함
2. WINDOW 함수 이용 내역
- GROUP BY절을 이용하지 않고 함수의 인수로 지정한 속성을 범위로 하여 속성의 값을 집계함
3. 그룹 지정 검색
- GROUP BY절에 지정한 속성을 기준으로 자료를 그룹화하여 검색함
4. 집합 연산자를 이용한 통합 질의
- 집합 연산자를 사용하여 2개 이상의 테이블의 데이터를 하나로 통합함
- 표기 형식
- SELECT 속성명1, 속성명2, ...
FROM 테이블명
UNION | UNION ALL | INTERSECT | EXCEPT
SELECT 속성명1, 속성명2, ...
FROM 테이블명
[ORDER BY 속성명 [ASC | DESC]];
- 두 개의 SELECT문에 기술한 속성들은 개수와 데이터 유형이 서로 동일해야 함
- 집합 연산자의 종류(통합 질의의 종류)
- UNION
- 두 SELECT문의 조회 결과를 통합하여 모두 출력함
- 중복된 행은 한 번만 출력함
- 합집합
- UNION ALL
- 두 SELECT문의 조회 결과를 통합하여 모두 출력함
- 중복된 행도 그대로 출력함
- 합집합
- INTERSECT
- 두 SELECT문의 조회 결과 중 공통된 행만 출력함
- 교집합
- ESCEPT
- 첫 번째 SELECT문의 조회 결과에서 두 번째 SELECT문의 조회 결과를 제외한 행을 출력함
- 차집합
<DML - JOIN>
1. JOIN의 개념
- 2개의 테이블에 대해 연관된 튜플들을 결합하여, 하나의 새로운 릴레이션을 반환함
- INNER JOIN과 OUTER JOIN으로 구분됨
- 일반적으로 FROM절에 기술하지만, 릴레이션이 사용되는 어느 곳에서나 사용할 수 있음
2. INNER JOIN
- 일반적으로 EQUI JOIN과 NON-EQUI JOIN으로 구분됨
- 조건이 별로 없는 INNER JOIN을 수행하면 CROSS JOIN과 동일한 결과를 얻을 수 있음
- EQUI JOIN
- JOIN 대상 테이블에서 공통 속성을 기준으로 '='(equal) 비교에 의해
같은 값을 가지는 행을 연결하여 결과를 생성하는 JOIN 방법
- JOIN 조건이 '='일 때 동일한 속성이 두 번 나타나게 되는데,
이 중 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법을 NATURAL JOIN이라고 함
- 연결고리가 되는 공통 속성을 JOIN 속성이라고 함
- WHERE 절을 이용한 EQUI JOIN의 표기 형식
: SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2, ...
WHERE 테이블명1.속성명 = 테이블명2.속성명;
- NATURAL JOIN절을 이용한 EQUI JOIN의 표기 형식
: SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 NATURAL JOIN 테이블명2;
- JOIN ~ USING절을 이용한 EQUI JOIN 표기 형식
: SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 JOIN 테이블명2 USING(속성명);
- NON - EQUI JOIN
- JOIN 조건에 '=' 조건이 아닌 나머지 비교 연산자(>, <, <>, >=, <=) 를 사용하는 JOIN 방법
- 표기 형식
: SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2, ...
WHERE (NON - EQUI JOIN 조건);
3. OUTER JOIN
- 릴레이션에서 JOIN 조건에 만족하지 않는 튜플도 결과로 출력하기 위한 JOIN 방법
- LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN이 있음
- LEFT OUTER JOIN
- INNER JOIN의 결과를 구한 후, 우측 한 릴레이션의 어떤 튜플과도 맞지 않는
좌측 항의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가함
- 표기 형식
- SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 LEFT OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
- SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명 = 테이블명2.속성명(+);
- RIGHT OUTER JOIN
- INNER JOIN의 결과를 구한 후, 좌측 항 릴레이션의 어떤 튜플과도 맞지 않는
우측 항의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가함
- 표기 형식
- SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 RIGHT OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
- SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명(+) = 테이블명2.속성명;
- FULL OUTER JOIN
- LEFT OUTER JOIN과 RIGHT OUTER JOIN을 합쳐 놓은 것
- INNER JOIN의 결과를 구한 후, 좌측 항의 릴레이션 튜플들에 대해 우측 항의 릴레이션의 어떤 튜플과도
맞지 않는 튜플들에 NULL값을 붙여서 INNER JOIN의 결과에 추가함
- 유사하게 우측 항의 릴레이션의 튜플들에 대해 좌측 항의 릴레이션의 어떤 튜플과도
맞지 않는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가함
- 표기 형식
- SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 FULL OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
4. SELF JOIN
- 같은 테이블에서 2개의 속성을 연결하여 EQUI JOIN을 하는 JOIN 방법
- 표기 형식
- SELECT[별칭1.]속성명, [별칭1.]속성명, ...
FROM 테이블명1 [AS] 별칭1 JOIN 테이블명1 [AS] 별칭2
ON 별칭1.속성명 = 별칭2.속성명;
- SELECT [별칭1.]속성명, [별칭1.]속성명, ...
FROM 테이블명1 [AS] 별칭1, 테이블명1 [AS] 별칭2
WHERE 별칭1.속성명 = 별칭2.속성명;
www.yes24.com/Product/Goods/82838724?OzSrank=6
2020 시나공 정보처리기사 필기
2020년 정보처리기사 NCS기반 전면 개편!정보처리기사 시험은 NCS 학습 모듈 중 정보통신 분야의 ‘정보기술’ 분류에 포함된 ‘정보기술개발’과 ‘정보기술운영’에 속한 125개의 학습 모듈을
www.yes24.com
* 2020 시나공 정보처리기사 필기 요약한 내용입니다.