版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库技术7.2单表查询7.2单表查询单表查询是数据库操作的基础,涉及从单一表中检索数据。主要步骤包括选择表、指定所需列、应用条件表达式筛选数据。
选择表中的列7.2.17.2.1选择表中的列1.输出表中的所有列输出表中的所有列,有两种方法,一种是将所有的字段名在select关键字后列出,一种是用星号“*”代替所有的字段,当使用星号“*”时,结果集中的列的顺序与CREATETABLE、ALTERTABLE或CREATEVIEW语句中所指定的顺序相同。任务1:查询全体学生的记录信息。代码如下:
SELECT*FROMstudents;运行结果如图7.1所示。7.2.1选择表中的列任务2:查询所有班级信息。代码如下:SELECTcls_id,cls_nameFROMclasses;运行结果如图7.2所示:7.2.1选择表中的列2.输出表中的特定列要选择表中的特定列,应在选择列表中明确地列出每一个特定列。任务3:查询学生的姓名和性别。代码如下:SELECTstu_name,stu_genderFROMstudents;运行结果如图7.3所示:7.2.1选择表中的列3.输出计算列选择表中的列时可以包含通过对一个或多个简单表达式应用运算符而生成的表达式。即在结果集中显示基表中不存在,但是根据基表中存储的值计算得到的值。任务4:查询成绩表中所有学生的学号和平均分。代码如下:SELECTstu_id,AVG(sc_grade)FROMscores运行结果如图7.4所示:图7.4查询成绩表中所有学生的学号和平均分7.2.1选择表中的列注意:(1)使用SUM(),AVG(),COUNT(),MAX(),MIN()等聚合函数来计算列的总和、平均值、数量、最大值和最小值。 ·(2)聚合函数对一组值执行计算并返回单一值,只能用于SELECT语句中,并且通常与GROUPBY子句一起使用,以便对数据进行分组。(3)当使用聚合函数时,SELECT列表中未包含在聚合函数中的其他列必须出现在GROUPBY子句中。(4)因为WHERE子句是在数据分组和聚合之前对数据进行过滤,而聚合函数是在数据分组后对每个分组进行计算的。所以在WHERE子句中不能出现聚合函数。(5)HAVING子句是用于对聚合查询结果进行过滤的。它允许在GROUPBY子句之后使用聚合函数来设置条件,从而筛选出满足特定聚合条件的分组。7.2.1选择表中的列4.为结果集中的列指定列名在任务4中的查询结果中我们可以看到,通过计算得到的列“平均分”,列标题显示为“AVG(sc_grade)”。在实际应用中我们可以根据需要利用AS子句来更改结果集中列的名称或为列指定别名。AS子句语法格式如下:SELECTcolumn_nameASalias_name-–列名AS列别名,给列指定别名SELECTt1.column_nameFROMtable1ASt1--表名as表别名,给表指定别名说明:
在SELECT子句中定义的别名可以在ORDERBY、GROUPBY和HAVING子句中引用,但不能在WHERE子句中引用,因为WHERE子句在SELECT子句之前执行。
可以省略AS关键字,但在编写SQL查询时,为了清晰和一致性,建议明确地使用。7.2.1选择表中的列任务5:查询显示成绩表中所有学生的学号和平均分。要求计算得到的字段用平均分字段名表示。代码如下:SELECTstu_id,AVG(sc_grade)AS平均分FROMscoresGROUPBYstu_id;运行结果如图7.5所示:选择查询7.2.27.2.2选择查询
选择查询从表中检索数据或进行计算的查询,是最基础且最常用的查询类型。于从数据库表中检索数据。可以选择特定的列、使用条件过滤行、排序结果集以及限制返回的行数。7.2.2选择查询1.查询条件WHERE和HAVING子句中的搜索条件或限定条件如表7.1所示。7.2.2选择查询2.运算符条件设置设置
在两个表达式之间可以使用运算符来进行比较,在比较字符串数据时,主要基于字符集和排序规则。首先,MySQL会根据字符集确定字符串中可以包含的字符。其次,排序规则决定了字符的比较方式,包括是否区分大小写。在比较时,MySQL会先比较字符串的长度,长度不同的字符串直接按长度排序;长度相同的字符串则按字典序(ASCII值或Unicode码点)进行比较。此外,还可以使用BINARY关键字进行二进制比较,或使用LIKE和REGEXP运算符进行模糊匹配和正则表达式匹配。任务6:查询成绩表中平均分高于80分的学生的学号和平均分。代码如下:SELECTstu_id,AVG(sc_grade)AS平均分FROMscoresGROUPBYstu_idHAVING平均分>80;--在SELECT子句中定义的别名可以在HAVING子句中引用运行结果如图7.6所示:7.2.2选择查询3.范围条件设置范围搜索中BETWEEN返回的是介于两个指定值之间的所有值,NOTBETWEEN是不返回与两个指定值匹配的任何值。任务7:查询显示学生表中2002年出生的所有学生的学号、姓名和出生日期。代码如下:SELECTstu_id,stu_name,stu_birthFROMstudentsWHEREstu_birthBETWEEN'2002-1-1'AND'2002-12-31';运行结果如图7.7所示:7.2.2选择查询4.列表条件设置IN关键字可以选择与列表中的任意值匹配的行。IN关键字之后的各项必须括在括号中并用逗号隔开。任务8:查询显示学生表中民族为白族和藏族的学生的学号、姓名和民族。代码如下:SELECTstu_id,stu_name,stu_nationFROMstudentsWHEREstu_nationIN('藏','傣');运行结果如图7.8所示:7.2.2选择查询5.字符匹配条件设置LIKE关键字可以查询与指定模式匹配的字符串、日期或时间值,与之相匹配的可以是完整的字符串,也可以包含通配符,任务9:查询显示学生表中姓“张”的学生的学号、姓名和民族。字段用学号、姓名和民族表示代码如下:SELECTstu_idAS学号,stu_nameAS姓名,stu_nationAS民族FROMstudentsWHEREstu_namelike'张%';运行结果如图7.9所示:7.2.2选择查询6.空值查询NULL值表示列的数据值未知或不可用。语法格式为:列表达式is[NOT]Null任务10:查询显示学生表中简历为空值的学生的学号、姓名和简历。代码如下:SELECTstu_id,stu_name,stu_resumeFROMstudentsWHEREstu_resumeISNULL;运行结果如图7.10所示:7.2.2选择查询任务11:查询显示学生表中简历不为空值的学生的学号、姓名和简历。代码如下:SELECTstu_id,stu_name,stu_resumeFROMstudentsWHEREstu_resumeISnotNULL;运行结果如图7.11所示:7.2.1选择表中的列注意:
在MySQL中,空值(NULL)和空串('',即两个单引号之间没有字符)是两个完全不同的概念。
空值表示未知或缺失的数据。它不是一个有效的值,而是一个特殊的标记,用于指示该字段没有值。在数据库中,空值通常不占用存储空间(具体取决于数据库的实现)。它只是一个标记,表示该字段没有数据。空值不能与任何值(包括空串)进行比较。必须使用
ISNULL或
ISNOTNULL
来判断一个字段是否为空值。
空串是一个长度为0的字符串。它是一个有效的值,表示该字段有一个值,但这个值是一个空字符串。空串在数据库中占用存储空间(尽管很少),因为它仍然是一个字符串对象,只是没有字符而已。空串可以与任何值进行比较,包括其他空串。使用=
或
!=
运算符来比较空串和其他字符串。7.2.2选择查询7.条件组合查询使用逻辑运算符AND、OR、NOT连接可以实现条件组合查询。任务12:查询显示学生表中名字由四个字符组成,性别为“女”的学生的学号、姓名和性别。代码如下:SELECTstu_id,stu_name,stu_genderFROMstudentsWHEREstu_nameLIKE'____'ANDstu_gender='女';运行结果如图7.12所示:分类汇总与排序7.2.37.2.3分类汇总与排序
在实际应用中,用户经常需要对结果集中的数据进行统计,例如在“学生信息管理系统”数据库中我们需要对学生的人数进行统计,对学习成绩进行分析,这些统计查询可以通过聚合函数、COMPUTE子句、GROUPBY子句来实现。7.2.3分类汇总与排序1.使用聚合函数
聚合函数对一组值执行计算,并返回单个值。除了COUNT函数以外,聚合函数都会忽略空值。聚合函数经常与SELECT语句的GROUPBY子句一起使用。常用的聚合函数有:
AVG([ALL|DISTINCT]<列名>),返回组中各值的平均值,其中忽略Null值,此列的数据类型必须是数值型。
COUNT([ALL|DISTINCT]<列名>),COUNT_BIG([ALL|DISTINCT]<列名>)。返回组中的个数,两个函数唯一的差别是它们的返回值。COUNT始终返回int数据类型值。COUNT_BIG始终返回bigint数据类型值。
MAX([ALL|DISTINCT]<列名>),返回表达式中的最大值。
MIN([ALL|DISTINCT]<列名>),返回表达式的最小值。
SUM([ALL|DISTINCT]<列名>),返回表达式中所有值的和。参数说明:ALL是不取消重复项,ALL为默认值。DISTINCT是去掉指定列中的重复值。7.2.3分类汇总与排序任务13:查询课程编号为“230101”课程的最低成绩。代码如下:SELECTcrs_id,MIN(sc_grade)AS最低分FROMscoresWHEREcrs_id='230101';运行结果如图7.13所示:7.2.3分类汇总与排序2.对结果分组GROUPBY子句是将查询结果集按一列或多列进行分组,并对每一组进行统计。语法如下:[GROUPBYgroup_by_list][HAVINGsearch_conditions]参数说明:“BYgroup_by_list”按列名指定的字段进行分组。“HAVINGsearch_conditions”对生成的组筛选后再对满足条件的组进行统计。任务14:查询每门课程的选课人数。代码如下:SELECTcrs_id,COUNT(*)AS选课人数FROMscoresGROUPBYcrs_id;运行结果如图7.14所示:7.2.3分类汇总与排序3.HAVING子句
HAVING子句是SQL中用于对分组后的结果进行过滤的子句。它通常与GROUPBY
子句一起使用。HAVING子句中的条件可以包含聚合函数,如COUNT、SUM、AVG等。但是,HAVING子句中的聚合函数不能作用于非分组列。HAVING子句中不能使用WHERE
子句中的某些限制条件(如LIKE、IN、BETWEEN等),因为这些条件是在数据分组之前进行筛选的,而HAVING是在数据分组之后进行筛选的。任务15:查询选修人数少于50人的课程编号和相应的选课人数。代码如下:SELECTcrs_id,COUNT(*)AS选课人数FROMscoresGROUPBYcrs_idHAVINGCOUNT(*)<50;运行结果如图7.15所示:7.2.3分类汇总与排序3.对结果排序任务16:查询选修了课程编号为“230101”课程的学生学号、成绩,按成绩从高到低排序。代码如下:SELECTstu_id,crs_id,sc_gradeFROMscoresWHEREcrs_id='230101'ORDERBYsc_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无人机数据链设备生产车间建设及运维项目可行性研究报告
- 高镍三元锂电池项目可行性研究报告
- 光伏组件导轨压块安装施工工法
- 群文阅读教学设计点评
- 钢板桩安全施工方案
- 汽车维修行业维修人才流失原因分析报告
- 公装行业产业分析报告
- 领导干部个人述职报告2024年经典范文三
- 码头防汛应急预案
- 灭火应急疏散预案
- 法律合规基础知识培训
- 西门子S7-1200PLC编程及应用教程 课件 第4章 S7-1200 PLC 基本指令(LAD)
- T-CSPSTC 72-2021 隧道衬砌脱空注浆治理技术规程
- 30HXY110A螺杆冷水机组开机、运行维护手册
- 医保工作人员信息与网络安全保密协议书(2篇)
- 大学学院智能制造工程专业教学大纲
- 卫生院“服务基层行”支撑材料(3.3.5患者参与医疗安全)
- 三年级语文 综合性学习:中华传统节日公开课
- 军队临床医学题库及答案
- 污水治理工程施工组织设计
- 钢结构桁架制作安装专项施工方案
评论
0/150
提交评论