데이터베이스 개체 활용

Hyun·2022년 8월 8일
0

SQL Server

목록 보기
4/4

인덱스

인덱스 : 책의 제일 뒤에 붙어 있는 '찾아보기' or '색인'과 같은 개념

AdventureWorks내 Production.Product 테이블 복사 SQL문

SELECT Name, ProductNumber, Listprice, Size INTO indexTBL FROM AdventureWorks.Production.Product;

위 이미지와 같이 테이블 데이터를 복사

01. 인덱스를 생성 하지 않고 SQL문 실행 하기

SELECT * FROM indexTBL WHERE Name = 'Minipump';

상단의 실제 실행 계획 포함(Ctrl + M) 선택 후 SQL문 실행

indexTBL 검색 비용이 100% 확인 할 수 있음

02. 인덱스를 생성 후 SQL문 실행 하기

CREATE INDEX idx_indexTBL_Name ON indexTBL(Name);
SELECT * FROM indexTBL WHERE Name = 'Minipump';

indexTBL 검색 비용이 50% 확인 할 수 있음

뷰 : 가상의 테이블 or 진짜 테이블에 Link된 개념

ShopDB를 통한 뷰 생성

CREATE VIEW uv_memberTBL
AS
SELECT memberName, memberAddress FROM memberTBL;

위 테이블의 뷰 항목에 접근 시 uv_memberTBL 생성 확인 가능

SELECT * FROM uv_memberTBL;

저장프로시저

SQL Server에서 제공하는 프로그램 기능

ShopDB를 통한 저장 프로시저 생성

CREATE PROCEDURE myProc
AS
SELECT * FROM memberTBL WHERE memberName = '당탕이';
SELECT * FROM productTBL WHERE ProductName = '냉장고';

위 테이블의 프로그램 기능 - 저장프로시저에 접근 시 myProc 생성 확인 가능

EXECUTE myProc;

트리거

테이블에 부착되어 INSERT, UPDATE, DELETE 작업이 발생되었을 때 실행되는 코드

CREATE TABLE deletedMemberTBL
(
memberID char(8),
memberName nchar(5),
memberAddress nchar(20),
deletedDate date
);

위 ShopDB 데이터베이스 항목에 접근 시 deletedMemberTBL 생성 확인 가능

CREATE TRIGGER trg_deletedMemberTBL
ON memberTBL
AFTER DELETE
AS
INSERT INTO deletedMemberTBL
SELECT memberID, memberName, memberAddress, GETDATE() FROM deleted;

위 memberTBL 테이블 내 트리거 접근 시 trg_deletedMemberTBL 생성 확인 가능

DELETE memberTBL WHERE memberName = '당탕이';

트리거 동작으로 인한 1개의 행이 영향 받음 Message 2번 발생

SELECT * FROM memberTBL;
SELECT * FROM deletedMemberTBL;

각 테이블 조회 시 위 이미지와 같이 조회되는 것을 확인 할 수 있다.

profile
노력형 개발자!

0개의 댓글