book_lover 2024. 12. 24. 22:53

 학습개요

  1. DBMS가 데이터 관리 기능이 우수하다 하더라도 DBMS에 명확한 명령을 전달 할 수 없다면 높은 활용도를 기대할 수 없다. 따라서 사용자와 DBMS 간 의사소통할 수 있는 효율적인 명령체계가 무엇보다도 중요하다. 이번 강의에서는 데이터베이스 언어의 정의와 역할에 대하여 살펴보고 문법 체계가 자연어와 유사하여 관계형 DBMS에 국제 표준으로 사용되고 있는 SQL과 SQL의 데이터 정의 기능에 대하여 학습한다.

 학습목표

  1. 데이터베이스 언어를 이해할 수 있다.
  2. 데이터베이스 정의 언어를 이해할 수 있다.

 주요용어

  1. SQL : 관계대수에 기초하여 RDBMS의 데이터 관리를 위해 설계된 언어
  2. DDL : 데이터베이스 객체를 생성, 삭제 또는 구조를 수정하는 명령어의 집합
  3. 스키마 : 한 조직의 데이터베이스 시스템의 운영에 필요한 테이블, 인덱스, 뷰 등의 데이터베이스 객체의 집합
  4. 테이블 : 데이터를 저장하기 위한 2차원 표 형태의 구조

데이터베이스 언어의 필요

  • 데이터 사용과 관리를 분리
  • 사용과 관리의 중간 매개체 역할 - 데이터베이스 관리 시스템
  • 사용자는 데이터베이스 관리 시스템에게 명령을 내릴 때 사용하기 위한 언어 필요 - SQL 언어 사용 
SQL(Structured Query Language)은 관계대수에 기초하여 RDBMS의 데이터 관리를 위해 설계된 언어

특징

▶ 비절차적(선언형) 언어, 필요한 데이터만 기술

▶ 인간의 언어와 매우 유사하고 간단, 명료

1. 데이터 정의 언어(DDL: Data Definition Language)

▶ 데이터베이스 내의 객체를 생성 및 삭제하고 그 구조를 조작하는 명령어의 집합

▶ 데이터가 준수해야 하는 제약조건을 기술

▶ CREATE, ALTER, DROP 문 등

2. 데이터 조작 언어(DML: Data Manipulation Language)

▶ DDL에 의해 정의된 테이블에 데이터를 조작하는 명령어의 집합

▶ 데이터에 대한 CRUD(생성, 검색, 삭제, 수정) 명령을 포함

▶ INSERT, UPDATE, DELETE, SELECT 문 등


 데이터 정의 언어의 개념

데이터베이스 객체를 생성, 삭제 또는 구조를 수정하는 명령어의 집합
  • 데이터 저장 - 테이발, 인덱스, 뷰
  • 데이터 조작 - 트리거, 프로시저, 함수 등
  • CREATE, ALTER, DROP 등 

스키마의 정의

◎ 스키마 = 데이터베이스
◎ 한 조직의 데이터베이스 시스템의 운영에 필요한 테이블, 인덱스, 뷰 등의 데이터베이스 객체의 집합

스키마 관리 방법

  • Forward Engineer
  • SQL 에디터
  • 내비게이터 패널

스키마 생성, 삭제

CREATE SCHEMA [스키마 이름]
DROP SCHEMA [스키마 이름]

테이블 정의

2차원 형태의 테이블을 생성
CREATE TABLE 테이블이름(
<컬럼1> <데이터타입1> [제약조건1] [ ,
<컬럼2> <데이터타입2> [제약조건2] ]
… [ ,
<컬럼n> <데이터타입n> [제약조건n] ]
[PRIMARY KEY 컬럼명]
[UNIQUE 컬럼명]
[FOREIGN KEY 컬럼 REFERENCES 테이블이름(컬럼)]
)
CREATE TABLE 교수 (
교수번호 CHAR(13) NOT NULL,
교수이름 CHAR(30) NOT NULL,
직위 CHAR(10) NOT NULL,
소속학과 CHAR(50) NOT NULL,
연봉 INT NOT NULL )

데이터 타입의 개념

  • 컬럼이 가질 수 있는 값의 범위, 즉 도메인을 결정
  • 프로그래밍 언어에서의 변수를 생성하는 데이터 타입의 사용목적과 방법이 매우 유사

◎ 정수 데이터 타입

  • TINYINT – 1바이트 정수, -128 ~ 127
    • 나이, 학년 등의 크기가 작은 정수
  • SMALLINT – 2바이트 정수, -32768~32767
    • 물품번호, 인원 등 중간 크기의 정수
  • INT – 4바이트 정수, 약 -20억 ~ 20억
    • 물품의 금액, 전화번호 등의 일반 크기의 정수
  • BIGINT – 8바이트 정수
    • 계좌의 잔고, 천문학적인 크기의 정수

 실수 데이터 타입

  • 고정 소수형
    • DECIMAL(M, N) – 전체 M 자리, 소수점 이하 N자리의 숫자를 • 예, DECIMAL(5,2)는 -999.99~999.99
    • NUMERIC – DECIMAL과 동일
  • 부동 소수형
    • FLOAT – 4바이트 크기 부동 소수
    • FLOAT(P) – 소수점 이하 P개 자리의 부동 소수
    • DOUBLE – 8바이트 크기 부동 소수형

