2025년 7월 15일 화요일(35일차)

Jeonghoon·2025년 7월 15일

jeonghoon's Study

목록 보기
37/128

🧠 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에서 데이터를 저장할 때 사용하는 자료형

🔢 정수형

타입크기범위비고
TINYINT1 byte-128 ~ 127
SMALLINT2 byte약 ±3만
MEDIUMINT3 byte약 ±800만
INT4 byte약 ±21억기본형
BIGINT8 byte±21억 이상대형 숫자
UNSIGNED-0 ~ 약 42억부호 제거 시 범위 확장

🔢 실수형

타입크기특징
FLOAT4 byte소수점 표현
DOUBLE8 byte정밀한 실수 표현
DECIMAL문자타입오차가 없는 정밀 계산 (금융용)

⏰ 날짜/시간형

타입예시설명
DATE2025-07-15날짜만 저장
TIME10:02:30시간만 저장
DATETIME2025-07-15 10:02:30날짜+시간 저장

🔤 문자형

타입길이특징
CHAR(n)고정길이 (최대 255자)공간 낭비 가능
VARCHAR(n)가변길이 (최대 255자)효율적 저장
TEXT최대 6만자본문 텍스트용
LONGTEXT최대 42억자대용량 텍스트

⚙️ 논리형

타입설명
BOOLTRUE / FALSE, 내부적으로 TINYINT 처리

🔒 [ 제약조건 (Constraints) ]

데이터의 무결성 보장을 위한 규칙 설정

제약조건설명예시
🚫 NOT NULLNULL 값을 허용하지 않음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 → 실패

0개의 댓글