데이터베이스(DB, DataBase): 데이터를 체계적으로 모아 놓은 집합
DBMS (DataBase Management System): 데이터베이스를 관리·운용하는 소프트웨어
조건:
종류: MySQL, MongoDB, Oracle 등
SQL (Structured Query Language): DBMS에서 데이터를 구축, 관리, 활용하기 위해 사용하는 언어
계층형 DBMS: 트리 형태 구조, 상하 관계 존재
망형 DBMS: 계층 구조를 벗어나 여러 노드와 상호작용 가능
관계형 DBMS(RDBMS)
객체지향형 DBMS
객체관계형 DBMS
데이터베이스 모델링: 테이블 구조를 설계하는 과정
프로젝트: 현실 세계 업무를 시스템으로 구현하는 과정
폭포수 모델:
프로젝트 계획 → 업무 분석 → 시스템 설계 → 프로그램 구현 → 테스트 → 유지보수
DBMS(MySQL) → 데이터베이스(폴더) → 테이블(파일)
행(row): 실제 데이터 단위
기본키(Primary Key): 각 행을 구분하는 유일한 값
데이터 형식: 열에 지정, 문자, 숫자 등
CREATE SCHEMA shop_db;
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)
);
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);
UPDATE shop_db.member
SET member_addr = '영국 런던 먹자골목'
WHERE member_id = 'carry';
DELETE FROM shop_db.member
WHERE member_id = 'carry';
SELECT * FROM member;
SELECT member_name, member_addr FROM member;
SELECT * FROM member WHERE member_name = '아이유';
테이블(Table): 데이터 저장 기본 단위
인덱스(Index): 조회 속도 향상
CREATE INDEX idx_member_name ON member(member_name);
CREATE VIEW member_views AS
SELECT * FROM member;
DELIMITER //
CREATE PROCEDURE myProc()
BEGIN
SELECT * FROM member WHERE member_name = '나훈아';
SELECT * FROM product WHERE product_name = '삼각김밥';
END //
DELIMITER ;
CALL myProc();
CREATE SCHEMA '데이터베이스 이름';
-- CREATE DATABASE로 생성해도 된다.
CREATE TABLE '데이터베이스 이름'.'테이블 이름' (
-- 구축 내용
PRIMARY KEY('기본키 컬럼명')
);
CREATE INDEX 인덱스_이름 ON 테이블_이름(인덱스로_만들_열_요소);
CREATE VIEW 뷰_이름 AS SELECT * FROM 테이블;
DELIMITER //
CREATE PROCEDURE 프로시저_이름()
BEGIN
-- 프로시저 내용
END //
DELIMITER ;