第4章-数据库查询.ppt
《第4章-数据库查询.ppt》由会员分享,可在线阅读,更多相关《第4章-数据库查询.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、中南大学信息科学与工程学院数据库技术与应用数据库技术与应用数据库技术与应用教材编写组数据库技术与应用教材编写组数据库技术与应用本章内容重点难点第第4 4章章 数据库查询数据库查询查询概述查询概述基本查询基本查询嵌套查询嵌套查询连接查询连接查询嵌套查询、连接查询嵌套查询、连接查询2数据库技术与应用问题提出问题提出为什么要查询数据?为什么要查询数据?如何实现查询?如何实现查询?3数据库技术与应用4.1 4.1 查询概述查询概述4.1.1 4.1.1 图形界面的菜单方式图形界面的菜单方式4.1.2 4.1.2 查询语句查询语句SELECTSELECT 4数据库技术与应用4.1 4.1 查询概述查询概
2、述在数据库应用中,最常见的操作是数据查询,它是在数据库应用中,最常见的操作是数据查询,它是数据库系统中最重要的功能,也是数据库其他操作数据库系统中最重要的功能,也是数据库其他操作(如统计、插入、删除及修改)的基础。无论是创(如统计、插入、删除及修改)的基础。无论是创建数据库、还是创建数据表等最终的目的都是为了建数据库、还是创建数据表等最终的目的都是为了使用数据,而使用数据的前提是需要从数据库中获使用数据,而使用数据的前提是需要从数据库中获取数据库所提供的数据信息。取数据库所提供的数据信息。5数据库技术与应用4.1.1 4.1.1 图形界面的菜单方式图形界面的菜单方式在在SSMSSSMS图形界面
3、中,通过图形界面中,通过“对象资源管理器对象资源管理器”可以可以直接查询数据表中的数据。直接查询数据表中的数据。6数据库技术与应用4.1.2 4.1.2 查询语句查询语句SELECT SELECT 数据查询语句数据查询语句SELECTSELECT的基本框架是的基本框架是:SELECTSELECT-FROM-FROM-WHEREWHERE语法格式:语法格式:SELECTselect_list/*指定要选择的列或行及其限定指定要选择的列或行及其限定*/INTOnew_table/*指定结果存入新表指定结果存入新表*/FROMtable_source/*指定数据来源的表和视图指定数据来源的表和视图*
4、/WHEREsearch_condition/*指定查询条件指定查询条件*/GROUPBYgroup_by_expression/*指定分组表达式指定分组表达式*/HAVINGsearch_condition/*指定分组统计条件指定分组统计条件*/ORDERBYorder_expressionASC|DESC/*指定查询结果的排序方式指定查询结果的排序方式*/7需要哪些列需要哪些列从哪些表从哪些表根据什么条件根据什么条件数据库技术与应用4.2 基本查询4.2.1 4.2.1 简单查询简单查询4.2.2 4.2.2 条件查询条件查询4.2.3 4.2.3 查询结果处理查询结果处理8数据库技术与应
5、用4.2.14.2.1简单查询简单查询简单查询是指简单查询是指SELECTSELECT语句只包含语句只包含SELECTSELECT子句和子句和FROMFROM子子句的操作,涉及的对象是单表中的列,即在查询过程句的操作,涉及的对象是单表中的列,即在查询过程对一张表的列进行操作。对一张表的列进行操作。语法格式:语法格式:SELECTALL|DISTINCTTOPnPERCENTselect_listFROMtable_name其中其中:ALL表示输出所有记录,包括重复记录。表示输出所有记录,包括重复记录。DISTINCT表示输出无重复结果的记录。表示输出无重复结果的记录。TOPn指定返回查询结果的
6、前指定返回查询结果的前n行数据。行数据。select_list中的选项可以是:、字段名、表达式或函数。中的选项可以是:、字段名、表达式或函数。9数据库技术与应用4.2.14.2.1简单查询简单查询查询全部列或指定列查询全部列或指定列SELECTALL*FROMst_infoSELECTallst_nameFROMst_Info消除重复行或定义列别名消除重复行或定义列别名SELECTDISTINCTSt_nameFROMst_InfoSELECTDISTINCTst_id,St_nameFROMst_InfoSELECTst_nameas姓名姓名,st_sexAS性别性别FROMst_InfoS
7、ELECTst_name姓名姓名,st_sex性别性别FROMst_Info10数据库技术与应用4.2.14.2.1简单查询简单查询限制结果集的行数限制结果集的行数 例例4.54.5:对:对St_infoSt_info表选择姓名、性别查询,返回结果集中前表选择姓名、性别查询,返回结果集中前5 5行。行。SELECTtop5st_nameAS姓名姓名,St_Sexas性别性别FROMst_info又如:又如:SELECTtop3St_idFROMs_c_InfoSELECTtop20PERCENTSt_idFROMs_c_Info/*返回结果集中前返回结果集中前20%行行*/11数据库技术与应用
8、4.2.14.2.1简单查询简单查询计算列值计算列值例例4.6按按120分计算成绩并显示分计算成绩并显示S_C_Info表中前表中前5行学生的成绩行学生的成绩情况。情况。SELECTTOP5St_ID学号学号,C_No课程编号课程编号,成绩成绩120=Score*1.2FROMS_C_Info12数据库技术与应用4.2.14.2.1简单查询简单查询计算列值计算列值使用聚合函数使用聚合函数是对一组值执行计算并返回单一的值的函数是对一组值执行计算并返回单一的值的函数常用聚合函数常用聚合函数13函函数数功功能能函函数数功功能能AVG()求一列数据的平均值求一列数据的平均值MIN()求列中的最小值求列
9、中的最小值SUM()求一列数据的和求一列数据的和MAX()求列中的最大值求列中的最大值COUNT(*)统计查询的行数统计查询的行数?什么是聚合函数?什么是聚合函数数据库技术与应用4.2.14.2.1简单查询简单查询例例4.74.84.74.8:分别查询:分别查询St_InfoSt_Info表的学生总数和平均年龄表的学生总数和平均年龄查询学生总数(使用查询学生总数(使用COUNT(*)COUNT(*))SELECT SELECT COUNTCOUNT(*)AS(*)AS 总数总数 FROM FROM St_InfoSt_Info查询学生的平均年龄(使用查询学生的平均年龄(使用AVGAVG)SEL
10、ECTAVG(YEAR(GETDATE()-YEAR(Birthdate)AS平均年龄平均年龄FROMSt_info14数据库技术与应用4.2.2 4.2.2 条件查询条件查询语法格式:语法格式:WHERE WHERE search_conditionsearch_condition 条件条件运算符:运算符:比较运算比较运算逻辑运算逻辑运算字符匹配运算字符匹配运算范围比较运算范围比较运算空值比较运算空值比较运算 15数据库技术与应用4.2.2 4.2.2 条件查询条件查询语法格式:语法格式:WHERE WHERE search_conditionsearch_condition16数据库技术与
11、应用4.2.2 4.2.2 条件查询条件查询比较运算比较运算例例4.124.12,查询,查询St_InfoSt_Info表中表中19981998年以前出生的学生情况,要求列出年以前出生的学生情况,要求列出学号、姓名、出生年份和所在班级。学号、姓名、出生年份和所在班级。SELECTSt_ID,St_Name,YEAR(Birthdate)出生年份出生年份,Cl_NameFROMSt_InfoWHEREYEAR(Birthdate)=80andScore9017这是一个关系表达式这是一个关系表达式这是一个逻辑表达式这是一个逻辑表达式数据库技术与应用4.2.2 4.2.2 条件查询条件查询字符匹配运
12、算字符匹配运算 LIKE LIKE关键字的语法格式:关键字的语法格式:match_expressionNOTLIKEpatternESCAPEescape_character18运算符运算符描述描述示例示例%包含零个或多个字符的任意字符串包含零个或多个字符的任意字符串address LIKE%公公司司%将将查查找找地地址址任任意意位位置包含公司的所有职员置包含公司的所有职员_下划线,对应任何单个字符下划线,对应任何单个字符employee_name LIKE _海海燕燕 将将查查找找以以“海燕海燕”结尾的所有结尾的所有6个字符的名字个字符的名字 指指定定范范围围(如如a-f)或或集集合合(如如
13、abcdef)中的任何单个字符)中的任何单个字符employee_name LIKE 张张李李王王海海燕燕 将将查查找张海燕、李海燕、王海燕等找张海燕、李海燕、王海燕等不属于指定范围或集合的任何单个字符不属于指定范围或集合的任何单个字符employee_name LIKE 张张李李海海燕燕 将将查查找找不姓张、李的名为海燕的职员不姓张、李的名为海燕的职员数据库技术与应用4.2.2 4.2.2 条件查询条件查询例例4.14:4.14:查询查询st_infost_info表中姓表中姓“张张”的男学生的信息。的男学生的信息。SELECT*FROMst_infoWHEREst_nameLIKE张张%A
14、NDst_sex=男男其中等价的形式:其中等价的形式:WHERELEFT(st_name,1)=张张ANDst_sex=男男例例4.154.15:在:在St_InfoSt_Info表中查询学号倒数第表中查询学号倒数第3 3个数为个数为1 1,倒数第,倒数第1 1个个数在数在1414之间的学生的学号、姓名、班级信息。之间的学生的学号、姓名、班级信息。SELECTSt_ID,St_Name,Cl_NameFROMSt_InfoWHERESt_IDLIKE%1_123419数据库技术与应用4.2.2 4.2.2 条件查询条件查询例例4.164.16:在:在St_InfoSt_Info表中,查询所有表
15、中,查询所有“口腔口腔”班,名叫班,名叫“小玲小玲”的学生的学号、姓名、班级信息。的学生的学号、姓名、班级信息。SELECTSt_ID,St_Name,Cl_NameFROMSt_InfoWHEREst_namelike_小玲小玲%andCl_Namelike口腔口腔%例例4.174.17:在:在St_InfoSt_Info表中,查询学生表中,查询学生“张好然张好然”和和“杨平娟杨平娟”的的信息。要求显示学号、姓名、班级和电话号码。注意此表中信息。要求显示学号、姓名、班级和电话号码。注意此表中是用下划线(是用下划线(_ _)将区号与电话号码连接的。)将区号与电话号码连接的。SELECTSt_I
16、D,St_Name,Cl_Name,TelephoneFROMSt_InfoWHERETelephonelike%#_%ESCAPE#/*定义定义#为转义字符为转义字符*/20数据库技术与应用4.2.2 4.2.2 条件查询条件查询范围比较运算范围比较运算语法格式:语法格式:expressionNOTBETWEENbegin_expressionANDend_expression例例4.184.18:在:在St_InfoSt_Info表中查询表中查询19841984年出生的学生信息。年出生的学生信息。SELECT*FROMSt_InfoWHEREBirthdateBETWEEN1997-1-1
17、AND1997-12-3121数据库技术与应用4.2.2 4.2.2 条件查询条件查询例例4.134.13:在:在st_infost_info表中,查询年龄在表中,查询年龄在20202121岁之间的学生信息。岁之间的学生信息。SELECT*FROMst_infoWHEREYEAR(GETDATE()-YEAR(Birthdate)BETWEEN20AND2122 此句的等价形式是什么?此句的等价形式是什么?数据库技术与应用4.2.2 4.2.2 条件查询条件查询若要查询的是列表中的数据,可以使用若要查询的是列表中的数据,可以使用ININ关键字关键字 语法格式:语法格式:expressionNO
18、TIN(expression,.n)例例4.204.20:在:在st_infost_info表中,表中,“法学法学1601”1601”、“法学法学1701”1701”和和“材材料科学料科学1701”1701”班的学生信息。班的学生信息。SELECT*FROMSt_InfoWHERECl_NameIN(法学法学1601,法学法学1701,材料科学材料科学1701)23数据库技术与应用4.2.2 4.2.2 条件查询条件查询空值比较运算空值比较运算例例4.214.21:对:对st_infost_info表,查询所有表,查询所有TelephoneTelephone为空值的学生的信为空值的学生的信息。
19、息。SELECT*FROMst_infoWHERETelephoneISNULL24 可以写成:可以写成:Telephone=NULL空值表示值未知。空值表示值未知。空值不同于空白或零值。空值不同于空白或零值。没有两个相等的空值。没有两个相等的空值。数据库技术与应用4.2.3 4.2.3 查询结果处理查询结果处理排序输出(排序输出(ORDER BYORDER BY)语法格式:语法格式:ORDERBYorder_by_expression1ASC|DESC,order_by_expression2ASC|DESC,例例4.224.22:对:对st_infost_info表,按性别顺序列出学生的信
20、息,性别相同表,按性别顺序列出学生的信息,性别相同的再按年龄由小到大排序。的再按年龄由小到大排序。SELECT*FROMst_infoORDERBYst_sex,BirthDateDESC25数据库技术与应用4.2.3 4.2.3 查询结果处理查询结果处理重定向输出(重定向输出(INTOINTO)语法格式:语法格式:INTOnew_table例例4.234.23:对:对s_c_infos_c_info表,查询选修表,查询选修“大学计算机基础大学计算机基础”(课程(课程号为号为“9710011”9710011”)课程的所有学生信息,并将结果存入)课程的所有学生信息,并将结果存入newstuden
21、tnewstudent表中。表中。SELECTst_id学号学号,c_no大学计算机基础大学计算机基础,score成绩成绩INTOnewstudentFROMs_c_infoWHEREc_no=971001126数据库技术与应用4.2.3 4.2.3 查询结果处理查询结果处理输出合并(输出合并(UNIONUNION)语法格式:语法格式:UNION ALL SELECTUNION ALL 例例4.244.24:对:对c_infoc_info表,列出课程编号为表,列出课程编号为“9710011”9710011”或或“9720033”9720033”的课程名称和学分。的课程名称和学分。SELECTc
22、_name,c_creditFROMc_infoWHEREc_no=9710011UNIONSELECTc_name,c_creditFROMc_infoWHEREc_no=972003327数据库技术与应用4.2.3 4.2.3 查询结果处理查询结果处理分组统计(分组统计(GROUP BYGROUP BY)与筛选()与筛选(HAVINGHAVING)语法格式:语法格式:GROUPBYgroup_by_expression1,group_by_expression2,例例4.254.25:对:对st_infost_info表,分别统计男女学生人数。表,分别统计男女学生人数。SELECTst_s
23、ex,COUNT(st_sex)FROMst_infoGROUPBYst_sex例例4.214.21:对:对s_c_infos_c_info表,查询平均成绩大于表,查询平均成绩大于8080的课程编号和平的课程编号和平均成绩。均成绩。SELECTc_no,AVG(score)AS平均成绩平均成绩FROMs_c_infoGROUPBYc_noHAVINGAVG(score)=8028WHERE与与HAVING两者的区别两者的区别数据库技术与应用4.2.3 4.2.3 查询结果处理查询结果处理使用使用COMPUTECOMPUTE和和COMPUTE BYCOMPUTE BY子句汇总子句汇总语法格式:语
24、法格式:COMPUTErow_aggregate(column_name),row_aggregate(column_name).BYcolumn_name,column_name.例例4.284.28:列出列出St_InfoSt_Info表中表中“材料科学材料科学1701”1701”班学生的年龄及平班学生的年龄及平均年龄均年龄(即年龄的明细行和汇总行)。(即年龄的明细行和汇总行)。SELECTSt_ID,YEAR(GETDATE()-YEAR(Birthdate)AS年龄年龄FROMSt_InfoWHERECl_Name=材料科学材料科学1701ORDERBYSt_IDCOMPUTEAVG(
25、YEAR(GETDATE()-YEAR(Birthdate)29数据库技术与应用4.2.3 4.2.3 查询结果处理查询结果处理例例4.294.29:对对St_InfoSt_Info表中表中“材料科学材料科学1701”1701”和和“口腔(七)口腔(七)1701”1701”班学生的年龄,生成分组汇总行和明细行班学生的年龄,生成分组汇总行和明细行 。SELECTSt_ID,YEAR(GETDATE()-YEAR(Birthdate)AS年龄年龄FROMSt_InfoWHERECl_Name=材料科学材料科学1701ORCl_Name=口腔(七)口腔(七)1701ORDERBYCl_NameCOM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 查询
限制150内