[MySQL] 혼자 공부하는 SQL - 1, 2강

SeungWoo Cha·2025년 10월 15일

데이터베이스와 MySQL 기초 정리

1강. 데이터베이스 알아보기

1.1. 기본 개념

  • 데이터베이스(DB, DataBase): 데이터를 체계적으로 모아 놓은 집합

  • DBMS (DataBase Management System): 데이터베이스를 관리·운용하는 소프트웨어

    • 조건:

      • 대용량 데이터 관리 가능 (엑셀은 한계 있음)
      • 데이터 공유 가능 (여러 명이 동시에 접근 가능)
    • 종류: MySQL, MongoDB, Oracle 등

  • SQL (Structured Query Language): DBMS에서 데이터를 구축, 관리, 활용하기 위해 사용하는 언어

1.2. DBMS 종류

  1. 계층형 DBMS: 트리 형태 구조, 상하 관계 존재

  2. 망형 DBMS: 계층 구조를 벗어나 여러 노드와 상호작용 가능

  3. 관계형 DBMS(RDBMS)

    • 최소 단위는 테이블
    • 테이블은 행(row)열(column)로 구성
    • 예: MySQL, Oracle
  4. 객체지향형 DBMS

  5. 객체관계형 DBMS

1.3. DBMS에서 사용되는 언어

  • SQL은 국제표준화기구에서 표준으로 지정됨
  • 각 DBMS마다 고유 확장이 존재

1.4. MySQL 설치

  • Workbench: 서버 자체는 눈에 보이지 않음
  • SQL 문을 작성하고 실행하여 데이터베이스를 관리

2강. 실전용 SQL 미리 맛보기

2.1. 데이터베이스 모델링

  • 데이터베이스 모델링: 테이블 구조를 설계하는 과정

  • 프로젝트: 현실 세계 업무를 시스템으로 구현하는 과정

  • 폭포수 모델:

    프로젝트 계획 → 업무 분석 → 시스템 설계 → 프로그램 구현 → 테스트 → 유지보수

데이터베이스 구성

  • DBMS(MySQL) → 데이터베이스(폴더) → 테이블(파일)

  • 행(row): 실제 데이터 단위

  • 기본키(Primary Key): 각 행을 구분하는 유일한 값

    • 중복 불가, NULL 불가
    • 테이블 당 하나만 지정 가능
  • 데이터 형식: 열에 지정, 문자, 숫자 등


2.2. 데이터베이스 구축 절차

1. 데이터베이스 만들기

CREATE SCHEMA shop_db;

2. 테이블 설계

CREATE TABLE shop_db.member (
  member_id CHAR(8) NOT NULL,
  member_name CHAR(5) NOT NULL,
  member_addr CHAR(20) NULL,
  PRIMARY KEY (member_id)
);

CREATE TABLE shop_db.product (
  product_name CHAR(10) NOT NULL,
  cost INT NOT NULL,
  make_date DATE NULL,
  company CHAR(5) NULL,
  amount INT NULL,
  PRIMARY KEY (product_name)
);

3. 데이터 입력

INSERT INTO shop_db.member (member_id, member_name, member_addr) VALUES
('tess', '나훈아', '경기 부천시 중동'),
('hero', '임영웅', '서울 은평구 증산동'),
('iyou', '아이유', '인천 남구 주안동'),
('jyp', '박진영', '경기 고양시 장향동');

INSERT INTO shop_db.product (product_name, cost, make_date, company, amount) VALUES
('바나나', 1500, '2021-07-01', '델몬트', 17),
('카스', 2500, '2022-03-01', 'OB', 3),
('삼각김밥', 800, '2023-09-01', 'CJ', 22);

4. 데이터 수정

UPDATE shop_db.member
SET member_addr = '영국 런던 먹자골목'
WHERE member_id = 'carry';

5. 데이터 삭제

DELETE FROM shop_db.member
WHERE member_id = 'carry';

6. 데이터 조회

SELECT * FROM member;
SELECT member_name, member_addr FROM member;
SELECT * FROM member WHERE member_name = '아이유';

2.3. 데이터베이스 개체

  1. 테이블(Table): 데이터 저장 기본 단위

  2. 인덱스(Index): 조회 속도 향상

CREATE INDEX idx_member_name ON member(member_name);
  1. 뷰(View): 가상의 테이블, 실제 데이터는 없음
CREATE VIEW member_views AS
SELECT * FROM member;
  1. 스토어드 프로시저(Stored Procedure)
DELIMITER //
CREATE PROCEDURE myProc()
BEGIN
    SELECT * FROM member WHERE member_name = '나훈아';
    SELECT * FROM product WHERE product_name = '삼각김밥';
END //
DELIMITER ;

CALL myProc();
  1. 트리거(Trigger), 함수(Function), 커서(Cursor)
  • 트리거: 특정 이벤트 발생 시 자동 실행
  • 함수: 재사용 가능한 SQL 코드 블록
  • 커서: SELECT 결과를 한 행씩 처리

정리

1. 데이터베이스

1.1. 기본 개념

  1. 데이터베이스
  2. DBMS
  3. SQL

1.2. DBMS의 종류

  1. 계층형 DBMS
  2. 망형 DBMS
  3. 관계형 DBMS (RDBMS - MySQL, Oracle)
  4. 객체지향형 DBMS
  5. 객체관계형 DBMS

2. SQL

2.1. 데이터베이스

1. 기본 개념2

  1. 데이터베이스 모델링
  2. 프로젝트
  3. 폭포수 모델

2. 전체 데이터베이스 구상도

  1. Primary key
  2. 데이터 형식

2.2. 데이터베이스

1. 데이터베이스 구축 절차

  1. 데이터베이스 구축
CREATE SCHEMA '데이터베이스 이름'; 
-- CREATE DATABASE로 생성해도 된다.
  1. 테이블 구축
CREATE TABLE '데이터베이스 이름'.'테이블 이름' (
  -- 구축 내용
  PRIMARY KEY('기본키 컬럼명')
);
  1. 데이터 입력/수정/삭제

2.3. 데이터베이스 개체 (여러 형태)

  1. 테이블
  2. 인덱스
CREATE INDEX 인덱스_이름 ON 테이블_이름(인덱스로_만들_열_요소);
  1. 뷰(View)
CREATE VIEW 뷰_이름 AS SELECT * FROM 테이블;
  1. 스토어드 프로시저(Stored Procedure)
DELIMITER //
CREATE PROCEDURE 프로시저_이름()
BEGIN
  -- 프로시저 내용
END //
DELIMITER ;
  1. 트리거, 함수, 커서
profile
한 발자국씩

0개의 댓글