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

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

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

插入语句没有输出。

插入完整的行:

INSERT INTO tableName
VALUES(fieldsValueList);

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

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

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

更安全的写法:

INSERT INTO tableName(fieldList)
VALUES(fieldValueList);

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

应该总是使用第二种使用列的列表的方式,它更安全。

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

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

INSERT LOW_PRIORITY INTO

这也适用于UPDATE和DELETE语句。

插入多条数据:

INSERT INTO tableName(fieldList)
VALUES(fieldValueList1),(fieldValueList2);

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

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

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

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

猜你喜欢

转载自blog.csdn.net/tus00000/article/details/111404627