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 |