[SQL] 03-3 데이터 변경을 위한 SQL 문

김민서·2024년 7월 13일

혼자 공부하는 SQL

목록 보기
7/19

기본 개념

  1. INSERT: 새로 가입한 회원을 테이블에 입력할 때 사용
  2. UPDATE: 회원의 주소나 연락처가 변경되어 정보를 수정할 때 사용
  3. DELETE: 회원이 탈퇴해서 회원을 삭제할 때 사용

데이터 입력: INSERT

INSERT 문의 기본 문법

  1. 기본 형식
    INSERT INTO 테이블 [(열1, 열2, ...)] VALUES (값1, 값2, ...)
    1) 테이블 이름 다음에 나오는 열은 생략이 가능함.
    2) 열 이름을 생략할 경우에 VALUES 다음에 나오는 값들의 순서 및 개수는 테이블을 정의할 때의 열 순서 및 개수와 동일해야 함.

  2. 간단한 테이블 (hongong1) 생성

  3. 만약, 입력하고 싶지 않은 데이터가 있다면, 테이블 이름 뒤에 입력할 열의 이름을 작성해야 함.

  4. 열의 순서를 바꿔서 입력하고 싶다면, 열 이름과 값을 원하는 순서에 맞춰 쓰면 됨.

자동으로 증가하는 AUTO_INCREMENT

  1. 간단한 테이블 (hongong2) 생성
    1) AUTO_INCREMENT는 열을 정의할 때 1부터 증가하는 값을 입력해줌.
    2) AUTO_INCREMENT로 지정하는 열은 PRIMARY KEY로 지정해줘야 함.

  2. 테이블에 데이터를 입력하기
    1) 자동 증가하는 부분은 NULL 값으로 채워 놓으면 됨.

  3. 현재 어느 숫자까지 증가되었는지 확인하기

  4. AUTO_INCREMENT로 입력되는 다음 값을 100부터 시작하도록 변경하기
    1) ALTER TABLE 뒤에는 테이블 이름을 입력하기
    2) ALTER TABLE은 테이블을 변경하라는 의미임.
    3) 자동 증가를 100부터 시작하기 위해 AUTO_INCREMENT를 100으로 지정하기

  5. 처음부터 입력되는 값은 1000으로 지정하고, 다음 값은 3씩 증가하도록 설정하는 방법을 살펴봄.
    1) 이런 경우, 시스템 변수인 @@auto_increment_increment를 변경시켜야 함.
    2) 증가값은 3으로 하기 위해 @@auto_increment_increment를 3으로 설정함.

  6. 데이터 입력 후 결과 확인하기

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

  1. 다른 테이블에 이미 데이터가 입력되어 있다면, INSERT INTO ~ SELECT 구문을 사용해 해당 테이블의 데이터를 가져와서 한 번에 입력할 수 있음.
    INSERT INTO 테이블이름(열이름1, 열이름2, ...)
    SELECT 문;

    1) SELECT 문의 열 개수는 INSERT 할 테이블의 열 개수와 같아야 함.
    2) 즉, SELECT의 열이 3개라면, INSERT될 테이블의 열도 3개여야 함.

  2. world 데이터베이스의 city 테이블의 개수를 조회함.
    1) COUNT(*)를 사용함.

  3. world.city 테이블의 구조 살펴보기
    1) DESC 명령으로 테이블 구조를 확인할 수 있음.

  4. 데이터도 몇 건 살펴보기
    1) LIMIT을 사용하여 5건 살펴보기

  5. 도시 이름과 인구를 가져오기 위해 먼저 테이블 만들기
    1) 테이블은 DESC로 확인한 열 이름(Filed)과 데이터 형식(type)을 사용하면 됨.

  6. world.city 테이블의 내용을 city_popul 테이블에 입력함.

    1) 4079행이 처리된 것으로 나옴.

데이터 수정: UPDATE

UPDATE 문의 기본 문법

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

  1. 앞에서 생성한 city_popul 테이블의 도시 이름 중에서 Seoul을 서울로 변경하기

  2. 한꺼번에 여러 열의 값을 변경하기
    1) 콤마로 분리하여 여러 개의 열을 변경하기
    2) 다음 SQL은 도시 이름(city_name)인 'New York'을 '뉴욕'으로 바꾸면서 동시에 인구(population)을 0으로 설정하는 내용임.

WHERE가 없는 UPDATE 문

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

  2. 전체 테이블의 내용 변경하기
    1) 도시의 인구 단위를 10000명 단위로 변경하기

데이터 삭제: DELETE

DELETE 문의 기본 문법

DELETE FROM 테이블이름 WHERE 조건;

  1. city_popul 테이블에서 'New'로 시작하는 도시 삭제하기

    1) 결과적으로 11건이 삭제됨.

  2. 만약 'New' 글자로 시작하는 11건의 도시를 모두 지우는 것이 아니라 'New' 로 시작하는 글자 중 상위 몇 건만 삭제하려면 LIMIT 구문과 함께 사용하면 됨.
    1) 사전에 이미 모두 삭제하였기 때문에 여기서는 아래 구문을 실행해도 0건이 삭제됨.

대용량 테이블의 삭제

  1. 대용량 테이블 3개 준비하기

  2. 동일한 내용의 대용량 테이블 3개를 DELETE, DROP, TRUNCATE 각각 다른 방법으로 삭제하기

    1) DELETE: 삭제가 오래 걸림./ 빈 테이블을 남김
    2) DROP: 테이블 자체를 삭제함. -> 순식간에 삭제 가능
    3) TRUNCATE: DELETE와 동일한 효과를 내지만 속도가 매우 빠름. / 빈 테이블을 남김.
    4) 대용량 테이블의 전체 내영을 삭제할 때, 테이블 자체가 필요 없을 경우에는 DROP으로 삭제하고, 테이블의 구조는 남겨놓고 싶다면 TRUNCATE로 삭제하는 것이 효율적임.

0개의 댓글