基本语法形式

MySQL 提供了两种主要的 INSERT 语句语法形式:

1. INSERT...VALUES 语句

INSERT INTO <表名> [<列名1>, <列名2>, ...]

VALUES (值1, 值2, ...), (值1, 值2, ...), ...

;

 

2. INSERT...SET 语句

INSERT INTO <表名>

SET <列名1> = <值1>,

    <列名2> = <值2>,

    ...

;


插入数据方法

1. 向所有字段插入值

方法一:指定所有字段名**

INSERT INTO tb_courses 
(course_id, course_name, course_grade, course_info)
VALUES (1, 'Network', 3, 'Computer Network');


方法二:不指定字段名(必须按表定义顺序)**

INSERT INTO tb_courses
VALUES (3, 'Java', 4, 'Java EE');


2. 向指定字段插入值

INSERT INTO tb_courses
(course_name, course_grade, course_info)
VALUES ('System', 3, 'Operating System');

注意:未指定的字段将使用默认值或自动生成值(如自增ID)

 

批量插入数据

使用单条 INSERT 语句插入多行数据效率更高:

INSERT INTO tb_courses
(course_name, course_grade, course_info)
VALUES 
('Web Design', 2, 'HTML/CSS/JS'),
('Data Science', 4, 'Python/R'),
('Mobile App', 3, 'Android/iOS');


从其他表复制数据

使用 INSERT...SELECT 语句:

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;

 

特殊插入情况

1. 插入默认值

INSERT INTO tb_courses
(course_name, course_grade)
VALUES ('Algorithm', DEFAULT);


2. 插入NULL值

INSERT INTO tb_courses
(course_name, course_grade, course_info)
VALUES ('Cloud Computing', 3, NULL);


注意事项

注意事项说明
字段顺序不指定列名时,VALUES 值的顺序必须与表定义顺序一致
主键处理自增主键通常不需要指定值 (使用 NULL 或直接省略)
非空约束必须为 NOT NULL 字段提供值(除非有默认值)
性能考虑批量插入使用单条 INSERT 语句更高效 (如: INSERT INTO t VALUES (v1),(v2)...)
字符编码确保插入数据的字符编码与表定义一致,避免乱码问题


实际应用示例

1. 插入当前时间

INSERT INTO orders
(order_date, customer_id, amount)
VALUES (NOW(), 1001, 99.99);


2. 插入计算结果

INSERT INTO sales
(product_id, quantity, total_price)
VALUES (5, 3, 3 * 29.99);


3. 使用子查询插入

INSERT INTO employee_projects
(employee_id, project_id)
SELECT id, 10 FROM employees WHERE department = 'IT';


点赞(2)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)