本章介绍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. 基于Quartz.net的远程任务管理系统 一

    在上一篇绪中,已经介绍了整个项目的情况下了,接下来就是开始一步步做起来了. 首先:先整个我们的Job任务表,以及Job执行日志表.SQL如下: drop table if exists job_inf ...

  2. .net core获取appsettings CustomSettings

    private static string GetCustomSettings(string key) { var config = new ConfigurationBuilder() .AddIn ...

  3. 【转】目标检测之YOLO系列详解

    本文逐步介绍YOLO v1~v3的设计历程. YOLOv1基本思想 YOLO将输入图像分成SxS个格子,若某个物体 Ground truth 的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这 ...

  4. 解决org.hibernate.QueryException illegal attempt to dereference collection 异常错误

    今天做项目的时候,有两个实体:款式.品牌两者关系是多对多的关联关系,实现的功能是:通过选择款式,显示出该款式的所有品牌.HQL语句如下: 运行时出现这个异常错误:org.hibernate.Query ...

  5. sublime text 内调试Javascript代码

    转自:sublime内调试Javascript代码 之前用webstorm, 可以直接调试js, 在浏览器中也可以调试js,最近换了sublime text, 在想它是否支持调试js代码,于是找到了这 ...

  6. spring中的监视器,过滤器,拦截器

    1.监视器 (1)首先监视器是观察者模式的实现,在我之前的博客中有关于监视器模式的解释.监视器相当于观察者 (2)我们在springMvc中最常见的监视器 ContextLoaderlistener ...

  7. Redhead安装VMware Tools

    Redhead安装VMware Tools VMware Tools 是款插件,便于在图形化界面中移动鼠标和复制拖动文件,对于redhead等命令符界面用处不大. 2.挂载光盘安装方法

  8. web前端导出csv文件

    前言 导出文件,使用最多的方式还是服务器端来处理.比如jsp 中使用response 的方式. 但是,有时候可能就想使用web 前端是否也可以把页面上的内容导出来呢? 比如说,导出页面的一个表格. 这 ...

  9. vba调用c#dll

    本文阐述如何用C#创建COM组件,并能用VB6.0等调用.附有完整测试通过的代码.该功能总体看来很简单,实际值得注意的地方还是挺多.因为很少有人写这类文章,有些代码也是转来转去的不全,有些甚至让人误入 ...

  10. 剑指offer五十七之二叉树的下一个结点

    一.题目 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 二.思路 结合图,我们可发现分成两大类: 1.有右子树 ...