SQL Server 2000实用教程课件ch06_第1页
SQL Server 2000实用教程课件ch06_第2页
SQL Server 2000实用教程课件ch06_第3页
SQL Server 2000实用教程课件ch06_第4页
SQL Server 2000实用教程课件ch06_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQLServer2000实用教程欢迎学习数

询第6章第6章数据查询6.1

Select语句的基本格式6.2

基本查询第6章数据查询6.3

高级查询6.4

实训项目第6章数据查询能力要求:通过对本章的学习,读者应掌握如下技能:使用SELECT语句进行基本查询的能力;使用SELECT语句进行高级查询的能力。第6章数据查询第6章数据查询6.1Select语句的基本格式第6章数据查询6.1

Select语句的基本格式在SQLServer中,SELECT语句是使用频率最高的语句之一。SELECT语句的作用是让数据库服务器根据客户的要求从数据库中搜索出所需要的信息资料,并且可以按规定的方式进行分类、统计、排序,再返回给客户。另外,利用SELECT语句还可以设置和显示系统信息、给局部变量赋值等。SELECT语句具有强大的查询功能,完整的语法非常复杂,我们之需要掌握SELECT语句的一部分,就可以轻松地利用数据库完成自己的工作。第6章数据查询6.2基本查询6.2.1

选择列6.2.2

选择行第6章数据查询6.2.3

排序6.2.4TOP和DISTINCT的使用6.2

询当使用SELECT语句时,可以用两种方式来控制返回的数据:选择列和选择行。选择列就是限制返回结果中的列,这由SELECT语句中的SELECT子句指定要返回的列来控制;选择行则是限制返回结果中的行,这由SELECT语句中WHERE子句指定选择条件来控制。第6章数据查询6.2.1

选择列语法形式如下:SELECTcolumn_name1[,column_name2,…]FROMtable_name

1.

指定列第6章数据查询6.2.1

选择列在SELECT子句中可以使用星号(*),显示表中所有的列。

2.选择所有列第6章数据查询6.2.1

选择列

在进行数据查询时,经常需要对表中的数据进行计算,之后才能得到满意的结果。在SELECT子句中可以使用算术运算符对数值型数据进行如加(+),减(—),乘(*),除(/),和取模(%)运算,构造计算列。

3.使用计算列第6章数据查询6.2.1

选择列

为了增加查询结果的可读性,可以在Select子句中增加一些说明列,增加的说明文字串需要用单引号括起来。

4.增加说明列第6章数据查询6.2.1

选择列

在缺省情况下,查询结果中显示的列标题就是在创建表时使用的列名,但对于像图6-2和图6-3中的计算列,系统是不指定列标题的,如果我们想改变查询结果中所显示的列标题,可以在SELECT语句中使用‘列标题’=列名或列名AS’列标题‘两种方法。

5.改变列标题第6章数据查询6.2.2

选择行

在实际工作中,大部分查询并不是针对表中所有数据记录的查询,而是要找出满足某些条件的数据记录。此时我们可以在SELECT语句中使用WHERE子句。使用WHERE子句的目的是从表中筛选出符合条件的行,其语法形式如下:

SELECTcolumn_name1[,column_name2,…]

FROMtable_name

WHEREsearch_condition第6章数据查询6.2.2

选择行

WHERE子句中允许使用的比较运算符如表6-1所示。

1.使用比较运算符第6章数据查询表6-1

比较运算符运算符描述运算符描述=等于!>不大于<小于!<不小于>大于>=大于等于<>、!=不等于<=小于等于6.2.2

选择行在WHERE语句中还可以使用逻辑运算符把若干个查询条件连接起来,构成一个复杂的条件进行查询。可以使用的逻辑运算符包括:逻辑与(AND),逻辑或(OR)和逻辑非(NOT).语法形式如下:[NOT]search_condition{AND1OR}[NOT]search_condition

2.使用逻辑运算符第6章数据查询6.2.2

