monimoni 2025. 3. 10. 20:01

1. 데이터베이스 사용의 의미

  • 데이터 사용과 데이터 관리 영역 구분
  • 이 두 영역을 연결하는 것이 데이터베이스

2. SQL의 개념

  • SQL ( Structured Query Language ) : 구조화된 질문하는 언어
  • SQL은 관계대수에 기초해 RDBMS의 데이터 관리를 위해 1970년대 초 IBM에서 설계
  • 1986년 ANSI, 1987년 ISO에서 표준으로 재정
    • SQL-86, SQL-89, SQL-92, SQL : 1999, SQL : 2003, SQL : 2008
    • 상용 DBMS의 특성에 맞게 국제표준을 확장한 독자적 버전이 존재
  • SQL의 특징
    • 비절차적( 선언형 ) 언어, 필요한 데이터만 기술
      • 선언형 언어란?
        • 프로그램이 어떤 방법으로 해야 하는지를 나타내기 보다 ‘무엇을’에 집중하는 언어
    • 편리하게 데이터를 저장, 수정, 삭제, 검색을 가능하게 하는 선언형 언어 SQL
    • 인간의 언어와 매우 유사하고 간단, 명료

3. SQL의 구성

  • 데이터 정의 언어 ( DDL : Data Definition Language )
    • 데이터베이스 내의 객체를 생성 및 삭제하고 그 구조를 조작하는 명령어의 집합
    • 데이터를 저장할 수 있는 구조를 정의
    • 데이터가 준수해야 하는 제약조건 기술
  • 데이터 조작 언어 ( DML : Data Manipulation Language )
    • DDL에 의해 정의된 테이블에 데이터를 조작하는 명령어의 집합
    • 데이터에 대한 CRUD( 생성, 검색, 삭제, 수정 ) 명령을 포함
  • 데이터 제어 언어 ( DCL : Data Control Language )
    • DBMS의 동작, 접근 권한 등을 관리하는 SQL 명령어의 집합

4. 데이터 정의 언어의 개념 ( DDL )

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

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

  • 명령어 + 객체타입 + 객체 이름
    • 명령어 : CREATE, ALTER, DROP
    • 객체 : TABLE, INDEX, VIEW, SCHEMA

6. 스키마 정의 ( Schema )

  • 스키마( Schema ) = 데이터베이스 ( Database )
    • 테이블은 데이터베이스 또는 스키마를 먼저 생성해야 만들 수 있다.
  • 한 조직의 데이터베이스 시스템의 운영에 필요한 테이블, 인덱스, 뷰 등의 데이터베이스 객체의 집합
  • 스키마 관리 구문 형식
    • 스키마 생성
      • CREATE SCHEMA 스키마 이름
      • CREATE DATABASE 스키마 이름
    • 스키마 삭제
      • DROP SCHEMA 스키마 이름
      • DROP DATABASE 스키마 이름

7. 릴레이션과 테이블

  • RDBMS의 기본적 데이터 저장 구조
  • 2차원 형태의 저장 구조인 점에서 유사
  • 릴레이션 ( 이론적 )
    • 데이터를 구성하는 추상적인 개념
    • 집합론에 기반한 여러 속성을 갖는 레코드의 집합
    • 레코드의 순서가 없으며 중복된 레코드가 존재하지 않음
  • 테이블 ( 물리적 )
    • 물리적으로 데이터를 저장하는 구체적인 개념
    • 레코드의 순서가 존재 가능
    • 키 제약에 따라 중복된 레코드가 존재 가능

8. 테이블 정의

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

9. 데이터 타입의 개념

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

10. 정수 데이터 타입

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

11. 실수 데이터 타입

  • 부동 소수형 ( 정수와 소수의 자리수가 고정 X )
    • FLOAT : 4바이트 크기 부동 소수
    • FLOAT(P) : 소수점 이하 P개 자리의 부동 소수
    • DOUBLE : 8바이트 크기 부동 소수
  • 고정 소수형 ( 정수와 소수의 자리수가 고정 O )
    • DECIMAL(M,N) : 전체 M자리, 소수점 이하 N자리의 소수를 저장
    • NUMERIC : DECIMAL과 유사

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

  • 날짜 데이터 타입
    • DATE : ‘YYYY-MM-DD’형식의 개념
    • YEAR : ‘YYYY’ 형식의 연도
  • 시간 데이터 타입
    • TIME : ‘HH:MI:SS’형식의 시간
  • 날짜 및 시간 데이터 타입
    • DATETIME : ‘YYYY-MM-DD HH:MI:SS’ 형식의 날짜 및 시간
    • TIMESTAMP : DATETIME과 유사
      • 유닉스 시간(UTC) 기반 1970년 ~ 2038년 표현 가능
      • DBMS 서버의 시간대에 따라 시간 변경

