🧠 SQL 기본 개념 & 기능 구현 정리
⚙️ [ SQL 기본 ]
Structured Query Language — 데이터베이스를 조작하기 위한 표준 언어
⚠️ 주의할 점
| 항목 | 설명 |
|---|
| 🔠 대소문자 구분 없음 | SQL 명령어는 대소문자를 구분하지 않는다. |
| 🔚 세미콜론(;) 필수 | 명령문 끝에는 ;를 반드시 붙인다. |
📊 [ 메타데이터 관리어 ]
데이터베이스 정보를 조회하거나 관리하는 명령어
| 명령어 | 설명 | 예시 |
|---|
🗂️ SHOW DATABASES; | DB 서버 내 전체 데이터베이스 목록 조회 | ✅ |
🏠 SHOW VARIABLES LIKE 'datadir'; | DB 서버의 로컬 경로 확인 | ✅ |
📌 USE 데이터베이스명; | 지정한 데이터베이스를 활성화 | USE libraryDB; |
🧱 [ 데이터베이스 정의어 (DDL) ]
데이터베이스 구조(테이블, 스키마 등)를 정의/변경/삭제하는 명령어
| 명령어 | 설명 | 예시 |
|---|
🆕 CREATE DATABASE DB명; | 데이터베이스 생성 | CREATE DATABASE libraryDB; |
❌ DROP DATABASE DB명; | 데이터베이스 삭제 | DROP DATABASE libraryDB; |
⚙️ DROP DATABASE IF EXISTS DB명; | 존재할 경우에만 삭제 | DROP DATABASE IF EXISTS libraryDB; |
💾 [ 데이터 타입 정리 ]
MySQL에서 데이터를 저장할 때 사용하는 자료형
🔢 정수형
| 타입 | 크기 | 범위 | 비고 |
|---|
TINYINT | 1 byte | -128 ~ 127 | |
SMALLINT | 2 byte | 약 ±3만 | |
MEDIUMINT | 3 byte | 약 ±800만 | |
INT | 4 byte | 약 ±21억 | 기본형 |
BIGINT | 8 byte | ±21억 이상 | 대형 숫자 |
UNSIGNED | - | 0 ~ 약 42억 | 부호 제거 시 범위 확장 |
🔢 실수형
| 타입 | 크기 | 특징 |
|---|
FLOAT | 4 byte | 소수점 표현 |
DOUBLE | 8 byte | 정밀한 실수 표현 |
DECIMAL | 문자타입 | 오차가 없는 정밀 계산 (금융용) |
⏰ 날짜/시간형
| 타입 | 예시 | 설명 |
|---|
DATE | 2025-07-15 | 날짜만 저장 |
TIME | 10:02:30 | 시간만 저장 |
DATETIME | 2025-07-15 10:02:30 | 날짜+시간 저장 |
🔤 문자형
| 타입 | 길이 | 특징 |
|---|
CHAR(n) | 고정길이 (최대 255자) | 공간 낭비 가능 |
VARCHAR(n) | 가변길이 (최대 255자) | 효율적 저장 |
TEXT | 최대 6만자 | 본문 텍스트용 |
LONGTEXT | 최대 42억자 | 대용량 텍스트 |
⚙️ 논리형
| 타입 | 설명 |
|---|
BOOL | TRUE / FALSE, 내부적으로 TINYINT 처리 |
🔒 [ 제약조건 (Constraints) ]
데이터의 무결성 보장을 위한 규칙 설정
| 제약조건 | 설명 | 예시 |
|---|
| 🚫 NOT NULL | NULL 값을 허용하지 않음 | name VARCHAR(20) NOT NULL |
| 🔁 UNIQUE | 중복된 값을 허용하지 않음 | email VARCHAR(30) UNIQUE |
| ⚙️ DEFAULT | 기본값 자동 설정 | status VARCHAR(10) DEFAULT 'active' |
| 🔢 AUTO_INCREMENT | 자동 증가 번호 부여 | id INT AUTO_INCREMENT PRIMARY KEY |
| 🧩 PRIMARY KEY | 레코드의 고유 식별자 | CONSTRAINT PRIMARY KEY(id) |
| 🔗 FOREIGN KEY | 다른 테이블의 기본키를 참조 | CONSTRAINT FOREIGN KEY(member_id) REFERENCES member(id) |
💡 참조 규칙
- 외래키는 참조할 기본키와 자료형이 동일해야 함
- 보통 기본키와 외래키 이름을 동일하게 설정함
🧰 [ 기능 구현 순서 ]
실제 시스템 기능을 단계적으로 구현하기 위한 프로세스
| 단계 | 설명 | 예시 |
|---|
| ① | 주요 기능 정의 | 회원가입, 로그인, 도서대출 등 |
| ② | 테이블 설계 | 회원 / 도서 / 대출 테이블 |
| ③ | SQL 작성 | 각 기능에 맞는 CRUD SQL |
| ④ | API 명세서 작성 | 기능명, 설명, 매개변수, 반환값 정의 |
| ⑤ | 패키지 구성 | controller, dao, dto 등 구조화 |
| ⑥ | 싱글톤 & DTO/DAO 구성 | 공용 DB 접근 객체 설계 |
| ⑦ | 기능 구현 및 화면 연결 | 실제 코드 작성 및 UI 연결 |
💡 [ API 명세서 작성 예시 ]
| 항목 | 내용 |
|---|
| 기능 이름 | 회원가입 (SignUp) |
| 기능 설명 | 사용자 정보를 받아 DB에 저장 |
| 요청 매개변수 | name(String), id(String), pw(String) |
| 응답 타입 | boolean |
| 반환 예시 | true → 성공 / false → 실패 |