SELECT是最常使用的SQL语句了,我们前面十八天的时间都是在学习它的相关法,今天我们来学习一点不一样的。
今天我们学习一个新的语句,INSERT语句。
数据插入
INSERT是用来插入(或添加)行到数据库表的。插入可以用几种方式使用:
插入完整的行;
插入行的一部分;
插入多行;
插入某些查询的结果。
插入完整的行
把数据插入表中的最简单的方法是使用基本的INSERT语法,它要求指定表名和被插入到新行中的值。
它的基本用法如下
INSERT INTO 表名
VALUES(各个列值)
比如
运行一次原来的表就增加一行,运行两次就增加两行。
存储到每个表列中的数据在VALUES子句中给出,对每个列必须提供一个值。如果某个列没有值,应该使用NULL值(假定表允许对该列指定空值)。各个列必须以它们在表定义中出现的次序填充。
很显然上面的插入方式不太安全,万一你在插入过程中弄混了列的次序,那么插入的值也会出现错误。我们来看下面的一种插入方式
它在表名后面给出了列名,这样系统就默认吧17赋值到age列,下面这样也是可以的
也就是说,这种方式的插入数据与表格中原有列的顺序无关,而依赖于你给出的列名次序。
我们强烈建议使用第二种插入数据的方式。
插入多个行
INSERT语句除了可以插入一条记录以外,还可以插入多条记录。主要有两种方法。
第一种方法,使用多条INSERT语句,像我们之前一样,一条一条记录的插入。
或者我们只用一条select语句来实现
值用逗号分隔开。 这里建议使用第二种方式
插入检索出的数据
INSERT一般用来给表插入一个指定列值的行。但是, INSERT还存在另一种形式,可以利用它将一条SELECT语句的结果插入表中。这就是所谓的INSERT SELECT,顾名思义,它是由一条INSERT语句和一条SELECT语句组成的。
看下面的用法
这个与上面的用法区别就是缺少了VALUES语句,他实际把select语句检索出的记录当成我们之前的Values语句后跟的值,也就是说我们select语句返回的结果的列数必须与我们INSERT语句中给出的列数匹配。
INSERT SELECT中SELECT语句可包含WHERE子句以过滤插入的数据。