본문 바로가기
KNOU/요약정리

[데이터베이스시스템] SQL(1)

by bottlesun 2024. 5. 25.
728x90

데이터베이스 언어

SQL의 개요

  • SQL(Structured Query Language) 은 관계 대수에 기초하여, RDBMS 의 데이터 관리를 위해 설계된 언어
  • 1986년 ANSI, 1987년 ISO에서 표준으로 제정

→ SQL - 86, SQL - 89 , SQL - 92 , SQL : 1999 , SQL : 2003, SQL : 2008

→ 상용 DBMS의 특성에 맞게 국제 표준을 확장한 독자적 버전이 존재

  • 특징

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

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

SQL의 구성

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

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

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

→ CREATE, ALTER, DROP 문 등

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

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

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

→ INSERT, UPDATE, DELETE, SELECT 문 등

데이터 정의 언어

데이터 정의 언어의 개념

  • 데이터베이스 객체를 생성, 삭제 또는 구조를 수정하는 명령어의 집합
  • 데이터베이스 객체의 종류

→ 데이터 저장 - 테이블, 인덱스, 뷰

→ 데이터 조작 - 트리거, 프로시저, 함수 등

  • 데이터 정의 명령어의 종류

→ CREATE - 객체 생성

→ ALTER - 객체 수정

→ DROP - 객체 삭제

데이터 정의 언어의 구문형식

명령어 - CREATE , ALTER , DROP

객체 - TABLE , INDEX , VIEW , SCHEMA

ex) CREATE TABLE → 테이블 생성 , DROP VIEW → 뷰 삭제

스키마 정의

스키마 = 데이터베이스

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

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

스키마 관리 구문 형식

스키마 생성

CREATE SCHEMA SCHEMA_NAME

스키마 삭제

DROP SCHEMA SCHEMA_NAME

테이블 정의

  • 새로운 2차원 형태의 테이블을 생성
CREATE TABLE TABLE_NAME(
<column1> <data_type1> [constraints1]
[<column2> <data_type2> [constraints2],]
[<column3> <data_type3> [constraints3],]
[PRIMARY KEY column_name]
[UNIQUE column_name]
[FOREIGN KEY column REFERENCES table_name(column)]
)

테이블 생성의 예

강의 내용 발췌

데이터 타입의 개념

  1. 컬럼이 가질 수 있는 값의 범위, 즉 도메인을 결정
  2. 프로그래밍 언어에서의 변수를 생성하는 데이터 타입의 사용 목적과 방법이 매우 유사
  3. 기본 데이터 타입
문자 숫자 날짜/시간
CHAR(n) INT DATE
VARCHAR(n) FLOAT TIME
TEXT DOUBLE DATATIME
  DECLMAL(m,n) TIMESTAMP

정수 데이터 타입

  1. TINYINT - 1바이트 정수, -128 ~ 127

→ 나이, 학년 등의 크기가 작은 정수

  1. SMALLINT - 2바이트 정수, -32768 ~ 32767

→ 물품번호, 인원 등 중간 크기의 정수

  1. INT - 4바이트 정수 , 약 -20억 ~ 20억

→ 물품의 금액, 전화번호 등의 일반 크기의 정수

  1. BIGINT - 8바이트 정수

→ 계좌의 잔고, 천문학적인 크기의 정수

실수 데이터 타입

  1. 고정 소수형

→ DECIMAL(M,N) - 전체 M자리 , 소수점 이하 N자리의 숫자

ex ) DECIMAL(5,2) 는 -999.99 ~ 999.99

→ NUMERIC - DECIMAL과 동일

  1. 부동 소수형

→ FLOAT - 4바이트 크기 부동 소수

→ FLOAT(P) - 소수점 이하 P개 자리의 부동 소수

→ DOUBLE - 8바이트 크기 부동 소수형

날짜 시간 데이터 타입

  1. 날짜 데이터 타입

→ DATE - ‘YYYY-MM-DD’ 형식의 시간

→ YEAR - ‘YYYY’ 형식의 연도

  1. 시간 데이터 타입

→ TIME - ‘HH:MM:SS’ 형식의 시간

  1. 날짜 및 시간 데이터 타입

