http://www.sqler.com/126747


 

SELECT * FROM discounts

TRUNCATE TABLE discounts

SELECT * FROM discounts

 

discounts 테이블의 데이터를 살짝 조회해 보구요..

이어서 TRUNCATE TABLE 로 날린 후에.. 다시 데이터를 SELECT 해 보는 것입니다.

간단 하지요?

 

TRUNCATE TABLE의 구문 정보 입니다.

 

TRUNCATE TABLE

테이블에 있는 모든 행을 삭제한다.

TRUNCATE TABLE table_name

 - DELETE와는 달리 모든 변경 사항을 로그에 기록하지 않고 할당 받았던 전체 데이터 

    페이지의 반납 상황만을 로그에 기록한다.

 - DELETE문 보다 빠르다.

 - 즉시 테이블을 위한 데이터와 색인을 위한 공간을 반환한다.

 - 테이블은 여전히 존재한다.

  - 테이블 소유자만이 수행할 수 있다.

 

TRUNCATE TABLE table_name

 

자 수고 하셨습니다. 이제 다른 이야기를 드리지요..

회사에 아주아주 소중한 고객에 대한 데이터가 있습니다.

이 고객 한분한분의 정보로 회사가 운영되는 것은? 이루 말할 필요가 없지요..

그런데 실수고.. UPDATE나 DELETE 구문에 WHERE절 없이 수정을 하거나..

잘못 처리를 해 버렸습니다.

이런 경우를 미연에 방지하기위해 하는 방식이 있답니다.

 

다음 상황을 생각해 보지요..

DELETE FROM titleauthor WHERE au_ord = 1

이렇게 수행해야할 쿼리가 있다고 생각 해 보세요.. WHERE절이 있습니다.

특정 조건에 맞는 녀석만 삭제 한다.. 라는 의미 이지요..

그런데.. 최근시간도 가까와 지고.. 시간도 없고 해서.. 쿼리를 쓰던 도중.. 실수로.

DELETE FROM titleauthor

이렇게... 중요한 데이터를 모두 삭제해 버렸다고 생각해 보세요....

그것두 회사에서 가장~~ 중요한 고객 데이터..

또 실수로.. 백업도 한번도 안해서리.... 복구도 불가한 상황이라면????

모가지 아니면? 명퇴 둘중의 하나 겠지요... T.T

 

이런 경우를 위해 TRNASACTION 이라는 녀석을 사용이 가능 하답니다.

11장에서 자세히 배울 테지만..  여기선 우선 알려 드리는 겁니다.

먼저..

 

BEGIN TRAN

 

구문을 실행 합니다. - 별반 다를게 없는듯 하지요?

그후..

 

 

SELECT * FROM titleauthor
DELETE FROM titleauthor WHERE au_ord = 1
SELECT * FROM titleauthor

 

구문을 실행 합니다.

그럼? DELTETE가 이루어 져서 데이터가 삭제 된게 보이실 겁니다. 글치요?

저희가 원하는 결과가 된 것입니다.

그리고 나서..

 

 

COMMIT TRAN

 

을 실행 합니다. - 역시나 별반 다를게 없는듯 하지요?

 

 

SELECT * FROM titleauthor

 

역시나 전혀 다를바 없는 DELETE 가 되었습니다.

 

 

자 이제 문제상황을 가정해 보지요..

 

BEGIN TRAN

 

우선 실행 하세요.. 재밌는 구경이 되실 겁니다.

 

그후..

 

SELECT * FROM titleauthor
DELETE FROM titleauthor
SELECT * FROM titleauthor

 

이렇게~~~  실수로 DELETE절의 WHERE절을 빼버려서... 

데이터가 몽창 날아갔다고 가정해 보세요..

세번째 줄의 SELECT 를 해보심? 정말 데이터가 날아간듯 합니다.

 

하지만!!! 저희는 BEGIN TRAN 이라는 녀석을 사용하는 중이었습니다.

 

ROLLBACK TRAN

 

을 실행해 보세요..

그리고 나서?

 

 

SELECT * FROM titleauthor

 

해 보세요?

어떠 신가요? 깜쪽 같이 데이터가 살아 났습니다.

하느님이 보우하사 이지요. ^_^

이렇게 데이터를 수정하기전에 꼭 BEGIN TRAN을 하시고..

제대로 되었다면? COMMIT TRAN  실수라면? 꼬옥~~~ ROLLBACK TRAN 하시는

버릇을 들이시길 바랍니다.

코난이는 항상 데이터를 수정할 일이 생기면? (검색은 읽기만 하는 것이니 필요 없지요.)

BEGIN TRAN 과  COMMIT TRAN을 우선 적어 두고 시작 한답니다.

 

나중에 실수로 COMMIT TRAN을 까먹으셔도 안됩니다.

 

끝으로~~~~ 저희가 수정, 삭제 등의 작업으로 데이터가 엉망이 된 Pubs 데이터베이스를

다시 설치해 보도록 하지요..

MSSQL서버가 설치된 디스크의 MSSQL 하위의 install 디렉토리를 보시면?

instpubs.sql 이라고 되어 있는 화일이 있습니다.

이 화일을 쿼리 어낼라이져에서 열어 보세요..

아마 상당히 긴 쿼리가 보이실 겁니다. 그렇지요?

실행 하시기 전에...

SQL서버와 연결된 사용자를 모두 닫으시고.. 엔터프라이즈 관리자, 쿼리 어낼라이져의 연결을

속편하게 다 닫으시고...  (PUBS DB를 사용하는 사용자..)

그후 이 스크립트를 실행 하시면? 저희의 Pubs 데이터베이스가 재구축 되는 것이 보이실

겁니다.

이 install 디렉토리를 보시면? instnwnd.sql 화일도 보이실 겁니다.

이 화일은 또하나의 샘플 데이터베이스인 NORTHWIND 데이터베이스를 리빌드 하는

스크립트 랍니다.

 

자 이제 데이터의 수정도 마무리가 되신 거네요. ^_^ 추카 드립니다.~~~

앞으로 배울 내용에 대해 조금 이야기를 더 드리지요.. 앞으로 배우실 내용은?

 

 

2. 데이터베이스의 생성(DB자체를 생성)

(이제 할 부분입니다.)

 

 

3. 데이터 베이스 개체의 생성(테이블, 뷰......)

(데이타베이스의 생성이 끝나면 합니다.)

 

 

1. 검색 수정 삭제

(이미 했지요 ^_^)

 



+ Recent posts