SQL 数据操作语言 (DML)
介绍
与关系数据库管理系统 (RDBMS) 通信的最常用方法之一是通过结构化查询语言 (SQL)。如什么是 SQL中所述,SQL 有几种子语言。这些子语言所包含的语句可能因谈论者而异。最广泛的两个类别是:
用于管理数据库内的对象的数据描述语言 (DDL) 语句。
用于数据库内数据管理的数据库操作语言 (DML) 语句。
表 1 列出了四种流行数据库的 DML 关键字。根据您使用的数据库版本,此列表可能不完整。但它确实可以让您了解每个供应商的 SQL 实现有何不同。
表 1:每个 RDBMS 的数据操作语言 (DML) 语句
本指南的其余部分将重点介绍表 1 中列出的数据库中可用的 DML 语句,这些语句允许用户选择(查询)、插入(添加)、更新(修改)和删除数据。
跟随
有几个网站可以让你练习使用 SQL。我将使用SQL Fiddle,在撰写本指南时,它支持几种不同的数据库和版本。我将展示的语法是使用 Oracle 数据库测试的。本指南不涵盖 DDL 语句,但为了能够执行 DML,您必须执行一些 DDL。要在 SQL Fiddle 中创建表,请在“构建模式”窗口中执行以下操作:
本指南中的其他示例语句需要在“运行 SQL”窗口中执行。
插入
基本INSERT语句可以采用两种形式。第一种是指定要插入的列名和值。
注意:这里的提交是一个事务控制关键字,用于保存输入的数据。
指定列时,您应该具体输入数据,但顺序并不重要。
如果要将数据插入所有列,则可以使用第二种形式并仅指定值。值的顺序必须与表列顺序匹配。
如果您正在使用 SQL Fiddle,那么您将需要对 EMPLOYEES 表进行一些额外的插入,以便其中也包含数据。
选择
SELECT 语句用于从数据库中的一个或多个对象检索数据。在 Oracle 中,SELECT 语句可以采用的最简单形式如下:
此语句检索表employees中的所有数据(未经过滤)。
注意:如果您的SELECT语句开始不返回任何行,请将所有插入语句与创建表语句一起放入“构建模式”窗口,然后再次构建模式。
以下语句仅从员工表中返回姓氏和部门 ID。
您可以进一步使用WHERE子句根据其他条件过滤数据。此语句根据 DEPTID 列过滤数据,并且仅返回DEPTID =1时的数据。
您不必显示您正在过滤的列。
当多个表之间存在某种类型的连接时,您可以使用 select 语句来显示来自多个表的信息。在我们的示例中,员工表仅包含部门 ID。如果要显示部门名称,则必须包含部门表并使用WHERE子句在DEPTID字段上将表连接在一起。
这些是非常简单的SELECT语句。根据供应商的规范,事情可能会变得更加复杂,但同时也非常有用。例如,Oracle 提供了分析函数,可以计算排名、百分位数、进行移动窗口计算、线性回归统计、滞后/领先分析以及首次/末次分析。
更新
更新语句允许您更改表中存储的行的特定列中的数据。您可以通过包含WHERE子句并使用一组唯一值来选择要更新的特定行。在雇员表中,EMPLOYEEID是唯一的。如果 Fredrick 决定更改他的姓氏,那么我们可以根据EMPLOYEEID 3更新LASTNAME列。
您还可以根据WHERE子句同时更新多行。
警告:如果您不使用WHERE子句,您将更新所有行。
注意:此处的ROLLBACK是事务控制关键字,可将数据恢复到其原始状态。如果您在UPDATE或DELETE语句中发现错误,则可以使用ROLLBACK来撤消更改。如果您提交结果,则无法进行ROLLBACK 。
删除
如果表中有不再需要的数据,则执行DELETE语句来删除数据。与UPDATE语句类似,您需要使用WHERE子句来具体说明要删除的数据。
如果不使用WHERE子句,您将删除表中的所有行。
这就是我们对 SQL 数据操作语言的简要介绍。每个数据库都有自己的 SQL 风格,每个版本都会有所改进。如果有机会,请查看我的 PluralSight 课程 OCP 12c Enhancements for the DBA 中的“行限制 SQL 子句”部分。
其他阅读材料
Tim Boles 是一名 Oracle 数据库管理员,他已在 Pluralsight 上发布了多门课程。请在此处查看他的课程库:https://app.pluralsight.com/profile/author/tim-boles。
他的联系方式:tim2boles@gmail.com和 twitter @timboles_dba。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~