增删改查的查之前18章已经讲过了,本章将学习增操作,INSERT,插入行到数据库表中。
-
插入完整的行
INSERT INTO Customer VALUE(NULL,#id没有值是因为该列由MySQL自动增量 'Pep E.Lapew', '100 STREET', 'Los ANG', 'CA', '123445', 'CN', NULL, NULL); #INSERT语句一般不会产生输出
不想给一个值可以指定NULL值,这种语法简单但是有安全风险,依赖表中列的定义次序,不能保证表结构变动后各个列还能保持完全相同的次序。不提供列名时,每个列都必须给出一个值
#更加安全的方法,但是繁琐,表名和值一一对应,即使表结构变化也能继续发挥作用 INSERT INTO Customer(cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email) VALUES('Pep E.Lapew', '100 STREET', 'Los ANG', 'CA', '123445', 'CN', NULL, NULL)
INSERT操作可能很耗时,可以在INSERT和INTO之间添加关键词LOW_PRIORITY降低语句的优先性。
-
插入行的一部分:如上,有些列不指定即可
-
插入多行
-
使用多条INSERT语句用分号分隔,最后提交一次。
或者每次插入的列名次序相同的话,使用逗号分隔多个VALUE的括号即可
INSERT INTO 表名( 列名 ) VALUE( 列的具体名1 ), ( 列的具体名2 );
此技术可以调高数据库处理的性能,比多个单条插入在一起执行快得多
-
-
插入检索出的数据
INSERT INTO 表名(
xxx,
yyy
)SELECT xxx,
yyy,
FROM 表名;