Database

Database. 2일차 - DML 기초(데이터 생성 - INSERT INTO)

머용? 2024. 2. 19. 13:32

DML을 적용하기에 앞서 DDL을 사용하여 실습해볼 테이블 생성하기

CREATE TABLE users (
    user_id INTEGER PRIMARY KEY AUTO_INCREMENT,
    username TEXT NOT NULL,
    email TEXT NOT NULL,
    age INTEGER
)

INSERT INTO(데이터 삽입)

  1. 기본적인 INSERT INTO : 모든 컬럼에 값을 지정하여 레코드를 추가한다.

    INSERT INTO users (username, email, age) VALUES ('jane_doe', 'aaaa123@naver.com', 26);
  2. 모든 컬럼에 값을 지정하지 않는 경우
    : 일부 컬럼에만 값을 지정하고 나머지는 기본값 또는 NULL 값을 가지도록 할 수 있다.

    INSERT INTO users (username, email) VALUES ('David', 'asd234@naver.com');
  3. 다수의 레코드 한번에 추가
    : VALUES 또는 SET을 사용해서 여러 레코드를 동시에 추가할 수 있다.

    INSERT INTO users (username, email, age) VALUES
     ('elice', 'alice@example.com', 30),
     ('bob', 'bob@example.com', 28),
     ('charlie', 'charlie@example.com', 25);
  4. 컬럼의 일부만 선택하여 추가

    INSERT INTO users (username, email) VALUES
     ('mande','mande@example.com'),
     ('clena','clena@example.com');
  5. 중복된 레코드 피하기
    : 중복된 값이 있는 경우 레코드에 추가하지 않고 에러를 방지

    INSERT IGNORE INTO users (username, email, age) VALUES ('John_Doe', 'aaaa123@naver.com', 26);

    위의 IGNORE를 사용하여 INSERT 문을 실행시키면 중복을 무시하고 정상적으로 레코드에 추가되지만 에러를 방지하기위해 테이블에서 삭제해주는 것이 좋다.

  6. 중복된 레코드 업데이트
    : 중복된 값이 있는 경우 해당 레코드를 업데이트 한다. 조건에 만족하는 값이 있으면 업데이트를 한다.

    INSERT INTO users (username, email, age) VALUES ('John_Doe', 'John_Doe@naver.com', 27)
    ON DUPLICATE KEY UPDATE age = 26; // age = 26 이면 업데이트를 한다.
  7. AUTO_INCREMENT 컬럼 다루기
    : AUTO_INCREMENT를 가진 컬럼은 자동으로 증가하는 값을 가지며, 명시적으로 값을 지정하지 않는다.

    INSERT INTO users (username, email) VALUES ('frank', 'frank@example.com);

    테이블을 생성할 때 user_id 값을 AUTO_INCREMENT로 지정해주었기 때문에 따로 추가하지 않아도 데이터 삽입이 된다.

  8. SET 문을 사용한 추가
    : SET을 사용하면 컬럼에 여러 값들을 설정할 수 있다.

    INSERT INTO users SET username = 'john', email = 'john@example.com', age = 29;