데이터베이스 기본_DDL

져니·2021년 9월 25일
0

정보처리기사

목록 보기
2/5
post-thumbnail

1. SQL문법의 개념

데이터베이스를 접근하고 조작하는데 필요한 표준언어를 활용할 수 있게 해주는 규칙

SQL문법의 분류

  • 데이터 정의어(DDL)
    • 테이블이나 관계의 구조를 생성하는 데 사용
    • CREATE, ALTER, DROP, TRUNCATE문
  • 데이터 조작어(DML)
    • 데이터베이스에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어
    • SELECT, INSERT, UPDATE, DELETE문이 있음
    • SELECT 문은 특별한 질의어(Query)라고 부름
  • 데이터 제어어(DCL)
    • 데이터베이스관리자(DBA)가 데이터 보안, 무결성 유지, 병행 제어, 회복의 위해 DBA가 사용하는 제어용 언어
    • GRANT, REVOKE문이 있음

2. DDL의 대상

  • 도메인 : 하나의 속성이 가질 수 있는 원자값들의 집합
  • 스키마 : 데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조, 외부,개념,내부 스키마
  • 테이블 : 데이터 저장공간
  • 뷰 : 하나 이상의 물리 테이블에서 유도되는 가상의 테이블
  • 인덱스 : 검색을 빠르게 하기 위한 데이터 구조

3. 스키마의 유형

1) 외부스키마

  • 사용자나 개발자의 관점에서 필요로 하는 데이터베이스의 논리적 구조

  • 사용자 뷰를 나타냄

    2) 개념 스키마

  • 데이터베이스의 전체적인 논리적 구조

  • 전체적인 뷰를 나타냄

  • 개체 간의 관계, 제약조건, 접근권한, 무결성, 보안에 대해 정의

    3) 내부 스키마

  • 물리적 저장장치의 관점에서 보는 데이터베이스 구조

  • 실제로 데이터베이스에 저장될 레코드의 형식을 정의하고 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서 등을 표현

4. 테이블(TABLE)

개념

데이터를 저장하는 항목인 필드들로 구성된 데이터의 집합체이다.

테이블의 구성조건

  • 테이블에 포함된 행들은 유일해야하고, 중복된 행이 존재하지 않아야 한다.
  • 테이블에 포함된 행들 간에는 순서가 존재하지 않는다.
  • 테이블을 구성하는 열들 간에는 순서가 존재하지 않는다.

테이블의 구조

컬럼: 세로, row: 가로

테이블의 용어

튜플/행 : 테이블 내의 행을 의미하며 레코드라고도 함, 튜플은 릴레이션에서 같은 값을 가질 수 없음
애트리뷰트/열 : 테이블 내의 열을 의미, 열의 개수를 디그리라고 함
식별자 : 여러 개의 집합체를 담고 있는 관계형 데이터베이스에서 각각의 구분할 수 있는 논리적인 개념
카디널리티 : 튜플의 개수
차수 : 애트리뷰트의 개수
도메인 : 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자값들의 집합

5. 뷰(VIEW)

개념

뷰는 논리 테이블로서 사용자에게(생성 관점 아닌 사용관점에서)테이블과 동일하다.

특징

  • 논리적 데이터 독립성 제공
  • 데이터 조작 연산 간소화
  • 보안기능(접근제어) 제공
  • 뷰 변경 불가

목적

  • 뷰를 사용하는 주된 이유는 단순 질의어를 사용할 수 있기 때문이다.
  • FROM절에서 있는 하나의 뷰를 통해 뷰를 구성하는 복수의 테이블을 대체
  • 테이블의 중요 데이터 일부만을 제공할 수 있는 장단점이 있다.

뷰 명령어

  • 테이블 A 그대로
CREATE VIEW VW_A AS
SELECT *
FROM A
  • 테이블 A 일부컬럼
CREATE VIEW VW_B AS
SELECT 컬럼1, 컬럼2
FROM A;
  • 테이블A와 테이블B 조인결과
CREATE VIEW VW_C AS
SELECT * 
FROM A,B
WHERE A.컬럼1 = B.컬럼2
  • 뷰 교체
CREATE OR REPLACE VIEW 뷰이름 AS 조회쿼리;

