참고 : 포트번호 3306 / 사용자 이름 Root
SHOW DATABSES;
데이터베이스 모델링 - 시스템 설계
우리가 살고 있는 세상에서 사용되는 사물이나 작업을 DBMS의 데이터베이스 개체로 옮기기 위한 과정
데이터베이스를 구축할 때 데이터 베이스 모델링 과정을 통해 설계도를 만든다.
현실세계를 컴퓨터 안에 넣은 것 : '소프트웨어'
이 소프트웨어를 만드는 전체적인 과정 : '프로젝트'
복잡한 프로그램은 철저한 규정에 따라 분업화를 통해 구성
(데이터베이스 구성도 : 혼자 공부하는 SQL 교재)
기본키의 조건
1) 중복이 되면 안 된다.
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 INTOshop_db
.member
(member_id
,member_name
,member_addr
) VALUES ('hero', '임영웅', '서울 은평구 증산동');
INSERT INTOshop_db
.member
(member_id
,member_name
,member_addr
) VALUES ('iyou', '아이유', '인천 남구 주안동');
INSERT INTOshop_db
.member
(member_id
,member_name
,member_addr
) VALUES ('jyp', '박진영', '경기 고양시 장항동');
UPDATE
shop_db
.member
SETmember_addr
= '서울 은평구 증산동' WHERE (member_id
= 'hero');
DELETE FROMshop_db
.member
WHERE (member_id
= 'carry');
4) 데이터 조회/활용하기
SELECT FROM member;
SELECT member_id, member_addr FROM member;
SELECT FROM member WHERE member_name='아이유';
인덱스 사용 이유?
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개 나훈아, 삼각김밥이 나옴