관리 메뉴

코딩 브이로그

[혼자 공부하는 SQL] 데이터 변경을 위한 SQL문 (INSERT, UPDATE, DELETE) 본문

SQLD

[혼자 공부하는 SQL] 데이터 변경을 위한 SQL문 (INSERT, UPDATE, DELETE)

표준프레임워크 풀스텍 개발자 홍의표 2024. 10. 25. 15:49

안녕하세요, 혼자 공부하는 SQL를 보고 학습한 자료를 남깁니다.

 

데이터 변경을 위한 SQL문

테이블의 내용을 변경하는 구문이다.

 

손코딩 실습

먼저, USE market_db; 를 실행한다.

■ CREATE문 및 INSERT문

1) CREATE TABLE hongong1 VALUES (toy_id INT, toy_name CHAR(4), age INT);

hongong1 테이블을 다음과 같은 열들을 갖게 해서 생성한다.

2) INSERT INTO hongong1 VALUES (1, '우디', 25);

hongong1 테이블에 다음과 같은 쿼리문을 수행해서 데이터를 입력할 수 있다.

3) INSERT INTO hongong1(toy_id, toy_name) VALUES (2, '버즈');

만일 나이는 입력하지 않고 싶다. 그러면 컬럼명을 직접 입력하고 값을 입력할 수 있다.

4) INSERT INTO hongong1 (toy_id, age, toy_name) VALUES ('제시', 20, 3);

컬럼명을 직접 입력해서 데이터를 입력하면 임의대로 값의 순서를 변경해서 맞춰서 데이터를 입력할 수 있다.

 

  AUTO_INCREMENT

AUTO_INCREMENT는 반드시 PRIMARY KEY로 지정을 해주어야 한다.

AUTO_INCREMENT 를 많이 사용을 한다.

NULL 값을 id값으로 입력을 해도 자동으로 증가하는 값을 입력해준다.

SELECT LAST_INSERT_ID();

마지막 AUTO_INCREMENT된 값을 확인할 수 있다.

AUTO_INCREMENT=${VALUE};

ALTER TABLE hongong2 AUTO_INCREMENT=100; 

을 입력을 하면 테이블의 AUTO_INCREMENT 값이 변경된 것을 확인할 수 있다.

값을 입력을 하고 조회를 해보면 

다음과 같이 toy_id값에 100이 입력된 것을 볼 수 있다.

hongong3이라는 테이블을 새로 만들고

toy_id 값을 AUTO_INCREMENT로 해준다.

ALTER TABLE로 AUTO_INCREMENT 값을 1000으로 입력을 해주면

1000부터 입력이 된다.

만일 3씩 건너뛰고 싶다면

SET @@auto_increment_increment=3;

을 입력해주면 된다.

다시 이전에 만들었던 hongong2 테이블에 데이터를 입력해 보면 

SET @@auto_increment_increment=3;이 적용되어서

103, 106, 109 이렇게 ID값이 자동으로 입력되는 것을 볼 수 있다.

INSERT INTO ~ SELECT

INSERT문을 수행할 때 SELECT문을 사용해서도 INSERT문이 실행될 수 있다.

대량의 데이터를 빠르게 SELECT문을 이용하여 INSERT문으로 데이터를 입력할 수 있다.

world 데이터베이스의 city의 수를 조회하면 다음과 같다.

4079개의 도시의 수를 전부 다 조회할 수 있다.

DESC world.city;

DESC를 사용하면 해당 테이블의 정보를 조회할 수 있다.

모두 조회를 하면 검색 속도가 오래 걸리니

LIMIT을 사용해서 데이터를 조회한다.

우리는 world의 city테이블의 정보를 가져오고 싶은 것이다.

먼저 새 테이블을 생성해 볼 것이다.

city_popul 이라는 테이블을 만든다.

그리고 INSERT INTO ~ SELECT문을 사용해서 

약 4,000건이 넘는 데이터를, world.city 테이블의 데이터를 city_popul 테이블에 저장한다.

SELECT * FROM city_popul 을 드래그 해서 번개 모양 버튼을 클릭 해서 실행을 하면 다음과 같은 결과를 얻어낼 수 있다.

UPDATE 문의 기본 문법

열 값의 순서를 마음대로 입력해도 무방하다.

city_popul 의 각 데이터들을 한글로 바꾸고 싶다.

그러면 먼저 city_name = 'Seoul' 인 값을 조회한다.

이 값을 한글로 바꿀 것이다.

그러기위해서 UPDATE문을 사용한다.

하지만 UPDATE문을 사용하는데 오류가 발생하는 것을 볼 수 있다.

Work bench에서 UPDATE문이 실행이 안 되도록 설정이 되어 있는 것이다.

다음과 같이 하여 이러한 오류를 해결할 수 있다.

Preferences > SQL Editor > Safe updates (rejects UPDATEs and DELETEs with no restrictions)

를 해제하고 OK 버튼을 클릭한다.

그리고 Work bench를 끄고 다시 실행한다.

USE market_db; 를 다시 실행하여 사용할 데이터베이스를 market_db로 설정해준다.

그리고 UPDATE문을 실행하여 city_name = '서울' 로 변경해준다.

그리고 SELECT문을 실행을 하면 다음과 같이 조회가 정상적으로 되는 것을 볼 수가 있다.

다음은 뉴욕을 한글로 바꾸어 보겠다.

UPDATE문을 실행을 하고 다시 SELECT문을 실행을 해보면

다음과 같이 city_name과 population이 변경된 것을 볼 수가 있다.

UPDATE문에 WHERE절을 빠뜨린 경우

절대로 실행하면 안 됩니다.

인구수를 너무 복잡하니 10,000 단위로 바꾸고 싶다.

다음과 같이 인구 단위가 10,000단위로 바뀐 것을 볼 수가 있다.

DELETE문

DELETE 문을 실행을 해서 city_name의 앞 글자가 'New'로 시작하는 행들을 삭제해보겠습니다.

그러면 총 11건이 실행된 것을 볼 수가 있습니다.

DELETE문에 LIMIT 문이 추가되어서 city_name이 앞에서 'New'글자로 시작하는 city_popul 테이블의 행을 삭제할 수 있다.

LIMIT문이 추가되었으므로 앞에서 5건만 삭제가 되고 남은 6건은 남아야 한다.

앞에서 이미 총 11건을 모두 삭제했으므로

이번에는 총 0건이 삭제됨을 확인할 수 있다.

 

감사합니다.

https://www.youtube.com/watch?v=WWAFAm9op2U&list=PLVsNizTWUw7GCfy5RH27cQL5MeKYnl8Pm&index=9