[DB] 데이터 변경을 위한 SQL

touhou09·2025년 1월 8일
0

컴퓨터 이론

목록 보기
36/47

SELECT 문이 데이터를 수정하지 않고 추출하는 쿼리라면 데이터를 수정할 수 있는 쿼리문 또한 있다.

새로 데이터를 입력하는 경우 SELECT, 데이터를 수정하는 경우 UPDATE, 데이터를 삭제하는 경우 DELETE 등이 있다.

INSERT

기본 문법

INSERT는 테이블에 데이터를 삽입하는 명령이다.

INSERT INTO 테이블 [(열1, 열2)] VALUES (값1, 값2)

위의 기본 형태에서 만약 테이블에 존재하는 열을 추가하지 않는다면 빈 곳에는 NULL 값이 들어간다.

AUTO_INCREMENT

AUTO_INCREMENT는 열을 정의할 때 1부터 증가하는 값을 입력한다.

INSERT에서 해당 열이 없다고 생각하고 입력하면 되는데, 주의사항으로는 AUTO_INCREMENT로 지정하는 열은 꼭 PK로 지정해줘야 한다는 점이 있다.
(PRIMARY KEY에 대해서는 추후에 KEY에서 설명한다.)

CREATE TABLE ASDF (
	ID INT AUTO_INCREMENT PRIMARY KEY,
    NAME CHAR(4),
    AGE INT);

이후 데이터를 입력할 때 ID 부분은 제외해도 1부터 순차적으로 증가하는 데이터가 나온다.

만약 AUTO_INCREMENT를 특정 값부터 시작하도록 하고 싶으면 아래처럼 하면 된다.

ALTER TABLE 테이블명 AUTO_INCREMENT = 100;

또한 값이 올라가는 간격을 변경하고 싶다면 시스템 변수인 @@auto_increment_increment 값을 변경하면 된다.

INSERT INTO ~ SELECT

많은 양의 데이터를 이러한 방식으로 직접 타이핑해서 넣으면 오랜 시간이 걸린다.
다른 테이블에 데이터가 이미 입력되어 있다면 INSERT INTO ~ SELECT를 사용해 해당 테이블의 데이터를 가져와 한번에 입력할 수 있다.

INSERT INTO 테이블-명 (열1, 열2, ...)
	SELECT QUERY;

UPDATE

데이터를 수정하는 경우 또한 빈번하게 발생한다.
이럴 때 UPDATE를 사용해서 내용을 수정하도록 할 수 있다.

UPDATE 테이블
	SET 열1=값1, 열2=값2, ..
    WHERE 조건 ;

WHERE이 없는 경우

사용 자체는 간단하지만 WHERE에서 주의할 사항이 있다.
문법상 생략 자체는 가능하지만, 생략한다면 테이블의 모든 행의 값이 변경된다.
일반적으로 전체 행의 값을 변경하는 경우는 없으므로 이러한 조건을 잘 확인하면서 작성하도록 해야한다.

DELETE

UPDATE와 아주 유사한 방식으로 사용한다.

DELETE FROM 테이블명 WHERE 조건;

행 단위로 삭제한다.

대용량 테이블의 삭제 비교

대용량 테이블을 삭제하는 경우
DELETE, DROP, TRUNCATE 의 3가지 방식으로 삭제가 가능하다.

DELETE는 삭제하는데 가장 오랜 시간이 걸리며, 테이블 크기에 따라 삭제 시간이 비례하다.

DROP의 경우 테이블 자체를 삭제해버린다. 바로 삭제되며 순식간에 삭제된다.

마지막으로 TRUNCATE는 DELETE와 동일한 효과를 내지만 속도가 무척 빠르다. 하지만 TRUNCATE에서는 WHERE을 사용할 수 없다.

DELETE와 TRUNCATE는 빈 테이블을 남기고 내용만 삭제하며, DROP은 테이블을 아예 없애는 기능을 한다.

profile
Engineer가 되기 위하여

0개의 댓글