zoukankan      html  css  js  c++  java
  • 15 插入数据

    1.数据插入

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

    插入完整的行;

    插入行的一部分。

    插入某些查询的结果。

    (1)插入完整的行

    使用基本的INSERT语法,输入:

    INSERT INTO Customers

    VALUES('1000000006',

    'Tony Land',

    '123 Any Street',

    'New York',

    'NY',

    '11111',

    'USA',

    NULL,

    NULL);

    将一个新顾客插入Customers表中,存储在每一列的数据将在VALUES子句中给出,必须给每一列提供一个值,如果某列没有值,则使用NULL值。各列必须以它们在表定义中出现的次序填充。

    此种语法虽然简单,但不安全,应该尽量避免使用。上述SQL语句高度依赖于表中列的定义次序及其容易获得的次序信息。更安全但更繁琐的方法如下,输入:

    INSERT INTO Customers(cust_id,

    cust_name,

    cust_address,

    cust_city,

    cust_state,

    cust_zip,

    cust_country,

    cust_contact,

    cust_email)

    VALUES('1000000006',

         'Tony Land',

    '123 Any Street',

    'New York',

    'NY',

    '11111',

    'USA',

    NULL,

    NULL);

    在表名后的括号里明确给出了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各列出现在表中的实际次序。即使表的结构改变,该INSERT语句仍能正确工作。下面的INSERT语句填充所有的列,但以一种不同次序填充。输入:

    INSERT INTO Customers(cust_id,

    cust_contact,

    cust_email,

    cust_name,

    cust_address,

    cust_city,

    cust_state,

    cust_zip)

    VALUES('1000000006',

    NULL,

    NULL,

    'Tony Land',

    '123 Any Street',

    'New York',

    'NY',

    '11111');

    不要使用没有明确给出列的INSERT语句。

    VALUES的数目必须正,如果不提供列名,则必须给每个表提供一个值;如果提供列名,则必须给列出的每个列一个值。

    (2)插入部分行

    使用INSERT的推荐方法是明确给出标的列名。使用这种语法,还可以省略列,只给某些列提供值。之前没有给cust_contactcust_email这两列提供值,因此不需要在INSERT语句中包含它们,输入:

    INSERT INTO Customers(cust_id,

    cust_name,

    cust_address,

    cust_city,

    cust_state,

    cust_zip,

    cust_country)

    VALUES('1000000006',

         'Tony Land',

    '123 Any Street',

    'New York',

    'NY',

    '11111',

    'USA');

    省略的列必须满足:

    该列为允许NULL值(无值或空值);

    在表定义中使用默认值,即如果不给出值,将使用默认值。

    (3)插入检索出的数据

    INSERT SELECT:将SELECT语句的结果插入表中。

    假设要把另一个表中的顾客列合并到Customers表中,不需要每次读取一行再将其用INSERT插入,输入:

    INSERT INTO Customers(cust_id,

    cust_contact,

    cust_email,

    cust_name,

    cust_address,

    cust_city,

    cust_state,

    cust_zip,

    cust_country)

    SELECT cust_id,

    cust_contact,

    cust_email,

    cust_name,

    cust_address,

    cust_city,

    cust_state,

    cust_zip,

    cust_country

    FROM CustNew;

    使用INSERT SELECTCustNew中检索出所需数据并插入Customers表中。SELECT中列出的每一列对应于Customers表名后所跟的每一列。

    INSERT SELECT语句中可以包含WHERE子句,以过滤插入的数据。

    要插入多行必须用多个INSERT语句,INSERT SELECT则可以用一条插入多行。

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

    要将一个表的内容复制到一个全新的表,不使用INSERT语句,使用SELECT INTO语句。与INSERT SELECT将数据添加到一个已经存在的表不同,SELECT INTO将数据复制到一个新表,前者导出数据,后者导入数据。

    输入:

    CREATE TABLE CustCopy

    SELECT * FROM Customers;

    SELECT INTO使用要点:

    任何SELECT选项和子句均可使用,包括WHEREGROUP BY

    可利用联结从多个表中插入数据;

    不管从多少个表中检索数据,,数据都只能插入到一个表中。

  • 相关阅读:
    基于mAppWidget实现手绘地图--索引&DEMO
    C语言数据结构----栈的定义及实现
    libvirt命令行文档
    清理系统方法
    Linux 经典电子书共享下载
    使用数组实现队列----《数据结构与算法分析---C语言描述》
    清理系统垃圾
    epoll的内部实现 & 百万级别句柄监听 & lt和et模式非常好的解释
    进程、线程、socket套接字-资源大小 & 切换代价
    网络编程学习-面向工资编程
  • 原文地址:https://www.cnblogs.com/Sumomo0516/p/6131555.html
Copyright © 2011-2022 走看看