第3章查询操作.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章查询操作3.1【案例8】简单查询相关知识1.SELECT语句(1)语句功能使用SELECT语句可以让用户以不同的方式在复杂的表中找到或查看所需要的数据,其输出结果可以是数量、数据源、数据类型等。所以在数据库操作中会经常使用SELECT语句,它是SQL标准中最灵活和使用最广泛的语句之一。SQL查询语句的目标是从数据库中检索满足条件的记录,其通过SELECT语句来完成,查询语句并不会改变数据库中的数据,它只是检索数据。SELECT语句既可以完成简单的单表查询,也可以完成相当复杂的连接查询、嵌套查询和集合查询。(2)基本格式SQL查询的基本语句格式如下:SELECT[ALL|DISTINCT]字段表达式1[,字段表达式2[,…]]FROM表名1[,表名1[,…]]llllll[WHERE筛选条件表达式][GROUP[ORDERBY分组表达式[HAVING分组条件表达式]]BY字段[ASC|DESC]](3)语句说明整个SELECT语句的含义是:根据WHERE子句的筛选条件表达式,从FROM子句指定的表中找出满足条件的记录,再按SELECT子句中指定的字段次序,筛选出记录中的字段值,构造一个显示结果表。SELECT语句操作的是记录(数据)集合(一个表或多个表),而不是单独的一条记录。语句返回的也是满足WHERE条件的记录集合,即结果表。SELECT语句的基本格式是由SELECT子句、FROM子句和WHERE子句组成的查询块。如果有GROUPBY子句,则将查询结果按分组表达式的值进行分组,该值相等的记录为一个组。如果有GROUPBY子句带HAVING短语,则只有满足指定条件的组才会输出。如果有ORDERBY子句,则显示的查询结果表还要按字段值的升序或降序进行排序。2.查询所有列属性在SELECT语句中,提供了一种快速选择表中所有列的方法,它会将列按照在源表中的顺序进行排序,即使用通配符“*”显示所有的字段。其语法格式为:SELECTFROM*表名其中“*”表示源表中所有的信息,“表名”表示要查询的数据信息的源表。3.查询指定列的属性通过SELECT语句可以“过滤”掉某些字段的数据,只显示用户需要的数据。如果SELECT子句后的字段先后顺序与源表中的顺序不一致,那么在结果表中,字段将按照SELECT子句后的字段顺序显示。4.DISTINCT子句在数据库中,数据难免会出现重复行的现象,如“选课管理”数据库中“学生基本档案”表的“籍贯”列记录了学生的出生所在地,有很多学生来自同一个地方。如果希望在查询返回结果中删除重复行,可以在SELECT子句中使用DISTINCT关键字。5.别名使用SELECT语句查询数据时,可以通过使用别名的方法根据需要对数据显示的标题进行修改,或者为没有标题的列增加临时的标题。在显示结果集时,以别名(显示的名字)代替原来的列名,通常也用来显示结果集中列的汉字标题。lll当SELECT子句含有算术表达式、常量、函数名时,需要有列,分隔目标列表达式时,可以通过指定别名来改变查询结果的列标题,对列使用别名的操作有以下3种方式:“列名列标题”形式;“列名AS列标题”形式;“列标题=列名”形式。6.列的计算在进行查询时,经常需要对查询到的数据进行再次计算。这时可在SELECT语句中使用计算列完成,计算列并不存在于数据表中,是通过对某些列的数据进行计算得到的结果。7.WHERE子句在数据库中查询数据时,有时用户只希望得到满足条件的数据而非全部数据,这就需要在SELECT语句中加入条件语句,即WHERE子句。WHERE子句通过条件表达式描述关系中元组的选择条件,数据库系统处理语句时,按行为单位,逐个检查每个行是否满足条件,将不满足条件的行筛选掉。WHERE子句的基本格式如下:SELECT字段清单FROM表名WHERE条件表达式查询结果返回表表名中条件表达式值为true的所有行,而对于条件表达式值为false或者未知的行则不返回。WHERE子句中的条件表达式有多种使用方式,表3-1-1中列出了在WHERE子句中可以使用的条件表达式。表3-1-1WHERE子句使用的条件表达式类别运算符说明比较运算符逻辑运算符范围运算符列表运算符字符运算符未知值=、>、<、>=、<=、<>AND、OR、NOTBETWEEN、NOTBETWEENIN、NOTINLIKE、NOTLIKEISNULL、ISNOTNULL比较两个表达式组合两个表达式的运算结果或取反搜索值是否在范围内查询值是否属于列表值之一字符串是否匹配查询值是否为NULL下面详细介绍表中WHERE子句中的条件表达式使用方法及其他功能与特点。(1)比较运算符WHERE子句使用的比较运算符如表3-1-2所示,使用它们可以对查询条件进行限定。语法格式如下:WHERE表达式1比较运算符表达式2其中,表达式1和表达式2表示要比较的表达式。表3-1-2关系运算符号运算符号含义===!=或者等于小于小于或者等于大于大于或者等于不等于(2)逻辑运算符WHERE子句中的逻辑运算符包括AND、OR和NOT。这3个逻辑运算符可以混合使用,在WHERE子句中可以使用逻辑运算符来限定查询条件。语法格式如下:WHERENOT表达式∣表达式1logical_operator表达式2其中logical_operator表示逻辑运算符AND和OR任意一个,如果在WHERE子句中使用NOT运算符,则将NOT放在表达式的前面。WHERE子句常用的逻辑查询条件如表3-1-3所示。表3-1-3逻辑运算符号运算符号含义ORANDNOT或(或者)与(并且)非(否)(3)范围运算符使用范围运算符时,用户可以自定义上边界值和下边界值来指定搜索的范围。BETWEEN表示搜索设定范围之内的数据,NOTBETWEENT表示搜索设定范围之外的数据。其语法格式为:WHEREexpression[NOT]BETWEENvaluelANDvalue2其中NOT为可选项,value1表示范围的下限,value2表示范围的上限。注意,value1的值一定要小于value2的值。(4)列表运算符在WHERE子句中,如果需要确定表达式的取值是否属于某一列表值之一时,可以使用关键字IN或NOTIN、、来限定查询条件。其语法格式如下:WHEREexpression[NOT]INvalue_list其中NOT为可选值,value_list表示列表值,如果列表值不止一个时,需要将这些值用括号括起来,各列表值用逗号分隔。【案例8-13】从“选课管理”数据库的“学生基本档案”表中查询出“籍贯”是“北京”“山东”和“山西”的学生的学号、姓名、性别、民族和籍贯信息,格式如下所示。SELECT学号,姓名,性别,民族,籍贯FROM学生基本档案WHERE籍贯IN('北京','山东','山西')上述语句演示了如何在WHERE子句中使用IN条件限定查询条件,语句中(“北京”“山东”和“山西”)定义了一个列表值,查询的内容为“籍贯”,属于列表值中的内容,执行后返回的结果如图3-1-15所示。图3-1-14NOTBETWEEN运算符使用及效果图3-1-15IN运算符使用及效果(5)字符匹配符字符匹配符LIKE或NOTLIKE可以把表达式与字符串进行比较,从而实现对字符串的模糊查询。语法格式如下:WHEREexpression[NOT]LIKE'string'其中,NOT为可选项,'string'表示进行比较的字符串。WHERE子句可以实现对字符串的模糊匹配,进行模糊匹配时,在string字符串中使用通配符。在SQLServer2005中,使用通配符时必须将字符串连同通配符用单引号括起来。表3-1-4中列出了几种比较常用的通配符的表示方式和意义。根据表3-1-4所示通配符的含义,下面给出一些常用的实例,如表3-1-5所示。(6)ISNULL\EXISTS运算符NULL表示未知的、不可用的或将在以后添加的数据。NULL值与零、零长度的字符串或空白(字符串)的含义不同。NULL值可用于区分输入的是零(数值列)或空白(字符列)还是无数据输入(NULL可用于数字列和字符列)。EXISTS是检查某一个字段值是否有值。实际上,EXISTS是ISNULL的反义词。其语法格式如下:WHEREcolumnIS[NOT]NULL在WHERE子句中,使用ISNULL或ISNOTNULL条件可以查询某一数据值是否为NULL的数据信息。8.ORDERBY子句在SELECT语句中,使用ORDERBY子句可以对查询结果按照一个或多个字段进行升序(ASC)或降序(DESC)排序。ORDERBY子句在SELECT语句中的语法格式为:SELECT字段名1,…FROM表名[WHERE条件表达式][ORDERBYorder_expression字段名表达式1,…[ASC]|[DESC]order_expression指明了排序列或列的别名和表达式。当有多个字段排序时,每个排序字段之间要用半角逗号隔开;ORDERBY子句的默认值为升序(ASC);当排序要求为DESC时,结果集的行按排序字段值的降序排列。9.GROUPBY子句使用SELECT语句进行数据查询时,可以用GROUPBY子句对某一列的值进行分类,形成结果集。分组可以使用组的元组集中在一起,可以进行数据的分组统计。当SELECT子句后的目标列中有统计函数时,如果查询语句中有分组子句,则统计为分组统计,否则为对整个结果集的统计。GROUPBY子句后可以带上HAVING子句表达式选择条件,组选择条件为带有函数的条件表达式,它决定着整个组记录的查询条件。语法格式如下:SELECT字段名1,…FROM表名GROUPBY[ALL]column_name[WITHROLLUP︱CUBE]其中,关键字ALL一般与WHERE子句的条件一同使用,它表示所有被GROUPBY子句分类的数据都将出现在结果集中,即使该列不满足WHERE子句的查询条件。column_name表示列名,ROLLUP表示只返回第一个分组条件指定的列的统计行,若改变列的顺序就会使返回的结果行数据发生变化。CUBE是ROLLUP的扩展,表示除了返回由GROUPBY子句指定的列外,还返回按组统计的行。GROUPBY子句通常与统计函数联合使用,如COUNT、SUM等。表中列出了几个常用的统计函数及功能。3.2【案例9】多表查询相关知识1.多表查询的连接条件在关系型数据库中,将一个查询同时涉及两个以上的表,称为连接查询,连接查询是关系数据库中最重要的查询。多数情况下,一个SQL查询语句一次往往涉及多个表。连接查询主要包括以下几种类型:等值连接查询、非等值连接查询、自然连接查询、自身连接查询、外连接查询、复合条件连接查询。(1)基本格式[表名1.]字段名1运算符[表名2.]字段名2[…](2)连接条件运算符在多表查询中,用来连接多个表的条件称为连接条件。应用于连接条件的运算符可以是比较运算符(=、、=、、=和!=),可以是逻辑运算符(NOT、AND和OR),还可以是BETWEEN…AND。(3)连接查询的基本原则lll进行多表查询操作时,最简单的连接方式就是在SELECT语句列表中引用多个表中字段,在FROM子句中用半角逗号将不同基表隔开。如果使用WHERE子句创建一个同等连接,则能使查询结果集更加丰富。同等连接是指第一个基表中的一个或多个列值与第二个基表中对应的一个或多个列值相连接。通常情况下,一般使用键码列建立连接,即一个基表中的主键与第二个基表中的外键一致,以保持整个数据库的参照完整性。用户在进行基本连接操作时,可以遵循以下基本原则:SELECT子句列表中,每个基表列前都要加上基本名称。FROM子句应包括所有使用的基表。WHERE子句应定义一个同等连接。(4)为基表定义别名当进行多于两个基本的连接操作时,如果需要引用多个目标列,而且每个列前都要使用基表名称来限定,则会使语

1 / 36
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功