iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SQL 入门教程:数据插入(INSERT)
  • 515
分享到

SQL 入门教程:数据插入(INSERT)

SQL入门教程:数据插入(INSERT) 2015-09-22 08:09:03 515人浏览 无得
摘要

目录一、插入完整的行二、插入部分行三、插入检索出的数据请参阅 目录汇总:sql 入门教程:面向萌新小白的零基础入门教程 毫无疑问,SELECT 是最常用的 SQL 语句了,这就是前 14 部分都在讲它的原因。但是,还有其他 3 个

SQL 入门教程:数据插入(INSERT)

目录
  • 一、插入完整的行
  • 二、插入部分行
  • 三、插入检索出的数据
  • 请参阅

目录汇总:sql 入门教程:面向萌新小白的零基础入门教程

毫无疑问,SELECT 是最常用的 SQL 语句了,这就是前 14 部分都在讲它的原因。但是,还有其他 3 个常用的 SQL 语句需要学习。第一个就是 INSERT(第二个是 UPDATE 第三个是 DELETE)。

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

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

下面逐一介绍这些内容。

提示:插入及系统安全

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

一、插入完整的行

把数据插入表中的最简单方法是使用基本的 INSERT 语法,它要求指定表名和插入到新行中的值。下面举一个例子:

输入▼

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

分析▼

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

提示:INTO 关键字

在某些 SQL 实现中,跟在 INSERT 之后的 INTO 关键字是可选的。但是,即使不一定需要,最好还是提供这个关键字,这样做将保证 SQL 代码在 DBMS 之间可移植。

虽然这种语法很简单,但并不安全,应该尽量避免使用。上面的 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(1000000006,
       "Toy Land",
       "123 Any Street",
       "New York",
       "NY",
       "11111",
       "USA",
       NULL,
       NULL);

分析▼

这个例子与前一个 INSERT 语句的工作完全相同,但在表名后的括号里明确给出了列名。在插入行时,DBMS 将用 VALUES 列表中的相应值填入列表中的对应项。VALUES 中的第一个值对应于第一个指定列名,第二个值对应于第二个列名,如此等等。

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

说明:不能插入同一条记录两次

如果你尝试了这个例子的两种方法,会发现第二次生成了一条出错消息,说 ID 为 1000000006 的顾客已经存在。在 数据库基础 我们说过,主键的值必须有唯一性,而 cust_id 是主键,DBMS 不允许插入相同 cust_id 值的新行。下一个例子也是同样的道理。要想再尝试另一种插入方法,需要首先删除掉已经插入的记录(请参阅 删除数据)。要么就别尝试新方法了,反正记录已经插入好,你可以继续往下学习。

下面的 INSERT 语句填充所有列(与前面的一样),但以一种不同的次序填充。因为给出了列名,所以插入结果仍然正确:

输入▼

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

提示:总是使用列的列表

不要使用没有明确给出列的 INSERT 语句。给出列能使 SQL 代码继续发挥作用,即使表结构发生了变化。

注意:小心使用 VALUES

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

二、插入部分行

正如所述,使用 INSERT 的推荐方法是明确给出表的列名。使用这种语法,还可以省略列,这表示可以只给某些列提供值,给其他列不提供值。

请看下面的例子:

输入▼

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_contactcust_email 这两列提供值。这表示没必要在 INSERT 语句中包含它们。因此,这里的 INSERT 语句省略了这两列及其对应的值。

注意:省略列

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

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

注意:省略所需的值

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

三、插入检索出的数据

INSERT 一般用来给表插入具有指定列值的行。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;

说明:新例子的说明

这个例子从一个名为 CustNew 的表中读出数据并插入到 Customers 表。为了试验这个例子,应该首先创建和填充 CustNew 表。CustNew 表的结构与 样例表脚本 中描述的 Customers 表相同。在填充 CustNew 时,不应该使用已经在 Customers 中用过的 cust_id 值(如果主键值重复,后续的 INSERT 操作将会失败)。

