본문 바로가기

PROGRAMMING

[SQL] 레코드 삭제, 수정하기 (DELETE, UPDATE, TRUNCATE)

 

 

DELETE


DELETE 문은 테이블에 삽입되어있는 레코드 (행)을 삭제할때 사용되는 구문이다.

DELETE FROM 테이블 WHERE 조건;

DELETE문의 경우는 WHERE 뒤에 오는 조건에 해당하는 모든 레코드들을 삭제해버리기 때문에 조건문의 설계가 그만큼 중요하고, 그냥 대충 적고 쿼리 날리면 난리나는 경우가 생길 수도 있다.

 

CREATE TABLE CUSTOMER(
	ID INT NOT NULL,
    NAME VARCHAR(20) NOT NULL,
    AGE INT
);

위와 같은 테이블이 있고 여기에 몇개의 레코드가 삽입되어있다고 가정해본다. 그 중에 AGE가 50이 넘는 레코드들은 모두 삭제해보도록 한다.

DELETE FROM CUSTOMER WHERE AGE>50;

위 처럼 작성하게 되면 CUSTOMER 테이블에 있는 레코드들 중에서 AGE라는 컬럼에 들어있는 값이 50이 넘는 것들을 다 삭제해버리게 된다.

DELETE FROM CUSTOMER WHERE NAME='kim';

위 처럼 작성하게 되면 CUSTOMER 테이블에 있는 레코드들 중에서 이름이 'kim'인 사람을 찾아 삭제하게 된다. 만약에 이 테이블에 동명이인이 있어서 2개가 발견된다면 두개 다 삭제하게 된다.

 

 

 

UPDATE


테이블에 들어있는 레코드들 중에서 데이터를 수정해야할 것이 있을때 사용하는 구문이 UPDATE 구문이다.

UPDATE 테이블명 SET 필드 = 값 WHERE 조건;

UPDATE 구문으 구조는 다음과 같으며 UPDATE뒤의 테이블명에서 어떤 테이블에서 연산을 진행할 것인지 결정하게 되고, WHERE 조건을 통해서 어떤 조건을 성립하는 레코드들에 대해서 값을 수정할 것인지, 그리고 SET을 통해서 조건에 성립한 레코드들 중 어떤 필드를 어떤 값으로 수정할 것인지를 결정하다.

CREATE TABLE CUSTOMER(
	ID INT NOT NULL,
    NAME VARCHAR(20) NOT NULL,
    AGE INT
);

위와 같은 테이블이 있다라고 가정해보도록 한다. 위 테이블에서 kim이라는 이름을 가지고 있는 레코드가 있다고 가정하였을때 이 레코드의 나이를 변경해보도록 한다.

UPDATE CUSTOMER SET AGE=50 WHERE NAME='kim';

위 구문처럼 작성하면 된다. 만약 변경해야할 컬럼이 많다면 컴마를 이용해서 연결해주면 된다. 

 

 

TRUNCATE


테이블 전체를 비울때 사용하는 구문은 TRUNCATE이다. DELETE를 써서 삭제할 수도 있는데 한줄한줄 삭제하고 로그를 남기기 때문에 속도가 느릴 수 있다. 그래서 테이블 전체를 비울때에는 TRUNCATE를 사용하는 것이 좋다. 하지만 로그를 남기지 않아 ROLLBACK이 안된다는 것만 알고 있으면 된다.

TRUNCATE TABLE 테이블명;

위와 같이 작성하면 테이블에 있는 모든 데이터들이 저세상으로 날라간다.