04. SQL - 1

PearLineZero
|2025. 4. 30. 19:04

✅ SQL

관계대수에 기초해 RDBMS의 데이터 관리를 위해 1970년대 초 IBM에서 설계로 특징으로는 비절차적 언어, 필요한 데이터만 기술하며 인간의 언어와 매우 유사하고 간단, 명료함

 

 

 SQL 구성

📌  데이터 정의 언어(DDL)

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

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

 

📌 데이터 조작 언어(DML)

- DDL에 의해 정의된 테입ㄹ에 데이터르 조작하는 명령어의 집합

- 데이터의 대한 CRUD 명령을 포함

 

📌  데이터 제어 언어(DCL)

- DBMS의 동작, 접근 권한 등을 관리하는 SQL 명령어의 집합

 

 

 데이터 정의 언어의 개념

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

 

📌  종류

- 저장 : 스키마 ,테이블, 인덱스 , 뷰

- 조작 : 트리거, 프로시저, 함수 등

CREATE , ALTER , DROP

 

 

 스키마

데이터베이스로 한 조직의 데이터베이스 시스템의 운영에 필요한 테이블, 인덱스 , 뷰 등의 데이터베이스 객체의 집합으로 스키마 관리 구문 형식

- 생성 : CREATE ...

- 삭제 : DROP...

 

 

 릴레이션과 테이블

RDBMS의 기본적 데이터 저장구조로 2차원 형태의 저장 구조인 점에서 유사

- 릴레이션 : 데이터를 구성하는 추상적인 개념으로 집합론에 기반한 여러 속성을 갖는 레코드의 집합으로 레코드의 순서가 없으며 중복된 레코드가 존재하지 않음

- 테이블 : 물리적으로 데이터를 저장하는 구체적인 개념으로 레코드의 순서가 존재 가능하며 키 제약에 따라 중복된 레코드가 존재 가능

 

 

  테이블 정의 

새로운 2차원 형태의 테이블 생성

CREATE TABLE 테이블이름 ( <컬럼1><데이터 타입1> [제약조건1] [ , <컬럼2> <데이터 타입2> [제약조건2] ]
    ...
    [,
    <컬럼n><데이터 타입n>[제약조건n] ]
    [PRIMARY KEY 컬럼명]
    [UNIQUE 컬럼명]
    [FOREIGN KEY 컬럼 REFERENCES 테이블이름(컬럼)]
}

 

 

 데이터 타입의 개념

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

 

📌 타입

- 문자 : CHAR , VARCHAR , TEXT

- 숫자 : INT , FLOAT , DOUBLE , DECIMAL(m , n)

- 날짜 /시간 : DATE , TIME , DATETIME , TIMESTAMP

 

 

 정수 데이터 타입

TINYINT

- 바이트 정수(-128~ 127)

+ EX) : 나이, 학년 등의 크기가 작은 정수

SMALLINT

2바이트 정수(-32768~32767)

+ EX) 물품번호, 인원 등 중간 크기의 정수

INT

- 4바이트 정수(약 20억 ~ 20억)

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

BIGINT

- 8바이트 정수(-약 9000경~ 9000경)

+ EX) 계좌의 잔고, 천문학적인 크기의 정

 

 

 실수 데이터 타입

부동 소수형

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

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

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

 

고정 소수형

- DECIMAL (M, N): 전체 M 자리, 소수점 이하 N자리의 소수를 저장

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

- NUMERIC: DECIMAL과 유사

 

 

 날짜 및 시간 데이터 타입

날짜 데이터 타입

- DATE: YYYY-MM-DD' 형식의 시간

- YEAR:Y' 형식의 연도

 

시간 데이터 타입

- TIME: 'HH:MI:SS' 형식의 시간

 

날짜 및 시간 데이터 타입

- DATETIME: 'YYYY-MM-DD HH: MI:SS' 형식의 날짜 및 시간

- TIMESTAMP: DATETIME과 유사

  • 유닉스 시간 기반 1970년 ~ 2038년 표현 가능
  • DBMS 서버의 시간대에 따라 시간 변경

 

 

✅ 문자

- CHAR(N): 최대 길이가 N인 고정길이 문자열

- VARCHAR(N): 최대 길이가 N인 가변길이 문자열

 

Ex) 'DATABASE' 문자열 저장

- TEXT: 길이가 최대 2~4GB인 가변길이 문자열

 

- CLOB(Character Large OBject)

  • 수백 MB ~ 수 GB의 데이터 저장을 위한 타입
  • 레코드 단위가 아닌 별도의 저장 공간을 부여하는 외부 저장 방식

 - ENUM: 유한개의 문자열 집합 중 하나의 값을 선택 + 효율적인 저장 및 처리를 위해 내부적으로 숫자로 저장

  • 성별:ENUM(남,'여)
  • 혈액형: ENUM('A', 'B', 'O', 'AB')

 

 

✅ 제약 조건

- 테이블에 존재하는 데이터를 무결하고 세밀하게 관리하기 위한 목적으로 사용

- DBMS는 테이블 조작 시 테이블에 정의된 제약조건을 만족시키는 지속적으로 검사

- DBMS는 적용하려는 제약의 유형에 따라 다양한 제약 조건을 지원

 

 

✅ 제약조건 종류

- PRIMARY KEY : 기본키 지정, UNIQUE와 NOT NULL 특성

- FOREIGN KEY : 외래키 지정, 참조 컬럼 정의

- NOT NULL : NULL이 될 수 없는 컬럼에 지정

- UNIQUE: 동일한 컬럼값을 가질 수 없음을 지정

- AUTO_INCREMENT: 레코드가 추가될 때 자동적 으로 속성값이 1부터 1씩 증가되어 입력

- CHECK : 컬럼값이 특정 조건 준수 여부 지정

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

 

 

✅ 테이블 수정

CREATE 문에 의해 생성된 테이블에 컬럼을 추가, 수정 또는 삭제로 컬럼 삭제 또는 컬럼의 데이터 탑이 수정 시 데이터에 대한 소실이 발생하므로 많은 주의가 요구

ALTER TABLE 테이블이름 [ADD COLUMN 컬럼 데이터타입 [제약조건]]
[DROPCOLUMN컬럼이름]
[CHANGE COLUMN 수정전컬럼 수정후컬럼]
[MODIFY COLUMN 컬럼 데이터타입]

 

 

✅ 테이블 삭제

존재하는 테이블을 스키마에서 삭제하는데 삭제된 테이블에 저장된 모든 데이터가 소실, 복구가 불가능한 연산이므로 각별한 주의가 요구

DROP TABLE 테이블이름

 

 

🔎  정리

  • SQL은 사람과 DBMS 간의 의사소통을 위한 언어로, DDL과 DML 등으로 구성
  • DDL(데이터 정의 언어)은 CREATE, ALTER, DROP 등을 사용하여 데이터베이스 객체를 정의·수정·삭제
  • 스키마는 데이터베이스 구조를 의미하며, 테이블·뷰·인덱스 등의 객체 집합
  • CREATE TABLE문은 컬럼 이름과 데이터 타입을 지정해 테이블을 생성
  • 제약조건에는 PRIMARY KEY, FOREIGN KEY, NOT NULL, UNIQUE, DEFAULT 등이 있으며 무결성을 보장

 

 

 

 

 

 

 

 

 

'CS > Database' 카테고리의 다른 글

05. SQL - 2  (0) 2025.04.30
03. 관계형 모델  (0) 2025.04.29
02. 데이터베이스 모델링  (0) 2025.04.29
01. 데이터베이스 이해  (0) 2025.04.29