DATABACE/MYSQL

MySQL chapter 03. MySQL 전체 운영 실습 3.3 테이블 외의 데이터베이스 개체의 활용

너래쟁이 2018. 2. 17. 18:49

MySQL chapter 03. MySQL 전체 운영 실습 


3.3 테이블 외의 데이터베이스 개체의 활용


3.3.1 인덱스


p74

1
2
3
4
5
6
CREATE TABLE indextbl (first_name VARCHAR(14), last_name VARCHAR(16), hire_date DATE);
INSERT INTO indextbl
    SELECT first_name, last_name, hire_date
    FROM employees.employees
    LIMIT 500;
SELECT * FROM indexTBL;
cs

1
select * from indexTbl where first_name = 'Mary';
cs



p76

1
2
3
CREATE index idx_indexTBL_firstname ON indexTBL(first_name);
 
select * from indexTbl where first_name = 'Mary';
cs

3.3.2 뷰
// 뷰(view)란 가상의 테이블이라고 생각하면 된다.
// 사용자의 입장에서는 테이블과 동일하게 보이지만, 뷰는 실제 행 데이터를 가지고 있지 않다
// 그 실체는 없는 것이며, 진짜 테이블에 링크(Link)된 개념이라고 생각하면 된다.
// 그래서 뷰를 SELECT하면 결국 진짜 테이블의 데이터를 조회하는 것과 동일한 결과가 된다.




p79


1
2
3
4
5
CREATE VIEW uv_memberTBL
AS
    SELECT membertName, membertaddress FROM memberTBL;
 
SELECT * FROM uv_memberTBL;
cs


3.3.3 스토어드 프로시저

// 스토어드 프로시저(Stored Procedure)란 MySQL에서 제공해주는 프로그래밍 기능을 말한다.

// 즉, SQL문을 하나로 묶어서 편리하게 사용하는 기능이다.

// 실무에서는 SQL문 (주로 SELECT)을 매번 하나하나 수행하기보다는 스토어드 프로시저로 만들어 놓은 후에 스토어드 프로시저를 호출하는 방식을 많이 사용한다.



p81

1
2
SELECT * FROM memberTBL WHERE membertName = '당탕이';
SELECT * FROM producttbl WHERE productName = '냉장고';
cs

1
2
3
4
5
6
7
8
9
DELIMITER //
CREATE PROCEDURE myProc()
BEGIN
    SELECT * FROM memberTBL WHERE membertName = '당탕이';
    SELECT * FROM producttbl WHERE productName = '냉장고';
END //
DELIMITER ;
 
CALL myProc();
cs


3.3.4 트리거
// 테이블에 부착되어서 테이블에 INSERT나 UPDATE 또는 DELETE 작업이 발생되면 실행되는 코드
// 나중에 회원에서 탈퇴한 사람이 누구 누구인지 정보를 어떻게 알 수 있을까?
// 회원 테이블(memberTBL)에 삭제 작업이 일어날 경우에 삭제되기 전에 미리 다른 곳에 삭제될 데이터를 
'자동으로' 저장해주는 기능이 있다면 그런 실수를 하지 않게 될 것이다.


1
2
3
4
5
6
INSERT INTO memberTBL VALUES ('Figure''연아''경기도 군포시 당정동');
SELECT * FROM membertbl;
UPDATE membertbl SET membertaddress = '서울시 강남구 역삼동' WHERE membertName = '연아';
SELECT * FROM membertbl;
DELETE FROM membertbl WHERE membertName = '연아';
SELECT * FROM membertbl;
cs