数据库应用技术教程 课件 第4章 数据查询1_第1页
数据库应用技术教程 课件 第4章 数据查询1_第2页
数据库应用技术教程 课件 第4章 数据查询1_第3页
数据库应用技术教程 课件 第4章 数据查询1_第4页
数据库应用技术教程 课件 第4章 数据查询1_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

上节回顾1、什么是实体完整性?如何保证实体完整性?2、什么是参照完整性?如何保证参照完整性?任务1、设置姓名为唯一。2、使用altertable命令,为选课表添加外键约束。第四章数据查询学习目标掌握SELECT语句语法;熟练进行简单查询;掌握排序、分组聚合和分组筛选;掌握集合查询和连接查询的方法;掌握嵌套查询和窗口函数的应用;学会在数据更新中使用查询语句。任务在学生选课系统数据库中能根据按照指定的要求灵活、快速地查询相关信息。如:1、查询所有学生的学号,姓名和年龄。2、查询信息系学生的学号,姓名和出生年份。3、查询所有学生中年龄最大、最小的学生学号和姓名。4、查询女生人数,平均年龄。。。。4数据查询4.1SELECT语句4.2简单查询4.3集合查询4.4连接查询4.5嵌套查询4.6在数据更新中使用查询语句4.7窗口函数4.1SELECT语句SELECT<目标列名序列>--需要哪些列

FROM<数据源>--来自于哪些表

[WHERE<检索条件>]--根据什么条件