选择行在前面介绍的查询中,查询条件都的确定的.但是实际应用中,并不是所有的查询条件都的确定的.例如,要查询公司一个姓张的销售人员,但不知道叫什么名字.此时,精确查询就不管用了,必须使用LIKE关键字进行模糊查询.其语法形式为:expression[NOT]LIKE’string’‘sring’:是匹配字符串。

3.使用字符串模糊匹配第6章数据查询6.2.2

选择行在WHERE子句中使用BETWEEN关键字可以对表中某一范围内的数据进行查询,系统将逐行检查表中数据是否在BETWEEN关键字设定的范围内.如果在其设定的范围内,则取出该行,否则不取该行。其语法形式为:column_name[NOT]BETWEENexpression1ANDexpression2

4.使用查询范围第6章数据查询6.2.2

选择行如果列值的取值范围不是一个连续的区间,而是一些离散的值,此时就应使用SQLServer提供的另一个关键字IN。其语法形式为:

Colum_name[NO]IN(value1,value2,…)

5.使用查询列表第6章数据查询6.2.2

选择行

在SQLServer中,用NULL表示空值,它仅仅是一个符号,不等于空格,也不等于0,空值判定的语法形式如下:

columm_nameIS[NOT]NULL

6.空值的判定第6章数据查询6.2.3

排序

在通常情况下,SQLServer数据库中的数据纪录行在显示时是无序的,它按照数据记录插入数据库时的顺序排列,因此用SELECT语句查的结果也是无序的。通过使用ORDERBY子句,可以将查询结果进行排序显示。其语法

形式为:

SELECTcolumn_name[,column_name2,…]

FROMtable_name

WHEREsearch_condition

ORDERBYcolumn_name[ASC|DESC][,column_name[ASC|DESC]…]第6章数据查询6.2.4

TOP和DISTINCT的使用

使用TOP关键字可以返回表中前面一定数量的数据。当查询的数据非常多(如有100万行),但有没有必要对所有的数据进行浏览时,使用TOP关键字可以大大减少查询的时间。其语法形式为:

SELECT[TOPinteger|TOPintegerPERCENT]

column_name

FROMtable_name

其中,TOPinteger:表示返回表中最前面的几行,用integer表示返回的行数。

1.TOP关键字第6章数据查询6.2.4

TOP和DISTINCT的使用

前面介绍的查询方式会返回表中所有符合条件的行,而不管这些行是否重复,使用DISTINCT关键字可以从返回的结果数据集中删除重复的行,使结果更简洁。其语法形式为:

SELECT[ALL|DISTINCT]column_name[,column_name2,…]

FROMtable_name

WHEREsearch_condition

其中,关键字ALL:允许重复数据行的出现,是默认的关键字。

2.DISTINCT关键字第6章数据查询6.3.1

多表查询6.3.2

分组和汇总6.3高级查询6.3.3

嵌套查询第6章数据查询6.3.4

合并数据集6.3.5

生成一个新表6.3

询前面介绍的查询还局限在数据库的一张表内。但在实际应用中,我们经常需要在多张表中查询数据或者需要对表中的数据进行分类、汇总等,这就需要较为复杂的高级查询。第6章数据查询6.3.1

多表查询在设计数据库的时候,我们需要设计很多张表,然后将数据分布到这些表中。将数据分布到多张表中的主要目的是为了储存数据更加方便。然而这些数据本来就是一个整体,所以我们在查询数据的时候,需要从这些表中将数据提取出来,重新聚合到一起显示给用户。SQLServer提供了实现多表查询的方法——连接查询。所谓连接查询是将多个表以某个或某些列为条件连接,从中检索出关联数据。连接有ANSI连接、SQLServer连接两种语法形式,这里主要介绍ANSI连接语法形式。第6章数据查询6.3.1

多表查询所谓内连接是多个表通过连接条件中共享列的值进行的比较连接。当未指明连接类型时,默认为内连接。内连接值显示两个表中所有匹配数据的行,如图6-15所示。

1.内连接(INNERJOIN)第6章数据查询图6-15

表之间的内连接内连接6.3.1

