资源简介 (共48张PPT)第五单元 简单查询任务5.1 查询指定的列任务5.2查询指定的行任务5.3 使用函数查询数据任务5.4 对查询结果进行排序任务5.5 分类汇总5.1.1 情景描述5.1.2问题分析5.1.3 解决方案5.1.4 知识总结5.1.5 应用实践任务5.1 查询指定列学生信息管理系统里存储了各类信息和记录,比如“学生”表里包含了学生的学号、姓名、性别、出生日期、个人联系电话、政治面貌、身份证号、家庭联系电话、家庭联系地址、班级编号多个字段的值。在某些功能中,开发团队只对其中部分信息感兴趣,比如只需要显示学生的学号、姓名、性别、出生日期字段,并把这部分信息的格式确定为“StudentID,StudentName,Sex,Birthday”。在这种情况下,意味着需要在原有的“学生”表中查询出刚才我们所指定的字段。5.1.1 情景描述学生信息管理系统里存储了各类信息和记录,比如“学生”表里包含了学生的学号、姓名、性别、出生日期、个人联系电话、政治面貌、身份证号、家庭联系电话、家庭联系地址、班级编号多个字段的值。在某些功能中,开发团队只对其中部分信息感兴趣,比如只需要显示学生的学号、姓名、性别、出生日期字段,并把这部分信息的格式确定为“StudentID,StudentName,Sex,Birthday”。在这种情况下,意味着需要在原有的“学生”表中查询出刚才我们所指定的字段。5.1.2问题分析1.打开SQL Server Management Studio,单击“对象资源管理器”中的“数据库”文件夹下的数据库“学生管理”;2.单击工具栏上的“新建查询”命令,打开“查询编辑器”;3.在“查询编辑器”上输入以下代码:5.1.3 解决方案4.单击工具栏上的【执行】按钮,如图所示。SELECT 学号 as 'StudentID',姓名 as 'StudentName',性别 as 'Sex' , 出生日期 as 'Birthday'FROM 学生查询表中的指定列定制列名使用计算列5.1.4 知识总结使用SELECT语句查询指定列的语法规则为:SELECT 字段列表FROM 表名参数说明如下:字段列表:指定由查询返回的列,中间用逗号分隔表名:用于指定输出数据的来源表名。注意:如果要查询表中所有列,可以写出来表中的全部列名,也可以用星号(*)号代替字段列表参数。字段列表也可以是计算得到的列。字段列表的显示结果集可以重新定制列名。SELECT 专业代码,专业名称,描述,状态FROM 专业SELECT *FROM 专业【例5-1】查询“专业”表中的所有数据。(1)打开SQL Server Management Studio,在工具栏上单击“新建查询”按钮,打开SQL编辑器,编写如下代码:(2)单击工具栏上的【执行】按钮,运行结果如图所示。说明:两条SELECT语句执行的结果相同,第一条语句在SELECT命令后面指出来查询的所有列,第二条语句用星号(*)表示查询的所有列。SELECT 专业代码,专业名称FROM 专业【例5-2】显示专业表的专业代码,专业名称信息。(1)打开SQL Server Management Studio,在工具栏上单击“新建查询”按钮,打开SQL编辑器,编写如下代码:(2)单击工具栏上的【执行】按钮,运行结果如图所示。对查询结果的列重新命名,有三种方式:定制列名SELECT 列名1 AS 新列名1,列名2 AS 新列名2,…FROM 表名SELECT 列名1 新列名1,列名2 新列名2,…FROM 表名SELECT 新列名1=列名1,新列名2=列名2,…FROM 表名参数说明如下:列名1,列名2:表中的原始列名新列名1,新列名2:查询结果显示的新字段名。SELECT 专业代码 AS 'ProfessionalCode', 专业名称 AS 'ProfessionalName'FROM 专业SELECT 专业代码 'ProfessionalCode', 专业名称 'ProfessionalName'FROM 专业SELECT 'ProfessionalCode'=专业代码 , 'ProfessionalName'=专业名称FROM 专业【例5-3】显示“专业”表的专业代码、专业名称信息,查询结果分别使用ProfessionalCode和ProfessionalName显示。(1)打开SQL Server Management Studio,在工具栏上单击“新建查询”按钮,打开SQL编辑器,编写如下代码:(2)单击工具栏上的【执行】按钮,运行结果如图所示。说明:三条SELECT语句执行的结果是一样的,第二条SELECT与第一条相比,语句省略了AS关键字。在查询数据的时候,有时候需要对查询结果进行计算,SELECT语句在查询的时候对数据进行计算。在对查询结果进行计算的时候,可以使用算符运算符(+、-、*、/、%等),也可以使用逻辑运算符(AND、OR、NOT)和字符串连接符(+)。使用计算列SELECT 学号, 课程编号, 成绩, 成绩*0.9FROM 选课SELECT 学号, 课程编号, 成绩, 成绩*0.9 as 新成绩FROM 选课【例5-4】显示选课表的学号,课程编号,成绩,成绩的90% 。(1)打开SQL Server Management Studio,在工具栏上单击“新建查询”按钮,打开SQL编辑器,编写如下代码:(2)单击工具栏上的【执行】按钮,运行结果如图所示。说明:第一条语句的查询结果的最后一列是计算得到的列,显示“无列名”,需要用第二条语句的定制列名的方法来为计算得到的结果命名。SELECT 班级名称+'的班主任是'+班主任FROM 班级【例5-5】把班级表的字段“班级名称”、字符串常量“的班主任是”和字段“班主任”连成一句话。(1)打开SQL Server Management Studio,在工具栏上单击“新建查询”按钮,打开SQL编辑器,编写如下代码:(2)单击工具栏上的【执行】按钮,运行结果如图所示。5.1.5 应用实践查询销售数据库下的账号表,显示用户ID、密码、用户名、邮件、状态字段,结果集格式为“ID,Password,UserName,Email,Status”。1.打开SQL Server Management Studio,单击“对象资源管理器”中的“数据库”文件夹下的数据库“销售”;2.单击工具栏上的“新建查询”命令,打开“查询编辑器”;3.在“查询编辑器”上输入以下代码:SELECT 用户ID 'ID', 密码 'Password',用户名 'UserName',邮件 'Email',状态 'Status'FROM 账号4.单击工具栏上的【执行】按钮,如图所示。5.2.1 情景描述5.2.2问题分析5.2.3 解决方案5.2.4 知识总结5.2.5 应用实践任务5.2 使用子查询根据用户需求,开发团队想要显示学生信息管理系统中“软件技术”专业和“硬件技术”专业的班级组成,需要通过查询命令完成。由于数据库内并没有一张表既包含专业名称,同时又包含班级信息,所以应该考虑当前的操作需要涉及到两个及两个以上的表。首先应该查询出“软件技术”专业和“硬件技术”专业的专业代码,然后再根据专业代码查找这两个专业代码对应的班级信息。5.2.1 情景描述为了解决上述问题,需要完成以下任务:1.根据已知的专业名称,查找“专业”表中对应的专业代码;2.根据找到的专业代码,在“班级”表中查找这些专业代码对应的班级信息。5.2.2问题分析5.2.3 解决方案1.打开SQL Server Management Studio,单击“对象资源管理器”中的“数据库”文件夹下的数据库“学生管理”;2.单击工具栏上的“新建查询”命令,打开“查询编辑器”;3.在“查询编辑器”上输入以下代码:SELECT * FROM 专业WHERE 专业名称 IN('软件技术','硬件技术')SELECT * FROM 班级WHERE 专业代码 =1 OR 专业代码=3根据运行结果可知专业代码为1,3。在“查询编辑器”上再输入以下代码:4.单击工具栏上的【执行】按钮,如图所示。查询前几条记录去掉重复的记录使用WHERE语句限定行使用比较操作符组成的表达式使用逻辑操作符组成的表达式使用范围操作符组成的表达式使用集合运算符组成的表达式查询空值模糊查询5.2.4 知识总结有的时候一个表中的数据量很大,只需要显示这些记录中的前几条记录,可以使用TOP关键字限制显示的行数。其语法规则为:查询前几条记录SELECT TOP n PERCENT 字段列表FROM 表名参数说明如下:TOP n PERCENT:返回结果集的前百分之n条记录。TOP n: 若PERCENT省略,则返回前n条记录。注意:如果TOP后的数值n大于结果集的总行数,则显示所有行。select TOP 15 PERCENT * FROM 学生select TOP 3 * FROM 学生select TOP 15 * FROM 学生【例5-6】查询学生表的前百分之15,前3条,前15条记录。(1)打开SQL Server Management Studio,在工具栏上单击“新建查询”按钮,打开SQL编辑器,编写如下代码:(2)单击工具栏上的【执行】按钮,运行结果如图所示。说明:学生表中的记录一共有10条,前百分之15显示的结果为2行,运算结果向上取整;前3条则显示的确定值3行;前15条比表中的记录还多,则只显示表中的10行记录。查询结果如果有很多重复的记录,就没有必要全部显示,重复记录只需要保留一条即可。使用DISTINCT关键字去除重复记录的语法规则为:SELECT DISTINCT 字段列表FROM 表名去掉重复的记录SELECT 课程性质 FROM 课程SELECT DISTINCT 课程性质 FROM 课程【例5-7】查询课程表的课程性质。(1)打开SQL Server Management Studio,在工具栏上单击“新建查询”按钮,打开SQL编辑器,编写如下代码:(2)单击工具栏上的【执行】按钮,运行结果如图所示。说明:第一条查询命令显示的结果第1行和第2行重复,有重复的行,5条结果集;第二条查询命令使用DISTINCT去除了重复的行,有4条结果集。数据库中经常需要查询满足各种条件的记录,可以使用WHERE子句来实现,语法规则为:使用WHERE语句限定行SELECT 字段列表FROM 表名WHERE 查询条件在销售数据库中查询:电话号码以63开头、并且是启用状态的用户的信息。1.打开SQL Server Management Studio,单击“对象资源管理器”中的“数据库”文件夹下的数据库“销售”;2.单击工具栏上的“新建查询”命令,打开“查询编辑器”;3.在“查询编辑器”上输入以下代码:SELECT *FROM 账号WHERE 电话 LIKE '63%' AND 状态='启用'4.单击工具栏上的【执行】按钮,如图所示。5.2.5 应用实践5.3.1 情景描述5.3.2问题分析5.3.3 解决方案5.3.4 知识总结5.3.5 应用实践任务5.3 使用函数查询数据在学生管理数据库中,学生表包含出生日期和身份证号两个字段。在现实生活中,出生日期和身份证号码里的某一部分是完全匹配的。为了检验学生信息里的出生日期和身份证号储存的信息是否一致,开发团队需要把“身份证号”字段的值从第7位开始、长度为8的字符串(即标识此人出生日期的部分)截取出来,与数据库内保存的“出生日期”字段值进行比较。5.3.1 情景描述为了解决上述问题,需要完成以下任务:1.使用求子串的函数从身份证号中截取子串,子串从身份证号的第7位开始、连续8个字符。2.使用类型转换函数把截取的子串转换为日期类型。3.比较查看转换后的子串与“出生日期”字段值是否一致。5.3.2问题分析1.打开SQL Server Management Studio,单击“对象资源管理器”中的“数据库”文件夹下的数据库“学生管理”;2.单击工具栏上的“新建查询”命令,打开“查询编辑器”;3.在“查询编辑器”上输入以下代码:5.3.3 解决方案SELECT 学号,姓名,身份证号, 出生日期,CONVERT(datetime,SUBSTRING(身份证号,7,8))FROM 学生4.单击工具栏上的【执行】按钮,如图所示。字符串函数数学函数日期和时间函数聚合函数类型转换函数次序函数判定函数5.3.4 知识总结在销售数据库的“商品”表中查询已经过期的商品信息。1.打开SQL Server Management Studio,单击“对象资源管理器”中的“数据库”文件夹下的数据库“销售”;2.单击工具栏上的“新建查询”命令,打开“查询编辑器”;3.在“查询编辑器”上输入以下代码:5.3.5 应用实践4.单击工具栏上的【执行】按钮,如图所示。SELECT *FROM 商品WHERE DATEDIFF(DD,生产日期,GETDATE())>=保质期5.4.1 情景描述5.4.2问题分析5.4.3 解决方案5.4.4 知识总结5.4.5 应用实践任务5.4 对查询结果进行排序在学生信息管理系统里,需要每学期为每位老师安排教学任务。针对学校的具体情况,需要在排课时间段显示还没有排课的老师的信息,保证每个老师都有教学任务。5.4.1 情景描述为了解决上述问题,需要完成以下任务:1.查询显示所有老师的排课信息,不管有没有教学任务,都要显示老师的信息,如果有排课任务,就在授课表中有对应的课程编号信息;如果没有排课任务,就在对应的课程编号字段显示为NULL。2.再用条件“课程编号 IS NULL”过滤没有教学任务的教师信息。3.执行查询语句。5.4.2问题分析1.打开SQL Server Management Studio,单击“对象资源管理器”中的“数据库”文件夹下的数据库“学生管理”;2.单击工具栏上的“新建查询”命令,打开“查询编辑器”;3.在“查询编辑器”上输入以下代码:5.4.3 解决方案内连接外连接交叉连接5.4.4 知识总结在销售数据库中查询还没有供过货的供应商的名单。1.打开SQL Server Management Studio,单击“对象资源管理器”中的“数据库”文件夹下的数据库“销售”;2.单击工具栏上的“新建查询”命令,打开“查询编辑器”;3.在“查询编辑器”上输入以下代码:5.4.5 应用实践SELECT gys.供应商ID,gys.名称,gys.地址,gys.电话,jh.商品IDFROM 进货 AS jh RIGHT JOIN 供应商 AS gysON gys.供应商ID =jh.供应商IDWHERE jh.商品ID IS NULL4.单击工具栏上的【执行】按钮,如图所示,在进货表中没有对应的供应商的商品信息,对应的商品ID为NULL,则表示从未向此供应商进货。5.5.1 情景描述5.5.2问题分析5.5.3 解决方案5.5.4 知识总结5.5.5 应用实践任务5.5 分类汇总在学生信息管理系统里,需要每学期为每位老师安排教学任务。针对学校的具体情况,需要在排课时间段显示还没有排课的老师的信息,保证每个老师都有教学任务。5.5.1 情景描述为了解决上述问题,需要完成以下任务:1.查询显示所有老师的排课信息,不管有没有教学任务,都要显示老师的信息,如果有排课任务,就在授课表中有对应的课程编号信息;如果没有排课任务,就在对应的课程编号字段显示为NULL。2.再用条件“课程编号 IS NULL”过滤没有教学任务的教师信息。3.执行查询语句。5.5.2问题分析1.打开SQL Server Management Studio,单击“对象资源管理器”中的“数据库”文件夹下的数据库“学生管理”;2.单击工具栏上的“新建查询”命令,打开“查询编辑器”;3.在“查询编辑器”上输入以下代码:5.5.3 解决方案内连接外连接交叉连接5.5.4 知识总结在销售数据库中查询还没有供过货的供应商的名单。1.打开SQL Server Management Studio,单击“对象资源管理器”中的“数据库”文件夹下的数据库“销售”;2.单击工具栏上的“新建查询”命令,打开“查询编辑器”;3.在“查询编辑器”上输入以下代码:5.5.5 应用实践SELECT gys.供应商ID,gys.名称,gys.地址,gys.电话,jh.商品IDFROM 进货 AS jh RIGHT JOIN 供应商 AS gysON gys.供应商ID =jh.供应商IDWHERE jh.商品ID IS NULL4.单击工具栏上的【执行】按钮,如图所示,在进货表中没有对应的供应商的商品信息,对应的商品ID为NULL,则表示从未向此供应商进货。1.SELECT…FROM语句查询指定列,为查询结果定制列名。2.WHERE子句过滤满足条件的行。3.TOP、DISTINCT关键字。4.常用函数。5.BETWEEN…AND或NOT BETWEEN…AND运算符。6.IN或NOT IN运算符。7.NULL值表示不确定的信息,查询空值IS NULL,查询不是空值的记录IS NOT NULL。8.用LIKE关键字模糊查询。9.ORDER BY对结果集排序。10.GROUP BY进行分组。本章小结 展开更多...... 收起↑ 资源预览