4.3 数据操纵语言(DML)
本章介绍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
- 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
查询处理器自底向上处理查询,但行的排序除外。首先查询处理器查找过滤器(本例中SpecailOffer=1),接着确定如何给特价销售的所有产品返回产品名和行小计。
处理这些步骤的低级指令编译成可执行指令代码后,缓存在内存中,于是随后的执行就不需要相同的准备工作和资源开销了。因为查询是即是SQL语句的一部分,又是一存储的数据库对象,所以已编译的指令也可以保存到永久的存储介质中,以提高长期使用效率。
4.3 数据操纵语言(DML)的更多相关文章
- (让你提前知道软件开发33):数据操纵语言(DML)
文章2部分 数据库SQL语言 数据操纵语言(DML) 数据操纵语言(Data Manipulation Language,DML)包含insert.delete和update语句,用于增.删.改数据. ...
- MySQL之数据操纵语言(DML)
数据操纵语言(DML) 数据操纵语(Data Manipulation Language),简称DML. DML主要有四个常用功能. 增 删 改 查 insert delete update sele ...
- oracle数据操纵语言(DML)data manipulation language
数据库操纵语言(DML)用于查询和操纵模式对象中的数据,它不隐式地提交当前事务. SELECTINSERTUPDATEDELETECALLEXPLAIN PLANLOCK TABLEMERGE使用算术 ...
- 30442数据操纵语言DML
5.5 SQL的数据操纵功能 5.5.1 数据插入 使用CREATE语句创建的数据表还只是一个“空壳”,表中没有任何数据.利用SQL语言提供的INSERT语句可以完成向数据表插入数据的任务. INSE ...
- oracle数据操纵语言(DML)data manipulation language(续集)
SQL查询语句(SELECT)进阶分组函数(Group Functions):对多行进行操作,并为每一组给出一个结果. AVG([DISTINCT|ALL] expression) 平均值COUNT ...
- 【MySQL笔记】数据操纵语言DML
1.数据插入 INSERT INTO table_name (列1, 列2,...) VALUES(值1, 值2,....),(第二条),(第三条)... 注: 1)如果表中的每一列均有数据插 ...
- DML(数据操纵语言)
1.概念(C) 数据操纵语言 DML (Data Manipulation Langua)是SQL语言的一个分类,用于对表的内容或者说数据进行增.删.改.查等操作. 通过以下几个关键字实现: SELE ...
- sql 语言--- DML,DDL,DQL,DCL,TCL,CCL
结构化查询语言(Structured Query Language)简称SQL 是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理 ...
- 数据操作语言DML与运算符
数据操作语言DML(添加,修改,删除) 1.添加数据 insert into insert into 表名 (字段列表) values (值列表),值列表要和字段列表按顺序匹配. insert int ...
- 数据库原理及应用-SQL数据操纵语言(Data Manipulation Language)和嵌入式SQL&存储过程
2018-02-19 18:03:54 一.数据操纵语言(Data Manipulation Language) 数据操纵语言是指插入,删除和更新语言. 二.视图(View) 数据库三级模式,两级映射 ...
随机推荐
- 经典串匹配算法(KMP)解析
一.问题重述 现有字符串S1,求S1中与字符串S2完全匹配的部分,例如: S1 = "ababaababc" S2 = "ababc" 那么得到匹配的结果是5( ...
- 拒绝“高冷”词汇!初学C#中实用的泛型!
初学C#,整天对着业务逻辑,写反反复复的“过程型”代码逻辑十分枯燥,不如用点新东西提升一下代码效率,让代码看起来更有逼格?! 好,下面我们看看C#中简单易学的泛型. 首先,我写了一个这样的方法 --- ...
- ABP框架踩坑记录
ABP框架踩坑记录 ASP.NET Boilerplate是一个专用于现代Web应用程序的通用应用程序框架. 它使用了你已经熟悉的工具,并根据它们实现最佳实践. 文章目录 使用MySQL 配置User ...
- leetcode 78. 子集 JAVA
题目: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], ...
- Python大法之从火车余票查询到打造抢Supreme神器
本文作者:i春秋作家——阿甫哥哥 系列文章专辑:https://bbs.ichunqiu.com/forum.php?mod=collection&action=view&ctid=9 ...
- 打开SVN server图形化管理界面
来源:http://blog.csdn.net/u013495063/article/details/76796079 1.在ViaualSVN Service的安装目录:C:\Program Fil ...
- tomcat apr Dockfile
基于 centos7.4 jdk1.7 RUN yum makecache && yum --nogpgcheck -y groupinstall 'Development Tools ...
- jvm高级特性(5)(1)(原子性,可见性,有序性,volatile,概述)
JVM高级特性与实践(十二):高效并发时的内外存交互.三大特征(原子.可见.有序性) 与 volatile型变量特殊规则 简介: 阿姆达尔定律(Amdahl):该定律通过系统中并行化与串行化的比重来描 ...
- php-fpm定时器
php-fpm有三种定时器 1)主进程接收到用户的信号,例如sigusr,主进程执行kill(子进程号,sigquit),的同时,设置定时器,在一个无限循环里如果当前时间 大于或等于 该定时器的过期时 ...
- Java之BigDecimal
转载请注明源出处:http://www.cnblogs.com/lighten/p/6963836.html 1.前言 编程人员都应该知道计算机计算浮点数是不精确的,结果是近似数值,当然具体值还是和计 ...