下面介绍的优化策略能提高查询的效率,但它们不一定是最优的策略,实际上“优化”一词并不是很确切,用“改进”或“改善”或许更恰当些。即使这样,使用预处理方法执行连接的时间一般仍大大减少。当查询视图时,定义视图的表达式就是公共子表达式的情况。......
2023-11-24
SQL的数据查询语句中包括SELECT,FROM,WHERE,GROUP BY和ORDER BY子句。SELECT语句具有数据查询、统计、分组和排序的功能,其语句表达能力非常强大。
1.SELECT语句的语法
SELECT语句的语法格式为:
SELECT<目标列组>
FROM<数据源>
[WHERE<元组选择条件>]
[GROUP BY<分列组>[HAVⅠNG<组选择条件>]]
[ORDER BY<排序列1><排序要求1>[,……n];
查询语句的功能是从FROM子句指定的数据源(基本表或视图组)中,选择满足元组选择条件的元组数据,并对它们进行分组、统计、排序和投影,形成查询结果集。
在查询语句中共有5种子句,其中SEL ECT和FROM语句为必选子句,而WHERE、GROUP BY和ORGER BY子句为任选子句。
(1)SELECT子句
SELECT子句用于指明查询结果集的目标列。目标列可以是直接从数据源中投影得到的字段、与字段相关的表达式或数据统计的函数表达式,目标列还可以是常量。如果目标列中使用了两个基本表(或视图)中相同的列名,则要在列名前加表名限定,即使用“<表名>.<列名>”表示。
(2)FROM子句
FROM子句用于指明查询的数据源。查询操作需要的数据源指基本表(或视图表)组,表间用“,”分割。如果查询使用的基本表或视图不在当前数据库中,还需要在表或视图前加上数据库名加以说明,即使用“<数据库名>.<表名>”的形式表示。如果在查询中需要一表多用,则每种使用都需要一个表的别名标识,并在各自使用中用不同的表别名表示。
定义表别名的格式为“<表名>.<别名>”。
(3)WHERE子句
WHERE子句通过条件表达式描述关系中元组的选择条件。DBMS处理语句时,按元组为单位,逐个考察每个元组是否满足条件,将不满足条件的元组筛选掉。
(4)GROUP BY子句
GROUP BY子句的作用是按分组列的值对结果集分组。分组可以使同组的元组集中在一起,也使数据能够分组统计。当SELECT子句后的目标列中有统计函数,如果查询语句中有分组子句,则统计为分组统计,否则为对整个结果集统计。GROUP BY子句后可以带上HAVⅠNG子句表达组选择条件,组选择条件为带有函数的条件表达式,它决定着整个组记录的取舍条件。
(5)ORDER BY子句
ORDER BY子句的作用是对结果集进行排序。查询结果集可以按多个排序列进行排序,每个排序列后都可以跟一个排序要求:当排序要求为ASC时,元组按排序列值的升序排序;排序要求为DESC时,结果集的元组按排序列值的降序排列。
2.SELECT语句的操作符
SELECT语句中使用的操作符包括算术操作符、比较操作符、逻辑操作符、组合查询操作符和在字段中出现的其他操作符。下面介绍这5类操作符。(www.chuimin.cn)
(1)算术操作符
算术操作符在SQL语句中表达数学运算操作。SQL的数学运算操作符只有4种,它们是:+(加好)、-(减号)、×(乘号)和/(除号)。
(2)比较操作符
比较操作符用于测试两个数据是否相等、不相等、小于或大于某个值。SQL中的比较操作符包括:=(等于)、>(大于)、<(小于)、<=(小于等于)、>=(大于等于)、!=或<>(不等于)、!>(不大于)和!<(不小于),共9种操作符。
(3)逻辑操作符(见表4-2)
表4—2 SQL的逻辑操作符
可以看出,SQL的逻辑操作符种类比较多,功能也很强大。在这些逻辑操作符中,有些是在其他计算机语言也曾遇到过的,比如NOT、AND和OR,其语义和使用方法读者应比较清楚。表中的一些逻辑操作符,例如ⅠN、ANY、LⅠKE等,读者可能不太熟悉,后面的例题中会对它们做更详细和更深入的介绍。
(4)组合查询操作符
SQL的组合查询操作符是针对传统关系运算的操作符,它包括UNⅠON(并查询)、MⅠNUS(差查询)和ⅠNTERSECT(交查询),共3种。组合查询操作符的使用格式为:
<查询1><组合操作符><查询2>
①UNⅠON操作符。并查询操作,操作结果为将<查询1>和<查询2>的结果合并,即取(查询1>和<查询2>的元组,并在结果集中去掉重复行。
②MⅠNUS操作符。差查询操作,操作结果为取<查询1>得到的元组,而<查询2>没有的元组。
③ⅠNTERSECT操作符。交查询操作,操作结果为取<查询1>和<查询2>共有的元组。
(5)其他SQL操作符
其他SQL操作符是针对SELECT子句中的字段表设计的,它用于简写结果集的字段表和对字段值的限制说明。其他SQL操作符包括*、ALL和DⅠSTⅠNCT 3种。
①*操作符。*为字段组的省略写法,说明取全部字段或表中的全部字段。使用格式为:
*或<表名.*
②ALL操作符。全部操作符:ALL说明在查询结果中保留重复值,如果查询中有统计函数,ALL要求计算重复值。ALL的使用格式为:
ALL<字段>或ALL<字段组>
③DⅠSTⅠNCT操作符。去掉重复值操作DⅠSTⅠNCT和ALL相反,它说明在查询结果集中去掉重复值,或在统计函数中不计重复值。DⅠSTⅠNCT的使用格式为:
DⅠSTⅠNCT<字段>或DⅠSTⅠNCT<字段组>
有关数据库技术与应用教程的文章
下面介绍的优化策略能提高查询的效率,但它们不一定是最优的策略,实际上“优化”一词并不是很确切,用“改进”或“改善”或许更恰当些。即使这样,使用预处理方法执行连接的时间一般仍大大减少。当查询视图时,定义视图的表达式就是公共子表达式的情况。......
2023-11-24
求数学系学生的学号和姓名。本例中的元组选择条件是所在系等于“数学系”,结果列为学号和姓名。③使用了LⅠKE模式匹配表达式,“姓名LⅠKE”张%脚表示查询姓张的同学。表4—3课程表数据由表4-3中的数据可以得出,课程的先行关系链为:C5→C4→C3→C2→C1,并可以推出课程的间接关系链为:C5→C3→C1。......
2023-11-24
从1.1.1节的介绍可以看到,在数据库管理系统出现之前,人们对数据的操作是直接针对数据文件编写应用程序实现的,这种模式会产生很多问题。对于1.1.1小节中列举的学生基本信息管理和学生选课管理两个子系统,如果使用数据库技术来管理,其实现方式如图1-4所示。保证数据的安全是通过数据库管理系统的安全控制机制实现的,保证数据的可靠是通过数据库管理系统的备份和恢复机制实现的。......
2023-11-24
如果要使用缺省参数创建一个学籍管理数据库StuData,可以使用如下命令:Create Database StuData如果希望为数据库或事务日志指定一个或者多个特定文件,增加一个On Primary子句,列出一个或者多个文件,并可为分配这个文件的空间指定一个可选值,其命令形式如下:Create Database StuDataOn Primary,;如果为了提高性能和可恢复性,则可以使用Log On子句来指定数据库的SQL Server事务日志将存储在一个与数据库对象不同的设备上,示例如下:Create Database StuDataOn Primary,Log On;GO......
2023-11-24
关键字Modify File用以表示按后面的文件说明,在指定的数据库中修改相应数据库文件。下面的语句可在学籍管理数据库增加一个新数据库文件,同时要修改原数据库文件StuFile l的最大文件尺寸为2000 MB。Alter Database StuDataAdd FileModify File又如,如果要删除学籍管理数据库文件StuFile2,则可使用如下命令:Alter Database StuDataRemove File StuFile2......
2023-11-24
由于信息结构复杂,应用环境多样,在相当长的一段时期内数据库设计主要采用手工试凑法。人们经过探索提出了各种数据库设计方法,这些方法运用软件工程的思想和方法,提出了各种设计准则和规程,都属于规范设计法。工具在很大程度上依靠开发人员的经验来保证数据库模型能生成可行的设计方案和高性能的数据库。大多数的数据库设计方法都需要经历这三个步骤。根据所选择的设计方法按部就班地进行并最终获得一个实用的应用系统。......
2023-11-24
根据事务的设置、用途的不同,SQL Server 2012将事务分为多种类型。用户定义事务在实际应用中,大多数的事务处理采用了用户定义的事务来处理。ROLLBACK语句是取消语句,该语句将事务的操作全部取消,即表示事务操作失效。显式事务显式事务是指每个事务均以BEGⅠN TRANSACTⅠON语句显式开始,以COMMⅠT或ROLLBACK语句显式结束。......
2023-11-24
例如,一名学生可以用信息“”描述,这样的一行数据称为一条记录。单看这行数据我们很难知道其确切含义,但对其进行如下解释:张三是9912101班的男学生,1981年出生,计算机系应用软件专业,其内容就是有意义的。因此,数据是信息存在的一种形式,只有通过解释或处理才能成为有用的信息。数据的静态特征包括数据的基本结构、数据间的联系以及对数据取值范围的约束。数据的动态特征是指对数据可以进行符合一定规则的操作。......
2023-11-24
相关推荐