SQL必知必会—插入数据

《SQL必知必会》读书笔记

1.数据插入

插入有几种方式:

  • 插入完整的行;
  • 插入行的一部分;
  • 插入某些查询的结果。

提示:插入及系统安全

在你试图使用INSERT前,应该保证自己有足够的安全权限。

2.插入完整的行

INSERT INTO Customers
VALUES(
    '10000006',
    'Toy Land',
    '123 Any Street',
    'New York',
    'NY',
    '11111',
    'USA',
    NULL,
    NULL
    );

存储到表中的每一列的数据在VALUES子句中给出,必须给每一列提供一个值。如果某列没有值,如上面的cust_contact和cust_email列,则应该使用NULL值(假定表允许对该列指定空值)。各列必须以它们在表定义中出现的次序填充。

虽然这种语法很简单,但并不安全,应该尽量避免使用。上面的SQL语句高度依赖于表中列的定义次序,还依赖于其容易获得的次序信息。即使可以得到这种次序信息,也不能保证各列在下一次表结构变动后保持完全相同的次序。因此,编写依赖于特定次序的SQL语句使很不安全的,这样做迟早会出问题。

编写INSERT语句的更安全(不过更烦琐)的方法如下:

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

因为提供了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各列出现在表中的实际次序。其优点是,即使表的结构改变,这条INSERT语句仍然能正确工作。

注意:小心使用VALUES

不管使用哪种INSERT语法,VALUES的数目都必须正确。如果不提供列名,则必须给每个表列提供一个值;如果提供列名,则必须给列出的每个列一个值。否则,就会产生一条错误消息,相应的行不能成功插入。

3.插入部分行

INSERT INTO Customers(
                    cust_id,
                    cust_name,
                    cust_address,
                    cust_city,
                    cust_state,
                    cust_zip,
                    cust_country
                    )
Values(
        '10000006',
        'Tony Land',
        'New York',
        'NY'
        '11111',
        'USA'
    );

注意:省略列

如果表的定义允许,则可以在INSERT操作中省略某些列。省略的列必须满足以下某个条件。

  • 该列定义为允许NULL值(无值或空值)。
  • 在表定义中给出默认值。这表示如果不给出值,将使用默认值。

4.插入检索出的数据

INSERT还存另一种形式,可以利用它将SELECT语句的结果插入表中,这就是所谓的INSERT SELECT。顾名思义,它是由一条INSERT语句和一条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 SELECT 中 SELECT 语句可以包含WHERE子句,以过滤插入的数据。

提示:插入多行。

INSERT通常只插入一行。要插入多行,必须执行多个INSERT语句。INSERT SELECT是个例外,它可以用一条INSERT插入多行,不管SELECT语句返回多少行,都将被INSERT插入。

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

有一种数据插入不使用INSERT语句。要将一个表的内容复制到一个全新的表(运行中创建的表),可以使用SELECT INTO语句。

说明:DB2不支持

DB2不支持这里描述的SELECT INTO。

与INSERT SELECT 将数据添加到一个已经存在的表不同,SELECT INTO将数据复制到一个新表(有的DBMS可以覆盖已经存在的表,这依赖于所使用的具体DBMS)。

SELECT *
INTO CustCopy
FROM Customers;

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

在使用SELECT INTO 时,需要知道一些事情:

  • 任何SELECT选项和子句都可以使用,包括WHERE和GROUP BY;
  • 可利用联结从多个表中插入数据;
  • 不管从多少表中检索数据,数据都只能插入到一个表中。

提示:进行表的复制

SELECT INTO是试验新SQL语句前进行表复制的很好工具。先进行复制,可在复制的数据上测试SQL代码,而不会影响实际的数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《SQL必知必会》第三版样例数据包括以下内容: 1. 表格(Tables):包含数据的结构,用于存储和组织数据。每个表格由一个或多个列(Columns)组成,每一列定义了特定类型的数据。 2. 行(Rows):也称为记录(Record),表示表格中的一条数据。每一行由表格的列组成,每一列都包含一个相关的值。 3. 值(Values):表示在表格中的特定位置上的数据。每一个单元格都包含一个值,该值与特定列和行的交汇处相对应。 4. 主键(Primary Key):用于唯一标识表格中的每一行的列。主键列包含唯一的值,并且不能包含空值(NULL)。 5. 外键(Foreign Key):用于建立表格之间的关系。外键列包含与在另一表格中定义的主键列相对应的值。 6. SQL语句(SQL Statements):用于在数据库中执行操作的命令。包括数据查询(SELECT)、数据插入(INSERT)、数据更新(UPDATE)和数据删除(DELETE)等。 7. 样例数据(Sample Data):用于演示和练习的虚拟数据集。这些数据集包含不同类型的数据和关系,以帮助读者理解和应用SQL的概念和技巧。 样例数据被用于书中的案例分析和实践示例,读者可以通过运行相关的SQL语句来操作和查询这些数据。通过这种方式,读者可以更好地理解SQL的基本概念和操作技巧,并将其应用于实际的数据库开发和管理中。 ### 回答2: 《SQL 必知必会 第三版》这本书是一本经典的SQL学习教材,旨在帮助初学者了解和掌握SQL语言。在书中涵盖了丰富的样例数据,以便读者能够通过实例理解SQL的相关概念和运用。 样例数据是指书中提供的用于演示和练习的具体数据集合,这些数据集合包括各种表格和表中的记录。通过使用这些样例数据,读者可以进行实践操作,实现各种SQL查询和数据处理的练习。 书中的样例数据通常涵盖了各个SQL操作的场景,如创建数据库、创建表格、插入记录、查询记录、更新记录和删除记录等。这些样例数据有助于读者更好地理解SQL语言的基本语法和操作方法。 此外,书中还提供了一些复杂和实际场景的样例数据,以帮助读者应用SQL技术解决实际问题。通过对这些样例数据的操作和分析,读者可以学习到如何使用SQL语言进行数据分析、数据挖掘和决策支持等工作。 总之,《SQL 必知必会 第三版》的样例数据是读者学习和实践SQL语言的重要资源。通过实际操作这些样例数据,读者可以更好地理解SQL的相关概念和应用,提升SQL编程和数据处理的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值