방통대1/데이터베이스
SQL-1
book_lover
2024. 12. 24. 22:53
학습개요
- DBMS가 데이터 관리 기능이 우수하다 하더라도 DBMS에 명확한 명령을 전달 할 수 없다면 높은 활용도를 기대할 수 없다. 따라서 사용자와 DBMS 간 의사소통할 수 있는 효율적인 명령체계가 무엇보다도 중요하다. 이번 강의에서는 데이터베이스 언어의 정의와 역할에 대하여 살펴보고 문법 체계가 자연어와 유사하여 관계형 DBMS에 국제 표준으로 사용되고 있는 SQL과 SQL의 데이터 정의 기능에 대하여 학습한다.
학습목표
- 데이터베이스 언어를 이해할 수 있다.
- 데이터베이스 정의 언어를 이해할 수 있다.
주요용어
- SQL : 관계대수에 기초하여 RDBMS의 데이터 관리를 위해 설계된 언어
- DDL : 데이터베이스 객체를 생성, 삭제 또는 구조를 수정하는 명령어의 집합
- 스키마 : 한 조직의 데이터베이스 시스템의 운영에 필요한 테이블, 인덱스, 뷰 등의 데이터베이스 객체의 집합
- 테이블 : 데이터를 저장하기 위한 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 테이블이름
제약 조건
테이블과 테이블에 존재하는 데이터를 보다 무결하게 관리하기 위한 목적으로 사용
- PRIMARY KEY: 기본키 지정, UNIQUE와 NOT NULL 특성
- FOREIGN KEY: 외래키 지정, 참조 컬럼 정의
- NOT NULL: NULL이 될 수 없는 컬럼에 지정
- UNIQUE: 동일한 컬럼값을 가질 수 없음을 지정
- AUTO_INCREMENT: 레코드가 추가될 때 자동적으 로 속성값이 1부터 1씩 증가되어 입력
- CHECK: 컬럼값이 특정 조건 준수 여부 지정
- 정리하기
-
- 구조화된 질의 언어(structured query language)라는 의미의 SQL은 사람과 DBMS 간의 의사소통을 위한 대표적인 DBMS 언어이다. SQL에는 데이터 정의 언어와 데이터 조작 언어로 구성되며, 이 외에도 DBMS를 관리하기 위한 다양한 기능을 지원한다.
- 데이터 정의 언어(DDL)는 데이터베이스, 테이블, 뷰, 인덱스 등의 데이터베이스 객체를 정의하는 데 이용된다. CREATE, ALTER, DROP 명령어를 사용하여 데이터베이스 객체를 생성, 수정, 추가할 수 있다.
- 스키마는 데이터베이스와 동일한 의미로 사용되며 한 조직의 데이터베이스 시스템의 운영에 필요한 테이블, 인덱스, 뷰 등의 데이터베이스 객체의 집합을 의미한다.
- CREATE TABLE 문을 사용하여 테이블의 컬럼 정의 시 컬럼이 가질 수 있는 값의 범위를 데이터 타입을 지정하며 문자, 숫자, 날짜에 대한 여러 데이터 타입을 제공한다.
- ALTER TABLE 문은 컬럼의 추가 및 삭제, 데이터 타입 변경 등 테이블 수정을 지시한다. 반면 DROP TABLE 문은 테이블의 삭제를 지시한다.
- 테이블 정의 시 데이터의 일관성과 무결성 유지를 위해 데이터가 가져야 하는 다양한 제약조건을 기술할 수 있으며, 종류로는 PRIMARY KEY, FOREIGN KEY, NOT NULL, UNIQUE, CHECK, AUTO INCREMENT, DEFAULT 등이 있다.
- 참고문헌
- 정재화 (2020). 데이터베이스 시스템. 서울: 한국방송통신대학교출판부.
- Silberschatz, Abraham, Henry F. Korth, and S. Sudarshan. Database system concepts. Vol. 6. Hightstown: McGraw-Hill, 2011.
- Elmasri, Ramez, and Shamkant B. Navathe. Fundamentals of database systems. Pearson, 2014.