→ DATETIME - ‘YYYY-MM-DD HH:MM:SS’ 형식의 날짜 및 시간

→ TIMESTAMP - DATETIME과 동일

문자 데이터 타입

  1. CHAR(N) - 최대 길이가 N인 고정길이 문자열
  2. VARCHAR(N) - 최대 길이가 N인 가변 길이 문자열
  3. ‘DATABASE’ 문자열 저장시

→ CHAR(10) - 고정 값

D A T A B A S E    

→ VARCHAR(10) - 공간 비움

D A T A B A S E

 

  1. TEXT , CLOB - 길이가 최대 2~4GB인 가변 길이 문자열
  2. ENUM - 유한개의 문자열 집합 중 하나의 값을 선택

→ 성별 - ENUM(’남’,’여’) , 혈액형 - ENUM(’A’,’B’,’AB’,’O’)

테이블 수정

  1. 생성된 테이블에 컬럼을 추가, 수정(이름, 데이터타입, 제약조건) 또는 삭제 명령
  2. 컬럼 삭제 또는 컬럼의 데이터 타입 수정 시 데이터에 대한 소실이 발생하므로 많은 주의가 요구
  3. 테이블 수정 방법

→ SQL 구문 , 워크벤치

테이블 수정 구문 형식

  • 새로운 컬럼을 추가, 삭제 및 수정하는 등의 테이블 의 구조를 변경
  • 구문 형식
ALTER TABLE TABLE_NAME
[ADD COLUMN column1 data_type [constraints]]
[DROP COLUMN column_name]
[CHANGE COLUMN current_update_column next_update_column]
[MODIFY COLUMN column2 data_type]

테이블 수정 질의 사용

질의1) 교수 테이블에 데이터 타입 INT 인 나이 컬럼을 추가 하시오.

ALTER TABLE 교수
	ADD COLUMN age INT

테이블 삭제

  1. 존재하는 테이블을 스키마에서 삭제
  2. 삭제할 테이블의 모든 데이터가 소실, 복구 불가능 연산이므로 각별한 주의 요구
  3. 테이블 삭제 방법

→ SQL 구문 , 워크벤치

테이블 삭제 구문 형식

  • 테이블을 데이터 베이스에서 제거
  • 구문 형식
DROP TABLE TABLE_NAME

질의2) 교수 테이블을 삭제 하시오.

DROP TABLE 교수

제약조건

  1. 테이블과 테이블에 존재하는 데이터를 보다 무결 하게 관리하기 위한 목적으로 사용
  2. DBMS는 테이블 조작 시 테이블에 정의된 제약조건을 만족 시키는지 지속적으로 검사
  3. DBMS는 적용하려는 제약의 유형에 따라 다양한 제약 조건을 지원

제약 조건의 종류

  1. PRIMARY KEY : 기본키 지정, UNIQUE와 NOT NULL 특성을 가지고 있음
  2. FOREIGN KEY : 외래키 지정, 참조 컬럼 정의
  3. NOT NULL : NULL이 될 수 없는 컬럼에 지정
  4. UNIQUE : 동일한 컬럼 값을 가질 수 없음을 지정
  5. AUTO_INCREMENT : 레코드가 추가될 때 자동적으로 속성값이 1부터 1씩 증가되어 입력
  6. CHECK : 컬럼값이 특정 조건 준수 여부 지정

제약 조건의 사용

CREATE TABLE 교수(
교수번호 CHAR(13) NOTNULL,
교수이름 CHAR(30) NOTNULL,
직위    CHAR(10) NOTNULL,
소속학과 CHAR(50) NOTNULL,
연봉    INT      NOTNULL
PRIMARY KEY(교수번호)
FOREIGN KEY(소속학과) REFERENCES 학과(학과이름)
)

제약조건의 응용

CREATE TABLE 개인구매회원(
이름.   CHAR(10)     NOTNULL,
ID     CHAR(20)    PRIMARY KEY,
비밀번호 VARCHAR(30) NOTNULL,
통신사   CHAR(10)    NOTNULL,
                  CHECK(통신사 IN('SKT','LGT','KT'))
SMS수신 CHAR(1).    DEFAULT 'N'

)
728x90

댓글