반응형
MySQL과 Oracle은 SQL 문법에서 몇 가지 차이점이 있으며, 데이터를 삽입하는 방식이 많이 다릅니다.
Mysql vs Oracle
MySQL에서는 여러 행을 동시에 삽입하기 위해 INSERT INTO tableName VALUES (),(),();
와 같이 행을 콤마로 구분하여 삽입하는 문법을 지원합니다. 이는 MySQL의 확장된 INSERT 문법으로서 많은 행을 한 번에 삽입할 수 있어서 효율적입니다.
하지만 Oracle에서는 동일한 문법이 지원되지 않습니다. Oracle에서는 일반적으로 다음과 같은 방법을 사용하여 여러 행을 한 번에 삽입합니다.
INSERT INTO tableName (column1, column2, column3)
SELECT value1, value2, value3 FROM dual
UNION ALL
SELECT value4, value5, value6 FROM dual
UNION ALL
SELECT value7, value8, value9 FROM dual;
또는 다음과 같이 INSERT ALL
문법을 사용할 수도 있습니다.
INSERT ALL
INTO tableName (column1, column2, column3) VALUES (value1, value2, value3)
INTO tableName (column1, column2, column3) VALUES (value4, value5, value6)
INTO tableName (column1, column2, column3) VALUES (value7, value8, value9)
SELECT 1 FROM dual;
이렇게 하면 한 번의 INSERT 문으로 여러 행을 삽입할 수 있습니다.
따라서 Oracle에서는 MySQL과 달리 INSERT INTO tableName VALUES (),(),();
와 같은 문법은 지원되지 않으므로 주의해야 합니다. Oracle에서도 여러 행을 삽입하는 방법은 제공되지만, 문법이 다르기 때문에 MySQL에서 사용하는 방식과는 다소 다를 수 있습니다.
이거 다른지 모르고 oracle에서 INSERT INTO tableName VALUES (),(),(); 같은 방식을 사용했다가... 큰일 날 뻔했습니다..
정리
-- mysql
INSERT INTO tableName VALUES (),(),();
--oracle
INSERT ALL
INTO tableName (column1, column2, column3) VALUES (value1, value2, value3)
INTO tableName (column1, column2, column3) VALUES (value4, value5, value6)
INTO tableName (column1, column2, column3) VALUES (value7, value8, value9)
SELECT 1 FROM dual;
반응형
'CODE > CodeKnowledge' 카테고리의 다른 글
[SQL] 대용량 데이터 베이스 관리 : JOIN -1 (0) | 2023.08.29 |
---|---|
[SQL] 인덱스 분포도가 중요한 이유 (0) | 2023.07.29 |
젠킨스란 무엇일까? (feat.수동배포 차이점 ) (0) | 2023.07.23 |
[SQL] mybatis에서 int와 integer의 차이 (null를 오류로 반환하지 않는 것은?) (0) | 2023.07.16 |
[TIP] jar안에 class파일 미리보는 법 (매우 간단함) (0) | 2023.07.15 |
댓글