ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MySQL] INSERT
    db/MySQL 2022. 8. 8. 17:19

    INSERT INTO 테이블명 (컬럼1,컬럼2...) VALUES (값1,값2...);
    
    //모든 컬럼을 타이핑 하기 힘든 경우 컬럼리스트 생략가능
    INSERT INTO 테이블 VALUES (첫컬럼값, 값2, 값3 ...마지막 컬럼값);

    DEFAULT 키워드

     

    테이블의 컬럼에 기본값이 설정되어 있다면 INSERT문 사용시 DEFAULT 키워드를 사용하여 기본값으로 INSERT가 가능

     

    CREATE TABLE test(col1 INT DEFAULT 1);
    INSERT INTO test(col1) VALUES(DEFAULT);
    SELECT col1 FROM test;


     

    기본값이 설정되어있지 않고 NOT NULL제약이 걸려있지 않은 컬럼은

    INSERT시 컬럼을 생략하면 DEFAULT값이 없지만 NULL값으로 채워진다.

    CREATE TABLE test(col1 INT DEFAULT 1, col2 INT);
    INSERT INTO test(col1) VALUES(DEFAULT);
    SELECT col1, col2 FROM test;

     

    DESCRIBE test;


    컬럼에 기본값이 설정되어 있지않았어도 INSERT시 DEFAULT를 키워드를 사용할 수 있고 이 경우 NULL로 채워진다.

    CREATE TABLE test(col1 INT DEFAULT 1, col2 INT);
    INSERT INTO test(col1) VALUES(DEFAULT);
    INSERT INTO test(col1, col2) VALUE(DEFAULT, DEFAULT);
    SELECT col1, col2 FROM test;


     

    NOT NULL 제약이 존재하는 컬럼은 INSERT시 생략할 수 없고 명시적으로 값을 넣어줘야 한다.

    CREATE TABLE test(col1 INT DEFAULT 1, col2 INT NOT null);
    INSERT INTO test(col1) VALUES(DEFAULT);

    null이 아닌 것에 해당하는 기본값 설정이 없는 컬럼이라는 에러를 내준다.


    INSERT INTO 테이블1(컬럼리스트)  SELECT 컬럼리스트 FROM 테이블2;

     

    CREATE TABLE src_table(src_col1 int, src_col2 INT);
    INSERT INTO src_table(src_col1, src_col2) VALUES(1,1),(2,2),(3,3),(4,4),(5,5);
    
    CREATE TABLE des_table(des_col1 INT, des_col2 INT);
    
    INSERT INTO des_table(des_col1,des_col2) select src_col1, src_col2 from src_table;
    -- INSERT INTO des_table select src_col1, src_col2 from src_table; 과 동일
    -- INSERT INTO des_table select * from src_table; 과 동일
    
    -- 복사 결과 확인
    SELECT des_col1, des_col2 FROM des_table;

     

    'db > MySQL' 카테고리의 다른 글

    [MySQL] EXISTS, NOTEXISTS  (0) 2022.08.08
    [MySQL] Stored Procedure  (0) 2022.08.04
    [MySQL] Trigger  (0) 2022.08.03
    [MySQL] FOREIGN KEY  (0) 2022.06.21

    댓글

Designed by Tistory.