뷰 삭제/변경

  • 뷰 정의 자체를 변경하는 것은 불가능
  • 뷰 이름이나 쿼리문을 변경하는 수단은 제공되지 않음
  • 뷰 삭제와 재생성을 통해 뷰에 대한 정의변경이 가능
  • 뷰를 통해 접근 가능한 데이터는 변경이 가능
  • 모든 경우의 데이터 변경이 가능한 것이 아니라 일부 제약 존재
뷰 삭제하는 법
-> DROP VIEW 뷰이름;

6. 인덱스(INDEX,색인)

개념

인덱스는 데이터를 빠르게 찾을 수 있는 수단으로서 테이블에 대한 조회 속도를 높여주는 자료구조, 인덱스 걸린 컬럼은 중복값 허용하지 않는다. 하지만 복수 컬럼을 인덱스로 걸 수 있다.

종류

  • 순서 인덱스 : 데이터가 정렬된 순서로 생성되는 인덱스
  • 해시 인덱스 : 해시함수에 의해 직접 데이터에 키값으로 접근하는 인덱스
  • 비트맵 인덱스 : 각 컬럼에 적은 개수 값이 저장된 경우 선택하는 인덱스
  • 함수기반 인덱스 : 수식이나 함수를 적용하여 만든 인덱스
  • 단일 인덱스 : 하나의 컬럼으로만 구성한 인덱스
  • 결합 인덱스 : 두개 이상의 컬럼으로 구성한 인덱스
  • 클러스터드 인덱스 : 기본 키(PK) 기준으로 레코드를 묶어서 저장하는 인덱스

명령어

  • 생성
CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명);
  • 삭제
DROP INDEX 인덱스명;
  • 변경
ALTER [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명);

인덱스 스캔방식

  • 인덱스 범위 스캔 : 인덱스 루트 블록에서 리프 블록까지 수직적으로 탐색한 후에 리프 블록을 필요한 범위만 스캔하는 방식
  • 인덱스 전체 스캔 : 수직적 탐색 없이 인덱스 리프 블록을 처음부터 끝까지 수평적으로 탐색하는 방식
  • 인덱스 단일 스캔 : 수직적 탐색만으로 데이터를 찾는 스캔 방식
  • 인덱스 생략 스캔 : 선두 컬럼이 조건 절에 빠졌어도 인덱스를 활용하는 스캔방식

7. ⭐DDL명령어(가장 자주 나옴)

CREATE 명령어

CREATE TABLE 테이블명
(
	속성명 데이터타입 [NOT NULL],
    PRIMARY KEY(기본키),
    UNIQUE(속성명, ...),
    FOREIGN KEY(외래키)REFERENCES 참조테이블(기본키),
    CONSTRAINT 제약조건명 CHECK(조건식),
);

CREATE TABLE 속성

  • PRIMARY KEY : 테이블의 기본 키를 정의, 유일하게 테이블의 각 행을 식별
  • FOREIGN KEY : 외래키를 정의, 참조대상을 테이블로 명시, 열과 참조된 테이블의 열 사이의 외래 키 관계를 적용하고 설정
  • UNIQUE : 테이블 내에서 얻은 유일한 값을 갖도록 하는 속성
  • NOT NULL : 해당 컬럼은 NULL값을 포함하지 않도록 하는 속성
  • CHECK : 개발자가 정의하는 제약조건, 참이어야 하는 조건을 지정
  • DEFAULT : 해당 필드의 기본값을 설정

ALTER 명령어

  • 컬럼추가
ALTER TABLE 테이블명 ADD 컬러명 데이터_타입;
  • 컬럼수정
ALTER TABLE 테이블명 MODIFY 컬럼명 데이터_타입 [DEFAULT 값][NOT NULL];
  • 컬럼삭제
ALTER TABLE 테이블명 DROP 컬럼명;
  • 컬럼명 수정
ALTER TABLE 테이블명 RENAME COLUMN 변경 전_컬럼명 TO 변경 후 _컬럼명;

DROP 명령어

  • CASCADE는 참조하는 테이블까지 연쇄적으로 제거하는 옵션
  • RESTRICT는 다른 테이블이 삭제할 테이블을 참조 중이면 제거하지 않는 옵션
DROP TABLE 테이블명 [CASCADE|RESTRICT]

TRUNCATE 명령어

  • 테이블 내의 데이터들을 삭제하는 명령어
TRUNCATE TABLE 사원;
포스팅참고 : [수제비_실기책]
profile
성실함은 최고의 무기

0개의 댓글