insert语句是用来插入(或添加)行到数据库表的。插入可以用以下几种方式使用:
1)插入完整的行。
2)插入行的一部分。
3)插入多行。
4)插入某些查询的结果。
插入以及系统安全:可针对每个表或每个用户,利用MySQL的安全机制禁止使用insert语句。
把数据插入表中的最简单的方法是使用基本的insert语法,它要求指定表名和被插入到新行中的值。insert语句一般是不会产生输出的。存储到每个表列中的数据在values子句中给出,对每个列必须提供一个值。如果某个列没有值,应该使用null值(假定表允许对该列指定控制)。各个列必须以它们在表定义中出现的次序填充。
一般不要使用没有明确给出列的列表的insert语句。使用列的列表能使SQL代码继续发挥作用,即使表结构发生了变化。
不管使用哪种insert语法,都必须给出values的正确数目。如果不提供列名,则必须给每个列提供一个值。如果提供列名,则必须对每个列出的列给出一个值。如果不这样,将产生一条错误消息,相应的行插入不成功。当然,如果表的定义允许,则可以在insert操作中省略某些列。省略的列必须满足以下某个条件:
1)该列定义为允许NULL值(无值或空值)。
2)在表定义中给出默认值。这表示如果不给出值,将使用默认值。
如果对表中不允许NULL且没有默认值的列不给出值,则MySQL将产生一条错误消息,相应的行插入不成功。
提高整体性能:数据库经常被多个客户访问,对处理什么请求以及用什么次序处理进行管理是MySQL的任务。insert操作可能很耗时(特别是有很多索引需要更新时),而且它可能降低等待处理的select语句的性能。如果数据检索是最重要的(通常是这样的),则可以通过在insert和into之间添加关键字low_priority,指示MySQL降低insert语句的优先级。另外,这种方法同样适用于update和delete语句。
可以使用多条insert语句,甚至一次提交它们,每条语句用一个分号结束。
insert一般用来给表插入一个指定列值的行。但是,insert还存在另一种形式,可以利用它将一条select语句的结果插入表中。这就是所谓的insert select,顾名思义,它是由一条insert语句和一条select语句组成的。
insert select中的列名:事实上,MySQL不关心select返回的列名。它使用的是列的位置,因此select中的第一列(不管其列名)将用来填充表列中指定的第一个列,第二列将用来填充表列中指定的第二个列,如此等等。这对于从使用不同列名的表中导入数据是非常有用的。insert select中的select语句可包含where子句以过滤插入的数据。