十九、插入数据
01. 数据插入
毫无疑问,SELECT是最常使用的SQL语句了;但是,还有其他3个经常使用的SQL语句需要学习,第一个就是INSERT。
INSERT是用来插入(或添加)行到数据库表的,插入可以用几种方式使用:
- 插入完整的行;
- 插入行的一部分;
- 插入多行;
- 插入某些查询的结果。
02. 插入完整的行
- INSERT语法:指定表名和被插入到新行中的值:
1.1 存储到每个表列中的数据在VALUES子句中给出,对每个列必须提供一个值;
1.2 如果某个列没有值,应该使用NULL值;
1.3 第一列cust_id也为NULL,每次插入一个新行时,该列由MySQL自动增量;
1.4 高度依赖于表中列的定义次序,并且还依赖于其次序容易获得的信息;
1.5 虽然这种语法很简单,但并不安全,应该尽量避免使用; - 编写INSERT语句的**更安全(不过更烦琐)**的方法:
- 一般不要使用没有明确给出列的列表的INSERT语句;
- 不管使用哪种INSERT语法,都必须给出VALUES的正确数目。
03. 插入多个行
- 可以使用多条INSERT语句,一次提交它们,每条语句用一个分号结束:
- 只要每条INSERT语句中的列名(和次序)相同,可以如下组合各语句:
- 此技术可以提高数据库处理的性能,因为MySQL用单条INSERT语句处理多个插入比使用多条 INSERT语句快。
04. 插入检索出的数据
INSERT一般用来给表插入一个指定列值的行,还存在另一种形式,可以利用它将一条SELECT语句的结果插入表中,这就是所谓的INSERT SELECT。
- 从另一表中合并客户列表到你的customers表:
不应该使用已经在customers中使用过的cust_id值,主键值不能重复; - 这个例子导入了cust_id,你也可以简单地省略这列;
- 为简单起见,这个例子在INSERT和SELECT语句中使用了相同的列名,但是,不一定要求列名匹配。