SQL - INSERT & UPDATE & DELETE

는는·2023년 1월 31일
0

SQL - 공부

목록 보기
3/13

데이터 변경을 위한 SQL (INSERT, UPDATE, DELETE)

INSERT문

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

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

테이블 이름 다음에 나오는 열은 생략 가능 합니다. 열 이름을 생략할 경우에 VALUES 다음에 오는 값들의 순서 및 개수만 동일하게 해주시면 됩니다.

열이 3개일 경우, 값도 3가지의 값을 입력해줘야합니다.

USE market_db;
CREATE ta (id INT, name CHAR(8), age INT);
INSERT INTO ta VALUES(1,'는는',15);

USE 로 데이터베이스를 선택해줍니다.
CAEATE 로 테이블을 만들어 줍니다. 만들때 숫자형인지, 문자형인지 지정해줘야합니다.
INSERT에서 값을 넣어주면 아래의 값이 나오는 걸 알 수 있습니다.

아이디와 이름만 입력하고 한다면, 나이열에는 NULL(아무것도 없다) 값이 들어갑니다.

INSERT INTO ta (id, name) VALUES (1,'박연진');

열의 순서를 바꿔서 입력하고 싶을 때는 , 열 이름과 값을 원하는 순서에 맞춰서 작성해주면 됩니다.

INSERT INTO ta (name,age,id) VALUES ('문동은',36,2)

AUTO_INCREMENT

따로 입력하기 번거롭거나, 의미 없는 값을 입력 할 때 자동으로 증가하는 열의 값을 만들때 사용합니다.

단 주의 할 점은 PRIMARY KEY로 지정해줘야합니다.

CREATE TABLE ta2 (id INT AUTO_INCREMENT PRIMARY KEY, name CHAR(4), age INT);

새로운 테이블을 만들어 적용해 보겠습니다. 자동으로 증가하도록 만드는 곳을 AUTO_INCREMENT PRIMARY KEY 로 지정해주고, id 자리에 NULL 값을 넣어주고 실행하면 id값이 자동으로 증가하는 것을 볼 수 있습니다.

INSERT INTO ta2 VALUES (NULL,'문동은',36)
INSERT INTO ta2 VALUES (NULL,'박연진',36)
INSERT INTO ta2 VALUES (NULL,'하예솔',8)

위에 값처럼 열을 지정해주지 않아도 값이 나오지만 열을 지정해주는 것이 더 정확합니다.

SELECT LAST_INSERT_ID();

어디까지 증가했는지 알고 싶으면 LAST_INSERT_ID 라는 함수를 이용하면 알 수 있습니다.

ALTER TABLE ta2 AUTO_INCREMENT = 100;

AUTO_INCREMENT 를 사용하면 다음 값을 100부터 시작하도록 변경줍니다.
원하는 숫자 간격으로도 지정할 수 있습니다.

SET @@auto_increment_increment = 4;

INSERT INFO ~ SELECT

INSERT INFO ~ SELECT 구문을 사용하면, 다른 테이블의 데이터를 한 번에 입력 할 수 있습니다. 이 구문은 테이블 열의 숫자가 같을 때만 사용 가능 합니다.

INSERT INTO 테이블_이름 (열_이름1 , 열_이름2, ...)
SELECT;
INSERT INTO ta
SELECT id, name, age FROM ta2;

저는 붙여넣기 기능이라고 이해했어요. 테이블1 에 테이블2의 열들을 넣어준다.

UPDATE

UPDATE - SET - WHERE

UPDATE 테이블_이름
SET1 =1,2=2, ...
WHERE 조건;

위에서 만들었던 ta 테이블의 는는 이라는 이름을 전재준으로 변경해보겠습니다.

MYSQL은 기본적으로 UPDATE 및 DELETE를 허용하지 않기 때문에 설정을 변경 해주셔야해요

저는 코드로 변경해주었습니다. 허용할 때는 0 , 허용하지 않을 때는 1을 사용합니다.

SET SQL_SAFE_UPDATES = 0;
UPDATE 테이블 SET= '변경해줄 새로운 값' WHERE= '변경할 기존 값'

WHERE 절 뒤에 조건 name이 '는는' 이면 name 을 '전재준' 으로 SET해준다

WHERE절을 사용하지 않으면 모두 날아 갈 수 있음.... 중요!

DELETE

DELETE FROM 테이블이름 WHERE 조건;

UPDATE 구문과 거의 비슷하게 사용할 수 있습니다. 삭제는 행단위로 됩니다.

저는 나이에 값이 없는 행을 지워 보겠습니다.

DELETE FROM ta
WHERE age IS NULL;

LIMIT 을 이용해 원하는 숫자 만큼 지워 줄 수도 있습니다.

대용량 테이블의 삭제

  • DROP : 테이블 자체를 삭제, 삭제 속도 빠름
  • DELETE : 테이블을 빈 테이블로 남김, 삭제 속도 느림
  • TRUNCATE : 테이블을 빈 테이블로 남김, 삭제 속도 빠름,
    WHERE 사용 불가로 조건 없이 전체 행을 삭제 할때 사용

참고 문서: 혼자 공부하는 SQL

0개의 댓글