7 분 소요

데이터베이스

  • 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 - 속성이나 연산의 이름을 다른 이름으로 표시하기 위해 사용
    • 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 - 인덱스 안에 테이블 데이터를 직접 삽입하여 저장함으로써 주소를 얻는 과정을 생략하여 빠른 조회가 가능하도록 구성한 테이블

댓글남기기