MY MEMO

[SQL SERVER] Sql Server 기본기능 배우기 (index, view, procedure, trigger, backup) 본문

STUDYING/SQL SERVER

[SQL SERVER] Sql Server 기본기능 배우기 (index, view, procedure, trigger, backup)

l_j_yeon 2018. 3. 13. 16:36

1) index 

USE ShopDB;


SELECT productName, cost, makeDate INTO indexTBL

FROM ProductTBL;

GO

=> 

ProductTBL의 데이터를 indexTBL로 옮긴다

indexTBL은 자동으로 생성된다 (이미 생성되어 있다면 중복으로 에러가 난다)


SELECT * FROM indexTBL;


=> 현재는 index가 없는 상태! 즉 색인 목차가 없는 상태!


+) '실행 계획' 창을 보는 것이 필요!


1. 인덱스가 없을 때의 실행계획


2. 인덱스를 생성했을 때


CREATE INDEX idx_indexTBL ON indexTBL(productName);


2) View

ex) 아르바이트생에게 일정 데이터를 보여줘야 할때 크리티컬한 데이터가 포함된 테이블에 권한을 주는 것이 아닌 view를 생성하여 가상의 데이터를 넘겨주는 것


CREATE VIEW uv_memberTBL

AS

SELECT memberName,memberAddress FROM memberTBL;

go 

// go는 문장을 분리해 주는 것

// go를 사용하지 않으면 위 아래 명령어가 같은 것으로 판단


SELECT * FROM uv_memberTBL;


3) 저장 프로시저


저장 프로시저를 이용하면 프로그래밍 기능까지 함께 구현할 수 있다

만약 자주 사용하는 여러개의 쿼리가 있다고 하자 (함께 사용해야 되는) 

그 쿼리들을 모아서 한번에 실행하는 것도 저장 프로시저의 역할이다.


CREATE PROCEDURE myProc

AS 

SELECT* FROM memberTBL WHERE memberName = 'tn1'

SELECT* FROM memberTBL WHERE memberName = 'tn2'

GO


EXECUTE myProc;


4) Trigger

trigger는 테이블에 부착되어서 insert, update, insert 작업에서 발생

만약 delete 처리를 했는데 어떤 데이터를 delete 처리했는지 알 수 없음 -> trigger를 이용


-- 삭제된 데이터가 저장되는 테이블

CREATE TABLE deleteMemberTBL(

memberID char(8),

memberName nchar(5),

memberAddress nchar(20),

deleteDate date -- 삭제한 날짜

);


GO


CREATE TRIGGER trg_deletedMemberTBL -- 트리거 이름

ON memberTBL -- 트리거를 부착할 테이블

AFTER DELETE -- 삭제 후 작동하게 지정

AS

-- deleted 테이블의 내용을 백업테이블에 삽입

INSERT INTO deleteMemberTBL

SELECT memberID,memberName,memberAddress, GETDATE() FROM deleted;

GO


DELETE memberTBL WHERE memberID = 't4';


GO


SELECT * FROM deleteMemberTBL;



위처럼 데이터를 delete 했을 때 2개의 적용된 명령어가 나옴


5) BackUp


현재 데이터베이스를 다른 매체에 보관하는 작업


1. 백업하고 싶은 Database에 오른쪽 클릭 -> 테스크 -> 백업


2. 기존에 있던 백업 경로를 지우고 추가 버튼 선택 -> 백업하고 싶은 장소의 파일을 선택


3. backup 성공!


4. 임의로 Data 모두 날리기


SELECT * FROM productTBL;


-- 만약에 데이터를 모두 날렸다고 가정

DELETE FROM productTBL;


-- Database를 변경(같은 데이터베이스를 사용중이면 안됨)

-- Tempdb는 기본으로 주어지는 Database

USE Tempdb;


5. Database 복원하기

데이터베이스 오른쪽 클릭 -> 데이터베이스 복원


6. 장치 -> 추가 -> 복원할 파일 선택 -> 확인!


하면 데이터베이스가 모두 복원됩니다!

Comments