흰 스타렉스에서 내가 내리지

데이터 변경을 위한 SQL 문 (CRUD) 본문

SQL

데이터 변경을 위한 SQL 문 (CRUD)

주씨. 2022. 7. 29. 21:16
728x90

INSERT

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

테이블 이름 다음에 나오는 열은 생략 가능하다. 

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

 

 

 

toy_id와 toy_name만 입력하고 age는 입력하고 싶지 않다면 다음과 같이 테이블 이름 뒤에 입력할 열의 이름을 써줘야 한다. 

이 경우 생략한 age 열에는 아무것도 없다는 의미의 NULL 값이 들어간다. 

 

 

 

 

AUTO_INCREMENT

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

INSERT에서는 해당 열이 없다고 생각하고 입력하면 된다. 

단, 주의할 점은 AUTO_INCREMENT로 지정하는 열은 꼭 PRIMARY KEY로 지정해줘야 한다. 

 

세미콜론이 나오기 전까지는 한 문장으로 취급한다.

 

AUTO_INCREMENT로 지정한 열은 1부터 자동으로 입력된다. 데이터를 입력할 때는 NULL로 지정하면 된다. 

 

 

** LAST_INSERT_ID();

AUTO_INCREMENT 로 어느 숫자까지 증가했는지 확인하고 싶을 때 사용. 

 

 

 

** AUTO_INCREMENT로 입력되는 다음 값을 100부터 시작하도록 변경하고 싶다면?

ALTER TABLE 절을 통해 테이블의 설정을 변경한다. 테이블의 열 이름 변경, 새로운 열 정의, 열 삭제 등의 작업을 할 수 있다. 

 

 

 

@@auto_increment_increment

1000, 1003, 1006, 1009, ... 처럼 3씩 증가하게 만들고 싶다면?

 

 

시스템 변수
MySQL에서 자체적으로 가지고 있는 설정값이 저장된 변수를 말한다. 
시스템 변수는 앞에 @@가 붙는 것이 특징이며, 시스템 변수의 값을 확인하려면 SELECT @@시스템변수를 실행하면 된다. 
만약 전체 시스템 변수의 종류를 알고 싶다면 SHOW GLOBAL VARIABLES를 실행하면 된다. 

 

 

여러 줄을 한 줄로 작성 

INSERT INTO 테이블_이름 VALUES (값1, 깂2, ...);
INSERT INTO 테이블_이름 VALUES (값3, 깂4, ...);
INSERT INTO 테이블_이름 VALUES (값5, 깂6, ...);

다음과 같이 1줄로 입력할 수 있다. 

INSERT INTO 테이블_이름 VALUES (값1, 깂2, ...), (값3, 값4, ...), (값5, 값6, ...);

 

 

 

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

** DESC

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

DESC는 Describe의 약자로 테이블의 구조를 출력해주는 기능을 한다. 

즉, CREATE TABLE을 어떻게 했는지 예상할 수 있다. 

 

 

 

 

 

데이터 수정 : UPDATE

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

 

 

 

※ 주의

UPDATE 문에서 WHERE 절은 문법상 생략이 가능하지만, WHERE 절을 생략하면 테이블의 모든 행의 값이 변경된다. 

일반적으로는 전체 행의 값을 변경하는 경우는 별로 없으므로 주의해야 한다. 

 

어떤 경우에 쓰일 수 있냐면, 큰 단위의 숫자들을 만의 단위로 맞추고 싶다 할때 

SET population = population / 10000; 처럼 쓸 수도 있겠다. 

 

 

 

 

데이터 삭제 : DELETE

DELETE FROM 테이블_이름 WHERE 조건;

 

city 테이블에서 New 로 시작하는 도시를 삭제하는 sql문은 다음과 같다. 

DELETE FROM city WHERE city_name LIKE 'New%';

 

 

UPDATE와 마찬가지로 WHERE 절이 생략되면 전체 행 데이터를 삭제하므로 주의해야 한다. 

 

 

 

 

 

대용량 테이블의 삭제 

테이블을 삭제하는데 쓰이는 3가지 명령어는 DELETE, DROP, TRUNCATE 이다. 

 

DELETE FROM big_table;
DROP TABLE big_table;
TRUNCATE TABLE big_table;

 

1. DELETE

삭제가 오래 걸린다. 

 

2. DROP

테이블 자체를 삭제한다. 

 

3. TRUNCATE

DELETE와 동일한 효과를 내지만 속도가 훨씬 빠르다. 

 

DROP은 테이블이 아예 없어지지만, DELETE와 TRUNCATE는 빈 테이블을 남긴다.