SQL

·2025년 7월 23일

데이터베이스

목록 보기
2/3
post-thumbnail

1. 정의

데이터베이스에서 데이터를 추출하고 조작하는데 사용되는 프로그램 언어

2. 주요 SQL

1) DDL : 데이터베이스 정의 언어
2) DML : 데이터베이스 조작 언어
3) DSL : 데이터베이스 제어 언어
4) TCL : 트랜잭션 제어 언어

메타데이터 관리어

1) SHOW

SHOW DATABASES;
 → DB 서버에 존재하는 모든 데이터베이스 목록 조회

SHOW VARIABLES LIKE 'datadir';
 → 현재 DB 서버의 데이터 저장 경로(로컬 경로) 확인

SHOW TABLES;
 → 현재 사용 중인 데이터베이스의 모든 테이블 목록 조회

2) USE

USE 데이터베이스명;
 → 지정한 데이터베이스를 활성화(선택) 하여 사용

데이터 정의어

1) CREATE

CREATE DATABASE 데이터베이스명;
 → 새 데이터베이스 생성

CREATE TABLE 테이블명 (   속성명1 타입 제약조건,   속성명2 타입 제약조건 );
 → 새 테이블 생성

2) DROP

DROP DATABASE 데이터베이스명;
 → 해당 데이터베이스 삭제

DROP DATABASE IF EXISTS 데이터베이스명;
 → 해당 DB가 존재할 경우에만 삭제

DROP TABLE 테이블명;
 → 테이블 삭제

DROP TABLE IF EXISTS 테이블명;
 → 테이블이 존재할 경우에만 삭제

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

1) INSERT

특정 컬럼에 값 추가

INSERT INTO 테이블명(속성명1, 속성명2)  
VALUES (1,2);

모든 컬럼에 값 추가 (속성명 생략 가능하지만 순서 중요):

INSERT INTO 테이블명  
VALUES (1,2,3, ...);

데이터타입

정수 (Integer)

타입저장크기범위 (Signed 기준)설명
tinyint1 byte-128 ~ +127아주 작은 정수
smallint2 byte-32,768 ~ +32,767작은 정수
mediumint3 byte-8백만 ~ +8백만 정도중간 정수
int4 byte-21억 ~ +21억 정도가장 일반적인 정수형
bigint8 byte±900경 (거의 무한대 수준)매우 큰 숫자 저장용

실수 (Floating Point)

타입저장크기특징
float4 byte소수 저장 (단정밀도)
double8 byte더 정밀한 소수 저장 (배정밀도)
decimal(정수,소수)문자 기반오차 없는 소수 처리 (ex. 돈💰)

날짜/시간 (Date & Time)

타입예시 값설명
date2025-07-17날짜만 저장
time10:20:10시간만 저장
datetime2025-07-17 10:20:10날짜 + 시간 (자주 씀)

문자 (Text/String)

타입특징최대 글자 수
char(n)고정 길이, 부족하면 공백 채움최대 255
varchar(n)가변 길이, 글자 수만큼만 저장최대 255
text긴 문자열 저장 가능약 6만 자
longtext초대형 텍스트 저장 (게시판, 블로그 등)약 42억 자

논리형 (Boolean)

타입저장 형태설명
booltinyint(1)true(1), false(0) 저장 가능

⚠ 실제 DB에는 숫자 0, 1로 저장됨

SQL 제약조건 (CONSTRAINT)

1. NOT NULL

  • NULL 저장 금지 (반드시 값 입력해야 함)
  • 예: 이름, 아이디, 이메일 등 필수 입력 항목
name VARCHAR(20) NOT NULL

2. UNIQUE

  • 중복 금지 (고유한 값만 허용)
  • 예: 주민번호, 아이디, 이메일 등 중복되면 안 되는 항목
email VARCHAR(100) UNIQUE

3. DEFAULT

  • 값 생략 시 자동으로 들어가는 기본값 지정
  • 예: 가입일, 기본 수량 등
created_at DATETIME DEFAULT now()
stock INT DEFAULT 0

4. AUTO_INCREMENT (MySQL 전용)

  • 자동으로 순차 번호 부여 (1씩 증가)
  • 예: 회원번호, 주문번호 등 자동 번호 부여할 때 사용
  • PK와 함께 사용되는 경우 많음!
id INT AUTO_INCREMENT PRIMARY KEY

5. PRIMARY KEY (기본키 / PK)

  • 해당 테이블의 대표 식별자
  • 예: 학번, 사번, 제품번호, 주문번호 등
  • 중복 ❌ / NULL ❌ (자동으로 NOT NULL, UNIQUE 포함됨)
  • 한 테이블에 하나만 설정 가능
CONSTRAINT PRIMARY KEY(학생번호)

6. FOREIGN KEY (외래키 / FK)

  • 다른 테이블의 PK를 참조하는 키

  • 수강신청 테이블 → 학생 테이블의 학번 참조
    주문 테이블 → 회원 테이블의 회원번호 참조
  • 특징
  • 중복 O / NULL O
  • 참조하는 PK 필드와 타입이 같아야 함
  • 이름도 관례적으로 같게
CONSTRAINT FOREIGN KEY(학생번호_fk) 
REFERENCES 학생(학생번호_pk)
  • ⚠주의사항
    FK의 자료형은 PK와 같아야 함
    제약조건 이름 생략 가능하지만, 이름 붙이는 게 추후 유지보수에 도움됨
    참조 테이블이 먼저 생성되어 있어야 함

0개의 댓글