mysql insert into table insert statement syntax examples
이 튜토리얼은 쿼리 구문 및 예제와 함께 MYSQL INSERT INTO 테이블 문을 설명합니다. 또한 MYSQL 삽입 명령의 다양한 변형을 알아보십시오.
MySQL에서 INSERT 명령은 테이블에 데이터를 추가하는 데 사용됩니다. 이 명령을 사용하여 하나의 단일 트랜잭션에서 하나 이상의 행에 데이터를 삽입 할 수 있습니다. 또한 단일 트랜잭션에서 하나 이상의 테이블에 데이터를 추가 할 수 있습니다.
다음 섹션에서이 모든 것을 다룰 것입니다. 계속 진행하기 전에 MySQL 버전 8.0을 사용하고 있습니다. 다음에서 다운로드 할 수 있습니다. 여기 .
학습 내용 :
MySQL INSERT 명령 구문
INSERT (LOW_PRIORITY|DELAYED|HIGH_PRIORITY)(IGNORE) INTO tablename (column1, column2, column3...) VALUES (value1, value2, value3, ....);
구문 설명 :
- 구문은 키워드 'INSERT INTO'로 시작하여 수행 할 활동 유형에 대해 MySQL 서버에 알립니다. 이것은 필수 키워드이며 생략 할 수 없습니다.
- 다음은 삽입 조치가 수행되어야하는 테이블의 이름입니다. 이것은 필수이며 생략 할 수 없습니다.
- 다음은 해당 값과 함께 삽입 될 열 이름입니다. 다시 말하지만 이것은 필수 사항이며 생략 할 수 없습니다.
- 다음은 values 절입니다. 이 절에서 테이블에 삽입하는 모든 열에 대한 값을 제공해야합니다. 값의 순서와 열 이름의 순서는 동기화되어야합니다.
- 열의 수와 데이터 유형은 값의 수와 동일해야합니다.
INSERT 문의 수정 자
- 낮은 우선 순위: 이 수정자는 우리가 INSERT를 시도하는 테이블에서 읽기와 연결이 없을 때까지 INSERT 문의 실행을 지연 시키도록 MySQL 엔진에 알립니다. 이는 해당 테이블에서 수행 될 다른 모든 작업에서 일관성을 유지하는 데 도움이됩니다.
- HIGH_PRIORITY : 이 수정자는 MySQL 엔진에 다른 문보다 INSERT 문에 높은 우선 순위를 부여하도록 알립니다. 트랜잭션 그것은 테이블에서 수행되고 있습니다.
- 무시 : 이 수정자는 INSERT 문 실행으로 인해 발생할 수있는 오류를 무시하도록 MySQL 엔진에 알립니다. 발생하는 모든 오류는 단순한 경고로 취급되며 테이블에 레코드를 삽입하면 방해받지 않고 진행됩니다.
- 지연: 이것은 표준 SQL에 대한 MySQL 확장입니다. 사용자가 INSERT DELAYED를 실행하면 서버는 모든 행을 큐에 넣고 나중에 다른 트랜잭션에서 테이블을 사용하지 않을 때 데이터가 테이블에 삽입됩니다.
MySQL INSERT 예
다음은 MySQL에서 생성 된 샘플 테이블입니다.
스키마 이름 : 태평양
테이블 이름 : 직원
열 이름 :
- empNum – 직원 번호에 대한 정수 값을 보유합니다.
- lastName – 직원의성에 대한 varchar 값을 보유합니다.
- firstName – 직원의 이름에 대한 varchar 값을 보유합니다.
- 이메일 – 직원의 이메일 ID에 대한 varchar 값을 보유합니다.
- deptNum – 직원이 속한 부서 ID에 대한 varchar를 보유합니다.
- 급여 – 각 직원에 대한 급여의 소수 값을 보유합니다.
- start_date – 직원의 입사 날짜에 대한 날짜 값을 보유합니다.
스키마 이름 : 태평양
테이블 이름 : employee_history
열 이름 :
- empNum – 직원 번호에 대한 정수 값을 보유합니다.
- lastName – 직원의성에 대한 varchar 값을 보유합니다.
- firstName – 직원의 이름에 대한 varchar 값을 보유합니다.
- 이메일 – 직원의 이메일 ID에 대한 varchar 값을 보유합니다.
- deptNum – 직원이 속한 부서 ID에 대한 varchar를 보유합니다.
- 급여 – 각 직원에 대한 급여의 소수 값을 보유합니다.
- start_date – 직원의 입사 날짜에 대한 날짜 값을 보유합니다.
MySQL INSERT 문 변형
# 1) MySQL 단일 행 삽입
먼저 INSERT INTO 키워드를 사용하여 삽입 할 열 이름과 값을 모두 지정한 시나리오를 살펴 보겠습니다.
예를 들어 여기에서는 신입 사원을 삽입 해 보겠습니다. 직원 번호, 성과 이름을 추가하고 신입 직원이 속해야하는 이메일 ID, 급여 및 부서 ID도 업데이트합니다.
쿼리 및 해당 결과는 다음과 같습니다.
위 그림과 같이 INSERT 문이 성공적으로 실행되고 직원의 테이블에 한 행이 삽입되었습니다.
아래 출력 문은 문이 실행 된 시간, 실행 된 MySQL 문 및 영향을받은 행 수를 보여줍니다.
여기에 유의하십시오. 각 열의 값은 열 이름과 동일한 순서로 언급됩니다. 또한 데이터 유형이 정수 / 십진수 인 열은 반전 된 쉼표로 묶여 있지 않지만 varchar / char 데이터 유형이있는 컬럼 유형은 반전 된 쉼표로 묶여 있습니다.
이 INSERT 문의 출력을 확인하기 위해 empNum을 1012로하여이 테이블에서 SELECT 문을 실행 해 보겠습니다.
질문:
INSERT INTO employees ( empNum, lastName, firstName, email, deptNum, salary ) VALUES ( 1012, 'Luther', 'Martin', 'ml@gmail.com', 3, 13000 ) ;
이후 테이블 스냅 샷 :
empNum | lastName | 이름 | 이메일 | deptNum | 봉급 | |
---|---|---|---|---|---|---|
1007 | 슈미트 | 제임스 | js@gmail.com | 4 | 21780 | 0001-01-01 |
1012 년 | 루터 | 남자 이름 | ml@gmail.com | 삼 | 13000 |
# 2) 지정된 컬럼에만 데이터를 삽입하는 MySQL
다음은 테이블에 데이터를 삽입하는 또 다른 방법이지만 모든 열이 아닌 필수 열에 만 레코드를 삽입하는 것입니다. 그러나이 시나리오에서는 키 열을 생략 할 수 없습니다. 직원 테이블의 경우 키 열은 empNum 열입니다. 이것을 시도해 봅시다.
예를 들어 직원 테이블에 empNum, lastName, firstName에 대한 데이터와 함께 새 레코드를 삽입합니다. 이 직원에게 이메일 ID, 부서 또는 급여를 할당하지 않습니다.
다음은 쿼리와 그 결과입니다.
위 그림과 같이 insert 문이 성공적으로 실행되고 직원의 테이블에 한 행이 삽입되었습니다.
C # 인터뷰 질문 및 예제 경험을위한 답변
참고, 선택한 열만 삽입하려면 건너 뛴 열을 NULL로 선언하거나 열을 건너 뛸 경우 채워질 기본값을 가져야합니다. 이 조건이 충족되지 않으면 삽입 문이 실패합니다.
empNum = 1013에 대한 SELECT 문을 실행하여 위의 INSERT 문이 실행되었는지 확인하겠습니다.
질문:
INSERT INTO employees ( empNum, lastName, firstName ) VALUES ( 1013, 'Nolan', 'Chris' ) ;
이후 테이블 스냅 샷 :
empNum | lastName | 이름 | 이메일 | deptNum | 봉급 |
---|---|---|---|---|---|
1013 년 | 놀란 | 크리스 | 없는 | 없는 | 없는 |
# 3) MySQL 다중 행 삽입
다음으로 동일한 INSERT 문을 사용하여 테이블에 여러 행을 삽입해야하는 시나리오를 살펴 보겠습니다.
예를 들어 이 경우 열 이름을 한 번만 언급해야하지만 해당 열의 값을 필요한만큼 반복 할 수 있습니다.
다음은 연관된 결과와 함께 쿼리입니다.
위 그림에 표시된대로 명령문이 성공적으로 실행되었습니다.
3 개의 행이 영향을 받았다는 메시지 부분을 관찰하십시오. 이는이 단일 INSERT 문이이 INSERT 문 실행과 함께 3 개의 레코드를 삽입했음을 의미합니다.
추가 읽기 = >> MySQL If 문 자습서
새 직원 ID 1014, 1015 및 1016에 대해 SELECT 문을 실행하여 INSERT 문의 출력을 확인하겠습니다.
세부 사항은 다음과 같습니다.
질문:
INSERT INTO employees ( empNum, lastName, firstName, email, deptNum, salary ) VALUES (1014, 'Murray', 'Keith', 'km@gmail.com', 1, 25000), (1015, 'Branson', 'John', 'jb@gmail.com', 2, 15000), (1016, 'Martin', 'Richard', 'rm@gmail.com', 4, 5000) ;
이후 테이블 스냅 샷 :
empNum | lastName | 이름 | 이메일 | deptNum | 봉급 |
---|---|---|---|---|---|
1014 년 | 머레이 | 키스 | km@gmail.com | 1 | 25000 |
1015 년 | Branson | 남자 | jb@gmail.com | 두 | 15000 |
1016 년 | 남자 이름 | Richard | rm@gmail.com | 4 | 5000 |
# 4) MySQL 삽입 날짜
다음으로 날짜 열에 값을 삽입해야하는 시나리오를 살펴 보겠습니다.
예를 들어 날짜 열에 값을 삽입하는 것은 까다로울 수 있습니다. MySQL의 날짜는‘YYYY-MM-DD’형식에 추가 할 수 있습니다. 이를 위해 기본값이‘0001-01-01’인 start_date 열을 추가하겠습니다.
이는 start_date가있는 직원 테이블의 모든 기존 레코드가 '0001-01-01'로 업데이트됨을 의미합니다. alter 문은 다음과 같습니다.
질문:
ALTER TABLE employees ADD start_date DATE default '0001-01-01' ;
테이블에서 간단한 SELECT 문을 실행하여 위 쿼리의 출력을 확인하겠습니다.
따라서 데이터 유형이 'DATE'이고 기본값이 '0001-01-01'인 새 날짜 열을 추가했습니다. 이제 두 개의 새 직원 레코드를 삽입 해 보겠습니다. 하나는 현재 날짜이고 다른 하나는 특정 날짜입니다.
숙련 된 소프트웨어 테스터를위한 샘플 이력서
다음은 세부 정보와 함께 쿼리입니다.
위의 그림과 같이 이전 섹션에서 설명한 것처럼 테이블에 여러 행을 삽입하는 기능을 사용했습니다.
첫 번째 레코드는 CURRENT_DATE () 함수로 삽입되었습니다. 이 함수는 현재 시스템 날짜를 반환합니다. 두 번째 레코드는 'YYYY-MM-DD'형식의 특정 날짜와 함께 삽입되었습니다.
다음으로 empNum 1017 및 1018에 대한 SELECT 문을 사용하여 INSERT 문의 출력을 확인합니다.
empNum = 1017 인 첫 번째 레코드의 start_date는 현재 날짜 인 25와 동일합니다.일'YYYY-MM-DD'형식의 2019 년 11 월 (이 경우이 가이드가 작성된 날짜)
질문:
INSERT INTO employees ( empNum, lastName, firstName, email, deptNum, salary, start_date ) VALUES (1017, 'Johnson', 'Eve', 'ej@gmail.com', 3, 5500, CURRENT_DATE()), (1018, 'Bond', 'Nolan', 'nb@gmail.com', 2, 15000, '2019-09-13') ;
이후 테이블 스냅 샷 :
empNum | lastName | 이름 | 이메일 | deptNum | 봉급 | 시작일 |
---|---|---|---|---|---|---|
1017 년 | 존슨 | 이브 | ej@gmail.com | 삼 | 5500 | 2019-11-25 00:00:00 |
1018 년 | 노예 | 놀란 | nb@gmail.com | 두 | 15000 | 2019-09-13 00:00:00 |
# 5) MySQL은 다른 테이블에서 테이블에 삽입
다음으로 기존 테이블의 새 테이블에 데이터를 삽입해야하는 시나리오를 살펴 보겠습니다.
예를 들어 기존 테이블에서 기록 또는 아카이브 테이블로 데이터를 주기적으로 이동해야하는 시나리오를 고려하십시오. 이를 위해 employee_history 테이블을 새로 만듭니다.
우리의 임무는 employee 테이블에서 employee_history 테이블로 데이터를 이동하는 것입니다.
CREATE 문은 다음과 같습니다.
질문:
CREATE TABLE employees_history LIKE employees ;
새 테이블의 테이블 구조를 제공하는 새 테이블에서 간단한 DESC 문을 실행하여 위 쿼리의 출력을 확인하겠습니다.
그래서 우리는 새로운 테이블을 만들었습니다. 이제 직원의 테이블에서이 새 테이블로 데이터를로드하겠습니다.
PC에 가장 적합한 운영 체제는 무엇입니까
=> MySQL에 대해 더 알아보기 테이블 생성 명령 .
다음은 쿼리 및 세부 정보입니다.
위의 그림과 같이 기존 테이블의 새 테이블에 데이터가 성공적으로 삽입되었습니다.
출력 탭의 메시지 열을 확인하십시오. 18 개의 행이 영향을 받았다고합니다. 이는 기존 테이블의 모든 18 개 행이 새로 생성 된 employee_history 테이블에 복사되었음을 의미합니다.
다음으로 employee_history 테이블의 SELECT 문을 사용하여 INSERT 문의 출력을 확인합니다.
위 그림은 employee_history 테이블의 직원 테이블에서 복사 된 모든 행을 보여줍니다.
위의 그림은 employee_history 테이블의 employee 테이블에서 복사 된 모든 행을 보여줍니다.
질문:
INSERT INTO employees_history ( empNum, lastName, firstName, email, deptNum, salary, start_date ) SELECT empNum, lastName, firstName, email, deptNum, salary, start_date FROM employees ;
이후 테이블 스냅 샷 :
empNum | lastName | 이름 | 이메일 | deptNum | 봉급 | 시작일 |
---|---|---|---|---|---|---|
1001 | 앤드류스 | 잭 | ja@gmail.com | 1 | 3182.7 | 0001-01-01 |
1002 | Schwatz | 마이크 | ms@gmail.com | 1 | 5304.5 | 0001-01-01 |
1003 | Langley | 마가렛 | margaret.langley@gmail.com | 두 | 8820 | 0001-01-01 |
1004 | Harera | 산드라 | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | 읽다 | 베드로 | pl@gmail.com | 두 | 14333 | 0001-01-01 |
1006 | 키스 | 제니 | jk@gmail.com | 두 | 16538 | 0001-01-01 |
1008 | 외벽 | 올리버 | oliver.bailey@gmail.com | 삼 | 24494 | 0001-01-01 |
1009 | 컵 | 괴롭히다 | hb@gmail.com | 5 | 30646 | 0001-01-01 |
1010 년 | 암스트롱 | Jacob | jacob.armstrong@gmail.com | 4 | 32670 | 0001-01-01 |
1011 | 행크스 | 톰 | th@gmail.com | 없는 | 10100 | 0001-01-01 |
1012 년 | 루터 | 남자 이름 | ml@gmail.com | 삼 | 13000 | 0001-01-01 |
1013 년 | 놀란 | 크리스 | 없는 | 없는 | 없는 | 0001-01-01 |
1014 년 | 머레이 | 키스 | km@gmail.com | 1 | 25000 | 0001-01-01 |
1015 년 | Branson | 남자 | jb@gmail.com | 두 | 15000 | 0001-01-01 |
1016 년 | 남자 이름 | Richard | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 년 | 존슨 | 이브 | ej@gmail.com | 삼 | 5500 | 2019-11-25 00:00:00 |
1018 년 | 노예 | 놀란 | nb@gmail.com | 두 | 15000 | 2019-09-13 00:00:00 |
자주 묻는 질문과 답변
Q # 1) MySQL의 테이블에 데이터를 어떻게 삽입합니까?
대답: MySQL 테이블에 데이터를 삽입하기 위해 MySQL은 'INSERT INTO'라는 중요한 키워드를 제공합니다. 그 뒤에는 테이블 이름, 열 목록 및 삽입해야하는 해당 값 목록이 나옵니다. 이 키워드를 사용하여 동일한 트랜잭션에 하나 이상의 열을 삽입 할 수 있습니다.
Q # 2)“INSERT IGNORE INTO”절을 설명하십시오.
대답: 단일 INSERT 문에 둘 이상의 행을 삽입하려고하면 특정 행에 대한 잘못된 데이터로 인해 실행이 실패 할 수 있습니다. 이렇게하면 트랜잭션이 중지되고 이전 커밋으로 롤백됩니다.
이러한 시나리오를 피하기 위해 “INSERT IGNORE INTO” 사용. 이 절은 잘못된 레코드를 유발하는 오류를 무시하고 트랜잭션이 중지되지 않도록 유효한 레코드 만 삽입합니다. 이는 대량 삽입을 수행해야하고 행의 잘못된 데이터에 대해 다시 실행할 여유가없는 경우에 유용합니다.
Q # 3) MySQL에서 속성을 어떻게 업데이트합니까?
대답: MySQL Update 문을 사용하여 속성을 업데이트 할 수 있습니다. 문은 UPDATE 키워드로 시작하고 테이블 이름이 이어집니다. 다음은 SET 절이고 뒤에 열 이름과 WHERE 절이 있습니다.
Q # 4) 단일 MySQL Insert 트랜잭션에 여러 레코드를 삽입 할 수 있습니까?
대답: 위에 설명 된대로 “여러 행에 데이터 삽입” 섹션에서 단일 삽입 트랜잭션에 여러 행을 삽입 할 수 있습니다. INSERT INTO 절 다음에 테이블 이름과 열 목록을 사용할 수 있지만 하나의 값 목록 대신 각 열에 대해 여러 값 목록을 언급해야합니다.
Q # 5) MySQL은 어디에서 다운로드합니까?
대답: 여기에서 MySQL 버전 8.0을 다운로드 할 수 있습니다. MySQL .
또한 읽기 => MySQL 다운로드 방법
Q # 6) MySQL INSERT 문에서 SELECT 절을 사용할 수 있습니까?
대답: 예, SELECT는 MySQL INSERT 문과 함께 사용할 수 있습니다. 이것은“MySQL 다른 테이블에서 테이블 삽입하기”섹션에서 설명했습니다. 이것은 이미 다른 테이블에있는 데이터를 사용하여 한 테이블에 행을 삽입해야 할 때 사용됩니다.
예를 들어 현재 테이블에서 데이터웨어 하우스의 기록 테이블로 데이터 이동
Q # 7) MySQL은 테이블에 날짜를 어떻게 저장합니까?
대답: MySQL은 테이블에 날짜를 저장하기 위해 'YYYY-MM-DD'형식을 사용합니다. 여기서 데이터 유형은 DATE입니다. MySQL에서 지원하는 날짜 범위는‘1000-01-01’에서‘9999-12-31’까지입니다.
MySQL에는 날짜와 시간을 모두 저장하는 DATETIME 데이터 유형도 있습니다. 형식은 'YYYY-MM-DD hh : mm : ss'입니다. 허용되는 범위는‘1000-01-01 00:00:00’에서‘9999-12-31 23:59:59’까지입니다.
추천 자료 = >> MySQL 데이터 유형 자습서
결론
따라서이 자습서에서는 MySQL에서 INSERT 문을 실행하는 다섯 가지 방법에 대해 배웠습니다.
- MySQL 삽입 단일 행
- 지정된 열에 만 데이터를 삽입하는 MySQL
- 여러 행에 데이터를 삽입하는 MySQL
- MySQL 삽입 날짜
- MySQL 다른 테이블에서 테이블 삽입
프로젝트 요구 사항에 따라 둘 중 하나를 사용할 수 있습니다.
행복한 독서 !!