SQL Server数据库实践教程 课件 05-06 单表查询_第1页
SQL Server数据库实践教程 课件 05-06 单表查询_第2页
SQL Server数据库实践教程 课件 05-06 单表查询_第3页
SQL Server数据库实践教程 课件 05-06 单表查询_第4页
SQL Server数据库实践教程 课件 05-06 单表查询_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

SQLServer数据库实践SQL语言一般分四类数据定义语言(DDL,DataDefinitionLanguage)数据操纵语言(DML,DataManipulationLanguage)数据查询语言(DQL,DataQuery

Language)数据控制语言(DCL,DataControlLanguage)(+事务)√√√√数据查询语法SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]stuDB数据库三张表数据查询目录1、单表查询2、连接查询3、嵌套查询4、集合查询5、基于派生表的查询1、单表查询单表查询仅涉及一个表,又分为:选择表中的若干列选择表中的若干元组

ORDERBY排序子句聚集函数

GROUPBY分组子句①

选择表中的若干列【例题5-1】查询全体学生的姓名和民族。SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]SELECTName,NationFROM

Student①

选择表中的若干列【例题5-2】查询全体学生的姓名、民族和性别。SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]SELECTName,Nation,SexFROM

Student注意:列的顺序①

选择表中的若干列【例题5-3】查询全体学生的详细信息。SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]SELECT

Sno,Name,Sex,Nation,Birthday

FROM

Student或者SELECT

*

FROM

Student习题1.查询所有课程的课程名和学分2.查询课程的所有信息查询语法SELECT

<输出列表>]…FROM数据源列表习题1.查询所有课程的课程名和学分

selectcname,creditfromcourse2.查询课程的所有信息查询语法SELECT

<输出列表>]…FROM数据源列表习题1.查询所有课程的课程名和学分

selectcname,creditfromcourse2.查询课程的所有信息

select*fromcourseselectCno,cname,hours,credit,Semesterfromcourse查询语法SELECT

<输出列表>]…FROM数据源列表①选择表中的若干列查询经过计算的值SELECT子句的<输出列表>可以为:算术表达式字符串常量函数列别名SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]①

选择表中的若干列【例题5-4】查询学生的姓名及年龄。SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]SELECT

Name,YEAR(GETDATE())-YEAR(Birthday)

FROM

Student①

选择表中的若干列【例题5-4】查询学生的姓名及年龄。GETDATE()函数取系统当前日期YEAR()函数取日期中的年定义列别名有三种方法①别名=列名②列名as别名③列名别名SELECT

Name,YEAR(GETDATE())-YEAR(Birthday)

FROM

StudentSELECTName,nl=YEAR(GETDATE())-YEAR(Birthday)FROMStudentSELECTName,YEAR(GETDATE())-YEAR(Birthday)asnl

FROMStudentSELECTName,YEAR(GETDATE())-YEAR(Birthday)nl

FROMStudent例:SELECTname,birthday,YEAR(birthday)年,month(birthday)月,day(birthday)日FROMStudent常用日期函数

Getdate():返回服务器当前系统日期和时间

year(DATA):返回日期中的年

month(DATA):返回日期中的月

day(DATA):返回日期中的日②

选择表中的若干元组【例题5-5】查询学生分布在哪些民族

SELECTNationFROMStudent等价于:SELECTALLNationFROMStudent SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]②

选择表中的若干元组【例题5-5】查询学生分布在哪些民族

SELECTDISTINCTNationFROMStudent SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]说明:DISTINCT关键词,去掉查询结果中重复的行②

选择表中的若干元组【例题5-7】查询哪些学生是少数民族,显示学生姓名和民族。SELECTName,NationFROMStudentWHERENation<>'汉族'SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]WHERE

子句中常用的查询运算符查询条件谓词比较=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比较运算符确定范围BETWEENAND,NOTBETWEENAND确定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重条件(逻辑运算)AND,OR,NOT②

选择表中的若干元组【例题5-8】查询年龄在19~23岁(包括19和23岁)之间的学生的学号、姓名、出生日期。1:SELECTSno,Name,BirthdayFROMStudent

WHEREYEAR(GETDATE())-YEAR(Birthday)BETWEEN19AND232:SELECTSno,Name,BirthdayFROMStudent

WHEREYEAR(GETDATE())-YEAR(Birthday)>=19

ANDYEAR(GETDATE())-YEAR(Birthday)<=23操作练习实验4单表查询(一)1~5题

选择表中的若干元组【例题5-9】查询民族为“汉族”或者“满族”的学生详细信息。SELECT*FROMStudentWHERENationin('汉族','满族')或者SELECT*FROMStudentWHERENation='汉族'orNation='满族'②

选择表中的若干元组【例题5-10】查询哪些学生选课了还没有考试成绩,显示学号,课程号。SELECTSno,CnoFROMSCWHEREGradeisNULL判断空值不能用等号=②

选择表中的若干元组-模糊查询【例题5-11】查询哪些学生姓名中含有“南”字。SELECT*FROMStudentWHERENameLIKE'%南%'模糊查询通配符:%:任意长度_:单个字符②

选择表中的若干元组-模糊查询【例题5-13】找出所有姓“张”和姓“江”的员工信息。SELECT*FROMStudentWHERENameLIKE'[张,江]%'SELECT*FROMStudentWHEREsubstring(Name,1,1)IN('张','江')SELECT*FROMStudentWHEREleft(Name,1)IN('张','江')模糊查询通配符:%:任意长度_:单个字符常用字符串函数Left(字符表达式,整数):截取从左侧开始指定位数的子字符串Right(字符表达式,整数):截取从右侧开始指定位数的子字符串Substring(字符表达式,起始位置,n):从任意位置取子串,截取从起始位置开始的n个字符Ltrim(字符表达式):去掉字符表达式左侧(前面)的空格Rtrim(字符表达式):去掉字符表达式右侧(尾部)的空格操作练习实验4单表查询(一)

