데이터 변경을 위한 SQL문

이규훈·2023년 4월 9일
0

혼자 공부하는 SQL

목록 보기
2/4

INSERT

테이블에 행 데이터를 입력하는 기본적인 SQL문은 INSERT이다.

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

테이블 이름 다음에 나오는 열은 생략이 가능하다. 열 이름을 생략할 경우에 VALUES 다음에 나오는 값들의 순서 및 개수는 정의할 때의 열 순서 및 개수와 동일해야 한다.

AUTO_INCREMENT

AUTO_INCREMENT는 열을 정의할 때 1부터 증가하는 값을 입력해준다. INSERT에서는 해당 열이 없다고 생각하고 입력하면 된다. 단, 주의할 점은 AUTO_INCREMENT로 지정하는 열은 꼭 PRIMARY KEY로 지정해줘야 한다.
예시를 보자

만약 AUTO_INCREMENT로 입력되는 다음 값을 100부터 시작하도록 변경하고 싶다면 다음과 같이 실행하면 된다.ALTER TABLE 뒤에는 테이블 이름을 입력하고, 자동 증가를 100부터 시작하기 위해 AUTO_INCREMENT으로 지정하면 된다.

ALTER TABLE hongong2 AUTO_INCREMENT=100;
INSERT INTO hongong2 VALUES (NULL, '재남', 35);
SELECT * FROM hongong2;


이번에는 처음부터 입력되는 값을 1000으로 지정하고, 다음 값은 1003, 1006 으로 3씩 증가하도록 설정하는 방법을 알아보자

이때에는 `@@auto_increment_increment를 변경해야한다.

다른 테이블의 데이터를 한 번에 입력하는 INSERT INTO ~ SELECT

다른 테이블에 데이터가 입력되어 있다면 INSERT INTO ~ SELECT 구문을 사용해 해당 테이블의 데이터를 가져와서 한 번에 입력할 수 있다.

주의할 점은 SELECT 문의 열 개수는 INSERT할 테이블의 열 개수와 같아야한다. 즉 SELECT의 열이 3개라면 INSERT될 테이블의 열도 3개여야한다.

DESC 명령으로 테이블 구조를 확인할 수 있다.

데이터 수정 UPDATE

UPDATE는 기존에 입력되어 있는 값을 수정하는 명령이다.


필요하면 한꺼번에 여러 열의 값을 변경할 수 있다. 콤마(,)로 분리해서 여러 개의 열을 변경하면 된다. 다음 SQL은 도시 이름(city_name) 'New York'을 '뉴욕'으로 바꾸면서 도잇에 인구(population)는 0으로 설정하는 내용이다.

WHERE 가 없는 UPDATE 문

UPDATE 문에서 WHERE 절은 문법상 생략이 가능하지만, WHERE 절을 생략하면 테이블의 모든 행의 값이 변경된다. 일반적으로 전체 행의 값을 변경하는 경우는 별로 없으므로 주의해야한다.

그렇다면 전체 테이블의 내용은 어떤 경우에 변경해야할까? city_popul 테이블의 인구(population)열은 1명 단위로 데이터가 저장되어 있다. 아프가니스탄의 도시 Kaul의 경우 인구가 1780000명인데 이 단위를 10000명 단위로 변경하면 좀 더 읽기 쉽다. 이런 경우에는 사용하면 된다.

DELETE

테이블의 행 데이터를 삭제해야하는 경우도 발생한다. 예를 들어 회원이 탈퇴한 경우에 해당 회원의 정보를 삭제해야한다. 이럴 때 DELETE를 사용해서 행 데이터를 삭제해야한다.

만약 상위 몇 건만 지울려고하면 LIMIT를 사용하면 된다.

profile
개발취준생

0개의 댓글

관련 채용 정보