本章介绍DML的基本语句。

对数据只能执行以下四种操作:创建(Create)记录、读取(Read)记录、更新(Update)记录值和删除(Delete)记录。这几个词拼写为CRUD——即可对数据执行CRUD操作。在设计SQL时,设计人员选择不同的词汇来描述这4个操作:Insert(插入)、Select(选择)、Update(更新)与Delete(删除)。但是ISUD不如CRUD容易记忆。如果能正确掌握这四类语句,就能使用SQL对数据执行任何操作了。

1 查询是有层次的

再电影《怪物史瑞克》中,有Mike Myers配音的怪物史瑞克对其驴子朋友说过,“怪物就和洋葱一样,它们是有层次的”。在某种程度上,select语句也像怪物,或者也像洋葱,它是有层次的。外表看来不是这样,但一层一层剥开它的外皮,就会发现它有许多层次。有一点很重要:它并不复杂,它只是多个简单层次的相互叠加而已,基本概念是很简单的。这个原理称为复合的简单性。

介绍下一个主题前,需要先简要讨论一下select语句。这条语句将在第5章详细介绍。现在,只需知道在SQL Server中,select语句可以从表中返回数据。在关系数据库中,要把信息转换为数据,通常要将数据保存到多个表中。所以,要把数据转变成有用的信息,就必须从多个表中检索数据。这可以使用几个技术,包括连接、子查询、联合等。

例:运行下列查询时,查询处理器会解析查询,将其分解成一个个步骤。

select top 10 Production.Product.Name,Sales.SalesOrderDetail.LineTotal from Production.Product inner join Sales.SalesOrderDetail on Production.Product.Productid=Sales.SalesOrderDetail.ProductID where Sales.SalesOrderDetail.SpecialOfferID=1 order by Sales.SalesOrderDetail.LineTotal Desc

    1. SELECT TOP 10 Production.Product.Name
    2. ,Sales.SalesOrderDetail.LineTotal
    3. FROM Production.Product
    4. INNER JOIN Sales.SalesOrderDetail
    5. ON Production.Product.Productid = 
      Sales.SalesOrderDetail.ProductID
    6. WHERE Sales.SalesOrderDetail.SpecialOfferID = 1
    7. ORDER BY Sales.SalesOrderDetail.LineTotal DESC

查询处理器自底向上处理查询,但行的排序除外。首先查询处理器查找过滤器(本例中SpecailOffer=1),接着确定如何给特价销售的所有产品返回产品名和行小计。

处理这些步骤的低级指令编译成可执行指令代码后,缓存在内存中,于是随后的执行就不需要相同的准备工作和资源开销了。因为查询是即是SQL语句的一部分,又是一存储的数据库对象,所以已编译的指令也可以保存到永久的存储介质中,以提高长期使用效率。

4.3 数据操纵语言(DML)的更多相关文章

  1. (让你提前知道软件开发33):数据操纵语言(DML)

    文章2部分 数据库SQL语言 数据操纵语言(DML) 数据操纵语言(Data Manipulation Language,DML)包含insert.delete和update语句,用于增.删.改数据. ...

  2. MySQL之数据操纵语言(DML)

    数据操纵语言(DML) 数据操纵语(Data Manipulation Language),简称DML. DML主要有四个常用功能. 增 删 改 查 insert delete update sele ...

  3. oracle数据操纵语言(DML)data manipulation language

    数据库操纵语言(DML)用于查询和操纵模式对象中的数据,它不隐式地提交当前事务. SELECTINSERTUPDATEDELETECALLEXPLAIN PLANLOCK TABLEMERGE使用算术 ...

  4. 30442数据操纵语言DML

    5.5 SQL的数据操纵功能 5.5.1 数据插入 使用CREATE语句创建的数据表还只是一个“空壳”,表中没有任何数据.利用SQL语言提供的INSERT语句可以完成向数据表插入数据的任务. INSE ...

  5. oracle数据操纵语言(DML)data manipulation language(续集)

    SQL查询语句(SELECT)进阶分组函数(Group Functions):对多行进行操作,并为每一组给出一个结果. AVG([DISTINCT|ALL] expression) 平均值COUNT ...

  6. 【MySQL笔记】数据操纵语言DML

    1.数据插入   INSERT INTO table_name (列1, 列2,...) VALUES(值1, 值2,....),(第二条),(第三条)...   注: 1)如果表中的每一列均有数据插 ...

  7. DML(数据操纵语言)

    1.概念(C) 数据操纵语言 DML (Data Manipulation Langua)是SQL语言的一个分类,用于对表的内容或者说数据进行增.删.改.查等操作. 通过以下几个关键字实现: SELE ...

  8. sql 语言--- DML,DDL,DQL,DCL,TCL,CCL

    结构化查询语言(Structured Query Language)简称SQL                是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理 ...

  9. 数据操作语言DML与运算符

    数据操作语言DML(添加,修改,删除) 1.添加数据 insert into insert into 表名 (字段列表) values (值列表),值列表要和字段列表按顺序匹配. insert int ...

  10. 数据库原理及应用-SQL数据操纵语言(Data Manipulation Language)和嵌入式SQL&存储过程

    2018-02-19 18:03:54 一.数据操纵语言(Data Manipulation Language) 数据操纵语言是指插入,删除和更新语言. 二.视图(View) 数据库三级模式,两级映射 ...

随机推荐

  1. .NET高级代码审计(第一课)XmlSerializer反序列化漏洞

    0X00 前言 在.NET 框架中的 XmlSerializer 类是一种很棒的工具,它是将高度结构化的 XML 数据映射为 .NET 对象.XmlSerializer类在程序中通过单个 API 调用 ...

  2. C#委托总结-匿名方法&Lambda表达式

    1,匿名方法 匿名方法可以在声明委托变量时初始化表达式,语法如下 之前写过这么一段代码: delegate void MyDel(string value); class Program { void ...

  3. JavaScript模块化与esl.js

    2016-2-2 晚上 松合时代公寓中 1.前端为什么需要模块化? http://requirejs.org/docs/why.html 2.https://github.com/ecomfe/esl ...

  4. “全栈2019”Java多线程第二十二章:饥饿线程(Starvation)详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  5. webservice gsoap 小记

    参考 http://www.cs.fsu.edu/~engelen/soap.html 1. web service client application > wsdl2h -s -o MyHe ...

  6. JAVA并发编程学习笔记------多线程调优

    1. 多线程场景下尽量使用并发容器代替同步容器 (如ConcurrentHashMap代替同步且基于散列的Map, 遍历操作为主要操作的情况下用CopyOnWriteArrayList代替同步的Lis ...

  7. Adapter as a WCF Binding - In Depth

    WCF LOB Adapter SDK surfaces an adapter as a custom WCF Binding.  A WCF Bindingcorresponds to the “H ...

  8. ubuntu 下更新pip后发生 ImportError: cannot import name 'main'的问题解决

    今天刚使用ubuntu 由于安装的是pip 8的版本,我感觉pip版本有些低就随手将将pip更新了,刚新到pip 10版本的,没想到刚更新完就报错了, 发生 ImportError: cannot i ...

  9. 监督学习——决策树理论与实践(上):分类决策树

    1. 介绍         决策树是一种依托决策而建立起来的一种树.在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象/分类,树中的每一个分叉路 ...

  10. 【java排序】冒泡排序、快速排序

    冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地 进行直到没有再需要交换,也就是说该数列已经排序完成.这 ...