SQL必知必会(第五版) 第15课:插入数据

目录

15.插入数据 (INSERT 语句)

15.1数据插入

15.1.1插入完整的行

15.1.2插入部分行

15.1.2插入检索出的数据(使用INSERT  SELECT语句)

15.3从一个表复制到另一个表(使用CREATE SELECT语句)

15.4挑战题


15.插入数据 (INSERT 语句)

15.1数据插入

15.1.1插入完整的行

使用INSERT语法,要求指定表明和插入到新行中的值。

INSERT INTO customers
VALUES(1000000006,          # 必须每一列提供一个值,如果某列没有值,则应该使用NULL值
        'Toy Land',
        '123 Any Street',
        'New York',
        'NY',
        '11111',
        'USA',
        NULL,
        NULL);

以上的方法并不安全,SQL语句高度依赖于表中列的定义次序,以下为改进代码。

在表后的括号里明确给出列名,即使表的结构改变,这条INSERT语句仍然能够正确工作。

INSERT INTO customers(cust_id,
                      cust_name,
                      cust_address,
                      cust_city,
                      cust_state,
                      cust_zip,
                      cust_country,
                      cust_contact,
                      cust_email)
VALUES(1000000006,        
        'Toy Land',
        '123 Any Street',
        'New York',
        'NY',
        '11111',
        'USA',
        NULL,
        NULL);

15.1.2插入部分行

  • 该列定义为允许NULL值。
  • 在表定义中给出默认值。这表示如果不给出值,将使用默认值。
INSERT INTO customers(cust_id,
                      cust_name,
                      cust_address,
                      cust_city,
                      cust_state,
                      cust_zip,
                      cust_country)
VALUES(1000000006,        
        'Toy Land',
        '123 Any Street',
        'New York',
        'NY',
        '11111',
        'USA');

在上面这个代码块中,可以看到 cust_contact和cust_email列没有提供值,这是可以的。

15.1.2插入检索出的数据(使用INSERT  SELECT语句)

若想把另一表中的顾客列合并到customers表中,可以如下进行:

/* 从一个新表custNew中检索出数据并插入到customers表*/

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;

15.3从一个表复制到另一个表(使用CREATE SELECT语句)

CREATE SELECT是将数据复制到一个新表

CREATE SELECT custCopy AS SELECT * FROM customers;

这条SELECT语句创建一个名为custCopy的新表,并把customers表的整个内容复制到新表中。

若只想复制部分的列,可以明确给出列名,而不是使用*通配符。 

15.4挑战题

  1. 使用INSERT和指定的列,将你自己添加到customers表中。明确列出要添加哪几列,且仅需列出你需要的列.
INSERT INTO customers(cust_id,
                      cust_email,
                      cust_name,
                      cust_address)
VALUES(001,
       yrx0163@163.com,
       Paula,
       SuZhou);

2.备份orders表和orderitems表。 

CREATE TABLE ordersNew AS SELECT * FROM orders;
CREATE TABLE orderitemsNew AS SELECT * FROM orderitems;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值