• SQL基础教程(第2版)第4章 数据更新:4-1 数据的插入(INSERT)


    第4章 数据更新:4-1 数据的插入(INSERT)

    将列名和值用逗号隔开,分别括在()内,这种形式称为清单。
    对表中所有列进行INSERT操作时可以省略表名后的列清单。
    插入NULL时需要在VALUES子句的值清单中写入NULL
    可以为表中的列设定默认值(初始值),默认值可以通过在CREATE TABLE语句中为列设置DEFAULT约束来设定。
    插入默认值可以通过两种方式实现,即在INSERT语句的VALUES子句中指定DEFAULT关键字(显式方法),或省略列清单(隐式方法)。
    使用INSERTSELECT可以从其他表中复制数据。

    要学习 INSERT 语句,我们得首先创建一个名为 ProductIns 的表。请大家执行代码清单 4-1 中的 CREATE TABLE 语句。

    CREATE TABLE ProductIns
    (product_id      CHAR(4)      NOT NULL,
     product_name    VARCHAR(100) NOT NULL,
     product_type    VARCHAR(32)  NOT NULL,
     sale_price      INTEGER      DEFAULT 0,
     purchase_price  INTEGER      ,
     regist_date     DATE         ,
     PRIMARY KEY (product_id));
    View Code

    该表除了为 sale_price 列(销售单价)设置了 DEFAULT 0 的约束之外,其余内容与之前使用的 Product(商品)表完全相同。

    ■ INSERT语句的基本语法

    INSERT INTO ProductIns (product_id, product_name, product_type, sale_price, purchase_price, regist_date) VALUES ('0001', 'T恤' ,'衣服', 1000, 500, '2009-09-20');
    
    
    /*
    -- VALUES清单中缺少1列
    INSERT INTO ProductIns (product_id, product_name, product_type, sale_price, purchase_price, regist_date) VALUES ('0001', 'T恤' ,'衣服', 1000, 500);
    */
    View Code

    原则上,执行一次 INSERT 语句会插入一行数据。因此,插入多行时,通常需要循环执行相应次数的 INSERT 语句 


    ■ 列清单的省略

    -- 使用列清单
    INSERT INTO ProductIns (product_id, product_name, product_type, sale_price, purchase_price, regist_date) VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
    
    -- 不使用列清单
    INSERT INTO ProductIns VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
    代码清单4-3 省略列清单

    ■ 插入NULL

    INSERT 语句中想给某一列赋予 NULL 值时,可以直接在 VALUES 子句的值清单中写入 NULL。 

    但是,想要插入 NULL 的列一定不能设置 NOT NULL 约束。向设置了 NOT NULL 约束的列中插入 NULL 时, INSERT 语句会出错,导致数据插入失败。

    ■ 插入默认值

    其中 DEFAULT 0 就是设置 DEFAULT 约束的部分。像这样,我们可以通过“DEFAULT 默认值 >”的形式来设定默认值。

    那么在实际使用中哪种方法更好呢?笔者建议大家使用显式的方法。

    如果省略了没有设定默认值的列,该列的值就会被设定为 NULL。因此,如果省略的是设置了 NOT NULL 约束的列, INSERT 语句就会出错。

    ■ 从其他表中复制数据

    要插入数据,除了使用 VALUES 子句指定具体的数据之外,还可以从其他表中复制数据。

    下面我们就来学习如何从一张表中选取数据,复制到另外一张表中。

    -- 插入数据用的复制商品表
    CREATE TABLE ProductCopy
    (product_id      CHAR(4)      NOT NULL,
     product_name    VARCHAR(100) NOT NULL,
     product_type    VARCHAR(32)  NOT NULL,
     sale_price      INTEGER      ,
     purchase_price  INTEGER      ,
     regist_date     DATE         ,
     PRIMARY KEY (product_id));
    代码清单4-9 创建ProductCopy表

    INSERT语句的SELECT语句中,可以使用WHERE子句或者GROUP BY子句等任何SQL语法(但使用ORDER BY子句并不会产生任何效果)。

    部分内容来自于学习编程期间收集于网络的免费分享资源和工作后购买的付费内容。
  • 相关阅读:
    flutter项目目录介绍
    flutter真机调试出现flutter Launching 'app' on No Devices.
    flutter run出现 Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
    小程序uni-app中uview中select选择器第二次无法选中设置的默认值
    android studio编译flutter项目
    如何解决:Android Studio (version 4.1); Flutter plugin not installed and Dart plugin not installed errors
    CF Round 87
    CF #643(div.2)
    CF #642(div.3)
    CF #638(div.2)
  • 原文地址:https://www.cnblogs.com/MarlonKang/p/12228446.html
Copyright © 2020-2023  润新知