집 >데이터 베이스 >MySQL 튜토리얼 >mysql에 여러 데이터를 삽입하는 방법은 무엇입니까?
mysql에 여러 데이터 조각을 삽입하는 방법: 1. "INSERT INTO 테이블 이름 필드 목록 VALUES (값 1) ..., (값 n);" 문을 사용하여 데이터를 삽입합니다. name SET 필드 1 = 값 1, 필드 2 = 값 2,..." 문은 데이터를 삽입합니다.
데이터베이스와 테이블이 성공적으로 생성된 후에는 데이터베이스 테이블에 데이터를 삽입해야 합니다. MySQL에서는 INSERT 문을 사용하여 하나 이상의 튜플 데이터 행을 데이터베이스의 기존 테이블에 삽입할 수 있습니다.
기본 구문
INSERT 문에는 INSERT...VALUES 문과 INSERT...SET 문이라는 두 가지 구문 형식이 있습니다.
1) INSERT...VALUES 문의 구문 형식
INSERT VALUES는
INSERT INTO <表名> [ <列名1> [ , … <列名n>] ] VALUES (值1) [… , (值n) ];
구문 설명은 다음과 같습니다.
34cd3e9c1174c81e3622d1820b4b2875: 연산할 테이블의 이름을 지정합니다.
2510af6ebb6ca97b2031807eae7f5aab: 데이터를 삽입해야 하는 열 이름을 지정합니다. 테이블의 모든 컬럼에 데이터를 삽입하는 경우 모든 컬럼 이름을 생략할 수 있으며, INSERT34cd3e9c1174c81e3622d1820b4b2875VALUES(…)를 직접 사용할 수 있습니다.
VALUES 또는 VALUE 절: 이 절에는 삽입할 데이터 목록이 포함됩니다. 데이터 목록의 데이터 순서는 열 순서와 일치해야 합니다.
2) INSERT...SET 문
구문 형식은
INSERT INTO <表名> SET <列名1> = <值1>, <列名2> = <值2>, …
이 문은 테이블의 특정 열에 해당하는 열 값 을 직접 지정하는 데 사용됩니다. 즉, 열 이름 삽입할 데이터가 SET 절에 지정되어 있으며 col_name은 지정된 열 이름이며 등호 뒤에 지정된 데이터가 지정되지 않은 열의 경우 해당 열 값이 해당 열의 기본값으로 지정됩니다.
2가지 형태의 INSERT 문에서 볼 수 있습니다.
INSERT...VALUES 문을 사용하여 한 행의 데이터 또는 여러 행의 데이터를 테이블에 삽입합니다.
INSERT...SET을 사용합니다. 삽입할 행을 지정하는 문입니다. 열의 각 열 값을 지정하거나 일부 열의 값을 지정할 수 있습니다.
INSERT...SELECT 문은 다른 테이블의 데이터를 테이블에 삽입합니다.
INSERT…SET 문을 사용하면 일부 열의 값을 테이블에 삽입할 수 있으며 이는 더 유연합니다.
INSERT…VALUES 문은 한 번에 여러 데이터 조각을 삽입할 수 있습니다.
MySQL에서는 단일 INSERT 문을 사용하여 여러 삽입을 처리하는 것이 여러 INSERT 문을 사용하는 것보다 빠릅니다.
단일 INSERT 문을 사용하여 여러 데이터 행을 삽입하는 경우 각 데이터 행을 괄호로 묶으면 됩니다.
테이블의 모든 필드에 값을 추가합니다
test_db 데이터베이스에 강좌 번호course_id, 강좌 이름 강좌 이름, 강좌 학점 강좌_등급 및 강좌 노트 강좌_info를 포함하는 강좌 정보 테이블 tb_courses를 만듭니다. 결과는 다음과 같습니다.
mysql> CREATE TABLE tb_courses -> ( -> course_id INT NOT NULL AUTO_INCREMENT, -> course_name CHAR(40) NOT NULL, -> course_grade FLOAT NOT NULL, -> course_info CHAR(100) NULL, -> PRIMARY KEY(course_id) -> ); Query OK, 0 rows affected (0.00 sec)
테이블의 모든 필드에 값을 삽입하는 방법에는 두 가지가 있습니다. 하나는 모든 필드 이름을 지정하는 것이고, 다른 하나는 필드 이름을 전혀 지정하지 않는 것입니다.
【예제 1】tb_courses 테이블에 새 레코드를 삽입합니다.course_id 값은 1,course_name 값은 "Network",course_grade 값은 3,info 값은 "Computer Network"입니다.
Insert 작업을 수행하기 전에 아래와 같이 tb_courses 테이블의 SQL 문과 실행 결과를 확인하세요.
mysql> SELECT * FROM tb_courses; Empty set (0.00 sec)
쿼리 결과 현재 테이블 내용이 비어 있고 데이터가 없는 것으로 나타납니다. 다음으로 데이터를 삽입하는 작업을 수행하고 실행 과정은 다음과 같습니다.
mysql> INSERT INTO tb_courses -> (course_id,course_name,course_grade,course_info) -> VALUES(1,'Network',3,'Computer Network'); Query OK, 1 rows affected (0.08 sec) mysql> SELECT * FROM tb_courses; +-----------+-------------+--------------+------------------+ | course_id | course_name | course_grade | course_info | +-----------+-------------+--------------+------------------+ | 1 | Network | 3 | Computer Network | +-----------+-------------+--------------+------------------+ 1 row in set (0.00 sec)
레코드가 성공적으로 삽입된 것을 확인할 수 있습니다. 데이터 삽입 시 tb_courses 테이블의 모든 필드가 지정되므로 각 필드마다 새로운 값이 삽입됩니다.
INSERT 문 뒤의 컬럼 이름 순서는 tb_courses 테이블 정의 시의 순서와 같을 필요는 없습니다. 즉, 데이터 삽입 시 테이블에 정의된 순서대로 삽입할 필요는 없습니다. 값의 순서는 열 필드의 순서와 동일합니다.
【예제 2】tb_courses 테이블에 새 레코드를 삽입합니다.course_id 값은 2,course_name값은 "Database",course_grade값은 3,info값은 "MySQL"입니다. 입력된 SQL 문과 실행 결과는 아래와 같습니다.
mysql> INSERT INTO tb_courses -> (course_name,course_info,course_id,course_grade) -> VALUES('Database','MySQL',2,3); Query OK, 1 rows affected (0.08 sec) mysql> SELECT * FROM tb_courses; +-----------+-------------+--------------+------------------+ | course_id | course_name | course_grade | course_info | +-----------+-------------+--------------+------------------+ | 1 | Network | 3 | Computer Network | | 2 | Database | 3 | MySQL | +-----------+-------------+--------------+------------------+ 2 rows in set (0.00 sec)
INSERT를 사용하여 데이터를 삽입할 때 열 이름 목록인 column_list는 비워 둘 수 있습니다. 이때 값 목록은 테이블의 각 필드에 대한 값을 지정해야 하며 값의 순서는 다음과 같아야 합니다. 데이터 테이블의 필드가 정의되는 순서와 동일합니다.
【예제 3】tb_courses 테이블에 새로운 레코드를 삽입합니다.course_id 값은 3,course_name값은 "Java",course_grade값은 4,info값은 "Jave EE"입니다. 입력된 SQL 문과 실행 결과는 아래와 같습니다.
mysql> INSERT INTO tb_courses -> VLAUES(3,'Java',4,'Java EE'); Query OK, 1 rows affected (0.08 sec) mysql> SELECT * FROM tb_courses; +-----------+-------------+--------------+------------------+ | course_id | course_name | course_grade | course_info | +-----------+-------------+--------------+------------------+ | 1 | Network | 3 | Computer Network | | 2 | Database | 3 | MySQL | | 3 | Java | 4 | Java EE | +-----------+-------------+--------------+------------------+ 3 rows in set (0.00 sec)
INSERT 문에 삽입 목록이 지정되지 않고 값 목록만 지정됩니다. 이 경우 값 목록은 각 필드 열에 삽입된 값을 지정하며, 값은 tb_courses 테이블에 정의된 필드와 동일한 순서로 이루어져야 합니다.
注意:虽然使用 INSERT 插入数据时可以忽略插入数据的列名称,若值不包含列名称,则 VALUES 关键字后面的值不仅要求完整,而且顺序必须和表定义时列的顺序相同。如果表的结构被修改,对列进行增加、删除或者位置改变操作,这些操作将使得用这种方式插入数据时的顺序也同时改变。如果指定列名称,就不会受到表结构改变的影响。
向表中指定字段添加值
为表的指定字段插入数据,是在 INSERT 语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值。
【实例 4】在 tb_courses 表中插入一条新记录,course_name 值为“System”,course_grade 值为 3,course_info 值为“Operating System”,输入的 SQL 语句和执行结果如下所示。
mysql> INSERT INTO tb_courses -> (course_name,course_grade,course_info) -> VALUES('System',3,'Operation System'); Query OK, 1 rows affected (0.08 sec) mysql> SELECT * FROM tb_courses; +-----------+-------------+--------------+------------------+ | course_id | course_name | course_grade | course_info | +-----------+-------------+--------------+------------------+ | 1 | Network | 3 | Computer Network | | 2 | Database | 3 | MySQL | | 3 | Java | 4 | Java EE | | 4 | System | 3 | Operating System | +-----------+-------------+--------------+------------------+ 4 rows in set (0.00 sec)
可以看到插入记录成功。如查询结果显示,这里的 course_id 字段自动添加了一个整数值 4。这时的 course_id 字段为表的主键,不能为空,系统自动为该字段插入自增的序列值。在插入记录时,如果某些字段没有指定插入值,MySQL 将插入该字段定义时的默认值。
使用 INSERT INTO…FROM 语句复制表数据
INSERT INTO…SELECT…FROM 语句用于快速地从一个或多个表中取出数据,并将这些数据作为行数据插入另一个表中。
SELECT 子句返回的是一个查询到的结果集,INSERT 语句将这个结果集插入指定表中,结果集中的每行数据的字段数、字段的数据类型都必须与被操作的表完全一致。
在数据库 test_db 中创建一个与 tb_courses 表结构相同的数据表 tb_courses_new,创建表的 SQL 语句和执行过程如下所示。
mysql> CREATE TABLE tb_courses_new -> ( -> course_id INT NOT NULL AUTO_INCREMENT, -> course_name CHAR(40) NOT NULL, -> course_grade FLOAT NOT NULL, -> course_info CHAR(100) NULL, -> PRIMARY KEY(course_id) -> ); Query OK, 0 rows affected (0.00 sec) mysql> SELECT * FROM tb_courses_new; Empty set (0.00 sec)
【实例 5】从 tb_courses 表中查询所有的记录,并将其插入 tb_courses_new 表中。输入的 SQL 语句和执行结果如下所示。
mysql> INSERT INTO tb_courses_new -> (course_id,course_name,course_grade,course_info) -> SELECT course_id,course_name,course_grade,course_info -> FROM tb_courses; Query OK, 4 rows affected (0.17 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM tb_courses_new; +-----------+-------------+--------------+------------------+ | course_id | course_name | course_grade | course_info | +-----------+-------------+--------------+------------------+ | 1 | Network | 3 | Computer Network | | 2 | Database | 3 | MySQL | | 3 | Java | 4 | Java EE | | 4 | System | 3 | Operating System | +-----------+-------------+--------------+------------------+ 4 rows in set (0.00 sec)
推荐教程:mysql视频教程
위 내용은 mysql에 여러 데이터를 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!