基本语法形式
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';
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程