[GROUPBY<分组依据列>][HAVING<分组筛选条件>][ORDERBY<排序依据列>]INTO子句用于将查询结果插入新表中,其语法格式如下。SELECT[ALL︱DISTINCT][TOPN[PERCENT]列名1[,列名2,…列名N]INTO新表名

FROM表名或视图名INTO子句例:使用INTO子句创建一个包含学生学号、姓名和性别,并命名为new_Student的新表。在查询编辑器中执行如下Transact-SQL语句。USE学生选课GOSELECTSno,Sname,SsexINTOnew_StudentFROMStudentGO4.2简单查询选择表中若干列

1.查询指定的列查询表中部分属性列。例1:查询全部学生的学号与姓名。SELECTSno,SnameFROMStudent例2.查询全体学生的姓名、学号、所在系SELECTSname,Sno,Sdept FROMStudent2.查询全部列例3.查询全体学生的记录SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent等价于:

SELECT*FROMStudent

3.查询经过计算的列例4.查询全体学生的姓名及其出生年份。

SELECTSname,2023-Sage

FROMStudent4.常量列例5.查询全体学生的姓名,出生年份,所在系,并在出生年份列前加入一个列,此列每行数据均为“出生年份”常量值。SELECTSname,'出生年份',2023-Sage,sdeptFROMStudent5.显示列标题

语法:列名|表达式[AS]列标题或:列标题=列名|表达式例:

SELECTSname姓名,2023-Sage出生年份,所在系=sdeptFROMStudent

查询结果:4.2简单查询选择表中若干元组

1.消除重复的行例6.查询选修了课程的学生的学号SELECTSnoFROMSC有重复行!用DISTINCT去掉结果集中的重复行SELECTDISTINCTSnoFROMSC2.查询满足条件的元组(where)查询条件谓词比较运算符=,>,>=,<,<=,<>(或!=)NOT+比较运算符确定范围BETWEEN…AND,NOTBETWEEN…AND确定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL逻辑谓词AND,OR(1)比较大小例7.查询信息系全体学生的姓名。

SELECTSnameFROMStudentWHERESdept=‘信息系'例8.查询年龄在20岁以下的学生的姓名及年龄。

SELECTSname,SageFROMStudentWHERESage<20例9.查询考试成绩有不及格的学生的学号

SELECTDISTINCTSnoFROMSCWHEREGrade<60(2)确定范围用BETWEEN…AND和NOTBETWEEN…ANDBETWEEN…AND…的格式为:

列名|表达式[NOT]BETWEEN下限值AND上限值如果列或表达式的值在[不在]下限值和上限值范围内,则结果为True,表明此记录符合查询条件。示例例10.查询年龄在21~23岁之间的学生的姓名、所在系和年龄。SELECTSname,Sdept,SageFROMStudent WHERESageBETWEEN21AND23例11.查询年龄不在21~23之间的学生姓名、所在系和年龄。SELECTSname,Sdept,SageFROMStudent WHERESageNOTBETWEEN21AND23关于日期类型查询例12.查询2020年8月份出版的全部图书的详细信息。SELECT*FROM图书表

WHERE出版日期BETWEEN'2019/8/1'AND'2019/8/31'注意:日期类型的常量要用单引号括起来,而且年、月、日之间通常用分隔符隔开,常用的分隔符有“/”和“-”(3)确定集合使用IN运算符。用来查找属性值属于指定集合的元组。格式为:

列名[NOT]IN(常量1,常量2,…常量n)示例例13.查询信息系、数学系和计算机系学生的姓名和性别。

SELECTSname,SsexFROMStudent WHERESdeptIN('信息系','数学系','计算机系')例14.查询数学系和计算机系之外的其他系的学生姓名、性别和所在系。

SELECTSname,SsexFROMStudent WHERESdeptNOTIN(‘数学系','计算机系')(4)字符串匹配使用LIKE运算符一般形式为:

列名[NOT]LIKE<匹配串>匹配串中可包含如下四种通配符:_:匹配任意一个字符;%:匹配0个或多个字符;[]:匹配[]中的任意一个字符;对于连续字母的匹配,例如匹配[abcd],可简写为[a-d],

[^]:不匹配[]中的任意一个字符。

示例例15.查询姓‘张’的学生的详细信息。

SELECT*FROMStudentWHERESnameLIKE

'张%'例16.查询学生表中姓‘张’、‘王’和‘李’的学生的情况。

SELECT*FROMStudentWHERESnameLIKE

'[张王李]%'例17.查询名字中第2个字为‘小’或‘晓’的学生的姓名和学号。

SELECTSname,SnoFROMStudentWHERESnameLIKE

'_[小晓]%'示例例18.查询所有不姓“王”也不姓“李”的学生姓名

SELECTSnameFROMStudentWHERESnameNOTLIKE

'[王李]%'或者:

SELECTSnameFROMStudentWHERESnameLIKE'[^王李]%'或者:SELECTSnameFROMStudentWHERESnameNOTLIKE'王%'

ANDSnameNOTLIKE'李%'

示例例19.查询姓“刘”且名字是2个字的学生姓名。

SELECTSnameFROMStudentWHERESnameLIKE'刘_'

示例例20.查询姓刘且名字是3个字的学生姓名SELECTSnameFROMStudentWHERESnameLIKE'刘__'

注意:尾随空格需采用如下方法:

SELECTSnameFROMStudentWHERErtrim(Sname)LIKE'刘__'例21.在Student表中查询学号的最后一位不是1、3、5的学生信息。

SELECT*FROMStudentWHERESnoLIKE'%[^135]'转义字符如果要查找的字符串正好含有通配符,比如下划线或百分号,就需要使用一个特殊子句来告诉数据库管理系统这里的下划线或百分号是作为一个普通的字符,而不表示通配符,这个特殊的子句就是ESCAPE。ESCAPE的语法格式为:ESCAPE转义字符“转义字符”是任何一个有效的字符。在匹配串中包含转义字符,表明位于该字符后面的第一个字符是普通字符,而不是通配符。示例例如,查找“比例”字段中包含字符串“30%”的记录:

WHERE比例LIKE'%30!%%'ESCAPE'!'

查找“比例”字段中包含下划线(_)的记录:

WHERE比例LIKE'%!_%'ESCAPE'!'(5)有空值的查询空值(NULL)在数据库中表示不确定的值。例如,学生选修课程后还没有考试时,这些学生有选课记录,但没有考试成绩,因此考试成绩为空值。判断某个值是否为NULL值,

温馨提示

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

最新文档

评论

0/150

提交评论