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
    可利用联结从多个表插入数据
    不管从多少个表中检索数据,数据都只能插入到一个表中
    ---------------------

  • 相关阅读:
    jQuery 源码解析(二十四) DOM操作模块 包裹元素 详解
    jQuery 源码解析(二十三) DOM操作模块 替换元素 详解
    jQuery 源码解析(二十二) DOM操作模块 复制元素 详解
    jQuery 源码分析(二十一) DOM操作模块 删除元素 详解
    jQuery 源码分析(二十) DOM操作模块 插入元素 详解
    jQuery 源码分析(十九) DOM遍历模块详解
    python 简单工厂模式
    python 爬虫-协程 采集博客园
    vue 自定义image组件
    微信小程序 image组件坑
  • 原文地址:https://www.cnblogs.com/ly570/p/11173778.html
Copyright © 2011-2022 走看看