MySQL必知必会 学习笔记 第十九章 插入数据

快来打我* 2022-12-29 02:15 194阅读 0赞

插入可用以下方式进行:
1.插入完整行。
2.插入行的一部分。
3.插入多行。
4.插入某些查询的结果。

可针对每个表或每个用户,利用MySQL的安全机制禁止使用INSERT语句。

插入语句没有输出。

插入完整的行:

  1. INSERT INTO tableName
  2. VALUES(fieldsValueList);

插入完整行时,每个字段的值都要出现,如果某个列没有值且表允许该列为空值,则使用NULL值。列值必须以它们在表定义中出现的顺序填充。

如果某列是自动增长的,那么填入NULL时MySQL会填入自动增长后的值。

上面这种形式的语句不安全,高度依赖于表中列的定义次序,下次表结构变动后必须改写SQL。

更安全的写法:

  1. INSERT INTO tableName(fieldList)
  2. VALUES(fieldValueList);

这种写法的字段值顺序要与字段顺序一致,其优点是即使表的结构改变,插入也能正确工作。这种写法不用出现自增列,它不需要值也能自增。

应该总是使用第二种方式插入数据,它更安全。

使用列的列表插入数据时,可以省略某些列:
1.允许为NULL的列。
2.有默认值的列。

INSERT操作可能很耗时(尤其是有很多索引需要更新时),如果数据检索是最重要的,可以降低INSERT语句的优先级,使得多个请求到来时优先处理其他请求(如数据检索):

  1. INSERT LOW_PRIORITY INTO

这也适用于UPDATE和DELETE语句。

插入多条数据:

  1. INSERT INTO tableName(fieldList)
  2. VALUES(fieldValueList1),(fieldValueList2);

用单条INSERT语句处理多个插入比使用多条INSERT语句快。

从表中读取行插入到另一个表中:

  1. INSERT INTO tableName1(fieldList1)
  2. SELECT fieldList2
  3. FROM tableName2; # 还可添加WHERE过滤数据

检索出的fieldList2中的列值按顺序匹配给fieldList1中的列。fieldList1和fieldList2中相匹配的列名不一定相同。

发表评论

表情:
评论列表 (有 0 条评论,194人围观)

还没有评论,来说两句吧...

相关阅读