分析▼

这个例子使用 INSERT SELECTCustNew 中将所有数据导入 CustomersSELECT 语句从 CustNew 检索出要插入的值,而不是列出它们。SELECT 中列出的每一列对应于 Customers 表名后所跟的每一列。这条语句将插入多少行呢?这依赖于 CustNew 表有多少行。如果这个表为空,则没有行被插入(也不产生错误,因为操作仍然是合法的)。如果这个表确实有数据,则所有数据将被插入到 Customers

提示:INSERT SELECT 中的列名

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

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

提示:插入多行

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

请参阅

  • 数据插入
  • 从一个表复制到另一个表
  • 数据插入(INSERT)练习题

(完)

您可能感兴趣的文档:

--结束END--

本文标题: SQL 入门教程:数据插入(INSERT)

本文链接: https://www.lsjlt.com/news/8694.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL 入门教程:数据插入(INSERT)
    目录一、插入完整的行二、插入部分行三、插入检索出的数据请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 毫无疑问,SELECT 是最常用的 SQL 语句了,这就是前 14 部分都在讲它的原因。但是,还有其他 3 个...
    99+
    2015-09-22
    SQL 入门教程:数据插入(INSERT)
  • MySQL insert插入数据
    DB哥MySQL高级教程-系统学习MySQL共149课时 加我微信公众号免费学:【DB哥】 文末有MySQL高级课程目录 在创建数据库完成之后,我们需往数据库中出入数据,在MySQL中可以使用INSERT语句向数据库已有数据库表插入一行...
    99+
    2023-10-04
    mysql 数据库 sql
  • SQL 入门教程:更新(UPDATE)数据
    目录请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 更新(修改)表中的数据,可以使用 UPDATE 语句。有两种使用 UPDATE 的方式: 更新表中的特定行; 更新表中的所有行。 下面分别介绍。 注意:不要省略 ...
    99+
    2021-01-22
    SQL 入门教程:更新(UPDATE)数据
  • SQL 入门教程:数据库基础
    目录一、数据库二、表三、列和数据类型四、行五、主键请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 你正在读本 SQL 教程,这表明你需要以某种方式与数据库打交道。SQL 正是用来实现这一任务的语言,因此在学习 SQL 之...
    99+
    2017-01-19
    SQL 入门教程:数据库基础
  • SQL 入门教程:排序(ORDER BY)数据
    目录请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 下面的 SQL 语句返回某个数据库表的单个列。但请看其输出,并没有特定的顺序。 输入▼ SELECT prod_name FROM Products; 输出▼...
    99+
    2019-10-05
    SQL 入门教程:排序(ORDER BY)数据
  • SQL 入门教程:数据分组(GROUP BY)
    目录创建分组请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 从 聚集函数 得知,使用 SQL 聚集函数可以汇总数据。这样,我们就能够对行进行计数,计算和与平均数,不检索所有数据就获得最大值和最小值。 目前为止的所有计算都...
    99+
    2020-02-12
    SQL 入门教程:数据分组(GROUP BY)
  • SQL 入门教程:使用函数
    目录一、文本处理函数二、日期和时间处理函数三、数值处理函数请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 大多数 SQL 实现支持以下类型的函数。 用于处理文本字符串(如删除或填充值,转换值为大写或小写)的文本函数。 ...
    99+
    2017-06-27
    SQL 入门教程:使用函数
  • SQL 入门教程:聚集函数
    目录一、AVG() 函数二、COUNT() 函数三、MAX() 函数四、MIN() 函数五、SUM() 函数请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 我们经常需要汇总数据而不用把它们实际检索出来,为此 SQL 提供...
    99+
    2020-07-09
    SQL 入门教程:聚集函数
  • MySQL插入数据(添加数据)-INSERT
    要将数据插入MySQL数据库表中,可以使用INSERT INTO语句。语法如下:```INSERT INTO table_name ...
    99+
    2023-09-15
    mysql
  • SQL 数据的插入(INSERT 语句的使用方法)
    目录一、什么是 INSERT二、INSERT 语句的基本语法三、列清单的省略四、插入 NULL五、插入默认值六、从其他表中复制数据请参阅 学习重点 使用 INSERT 语句可以向表中插入数据(行)。原则上,INSERT 语句每次执行...
    99+
    2020-12-13
    SQL 数据的插入(INSERT 语句的使用方法)
  • SQL 教程-入门基础篇
    文章目录 SQL 简介SQL 语法SQL SELECT 语句SQL SELECT DISTINCT 语句SQL WHERE 子句SQL AND & OR 运算符SQL ORDER BY...
    99+
    2023-08-31
    sql 数据库 mybatis mysql
  • SQL 零基础入门教程
    目录一、了解 SQL二、检索数据三、排序检索数据四、过滤数据五、高级数据过滤六、用通配符进行过滤七、创建计算字段八、使用函数处理数据九、汇总数据十、分组数据十一、使用子查询十二、联结表十三、创建高级联结十四、组合查询十五、插入数据十六、更...
    99+
    2014-09-15
    SQL 零基础入门教程
  • SQL 入门教程:SELECT 语句
    目录请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 SQL 语句是由简单的英语单词构成的。这些单词称为关键字,每个 SQL 语句都是由一个或多个关键字构成的。最经常使用的 SQL 语句大概就是 SELECT 语句了。它的...
    99+
    2019-04-11
    SQL 入门教程:SELECT 语句
  • SQL 入门教程:子查询
    目录一、利用子查询进行过滤请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 SELECT 语句 是 SQL 的查询。我们迄今为止所看到的所有 SELECT 语句都是简单查询,即从单个数据库表中检索数据的单条语句。 ...
    99+
    2017-11-30
    SQL 入门教程:子查询
  • access数据库入门教程
    以下是一个简单的Access数据库入门教程:1. 创建数据库:打开Access软件,在“文件”菜单中选择“新建”,然后选择“空白数据...
    99+
    2023-09-13
    access数据库
  • MySQL(62)MySQL INSERT:插入数据(添加数据)
    MySQL INSERT:插入数据(添加数据) 数据库与表创建成功以后,需要向数据库的表中插入数据。在 MySQL 中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据。 基本语法 INSERT 语句有两种语法形式,分别...
    99+
    2023-09-09
    mysql java sql
  • SQL 入门教程:创建视图
    目录一、利用视图简化复杂的联结二、用视图重新格式化检索出的数据三、用视图过滤不想要的数据四、使用视图与计算字段请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 理解了什么是 视图 以及管理它们的规则和约束后,我们来创建视图...
    99+
    2022-01-24
    SQL 入门教程:创建视图
  • SQL 入门教程:LIKE 操作符
    目录一、百分号(%)通配符二、下划线(_)通配符三、方括号([])通配符四、使用通配符的技巧请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 前面介绍的所有操作符都是针对已知值进行过滤的。不管是匹配一个值还是多个值,检验大...
    99+
    2022-02-08
    SQL 入门教程:LIKE 操作符
  • SQL 入门教程:拼接字段
    目录使用别名请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 为了说明如何使用 计算字段,我们来举一个简单例子,创建由两列组成的标题。 Vendors 表包含供应商名和地址信息。假如要生成一个供应商报表,需要在格式化的名称...
    99+
    2020-03-12
    SQL 入门教程:拼接字段
  • (Sql server)用现有表中的数据创建Sql的Insert插入语句
    之前,在Codeproject发表过一篇关于用现有表中数据创建Insert的Sql语句的存储过程,今天将其搬到这里来,注意本存储过程仅适用于SQL SERVER。 介绍 一些时候,你想导出一些现有表中记录的Sql脚本以便你可以插入这些数据到...
    99+
    2020-08-31
    (Sql server)用现有表中的数据创建Sql的Insert插入语句
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作