十九:插入数据
1:insert语句用来将行插入数据表中,可以插入完整的行、行的一部分、插入多行、插入某些查询的结果。
2:不指定列名,可以这样插入:
insert into customers
values(null,
'pep e. lapew',
'100 main street',
'los angeles',
'ca',
'90046',
'usa',
null,
null);
这种形式中,每个列必须提供一个值,如果某个列没有值,则使用null。每个列按照他们在表中定义中出现的次序填充。因为cust_id可以自动增加,所以可以为null。
这种形式虽然简单,但是不安全,并且高度依赖于表中列的定义次序,所以要避免使用。
3:更安全的使用insert的方法是:
insert into customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email)
values('pope lapew',
'100 main street',
'los angels',
'ca',
'90046',
'usa',
null,
null);
表名后面的括号中,明确给出了列名,在插入行时,mysql将用values列表中的相应值填入列表中的对应项。values必须以指定的次序匹配指定的列名。指定列名后,必须在values中给出每个列的值。
使用这种语法,还可以省略某些列,比如上例中cust_id就省略了。省略的列必须满足两个条件中的一个:该列定义时允许NULL值;在表定义中给出默认值。
4:insert操作可能很耗时,特别是有许多索引需要更新时,而且他还可能降低select的性能。如果一系列操作中,select操作很重要,则可以使用low_priority关键字,指示mysql降低insert语句的优先级,比如:insert low_priority into 表名...
5:如果需要插入多个行,可以使用多条insert语句。也可以使用一条insert语句,比如:
insert into customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
values('pop e lapew',
'100 main street',
'los angels',
'ca',
'90046',
'usa'),
(
'm martian',
'42 galaxy way',
'new york',
'ny',
'11213',
'usa');
这样处理,可以提高数据库处理的性能,使用一条insert语句进行多行插入比多条insert语句更快。
6:insert还可以将一条select语句的结果插入表中,也就是inser