zoukankan      html  css  js  c++  java
  • SQL的插入

      一、数据的插入

      1、插入的关键字:INSERT INTO,在某些SQL实现中,可以去掉INTO关键字,不过最好还是提供INTO这个关键字,保证SQL代码可移植性。

      2、插入的方式:

    • 插入完整的行

      示例代码如下:

    INSERT INTO table_name
    VALUES(''column1_value, 'column2_value', 'column3_value', 'column4_value');

      存储在table_name表中每一列的数据在VALUES子句中给出,必须给每一列提供一个值,如果某列没有值,那么应该使用NULL值(需要该列支持空值);这里需要注意了,各列必须以它们在表中定义中出现的次序填充,这样的语句高度依赖表中列的定义次序,并不安全,迟早会出问题的,最好不要这样使用。我们可以指出全部的列名,来达到安全性,不过比较繁琐,示例代码如下:

    INSERT INTO table_name(column1, column2, column3, column4)
    VALUES('column1_value', 'column2_value', column3_value'', 'column4_value')

      这种方式的优点就是,即使表的结构改变,该语句也能正确工作;此外,因为提供了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各列出现在表中的实际次序。

    • 插入行的一部分:这种方式就是指给出表中部分的列,此时省略的列必须满足以下两个条件中的任一个:
      • 该列定义为允许NULL值(无值或空值)
      • 在表中定义中给出默认值。
    • 插入某些查询的结果

      通过INSERT SELECT,可以实现将SELECT语句的结果插入表中,同时也是实现了一条INSERT语句插入多行的功能,因为INSERT通常只插入一行,要是插入多行的,那么必须执行多个INSERT语句。示例代码如下:

    INSERT INTO table_name1(t1_column1, t1_column2, t1_column3, t1_column4)
    SELECT t2_column1, t2_column2, t2_column3, t2_column4
    FROM table_name2

      在使用INSERT SELECT时,若从SELECT检索出来的数据中包含了主键值,那么必须保证相同的主键值行数据在INSERT插入的表中是没有数据的,否则会导致后续的INSERT操作失败。

      INSERT插入的列与SELECT检索出的列,列名出可以不用保持一致,因为它们之间是通过列位置来关联的,也就是SELECT检索出来的第一列,在INSERT插入中就是第一列,以此类推。

      二、数据的导出

      前面说的的内容都是通过INSERT语句来实现数据插入表格中,其实还有另外一种方式,也可以实现数据复制,这就是SELECT INTO语句。示例代码如下:

    SELECT *
    INTO table_1
    FROM table_2;

      上述语句的含义是将table_2表中的数据复制到table_1表中。在某些DBMS中可以覆盖已存在表,所以要特别注意。该语句在实现复制表格数据是很好用的工具,例如开发人员可以在复制的数据上进行SQL代码测试,不用担心影响实际的数据。

      有关SELECT INTO语句,需要了解的事项:

    • 任何SELECT选项和子句都可以使用,包括WHERE和GROUP BY;
    • 可以利用联结,从多个表中插入数据;
    • 不管从多少个表中检索数据,数据都只能插入到一个表中。

      三、INSERT SELECT和SELECT INTO的差异

    • INSERT SELECT之前必须要创建好INSERT将要插入的表,而SELECT INTO不需要事先创建表,它会在运行过程中创建新表;
    • INSERT SELECT语句是插入数据,而SELECT INTO语句是复制数据、导出数据,某些熟悉不会复制过来,比如主键信息。
  • 相关阅读:
    [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.10
    [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.9
    [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.8
    [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.7
    [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.6
    [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.5
    [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.4
    [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.3
    [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.2
    [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.1
  • 原文地址:https://www.cnblogs.com/bien94/p/12879730.html
Copyright © 2011-2022 走看看