정보처리기사 실기 8
데이터베이스
- DDL
- DB를 구축하거나 수정할 목적으로 사용하는 언어
- DDL의 3가지 유형
- CREATE - SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의함
- ALTER - TABLE에 대한 정의를 변경하는 데 사용함
- DROP - SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제함
- CREATE DOMAIN
- 도메인을 정의하는 명령문
- 표기 형식
CREATE DOMAIN 도메인명 [AS] 데이터_타입 [DEFAULT 기본값] [CONSTRAINT 제약조건명 CHECK (범위값)];
- CREATE TABLE
- 테이블을 정의하는 명령문
- 표기 형식
CREATE TABLE 테이블명 (속성명 데이터_타입 [DEFAULT 기본값] [NOT NULL], '''[, PRIMARY KEY(기본키_속성명, ''')]) [, UNIQUE(대체키_속성명, ''')] [, FOREIGN KEY(외래키_속성명, ''')] [REFERENCES 참조테이블(기본키_속성명, ''')] [ON DELETE 옵션] [ON UPDATE 옵션] [, CONSTRAINT 제약조건명] [CHECK (조건식)];
- PRIMARY KEY - 기본키로 사용할 속성 지정
- UNIQUE - 대체키로 사용할 속성 지정, 중복된 값을 가질 수 없음
- FOREGN KEY ~ REFERENCES ~ - 외래키로 사용할 속성 지정
- ON DELETE 옵션 - 참조 테이블의 튜플이 삭제되었을 때 기본 테이블에 취해야 할 사항을 지정
- ON UPDATE 옵션 - 참조 테이블의 참조 속성 값이 변경되었을 때 기본 테이블에 취해야 할 사항을 지정
- CONSTRAINT - 제약 조건의 이름을 지정
- CHECK - 속성 값에 대한 제약 조건을 정의
- CREATE VIEW
- 뷰를 정의하는 명령문
- 표기 형식
CREATE VIEW 뷰명[(속성명[, 속성명, '''])] AS SELECT문;
- CREATE INDEX
- 인덱스를 정의하는 명령문
- 표기 형식
CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(속성명 [ASC | DESC] [, 속성명 [ASC | DESC]]) [CLUSTER];
- UNIQUE
- 사용된 경우 - 중복 값이 없는 속성으로 인덱스를 생성
- 생략된 경우 - 중복 값을 허용하는 속성으로 인덱스를 생성
- 정렬 여부 지정 - ASC - 오름차순 정렬, DESC - 내림차순 정렬, 생략된 경우 - 오름차순으로 정렬
- CLUSTER - 인덱스가 클러스터드 인덱스로 설정됨
- ALTER TABLE
- 테이블에 대한 정의를 변경하는 명령문
- 표기 형식
ALTER TABLE 테이블명 ADD 속성명 데이터_타입 [DEFAULT '기본값']; ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값']; ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];
- ADD - 새로운 속성을 추가할 때 사용
- ALTER - 특정 속성의 Default 값을 변경할 때 사용
- DROP COLUMN - 특정 속성을 삭제할 때 사용
- DROP
- 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 제약 조건 등을 제거하는 명령문
- 표기 형식
DROP SCHEMA 스키마명 [CASCADE | RESTRICT]; DROP DOMAIN 도메인명 [CASCADE | RESTRICT]; DROP TABLE 테이블명 [CASCADE | RESTRICT]; DROP VIEW 뷰명 [CASCADE | RESTRICT]; DROP INDEX 인덱스명 [CASCADE | RESTRICT]; DROP CONSTRAINT 제약조건명;
- DCL
- 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는 데 사용하는 언어
- DCL의 종류
- COMMIT - 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알림
- ROLLBACK - 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구
- GRANT - 데이터베이스 사용자에게 사용 권한을 부여
- REVOKE - 데이터베이스 사용자의 사용 권한을 취소
- GRANT / REVOKE
- GRANT - 권한 부여를 위한 명령어
- REVOKE - 권한 취소를 위한 명령어
- 테이블 및 속성에 대한 권한 부여 및 취소
GRANT 권한_리스트 ON 개체 TO 사용자 [WITH GRANT OPTION]; REVOKE [GRANT OPTION FOR] 권한_리스트 ON 개체 FROM 사용자 [CASCADE];
- 권한 종류 - ALL, SELECT, INSERT, DELETE, UPDATE 등
- WITH GRANT OPTION - 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한을 부여
- GRANT OPTION FOR - 다른 사용자에게 권한을 부여할 수 있는 권한을 취소
- CASCADE - 권한 취소 시 권한을 부여받았던 사용자가 다른 사용자에게 부여한 권한도 연쇄적으로 취소
- ROLLBACK
- 변경되었으나 아직 COMMIT되지 않은 모든 내용들을 취소하고 데이터베이스를 이전 상태로 되돌리는 명령어
- SAVEPOINT
- 트랜잭션 내에 ROLLBACK 할 위치인 저장점을 지정하는 명령어
- DML
- 데이터베이스 사용자가 저장된 데이터를 실질적으로 관리하는데 사용되는 언어
- DML의 유형
- SELECT - 테이블에서 튜플을 검색함
- INSERT - 테이블에 새로운 튜플을 삽입합
- DELETE - 테이블에서 튜플을 삭제함
- UPDATE - 테이블에서 튜플의 내용을 갱신함
- 삽입문(INSERT INTO~)
- 기본 테이블에 새로운 튜플을 삽입할 때 사용
- 일반 형식
INSERT INTO 테이블명([속성명1, 속성명2, ''']) VALUES(데이터1, 데이터2, ''');
- 삭제문(DELETE FROM~)
- 기본 테이블에 있는 튜플들 중에서 특정 튜플을 삭제할 때 사용
- 일반 형식
DELETE FROM 테이블명 [WHERE 조건];
- 갱신문(UPDATE~SET~)
- 기본 테이블에 있는 튜플들 중에서 특정 튜플의 내용을 변경할 때 사용
- 일반 형식
UPDATE 테이블명 SET 속성명 = 데이터[, 속성명=데이터, '''] [WHERE 조건];
- SELECT
- 일반 형식
SELECT [PREDICATE] [테이블명,]속성명 [AS 별칭][, [테이블명.]속성명, '''] FROM 테이블명[, 테이블명, '''] [WHERE 조건] [GROUP BY 속성명, 속성명, '''] [HAVING 조건] [ORDER BY 속성명 [ASC | DESC]];
- SELECT절
- PREDICATE - 검색할 튜플 수를 제한하는 명령어 기술
- DISTINCT - 중복된 튜플이 있으면 그 중 첫 번째 한 개만 표시
- 속성명 - 검색하여 불러올 속성 또는 속성을 이용한 수식을 지정
- AS - 속성이나 연산의 이름을 다른 이름으로 표시하기 위해 사용
- PREDICATE - 검색할 튜플 수를 제한하는 명령어 기술
- FROM절 - 검색할 데이터가 들어있는 테이블 이름을 기술
- WHERE절 - 검색할 조건을 기술
- GROUP BY절 - 특정 속성을 기준으로 그룹화하여 검색할 때 사용
- HAVING절 - 그룹에 대한 조건을 지정
- ORDER BY절 - 데이터를 정렬하여 검색할 때 사용
- 일반 형식
- 기본 검색
- SELECT 절에는 원하는 속성을 지정하여 검색
- 조건 지정 검색
- WHERE 절에 다음 연산자들을 이용한 조건을 지정하여 조건에 만족하는 튜플만 검색
- 비교 연산자 - = 같다, <> 같지 않다, > 크다, < 작다, >= 크거나 같다, <= 작거나 같다
- 논리 연산자 - NOT, AND, OR
- LIKE 연산자 - 대표 문자를 이용해 지정된 속성의 값이 문자 패턴과 일치하는 튜플을 검색하기 위해 사용, % 모든 문자를 대표, _ 문자 하나를 대표, # 숫자 하나를 대표
- IN 연산자 - 필드의 값이 IN 연산자의 수로 지정된 값과 같은 레코드만 검색
- 정렬 검색
- ORDER BY 절에 특정 속성을 지정하여 지정된 속성으로 자료를 정렬하여 검색
- 하위 질의
- 조건절에 주어진 질의를 먼저 수행하여 그 검색 결과를 조건절의 피연산자로 사용
- 그룹 함수
- GROUP BY절에 지정된 그룹별로 속성의 값을 집계할 때 사용
- COUNT(속성명) - 그룹별 튜플 수를 구하는 함수
- SUM(속성명) - 그룹별 합계를 구하는 함수
- AVG(속성명) - 그룹별 평균을 구하는 함수
- MAX(속성명) - 그룹별 최대값을 구하는 함수
- STDDEV(속성명) - 그룹별 표준편차를 구하는 함수
- VARUABCE(속성명) - 그룹별 분산을 구하는 함수
- 그룹 지정 검색
- GROUP BY절에 지정한 속성을 기준으로 자료를 그룹화 하여 검색
- 집합 연산자를 이용한 통합 질의
- 집합 연산자를 사용하여 2개 이상의 테이블의 데이터를 하나로 통합
- 표기 형식
SELECT 속성명1, 속성명2, ''' FROM 테이블명 UNION | UNION ALL | INTERSECT | EXCEPT SELECT 속성명1, 속성명2, ''' FROM 테이블명 [ORDER BY 속성명 [ASC | DESC]];
- 집합 연산자의 종류(통합 질의의 종류)
- UNION - 두 SELECT문의 조회 결과를 통합하여 모두 출력, 중복된 행은 한번만 출력, 합집함
- UNION ALL - 두 SELECT문의 조회 결과를 통합하여 모두 출력, 중복된 행도 그대로 출력, 합집함
- INTERSECT - 두 SELECT문의 조회 결과 중 공통된 행만 출력, 교집합
- EXCEPT - 첫 번째 SELECT문의 조회 결과에서 두 번째 SELECT문의 조회 결과를 제외한 행을 출력, 차집합
- JOIN
- 2개의 릴레이션에서 연관된 튜플들을 결합하여, 하나의 새로운 릴레이션을 반환
- INNER JOIN과 OUTER JOIN으로 구분됨
- EQUI JOIN
- JOIN 대상 테이블에서 공통 속성을 기준으로 = 비교에 의해 같은 값을 가지는 행을 연결하여 결과를 생성하는 INNER JOIN 방법
- NATURAL JOIN - 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법
- JOIN 속성 - EQUI 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(속성명);
- OUTER JOIN
- LEFT OUTER JOIN - INNER JOIN의 결과를 구한 후, 우측 항 릴레이션의 어떤 튜플과도 맞지 않는 좌측 항의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가
- 표기 형식
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ''' FROM 테이블명1 LEFT OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명;
- RIGHT OUTER JOIN - INNER JOIN의 결과를 구한 후, 좌측 항 릴레이션의 어떤 튜플과도 맞지 않는 우측 항의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가
- 표기 형식
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ''' FROM 테이블명1 RIGHT OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명;
- 트리거
- 데이터베이스 시스템에서 데이터의 삽입, 갱신, 삭제 등의 이벤트가 발생할 때 관련 작업이 자동으로 수행되게 하는 절차형 SQL
- 커서
- 쿼리문의 처리 결과가 저장되어 있는 메모리 공간을 가리키는 포인터
- 묵시적 커서 - DBMS에 의해 내부에서 자동으로 생성되어 사용되는 커서
- 명시적 커서 - 사용자가 직접 정의해서 사용하는 커서
- 속성의 종류
- SQL%FOUND - 쿼리 수행의 결과로 패치된 튜플 수가 1개 이상이면 TRUE
- SQL%NOTFOUND - 쿼리 수행의 결과로 패치된 튜플 수가 0개이면 TRUE
- SQL%ROWCOUNT - 쿼리 수행의 결과로 패치된 튜플 수를 반환
- SQL%ISOPEN - 커서가 열린 상태면 TRUE, 묵시적 커서는 자동으로 생성된 후 자동으로 닫히기 때문에 항상 FALSE
- DBMS 접속 기술의 종류
- DBMS에 접근하기 위해 사용하는 API 또는 API의 사용을 편리하기 도와주는 프레임워크
- JDBC - Java 언어로 다양한 종류의 데이터베이스에 접속할 때 사용하는 표준 API
- ODBC - 개발 언어에 관계없이 데이터베이스에 접근하기 위한 표준 개방형 API
- MyBatis - JDBC 코드를 단순화하여 사용할 수 있는 SQL Mapping 기반 오픈 소스 접속 프레임워크
- 동적 SQL
- 다양한 조건에 따라 SQL 구문을 동적으로 변경하여 처리할 수 있는 SQL 처리 방식
- ORM
- 객체지향 프로그래밍의 객체와 관계형 데이터베이스의 데이터를 연결하는 기술
- 종류
- Java - JPA, Hibernate, EclipseLink, DataNucleus, Ebean 등
- C++ - ODB, QxOrm 등
- Python - Django, SQLAIchemy, Storm 등
- .NET - NHibernate, DatabaseObjects, Dapper 등
- PHP - Doctrine, Propel, RedBean 등
- 쿼리 성능 관련 용어
- APM - 애플리케이션의 성능 관리를 위해 접속자, 자원 현황, 트랜잭션 수행 내역, 장애 진단 등 다양한 모니터링 기능을 제공하는 도구
- 옵티마이저 - 작성된 SQL이 가장 효율적으로 수행되도록 최적의 경로를 찾아 주는 모듈
- RBO - 데이터베이스 관리자가 사전에 정의해둔 규칙에 의거하여 경로를 찾는 규칙 기반 옵티마이저
- CBO - 입.출력 속도, CPU 사용량, 블록 개수, 개체의 속성, 튜플 개수 등을 종합하여 각 DBMS마다 고유의 알고리즘에 따라 산출되는 비용으로 최적의 경로를 찾는 비용 기반 옵티마이저
- 실행 계획 - DBMS의 옵티마이저가 수립한 SQL 코드의 실행 절차와 방법
- 힌트 - SQL문에 추가되어 테이블 접근 순서를 변경하거나, 인덱스 사용을 강제하는 등의 실행 계획에 영향을 줄 수 있는 문장
- IOT - 인덱스 안에 테이블 데이터를 직접 삽입하여 저장함으로써 주소를 얻는 과정을 생략하여 빠른 조회가 가능하도록 구성한 테이블
댓글남기기