13. 문자 데이터 타입 1

  • CHAR(N) : 최대 길이가 N인 고정 길이 문자열
  • VARCHAR(N) : 최대 길이가 N인 가변길이 문자열
  • ex ) ‘DATABASE’ 문자열 저장시
    • CHAR(10) : 길이가 10으로 고정, 남은 2자리를 빈칸으로 둠
    • VARCHAR(10) : 길이가 가변적이기에 길이가 8로 됨
      • 데이터 수정으로 길이 변동이 일어나면 실행시간이 길어짐
  • 권장 사항
    • 글자의 수가 일정하고 길이의 변화가 크지 않으면 CHAR
    • 레코드마다 글자 길이에 큰 편자가 있으면 VARCHAR
    • 레코드마다 글자 길이에 큰 편차가 있고, 변화의 빈도가 크다면 CHAR

14. 문자 데이터 타입 2

  • TEXT
    • 길이가 최대 2~4GB인 가변길이 문자열
    • 레코드 단위가 아닌 별도의 저장 공간을 부여하는 외부 저장 방식
  • CLOB ( Character Large Object )
    • 수백 MB ~ 수 GB의 데이터 저장을 위한 타입
    • 레코드 단위가 아닌 별도의 저장 공간을 부여하는 외부 저장 방식
  • ENUM
    • 유한개의 문자열 집합 중 하나의 값을 선택
    • 효율적인 저장 및 처리를 위해 내부적으로 숫자 저장
    • ex ) 성별 : ENUM(’남’, ’여’)

15. 제약 조건

  • 테이블에 존재하는 데이터를 무결하고 세밀하게 관리하기 위한 목적으로 사용
  • DBMS는 테이블 조작 시 테이블에 정의된 제약조건을 만족시키는지 지속적으로 검사
    • 레코드의 입력, 수정, 삭제 요청 시 정의된 제약조건의 준수 여부를 검사한 후 실행
    • 데이터의 일관성과 무결성 훼손을 방지
  • DBMS는 적용하려는 제약의 유형에 따라 다양한 제약 조건을 지원

16. 제약조건의 종류

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

17. 제약조건 사용

CREATE TABLE 교수 (
	교수번호 CHAR(13) NOT NULL,
	교수이름 CHAR(30) NOT NULL, 
	직위    ENUM('조교수', '부교수', '정교수'), 
	소속학과 CHAR(50) NOT NULL, 
	연봉    INT.     NOT NULL, 
	PRIMARY KEY(교수번호), 
	FOREIGN KEY(소속학과) PEFERENCES 학과(학과이름)
)

18. 테이블 수정

  • CREATE문에 의해 생성된 테이블에 컬럼을 추가, 수정( 이름, 데이터 타입, 제약조건 ) 또는 삭제
  • 컬럼 삭제 또는 데이터 타입 수정 시 데이터에 대한 소실이 발생하기에 많은 주의가 요구
    • DDL을 삭제한 데이터는 복구가 불가능
  • 예시
ALTER TABLE 테이블이름
[ADD COLUMN 컬럼 데이터타입[제약조건]]
[DROP COLUMN 컬럼이름]
[CHANGE COLUMN 수정전컬럼 수정후컬럼]
[MODIFY COLUMN 컬럼 데이터타입]

19. 데이터 수정 질의 사용

  • 교수 Table에 데이터 타입이 VARCHAR(100)인 전공 컬럼 추가
    • ALTER TABLE 교수 ADD COLUMN 전공 VARCHAR(100)
  • 교수 Table에서 직위 컬럼 삭제
    • ALTER TABLE 교수 DROP COLUMN 직위

20. 테이블 삭제

  • 존재하는 테이블을 스키마에서 삭제
  • 삭제된 테이블에 저장된 모든 데이터가 소실, 복구가 불가능한 연산이므로 각별한 주의가 요구
  • 삭제할 테이블을 참조하는 다른 테이블이 존재하는 경우, 이는 참조 무결성 제약조건 위반
    • 삭제하는 방법
      • 참조를 해지 후 삭제 진행
      • 참조되는 FK를 모두 NULL로 바꾼 후 테이블 삭제
  • ex ) DROP TABLR 테이블이름
728x90