SQLServer数据库实践SQL语言一般分四类数据定义语言(DDL,DataDefinitionLanguage)数据操纵语言(DML,DataManipulationLanguage)数据查询语言(DQL,DataQuery

Language)数据控制语言(DCL,DataControlLanguage)(+事务)√√√√数据查询语法SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]stuDB数据库三张表数据查询目录1、单表查询2、连接查询3、嵌套查询4、集合查询5、基于派生表的查询1、单表查询单表查询仅涉及一个表,又分为:选择表中的若干列选择表中的若干元组

ORDERBY排序子句聚集函数

GROUPBY分组子句√√③ORDERBY排序子句【例题5-16】查询选修了1号课程的学生学号及其成绩,查询结果按照成绩降序排列。SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]③ORDERBY排序子句【例题5-16】查询选修了1号课程的学生学号及其成绩,查询结果按照成绩降序排列。SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]SELECTSno,GradeFROMSCWHERECno=1ORDERBYGradeDESC分数降序表中数据顺序③ORDERBY排序子句【例题5-17】查询学生的学号、姓名、民族、出生日期,查询结果按照民族升序排列,同一民族的按照年龄降序排列。SELECTSno,Name,Nation,BirthdayFROMStudentORDERBYNationASC,BirthdayASC

SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]判断题:orderby子句中如果没有写排序字段,默认升序④聚集函数函数功能COUNT(*)统计元组(行、记录)数COUNT(<列名>)统计该列(字段、属性)值不为空的元组数COUNT(DISTINCT<列名>)统计该列值不为空,并且值不重复的元组数SUM(<列名>)计算一列值的总和(此列必须为数值型)AVG(<列名>)计算一列值的平均值(此列必须为数值型)MAX(<列名>)求一列值的最大值MIN(<列名>)求一列值的最小值五个聚集函数,只有count()函数多种用法④聚集函数【例题5-18】统计有多少名学生。代码1:SELECTcount(*)FROMStudent代码2:SELECTcount(*)学生数FROMStudentSELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]④聚集函数【例题5-20】查询有多少学生选修了课程。SELECTcount(*)FROMSC结果:5SELECTcount(DISTINCTSno)选课人数FROMSC结果:3SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…

FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]④聚集函数【例题5-21】查询课程表中有多少门必修课(选修课的开课学期是空值)。代码1:SELECTcount(Semester)必修课程数FROMCourse代码2:SELECTcount(*)必修课程数FROMCourse

WHERESemesterISNOTNULL

结果:3SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]强调:COUNT(*)

统计行数,不考虑空值COUNT(列名)

统计该列不为空的行数COUNT(DISTINCT列名)统计该列不为空

并且不重复的行数?SELECT

count(distinctSemester)

FROM

Course④聚集函数【例题5-19】查询学生学习所有课程获得的最高分、最低分和平均分。SELECTmax(Grade)最高分,min(Grade)最低分,avg(Grade)平均分FROMSCSELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]习题1用SQL语句统计学校一共开设了多少门课程用SQL语句统计少数民族学生的人数用SQL语句统计学生有多少个民族用SQL语句统计学校课程的总学时,以及最高学分、最低学分用SQL语句统计2号课程参加考试的人数用SQL语句统计1号课程的平均分COUNT()计数SUM()求和AVG()求平均分MAX()求最大值MIN()求最低分SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表

[WHERE<条件表达式>]习题1用SQL语句统计学校一共开设了多少门课程用SQL语句统计少数民族学生的人数用SQL语句统计学生有多少个民族用SQL语句统计学校课程的总学时,以及最高学分、最低学分用SQL语句统计2号课程参加考试的人数用SQL语句统计1号课程的平均分selectcount(*)fromcourseselectcount(cno)fromcourseselectcount(*)fromstudentwherenation<>’汉族’selectcount(distinctnation)fromstudentselectsum(hours),max(credit),min(credit)fromcourseselectcount(grade)fromSCwherecno=2selectcount(*)fromSCwherecno=2andgradeisnotnullselectavg(grade)fromSCwherecno=1COUNT()计数、SUM()求和AVG()求平均分、MAX()求最大值

、MIN()求最低分数据查询语法SELECT[ALL|DISTINCT][TOPn|PERCENT]<输出列表>]…FROM数据源列表[WHERE<条件表达式>][GROUPBY<分组表达式>[HAVING<条件表达式>]][ORDERBY<排序表达式>[ASC|DESC]]⑤GROUPBY子句GROUPBY子句分组:细化聚集函数的作用对象未分组,聚集函数将作用于整个查询结果分组后,聚集函数将分别作用于每个组,按一列或多列分组,值相等的为一组⑤GROUPBY子句【例题5-18】统计有多少名学生。SELECTcount(*)学生数FROMStudent【进阶】统计各个民族分别有多少名学生。SELECTnation,count(*)学生数FROMStudentgroupbynationGROUPBY分组后,聚集函数将分别作用于每个组值相等的为一组,分组统计⑤GROUPBY子句【例题5-19】查询学生学习所有课程获得的最高分、最低分和平均分。SELECTmax(Grade)最高分,min(Grade)最低分,avg(Grade)平均分FROMSC【进阶1例题5-22】查询每门课程的最高分、最低分和平均分,显示课程号和相应的分数。SELECTCno,max(Grade)最高分,min(Grade)最低分,avg(Grade)平均分FROM

温馨提示

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

评论

0/150

提交评论