SQL—插入数据

作者: Mg明明就是你 | 来源:发表于2016-10-19 14:55 被阅读119次

数据插入(INSERT)

  • 顾名思义,INSERT用来将行插入(或添加)到数据库表。通常只能插入一行
  • 插入有几种方式:
    • 1、插入完整的行;
    • 2、插入行的一部分;
    • 3、插入某些查询的结果;

1、插入完整的行

INSERT INTO Customers VALUES ('0343454',
                              'toy land',
                              '435 Any Street',
                              'New York',
                              'NY',
                              '3333',
                              'USA',
                              NULL,
                              NULL);
// Tip:虽然这种写法很简单,但是并不安全,应尽量避免使用


/* 建议还是使用以下写法比较安全:
   因为提供看列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各列出现在表中的实际次序。
   优点在于:即使表的结构改变,这条INSERT语句仍然能够正确工作。*/
INSERT INTO Customers (cust_id,
                       cust_name,
                       cust_address,
                       cust_city,
                       cust_state,
                       cust_zip,
                       cust_country,
                       cust_contact,
                       cust_email)
             VALUES   ('0343454',
                       'toy land',
                       '435 Any Street',
                       'New York',
                       'NY',
                       '3333',
                       'USA',
                       NULL,
                       NULL);

2、插入行的一部分

INSERT INTO Customers (cust_id,
                       cust_name,
                       cust_address,
                       cust_city,
                       cust_state,
                       cust_zip,
                       cust_country)
             VALUES   ('0343454',
                       'toy land',
                       '435 Any Street',
                       'New York',
                       'NY',
                       '3333',
                       'USA',);
/*
  没有给出cust_contact和cust_email这两列提供的值。这表示没必要在INSERT语句中包含它们。
*/
注意:省略列
  • 如果表的定义允许,则可以在INSERT操作中省略某些列。不过省略的列必须满足以下某个条件:
    • 该列定义为允许NULL值(无值或者空值)
    • 在表定义中给出默认值。这表示如果不给出值,将使用默认值。
注意:省略所需的值
  • 如果表中不允许有NULL值或者默认值,这是却省略了表中的值,DBMS就会产生错误消息,相应的行不能成功插入。

3、插入某些查询的结果;

INSERT INTO Customers (cust_id,
                       cust_name,
                       cust_address,
                       cust_city,
                       cust_state,
                       cust_zip,
                       cust_country)
               SELECT cust_id,
                       cust_name,
                       cust_address,
                       cust_city,
                       cust_state,
                       cust_zip,
                       cust_country
            FROM CustNew;
// 说明:将从CustNew表中查询到的数据插入Customers 表中



从一个表复制到另外一个表(SELECT INTO)

  • 说明:INSERT SELECT 和 SELECT INTO的区别
    • 它们之间的一个重要差别就是前者导出数据,而后者导入数据。
  • 举个栗子:
    `SELECT * INTO CustCopy FROM Customers`
/* 说明:
     1、 这条SELECT 语句创建一个名为CustCopy的新表,并把Customers表的整个内容复制新表中
     2、要想只复制部分的列,可以明确给出列名,而不是使用*通配符。
*/

#### 而MariaDB、MySQL、Oracle、PostgreSQL和SQL使用的语法不一样
    `CREAT  TABLE CustCopy  AS SELECT * FROM Customers`
  • 使用SELECT INTO需要知道的一些事情:
    • 1、任何SELECT选项和子句都可以使用,包括WHERE和GROUP BY;
    • 2、可以利用联结从多个表插入数据
    • 3、不管从多少个表中检索数据,数据都只能插入到一个表中。

相关文章

网友评论

    本文标题:SQL—插入数据

    本文链接:https://www.haomeiwen.com/subject/xwdxuttx.html