zoukankan      html  css  js  c++  java
  • SQL必知必会——插入数据(十五)

    1、数据插入

    INSERT用来将行插入(或添加)到数据库表。插入有几种方式:

    插入完整的行
    插入行的一些部分
    插入某些查询的结果
    注意:
    1、使用INSERT语句可能需要客户端/服务端DBMS中的特定安全权限。在你试图使用INSERT前,应该保证自己有足够的安全权限

    2.1、插入完整的行

    INSERT INTO customers
    VALUES(
    'Toy Land'
    ,'123 Any Street'
    ,'New York'
    ,'NY'
    ,'11111'
    ,'USA'
    ,'NULL'
    ,'NULL'
    );
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    注意:
    1、在某些SQL实现中,跟在INSERT之后的INTO关键字是可选的。但是,及时不一定需要,最好还是提供这个关键字,这样需做将保证SQL代码在DBMS之间可移植
    2、上面的SQL语句高度依赖于表中列的定义,还依赖于其容易获得次序的信息。即使可以得到这种次序信息,也不能保证各列在下一次表结构变动后保持完全相同的次序。因此,编写依赖于特定次序的SQL语句是很不安全的,这样迟早会出问题

    INSERT INTO customers
    (
    cust_id,
    cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country,
    cust_contact,
    cust_email
    )
    VALUES(
    'Toy Land',
    '123 Any Street',
    'New York',
    'NY',
    '11111',
    'USA',
    'NULL',
    'NULL',
    )
    --在插入行时,DBMS将用VALUES列表中的相应值贴入列表中的对应项。VALUES中的第一个值对应第一个指定列名,
    第二个值对应于第二个列名,如此等等。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    注意:
    1、因为提供了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各列出现在表中的实际次序。其优点是,即使表的结构改变,这条INSERT语句任然能正确工作。

    2.2、插入部分行

    INSERT INTO customers
    (
    cust_id,
    cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country,
    )
    VALUES(
    'Toy Land',
    '123 Any Street',
    'New York',
    'NY',
    '11111',
    'USA',
    )
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    注意:
    省略的列必须满足一下某些条件
    1、该列定义为允许NULL值(无值或空值)
    2、在表定义中给出默认值。这表示如果不给出值,将使用默认值

    2.3、插入检索出的数据

    INSERT INTO customers
    (
    cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country
    )
    SELECT
    cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country
    FROM custnew;
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    注意:
    1、为了简单起见,这个例子在INSERT和SELECT语句中使用了相同的列名。但是,不一定要求列名匹配。事实上,DBMS一点也不关心SELECT返回的列名。他使用的列的位置。

    2.4、从一个表复制到另一个表

    SELECT *
    INTO custcopy
    FROM customers;
    --这条SELECT语句创建一个名为custcopy的新表,并把customers表的整个内容复制到新表中。
    因为这里使用的时select *,所以将在custcopy表中创建(并填充)于customers表的每一列相同的列。
    1
    2
    3
    4
    5
    注意:

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

  • 相关阅读:
    sqlzoo练习答案--SUM and COUNT
    响应式的嵌入内容和图片
    缓存server设计与实现(五)
    编译器DIY——读文件
    [Leetcode]-Pascal's Triangle
    zoj 1562 反素数 附上个人对反素数性质的证明
    [POJ 1236][IOI 1996]Network of Schools
    POJ 3691 DNA repair [AC自动机 DP]
    POJ 1625 Censored! [AC自动机 高精度]
    51Nod 1225 余数之和 [整除分块]
  • 原文地址:https://www.cnblogs.com/ly570/p/11173778.html
Copyright © 2011-2022 走看看