본문 바로가기
Study

[SQL] Chapter 2. (3~5강)

by Hwanin99 2025. 7. 7.

관계형 데이터 모델

 

  • 튜플(Tuple, 레코드)
    • 유일성: 테이블 내에는 2개 이상의 동일 튜플이 존재할 수 없음.
    • 튜플들은 순서를 갖지 않음.

 

  • 속성(Attribute, Column, 통계 데이터에서는 변수(Variable))
    • 순서를 갖지 않음.
    • 속성값(Attribute Value)은 반드시 원자 값(Atomic Value)을 가져야 함.

 

  • 테이블 스키마: 데이터베이스 관리 시스템에서 데이터 구조를 기술.
  • 데이터베이스 스키마: 데이터베이스에서 테이블 스키마의 집합.
    • 스키마(Schema): 구조와 표현법에 대한 정의.

 

  • 키(Key): 테이블에서 특정 튜플을 식별 가능하게 하는 속성의 집합.
    • 슈퍼키(Super Key): 아무런 제약없이 튜플을 구분할 수 있는 속성의 집합.
    • 후보키(Candidate Key): 키 중 최소한의 속성만으로 구성된 키
    • 기본기(Primary Key): 후보키 중 하나만을 선택하여 식별자로 사용.
    • 외래키(Foreign Key): 다른 테이블의 기본키를 참조.

SQL(Structured Query Language)이란?

  • 관계형 데이터베이스 관리 시스템과 대화(정보를 저장하고 처리하기 위한)하기 위한 언어이다.
  • 데이터베이스 관리 시스템에 요청하는 것을 쿼리(Query)라고 한다.
종류 명칭 명령어 설명
데이터 정의어 DDL (Data Definition Language) · CREATE
· DROP
· ALTER
· RENAME
· TRUNCATE
· 데이터와 그 구조를 정의하는 언어.
· 데이터를 저장하고 관리하기 위해 테이블 만들기, 지우기,
  계정에 권한 주기 등에 사용.
데이터 조작어 DML (Data Manipulation Language) · SELECT
· INSERT
· UPDATE
· DELETE
· 데이터를 조작할 때 사용하는 언어.
· 저장된/저장할 데이터를 수정, 삭제, 추출, 가공 시 사용.
데이터 제어어 DCL (Data Control Language) · GRANT
· REVOKE
· 데이터베이스 접근 권한의 부여/제거 가능.

3강.

데이터베이스 모델링

: 테이블의 구조를 미리 설계하는 개념, 즉 현실에서 쓰이는 것을 테이블로 변경하기 위한 작업.

  • 프로젝트를 진행하기 위해서는 대표적으로 폭포수 모델을 사용
    • 데이터베이스 모델링은 폭포수 모델의 업무 분석과 시스템 설계 단계에 해당.
    • 이 단계를 거치면 데이터베이스 개체인 테이블 구조가 결정.

폭포수 모델


전체 데이터베이스 구성도


4강.


데이터 형식

  • 정수형
데이터 형식 바이트 수 숫자 범위
TINYINT 1 -128 ~ 127
SMALLINT 2 -32768 ~ 32767
INT 4 약 -21억 ~ 21억
BIGINT 8 약 -900경 ~ 900경
  • 문자형
데이터 형식 바이트 수
CHAR(개수) 1 ~ 255
VARCHAR(개수) 1 ~ 16383

데이터베이스 만들기

  • 작은 따옴표(')가 아닌 백틱(`)
    • 컬럼명이나 스키마명은 백틱으로 감싸야 함.
CREATE SCHEMA `Your_Schema_Name`

 

테이블 만들기

CREATE TABLE shop_db.member(
  `member_id` CHAR(8) NOT NULL,
  `memer_name` CHAR(5) NOT NULL,
  `member_addr` VARCHAR(45) NULL,
  PRIMARY KEY (`member_id`));
약어 의미 설명
PK Primary Key · 기본 키
· 해당 컬럼이 테이블의 고유 식별자 역할
NN Not Null · Null을 허용하지 않음.
UQ Unique · 고유값 제약조건.
· 같은 값을 가진 레코드가 존재할 수 없음.
B Binary · 문자열 컬럼을 바이너리로 저장. (대소문자 구분)
· 주로 CHAR 또는 TEXT 형과 함께 사용.
UN Unsigned · 부호없는 숫자.
· 음수를 허용하지 않고 범위가 더 넓어짐.
ZF Zero Fill · 숫자를 0으로 채움.
AI Auto Increment · 자동 증가.
· 새 레코드 추가 시 자동으로 1씩 증가.
· 주로 기본 키에 사용.
G Generated Column · 생성된 컬럼.
· 다른 컬럼 값을 계산해서 자동으로 채워지는 컬럼.

 

테이블에 값 입력

INSERT INTO shop_db.member (`member_id`,`member_name`,`member_addr`) VALUES ('tess','나훈아','경기 부천시 중동');
INSERT INTO shop_db.member (`member_id`,`member_name`,`member_addr`) VALUES ('hero','임영웅','서울 은평구 중산동');
INSERT INTO shop_db.member (`member_id`,`member_name`,`member_addr`) VALUES ('iyou','아이유','인천 남구 주안동');
INSERT INTO shop_db.member (`member_id`,`member_name`,`member_addr`) VALUES ('jyp','박진영','경기 고양시 장항동');
  • 컬럼명은 백틱, 값은 문자열이기에 작은 따옴표로 감싸야 함.
출력 결과

 

테이블 값 변경

UPDATE shop_db.member SET member_addr='서울시 강동구 천호동' WHERE member_id='heromembermember'
출력 결과

 

테이블 값 삭제

DELETE FROM shop_db.member WHERE member_id='hero'
출력 결과

 

특정 Column만 보기

SELECT member_id, member_name FROM shop_db.member
출력 결과

 

특정 Row만 보기

SELECT * FROM shop_db.memeber WHERE member_name='아이유'
출력 결과

 

속성 이름 변경해서 보기

SELECT member_id 아이디, member_name 이름, member_addr 주소 FROM shop_db.member
출력 결과
  • 띄어쓰기는 작은 따옴표로 감싸기.
    • Ex) SELECT member_id '멤버 아이디' FROM shop_db.member

 

범위 내의 테이블 값 보기

SELECT mem_name, height, mem_number FROM member WHERE height >= 165 OR mem_number > 6
출력 결과

 

SELECT mem_name, addr FROM member WHERE addr IN ('경기','전남','경남')
출력 결과

 

SELECT * FROM member WHERE mem_name LIKE '우%'
출력 결과
  • 정규 표현식 %는 여러 글자.

 

SELECT * FROM member WHERE mem_name LIKE '__핑크'
출력 결과
  • 정규 표현식 _는 개당 한 글자

5강.

Procedure 만들기

DELIMITER //
CREATE PROCEDURE proc_name()
BEGIN
	# 자주 쓰는 예약어
    SELECT * FROM member WHERE member_name = '나훈아';
    SELECT * FROM product WHERE product_name = '삼각김밥';
END //
DELEMITER;

CALL proc_name(); #호출