《SQL必知必会》| 第15课 插入数据 学习笔记

第15课 插入数据

这一课介绍如何将行插入到数据库表中。我们学习了使用INSERT的几种方式。为什么要明确使用列名,如何用INSERT SELECT从其他表中导入行,如何用SELECT INFO将行导出到一个新表。


15.1 数据插入

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

  • 插入完整的行
  • 插入行的一部分
  • 插入某些查询的结果
提示:插入及系统安全

使用INSERT语句可能需要客户端/服务器DBMS中的特定安全权限。在你试图使用INSERT前,应该保证自己有足够的安全权限。

15.1.1 插入完整的行

语句中须在表名后的括号里明确给出列名。在插入行时,DBMS将用VALUES列表中的相应值填入列表中的对应项。
优点是:即使表的结构改变,这条INSERT语句仍然能正确工作。

15.1.2 插入部分行
注意:省略列

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

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

如果表中不允许有NULL值或者默认值,这时却省略了表中的值,DBMS就会产生错误消息,相应的行不能成功插入。

15.1.3 插入检索出的数据

可以利用它将SELECT语句的结果插入表中,这就是所谓的INSERT SELECT。顾名思义,它是由一条INSERT语句和一条SELECT语句组成的。

提示:INSERT SELECT中的列名

为简单起见,这个例子在INSERTSELECT语句中使用了相同的列名。但是,不一定要求列名匹配。事实上,DBMS一点儿也不关心SELECT返回的列名。它使用的是列的位置,因此SELECT中的第一列(不管其列名)将用来填充表列中指定的第一列,第二列将用来填充表列中指定的第二列,如此等等。

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

提示:插入多行

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

15.2 从一个表复制到另一个表

有一种数据插入不使用INSERT语句。要将一个表的内容复制到一个全新的表(运行中创建的表),可以使用SELECT INFO语句。
INSERT SELECT将数据添加到一个已经存在的表不同,SELECT INTO将数据复制到一个新表(有的DBMS可以覆盖已经存在的表,这依赖于所使用的具体DBMS)。

说明:INSERT SELECT与SELECT INTO

它们之间的一个重要差别是前者插入数据,而后者导出数据。

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

  • 任何SELECT选项和子句都可以使用,包括WHEREGROUP BY
  • 可利用联结从多个表插入数据;
  • 不管从多少个表中检索数据,数据都只能插入到一个表中。
提示:进行表的复制

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

发布了145 篇原创文章 · 获赞 23 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_34170700/article/details/104206120