MySQL中的INSERT语句用于向数据库表中插入新的记录,INSERT语句的基本语法如下:
INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);
表名是要插入数据的表的名称,列1、列2、列3等是表中的列名,值1、值2、值3等是要插入的数据。
插入单行数据
当需要向表中插入单行数据时,可以使用INSERT语句,有一个名为students的表,包含id、name和age三个字段,现在要向该表中插入一条记录,可以使用以下语句:
INSERT INTO students (id, name, age) VALUES (1, '张三', 18);
插入多行数据
当需要向表中插入多行数据时,可以使用INSERT语句的另一种形式,有一个名为students的表,包含id、name和age三个字段,现在要向该表中插入两条记录,可以使用以下语句:
INSERT INTO students (id, name, age) VALUES (1, '张三', 18), (2, '李四', 19);
插入所有列的数据
当需要向表中插入所有列的数据时,可以省略列名列表,有一个名为students的表,包含id、name和age三个字段,现在要向该表中插入一条记录,可以使用以下语句:
INSERT INTO students VALUES (1, '张三', 18);
使用子查询插入数据
当需要从另一个表中获取数据并插入到当前表中时,可以使用子查询,有一个名为students的表,包含id、name和age三个字段,还有一个名为scores的表,包含id、student_id(学生ID)和score(分数)三个字段,现在要向students表中插入一条记录,该记录的学生ID和分数来自scores表中的一条记录,可以使用以下语句:
INSERT INTO students (id, name, age) SELECT id, name, age FROM scores WHERE id = 1;
使用默认值插入数据
当表中的某些列设置了默认值时,可以在INSERT语句中省略这些列的值,有一个名为students的表,包含id(主键)、name(姓名)、age(年龄)和gender(性别)四个字段,其中gender字段设置了默认值'男',现在要向该表中插入一条记录,可以省略gender字段的值,使用以下语句:
INSERT INTO students (id, name, age) VALUES (1, '张三', 18);
使用ON DUPLICATE KEY UPDATE插入数据
当需要向表中插入数据时,如果遇到主键或唯一索引冲突的情况,可以使用ON DUPLICATE KEY UPDATE子句来更新已有的记录,有一个名为students的表,包含id(主键)、name(姓名)和age(年龄)三个字段,现在要向该表中插入一条记录,如果遇到主键冲突,则更新已有的记录,可以使用以下语句:
INSERT INTO students (id, name, age) VALUES (1, '张三', 18) ON DUPLICATE KEY UPDATE name = '张三', age = 18;
注意事项
1、如果表中有自增主键,不需要在INSERT语句中指定主键的值。
2、如果表中有NOT NULL约束的列,需要在INSERT语句中为这些列提供值。
3、如果表中有外键约束,需要在INSERT语句中为主表提供正确的值。
4、如果表中有触发器,INSERT语句执行后会触发相应的触发器。
5、如果表中有唯一索引或非唯一索引,INSERT语句执行后会影响索引的结构。
6、如果表中有分区表,INSERT语句执行后会影响分区的结构。
7、如果表中有全文索引,INSERT语句执行后会影响全文索引的结构。
8、如果表中有空间索引,INSERT语句执行后会影响空间索引的结构。
9、如果表中有视图,INSERT语句执行后会影响视图的内容。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/361380.html