본문 바로가기
🎪 놀고있네/MS SQL

[SQL Server] 테이블/데이터 지우기(TRUNCATE, DELETE, DROP)

by 냥장판 2019. 12. 30.
반응형

 

안녕하세요 냥장판 입니다🐱‍👤🐱‍👤

이번 게시글에서는 삭제에 대한 SQL 문을 살펴보도록 하겠다.

 

삭제할 수 있는 명령어는 DELETE, DROP, TRUNCATE 이다.

 

 

 

우선 아래와 같은 테이블을 만들고, 데이터를 삽입했다.

 

 

 

 

아래는 VS Code 에서 SELECT를 실행한 화면이다. 참고하면 된다.

 

 

 

Database, Table 생성하고 데이터 삽입하는 코드는 아래를 참고하면 된다.

 

/* Database 생성하기 */
USE master
GO
IF NOT EXISTS (
   SELECT name
   FROM sys.databases
   WHERE name = N'TutorialBasic'
)
CREATE DATABASE [TutorialBasic]
GO


/* Table 생성하기 */
USE [TutorialBasic] 

IF OBJECT_ID('dbo.mycatsanddogs', 'U') IS NOT NULL 
DROP TABLE dbo.mycatsanddogs
GO 

CREATE TABLE dbo.mycatsanddogs
( 
   Name      [NVARCHAR](50)  NOT NULL PRIMARY KEY, -- primary key column 
   Species  [NVARCHAR](50)  NOT NULL, 
   Breeds  [NVARCHAR](50)  NOT NULL, 
   Size  [NVARCHAR](50)  NOT NULL, 
   Age  INT NOT NULL,  
   EaseofTraining     [NVARCHAR](50)  NOT NULL
)

INSERT INTO dbo.mycatsanddogs 
   ([Name],[Species], [Breeds],[Size],[Age], [EaseofTraining]) 
VALUES 
	(N'송', N'Dog', N'Maltese',N'Medium',8, N'Average'),
    (N'민식',N'Dog', N'Beagle',N'Monster', 12, N'Difficult'), 
    (N'박사님',N'Dog', N'Chihauhau',N'Small', 15, N'Easy'), 
    (N'꾸이', N'Cat', N'Russian Blue', N'Medium', 3, N'Difficult'), 
    (N'호이', N'Cat', N'Domestic', N'Medium', 2, N'Crazy'), 
	(N'치즈', N'Cat', N'Stray', N'Large', 4, N'Average')
GO

 

1. DELETE

DELETE 문은 조건절을 포함해서 테이블의 행(Row)를 삭제할 수 있다.

DELETE는 DML(Data Manipulation Language)이고, 데이터를 조작할 수 있도록 하는 명령어이다.

 

e.g. 10살 이상인 강아지, 고양이 삭제

 

 

 

작성 방법은 아래와 같다.

DELETE FROM table_name WHERE condition;

 

그러나 유의해야할 것이, 조건절을 사용하지 않고 그냥 DELETE 문을 써버리면 행데이터가 전부 삭제된다!

 

10살 이상인 아이들을 삭제해보자.

 

 

다시 데이터를 추가하려면 INSERT 문을 통해 데이터를 추가할 수 있다.

 

 

2. DROP

 

DROP은 데이터베이스에서 테이블 자체를 삭제하는 DDL(Data Definition Language) 명령어이다.

 

DROP TABLE [IF EXISTS] table_name;

 

 

한번 테스트해보자.

복사본을 만들었다.

원본인 mycatsanddogs 테이블의 컬럼을 살펴보면

이렇게 컬럼의 대표값들을 확인할 수 있다.

 

복사본을 삭제했더니

행까지 전부 삭제되어 껍데기만 남고 아무런 정보가 없다.

 

 

테이블 자체가 삭제되었기 때문에, 테이블을 CREATE 구문을 통해 생성해야한다!


 

그러면 컬럼만 삭제하고 싶을 때는?

 

 

데이블을 변경할 수 있는 ALTER와 DROP을 함께 사용하면 된다.

 

ALTER TABLE table_name DROP COLUMN column_name;

테이블에 있던 컬럼들은 아래와 같다.

 

이 중에 EaseofTraining 컬럼을 삭제해보겠다.

 

 

컬럼이 정상적으로 삭제되었다.

 


3. TRUNCATE

TRUNCATE 도 DELETE와 마찬가지고 행 전체을 삭제하는 구문이다.

그러나 DELETE는 DML인데 반해 TRUNCATE는 DDL 명령어이다.

TRUNCATE는 행은 삭제하지만 테이블 구조 자체는 유지하고 데이터만 삭제한다.

 

TRUNCATE TABLE table_name;

 

테스트해보자

 

아래와 같은 테이블이 있다.

 

위에 처럼 테이블 구조는 남고 행 데이터 전체가 삭제되었다.

 

 

정리해보면 아래와 같다.

 

 

그럼 이만!


 

 

반응형

댓글