SQL的插入语句insert

来源:互联网 发布:网络诈骗主题班会记录 编辑:程序博客网 时间:2024/05/21 19:28


插入数据分为以下几种方式:


1. 插入完整的行;

2. 插入行的一部分

3. 插入某些查询的结果

4. 从一个表复制到另一个表


1. 插入完整的行,有两种方式:

   INSERT  INTO  Customers  VALUES ();                                   // 缺点:高度依赖表中列的定义次序,不能保证各列在下一次表结构变动后保持完全相同的次序。

   INSERT  INTO  Customers  ( 列名组 )  VALUES (  列值  );    // 缺点: 比较繁琐,但是更加安全,优点是 即使 表的结构改变,这条语句仍然能正确工作。


2. 插入行的一部分

   即 1 中的第二种方式,但要注意的是 省略的列是否允许为NULL值,在表中定义中给出的默认值等完整性约束条件。


3. 插入某些查询的结果

   INSERT  SELECT,是由一条INSERT语句和一条SELECT语句组成的,将SELECT语句的结果插入表中。

   INSERT通常只插入一行,要插入多行,必须执行多个INSERT语句,INSERT  SELECT是个例外,它可以用一条INSERT语句插入多行,不管SELECT语句返回多少行,都将被INSERT插入,其中的SELECT语句可以包含WHERE子句,过滤插入的数据。

   例如:想把另一表中的顾客列合并到Customers表中,不需要每次读取一行再将它用于INSERT插入,

   INSERT  INTO  Customers(

         列名组合

     )

    SELECT  列名组合   FROM  CustNew;   这里注意  不要从CustNew表中取出主键值,因为取出后的主键值会与Customer表的主键值重复,从而后续的INSERT 操作会失败,其中并且要保证 两个表的 列名组合中的各列的相对位置是否对应。


4. 从一个表复制到另一个表

   从一个表复制到另一个表其实可以使用上面的那种方法,但是上面的表需要首先建立一个表,而使用SELECT  INTO语句直接建立新表。

   可以使用SELECT  INTO语句会将数据复制到一个新表,与INSERT  SELECT的差别是 前者是导入数据,而后者是导出数据。    

  SELECT  *   INTO  CustCopy   FROM   Customers;  //  创建一个名为 CustCopy的新表,并把Customers表中的整体内容复制到新表,因为是 SELECT   *  ,如果想只复制部分的列,可以明确给出列名,而不是使用 *  通配符

  但是 MySql、MariaDBm、SQLite的格式有所变化,如下:

    CREATE   TABLE   CustCopy   AS   SELECT  *   FROM  Customers;

0 0