多表查询外连接显示一个表中所有的行和另外一个表中的任何匹配的行,如图6-17所示。外连接又分为左外连接、右外连接。

2.外连接(OUTERJOIN)第6章数据查询图6-17

表之间的外连接外连接6.3.1

多表查询两个表之间的交叉连接,是用左表中的每一行与右表中的每一行进行连接。因此,结果集中的行数是左表的行数乘以右表的行数,该乘积也称为“笛卡儿乘积”,交叉连接使用关键字CROSSJOIN。

3.交叉连接第6章数据查询6.3.2

分组和汇总同其他语言一样,SOLServer也提供了一系列的系统函数,包括聚合函数、数学函数、字符串函数、日期和时间函数等,本节只介绍聚合函数。聚合函数可以返回一列、几列或全部列的汇总数据,用于计数或寻找某列的平均值。这类函数仅作用于数值型列,并且在列上使用聚合函数时,不考虑NULL值。常用的聚合函数如表4-4所示。

1.使用聚合函数第6章数据查询表4-4

常用聚合函数表函数名描述AVG([ALL|DISTINCT][expression])MAX(expression)MIN(expression)SUM([ALL|DISTINCT][expression])COUNT([ALL|DISTINCT][expression])COUNT(*)返回表达式的平均值返回表达式的最大值返回表达式的最小值返回表达式中所有值的平均值返回表中指定列的数据记录行数。使用DISTINCT关键字删除重复值返回表中所有数据记录的行数6.3.2

分组和汇总使用聚合函数只能返回一个单个的汇总结果,如果需要显示分组的汇总数据,就必须使用GROUPBY子句。该句子的功能是根据指定的列表中的数据分成多个组后进行汇总。其与语法格式为:SELECTclumn_name1[,…n]FROMtable_nameWHEREsearch_conditionGROUPBY[ALL]column_mane1[,…n][HAVINGsearchm_condition]

2.使用分组汇总子句第6章数据查询6.3.2

分组和汇总使用GROUPBY对查询出来的数据进行分类汇总后,只能显示统计结果,看不到详细的数据。使用COMPUTE和COMPUTEBY子句既能浏览详细数据又可以看到统计结果。

3.

使用明细汇总子句第6章数据查询6.3.3

嵌套查询前面所提到的查询都是单层查询。但在实际运用中,经常要用到嵌套查询。所谓嵌套查询指的是在一个SELECT查询内再嵌入一个SELECT语句。外层的SELECT语句叫外部查询,内层的SELECT语句叫子查询。通常情况下,嵌套查询都可以写成连接的形式,但有时写成连接的形式比较复杂,不容易理解,而写成嵌套查询,可以将复杂的查询分解成几个简单的、易于理解的子查询。但是,由于子查的询的执行需要增加一些附加的操作,而连接不需要增加附加操作,故连接操作比子查询快。第6章数据查询6.3.4

合并数据集在SELECT语句中,使用UNION子句可以把两个或多个SELECT语句查询的结果组合成一个结果集。其语法形式如下:SELECT_statement1UNION[ALL]SELECT_statement2第6章数据查询6.3.5

生成一个新表在对表进行查询时,我们可以使用INTO子句将查询生成一个新表,此方法常用于创建的副本或创建临时表,其语法形式为:SELECT[ALL|DISTINCT][TOPn[PERCENT]select_list[INTOnew_table]FROMtable_name[WHEREsearch_condition]第6章数据查询6.4

目2、针对上一章创建的学生成绩管理数据库中的三个表,完成以下查询。1)查询全体学生的选课情况,其成绩列都加5,并为各列设置中问别名。2)显示所有选课学生的的学号。3)显示所有选课学生的的学号并去掉重复行。4)查询学生选课成绩大于80分的学生学号、课程号、成绩。

5)查询计算机系全体学生的学号、姓名。

6)查询学生选课成绩在80—90分之间的学生学号、课程号和成绩。

7)查询计算机系、建筑工程系的学生的学号及姓名。

8)查询不是计算机系、建筑工程系的学生的学号及姓名。

9)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论