p.80의 shop_db의 회원 테이블(member)에서 아이유 회원에 대한 정보만 추출한 후 결과 화면 인증하기
코드
결과
데이터베이스 개체 3가지 설명하기
1. 인덱스
- 인덱스란 책의 제일 뒤에 수록되는 '찾아보기'와 비슷한 개념이다.
SELECT * FROM member WHERE member_name = '아이유';
위의 코드로 실행하면 전체 테이블을 검색해서 해당 열을 가져온다. Execution Plan을 확인해보면 Full Table Scan이라고 나오는데 이건 전체 테이블을 검색했다는 의미이다.
그럼 이제 인덱스를 만들어서 실행을 해보자CREATE INDEX idx_member_name ON member(member_name); //인덱스 생성 SELECT * FROM member WHERE member_name = '아이유'; //인덱스 검색
위의 코드로 실행한 후 Execution Plan을 확인해보면
이러한 결과가 나오는데, 이건 인덱스에 해당하는 열만 검색했다는 의미이다. 이렇게 하면 검색 시간을 단축할 수 있다.
2. 뷰
- 뷰란 '가상의 테이블'로 실제 데이터를 가지고 있지 않고 진짜 테이블에 링크된 개념이다. 윈도우즈 운영 체제의 '바로 가기 아이콘'과 비슷한 개념이라고 이해하면 쉽다.
CREATE VIEW member_view AS SELECT * FROM member; //뷰 생성 코드 SELECT * FROM member_view; //뷰로 테이블 접근
뷰로 테이블에 접근하면 보안에 도움이 되고, 긴 SQL문을 간략하게 만들 수 있다는 장점이 있다.
3. 스토어드 프로시저
- 스토어드 프로시저란 MySQL에서 제공하는 프로그래밍 기능으로, 여러 개의 SQL문을 하나로 묶어서 편리하게 사용할 수 있는 기능이다.
SELECT * FROM member WHERE member_name = '나훈아'; SELECT * FROM product WHERE product_name = '삼각김밥';
위의 코드로 실행하면 두 개의 결과가 나온다. 만약 코드가 두 줄이 아니라 여러 줄이라면 매번 이 코드들을 작성하기 불편할 것이다. 그럼 이것을 하나의 스토어드 프로시저로 만들어보자.
DELIMITER // CREATE PROCEDURE myProc() BEGIN SELECT * FROM member WHERE member_name = '나훈아'; SELECT * FROM product WHERE product_name = '삼각김밥'; END // DELIMITER ;
이렇게 코드를 작성한 후
CALL myProc();
CALL문을 통해 스토어드 프로시저를 호출하면 SELECT문 2개를 호출한 것과 같은 결과가 나온다.
이번이 3번째 혼공단 활동이다!! 이번에는 SQL이라는 언어로 참여를 했는데 혼공단 활동이 끝나고 SQL에 대해 얼마나 알게 될지 기대된다☺️