MySQL - 2. 실전용 SQL - 데이터 베이스 모델링, 구축, 개체

govlKH·2023년 6월 23일
0

SQL

목록 보기
2/17

2.1 데이터 베이스 모델링

참고 : 포트번호 3306 / 사용자 이름 Root
SHOW DATABSES;

데이터베이스 모델링 - 시스템 설계
우리가 살고 있는 세상에서 사용되는 사물이나 작업을 DBMS의 데이터베이스 개체로 옮기기 위한 과정

데이터베이스를 구축할 때 데이터 베이스 모델링 과정을 통해 설계도를 만든다.
현실세계를 컴퓨터 안에 넣은 것 : '소프트웨어'
이 소프트웨어를 만드는 전체적인 과정 : '프로젝트'
복잡한 프로그램은 철저한 규정에 따라 분업화를 통해 구성

(데이터베이스 구성도 : 혼자 공부하는 SQL 교재)

기본키의 조건
1) 중복이 되면 안 된다.
2) 비어있으면 안 된다.

단계별로 이루어 지는 폭포수 모델을 통해 구성한다.
[ 프로젝트 계획 - 업무 분석 - 시스템 설계 - 프로그램 구현 - 테스트 - 유지보수 ]

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 VARCHAR(45) NULL,
PRIMARY KEY (member_id));

3) 데이터 입력하기

INSERT INTO shop_db.member (member_id, member_name, member_addr) VALUES ('testt', '나훈아', '경기 부천시 중동');
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 = 'hero');
DELETE FROM shop_db.member WHERE (member_id = 'carry');

4) 데이터 조회/활용하기

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

2.3 데이터 개체

  • 뷰, 인덱스, 스토어드 프로시저, 트리거

인덱스 사용 이유?
SELECT * FROM member WHERE member_name='아이유';
같은 경우는 모든 Full Table Scan을 진행한 것 - 너무 비효율적이다.
=> 인덱스를 사용하자!
how? 인덱스를 직접 만들자.

CREATE INDEX idx_member_name on member(member_name);

: 인덱스를 만들었기에 테이블 전체를 보는 것이 아니라, 책 뒤의 찾아보기를 통해 찾았다.

뷰?
가상의 테이블 ex) 바탕화면의 바로가기로 이해하면 수월 (실행파일은 안 쪽 깊숙히 존재하지만, 바로가기 아이콘을 통해 들어감)
사용자는 뷰에 접근하고
-> 뷰는 내부적으로 테이블과 연결되어 있기에 사용자는 뷰를 통해 테이블을 확인할 수 있다.

CREATE VIEW member_view
AS
SELECT FROM member;
: 로 뷰를 만들고
SELECT
FROM member_view;
: 으로 뷰를 통한 테이블 접근

스토어드 프로시저
SQL이 파이썬과 같은 일반 프로그램 언어는 아니기에 비슷하게 만들어 주는 것이 스토어드 프로시저
예를 들어 자주 쓰이는 정보들을 묶어서 스토어드 프로시저로 저장

DELIMITER //
CREATE PROCEDURE myProc()
BEGIN
SELECT FROM member WHERE member_name='나훈아';
SELECT
FROM product WHERE product_name='삼각김밥';
END //
DELIMITER ;

CALL로 쉽게 부르기!

CALL myProc();

결과 2개 나훈아, 삼각김밥이 나옴

profile
수학과 대학원생. 한 걸음씩 꾸준히

0개의 댓글