数据库与表创建成功以后,需要向数据库的表中插入数据。在 MySQL中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据。
INSERT 语句有两种语法形式,分别是 INSERT…VALUES 语句和 INSERT…SET 语句。
1) INSERT…VALUES语句
语法:
INSERT INTO <表名> [ <列名1> [ , … <列名n>] ]
VALUES (值1) [… , (值n) ];
语法说明如下。
<表名>
:指定被操作的表名。<列名>
:指定需要插入数据的列名。若向表中的所有列插入数据,则全部的列名均可以省略,直接采用 INSERT<表名>VALUES(…) 即可。VALUES
或 VALUE
子句:该子句包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应。案例:
指定表所有字段插入一条数据
INSERT INTO tb_courses
(course_id,course_name,course_grade,course_info)
VALUES(1,'Network',3,'Computer Network');
指定表所有字段插入多条数据
INSERT INTO tb_courses(course_id,course_name,course_grade,course_info)
VALUES(1,'Network',3,'Computer Network'),(1,'Network',3,'Computer Network'),(1,'Network',3,'Computer Network'),(1,'Network',3,'Computer Network');
Query OK, 1 rows affected (0.08 sec)
不指定表所有字段插入
mysql> INSERT INTO tb_courses
-> (course_grade,course_info)
-> VALUES(3,'Computer Network');
Query OK, 1 rows affected (0.08 sec)
如果有指定主键自增列的话 ,那么需要给一个默认值default ,(不指定就不需要,mysql内部会自动补充)
mysql> INSERT INTO tb_courses
-> (id,course_grade,course_info)
-> VALUES(default,3,'Computer Network');
Query OK, 1 rows affected (0.08 sec)
如果是时间字段的话,又不想字段数据为0000-00-00 00:00:00,我们可以使用now()获取当前时间进行填充
mysql> INSERT INTO tb_courses
-> (course_grade,cdateTime)
-> VALUES(3,now());
Query OK, 1 rows affected (0.08 sec)
2) INSERT…SET语句
语法:
INSERT INTO <表名>
SET <列名1> = <值1>,
<列名2> = <值2>,
…...............
此语句用于直接给表中的某些列指定对应的列值,即要插入的数据的列名在 SET 子句中指定,col_name 为指定的列名,等号后面为指定的数据,而对于未指定的列,列值会指定为该列的默认值。
案例
insert into t_student
set name='哈哈', age=21;
用的少这里就不多说了,基本注意事项和上面语法一样
某些字段的数据需要通过多个表的数据算出来的,这就需要熟练使用内查询和复制查询了
案例1
INSERT INTO `t_student_gradeclass_course`
(`id`, `studentID`, `gradeClassID`, `t_course`)
VALUES (1, (SELECT id FROM t_student where id=1 ), 11, 2);
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_45203607/article/details/120600104
内容来源于网络,如有侵权,请联系作者删除!