날짜 데이터 타입

  • 날짜 데이터 타입
    • DATE – ‘YYYY-MM-DD’ 형식의 시간
    • YEAR – ‘YYYY’ 형식의 연도
  • 시간 데이터 타입
    • TIME – ‘HH:MI:SS’ 형식의 시간
  • 날짜 및 시간 데이터 타입
    • DATETIME – ‘YYYY-MM-DD HH:MI:SS’ 형식의 날짜 및 시간
    • TIMESTAMP – DATETIME과 동일

◎ 문자 데이터 타입

  • CHAR(N) – 최대 길이가 N인 고정길이 문자열
  • VARCHAR(N) – 최대 길이가 N인 가변길이 문자열
  • ‘DATABASE’ 문자열 저장 시
  • TEXT, CLOB – 길이가 최대 2~4GB인 가변길이 문자열
  • ENUM – 유한개의 문자열 집합 중 하나의 값을 선택
    • 성별 – ENUM(‘남’, ‘여’) 
    • 혈액형 – ENUM(‘A’, ‘B’, ‘O’, ‘AB’)

테이블 수정

  • 생성된 테이블에 컬럼을 추가, 수정(이름, 데이터 타입, 제약조건) 또는 삭제하는 명령
  • 컬럼 삭제 또는 컬럼의 데이터 타입 수정 시 데이터에 대한 소실이 발생하므로 많은 주의가 요구
  • 테이블 수정 방법
    • SQL 구문
    • GUI 환경 - workbench, DBeaver 등 같은 프로그램

예 : 교수테이블에데이터타입이INT인나이컬럼을추가하시오

ALTER TABLE 교수
ADD COLUMN 나이INT

 테이블 삭제

  • 존재하는 테이블을 스키마에서 삭제
  • 삭제할 테이블의 모든 데이터가 소실, 복구가 불가능 연산이므로 각별한 주의가 요구
  • 테이블 삭제 방법
    • SQL 구문
    • 내비게이터 패널
DROP TABLE 테이블이름

 

제약 조건

테이블과 테이블에 존재하는 데이터를 보다 무결하게 관리하기 위한 목적으로 사용
  1. PRIMARY KEY: 기본키 지정, UNIQUE와 NOT NULL 특성
  2. FOREIGN KEY: 외래키 지정, 참조 컬럼 정의
  3. NOT NULL: NULL이 될 수 없는 컬럼에 지정
  4. UNIQUE: 동일한 컬럼값을 가질 수 없음을 지정
  5. AUTO_INCREMENT: 레코드가 추가될 때 자동적으 로 속성값이 1부터 1씩 증가되어 입력
  6. CHECK: 컬럼값이 특정 조건 준수 여부 지정

  • 정리하기
    1. 구조화된 질의 언어(structured query language)라는 의미의 SQL은 사람과 DBMS 간의 의사소통을 위한 대표적인 DBMS 언어이다. SQL에는 데이터 정의 언어와 데이터 조작 언어로 구성되며, 이 외에도 DBMS를 관리하기 위한 다양한 기능을 지원한다.
    2. 데이터 정의 언어(DDL)는 데이터베이스, 테이블, 뷰, 인덱스 등의 데이터베이스 객체를 정의하는 데 이용된다. CREATE, ALTER, DROP 명령어를 사용하여 데이터베이스 객체를 생성, 수정, 추가할 수 있다.
    3. 스키마는 데이터베이스와 동일한 의미로 사용되며 한 조직의 데이터베이스 시스템의 운영에 필요한 테이블, 인덱스, 뷰 등의 데이터베이스 객체의 집합을 의미한다.
    4. CREATE TABLE 문을 사용하여 테이블의 컬럼 정의 시 컬럼이 가질 수 있는 값의 범위를 데이터 타입을 지정하며 문자, 숫자, 날짜에 대한 여러 데이터 타입을 제공한다.
    5. ALTER TABLE 문은 컬럼의 추가 및 삭제, 데이터 타입 변경 등 테이블 수정을 지시한다. 반면 DROP TABLE 문은 테이블의 삭제를 지시한다.
    6. 테이블 정의 시 데이터의 일관성과 무결성 유지를 위해 데이터가 가져야 하는 다양한 제약조건을 기술할 수 있으며, 종류로는 PRIMARY KEY, FOREIGN KEY, NOT NULL, UNIQUE, CHECK, AUTO INCREMENT, DEFAULT 등이 있다.
  •  참고문헌
    1. 정재화 (2020). 데이터베이스 시스템. 서울: 한국방송통신대학교출판부.
    2. Silberschatz, Abraham, Henry F. Korth, and S. Sudarshan. Database system concepts. Vol. 6. Hightstown: McGraw-Hill, 2011.
    3. Elmasri, Ramez, and Shamkant B. Navathe. Fundamentals of database systems. Pearson, 2014.