资源预览内容
第1页 / 共69页
第2页 / 共69页
第3页 / 共69页
第4页 / 共69页
第5页 / 共69页
第6页 / 共69页
第7页 / 共69页
第8页 / 共69页
第9页 / 共69页
第10页 / 共69页
亲,该文档总共69页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数据库数据查询与统计 l掌握表数据的简单查询 l掌握多表数据的连接查询 l掌握子查询的建立和使用学习目标l任务1: 简单查询基本查询、条件查询、结果排序 l任务2:各种统计函数的使用、使用分组、使用筛选 l任务3:复杂查询 连接查询、子查询 示例数据库说明客户信息表(customer):员工信息表(employee):产品信息表(product):示例数据库说明产品类别表:订单信息表:示例数据库说明驾驶员信息表(jsy):报刊订阅信息表(bk):任务1 简单查询l基本查询 最简单的SELECT语句 条件查询 查询结果排序 返回任务1 简单查询l基本查询 最简单的SELECT语句 条件查询 查询结果排序 1. 常规使用方式 2. * 表示所有的列 3. 使用TOP关键字 4. 使用DISTINCT关键字 5. 操作查询的列名 6. 在结果中显示字符串 7. 列为表达式 8. Into子句任务1 简单查询l基本查询 最简单的SELECT语句 条件查询 查询结果排序 1. 算术表达式 2. 逻辑表达式 3. 范围表达式 4. 使用IN关键字 5. 使用通配符返回任务1 简单查询l基本查询 最简单的SELECT语句 lSELECT语句的常规使用方式SELECT 列名1,列名2,列名nFROM 表名例 在companyinfo数据库的employee表中查询所有员工 的姓名、性别、出生日期。SELECT 姓名,性别,出生日期FROM employee任务1 简单查询l :在companyinfo数据库的BK表(报刊征订数据表) 中查询所有用户的姓名、地址、电话信息。SELECT v_Name,Address,Tel FROM jsy任务1 简单查询l基本查询 最简单的SELECT语句 l用 * 表示表中所有的列 例 在employee表中查询员工的所有信息。SELECT *FROM employee练习:l查询驾驶员数据表中全部列的信息: SELECT * FROM jsy任务1 简单查询l基本查询 最简单的SELECT语句 l使用TOP关键字 SELECT TOP n | TOP n PERCENT 列名1,列名2, FROM 表名 例 从companyinfo数据库的employee表中返回前面10行的 记录。SELECT TOP 10 *FROM employee练习:l查询驾驶员数据表中前10行的信息: SELECT top 10 * FROM jsy任务1 简单查询l基本查询 最简单的SELECT语句 l使用DISTINCT关键字 例 从companyinfo数据库的订单表(p_order)中 ,检索已经被订购的产品。SELECT DISTINCT 产品IDFROM p_order练习:l查询驾驶员有那些邮政编码: SELECT distinct postcode FROM jsy去掉distinct的效果任务1 简单查询l基本查询 最简单的SELECT语句l操作查询的列名 用AS关键字来连接列表达式和指定的列名。任务1 简单查询l基本查询 最简单的SELECT语句 l操作查询的列名:重命名列名 例 在employee表中查询每个人的薪水降低30%后的信息。SELECT 姓名, 薪水 as 原薪水, 薪水-薪水*0.3 目前薪水 FROM employee任务1 简单查询l基本查询 最简单的SELECT语句l在查询结果中显示字符串:将要增加的字符串用单引 号括起来,然后和列名写在一起,中间用逗号分隔开 。 例查询employee表的信息,要求显示结果为:姓名 实发工 资为:薪水。SELECT 姓名, 实发工资为:,薪水 FROM employee任务1 简单查询l基本查询 最简单的SELECT语句l列为表达式 例 显示每种产品的价格降低30%的产品信息。SELECT 产品名,单价,单价*0.7 AS 新价格FROM product任务1 简单查询l基本查询 最简单的SELECT语句 lInto子句:创建新表并将查询的结果插入新表中 例创建一个包含employee表中“姓名”和“薪水”字段 ,且名称为new_ employee的新表。SELECT 姓名,薪水INTO new_employeeFROM employee任务1 简单查询l 基本查询 最简单的SELECT语句 l 练习 (1)查询product表的产品名; (2)查询product表的所有信息; (3)将product表的产品打8折后,以下面形式输出: 产品ID,产品名,原单价,新单价,打折价格:打折价格 (4)分别输出product表的前3行和前10%的记录; (5)创建一个包含product表中“产品名”和“单价”字段 ,且名称为new_ product的新表。返回小节任务1 简单查询(6)查询bk表的用户姓名; (7)查询bk表的所有信息; (8)将bk表的订购份数(n_fs)乘10倍,以下面形式输 出: 姓名,报刊名称,原份数,新份数:新份数 (9)分别输出bk表的前3行和前10%的记录; (10)创建一个包含bk表中“v_grxm”和“v_fs”字段, 且名称为new_ bk的新表。返回小节任务1 简单查询l基本查询 带条件的查询 基本语法:SELECT 列1,列2,列n】FROM 表名WHERE 查询条件l WHERE子句常用的查询条件查 询 条 件运 算 符 号算术表达式=、=、!=、!、!=3000任务1 简单查询l基本查询 带条件的查询 l使用逻辑表达式 例 在雇员表employee中查询特长为“书法”和“钢琴”的所有 雇员信息。SELECT *FROM employeeWHERE 特长=书法 OR 特长=钢琴任务1 简单查询l基本查询 带条件的查询 l使用范围表达式 例 在雇员表employee中查询薪水在3000元至4000元的雇员 的姓名和薪水。SELECT 姓名,薪水FROM employeeWHERE 薪水 BETWEEN 3000 AND 4000 想一想:若用算术表达式实现呢?任务1 简单查询l基本查询 带条件的查询 l使用范围表达式 例 在product表中查询库存量大于200而小于100的产品名、 库存量和单价。SELECT 产品名,库存量,单价 FROM productWHERE 库存量 NOT BETWEEN 200 AND 100想一想:若用算术表达式实现呢?任务1 简单查询l 基本查询 带条件的查询 l使用IN关键字语法: 表达式 NOT IN (表达式1 , 表达式2 ,表达式n)例 查询雇员表employee中所有特长为“计算机”、“钢琴”、 “书法”的雇员的姓名、特长。SELECT 姓名,特长 FROM employeeWHERE 特长 IN (计算机,唱歌,书法)想一想:若用逻辑表达式实现呢?任务1 简单查询l 基本查询 带条件的查询l通配符的使用,其含义见下表: 符 号含 义%(百分号)0N个任意字符_(下划线)单个的任意字符 (封闭方括号)方括号中列出的任意一个字符任意一个没有在方括号中列出的字符 任务1 简单查询l 基本查询 带条件的查询 l通配符的使用 例 列出雇员表employee中所有姓“章”的雇员的信息。SELECT *FROM employeeWHERE 姓名 LIKE 章%任务1 简单查询l 基本查询 带条件的查询 l通配符的使用 例6.18 查询雇员表employee中所有姓名中第二个字为“利” 字的雇员的姓名和出生日期。SELECT *FROM employeeWHERE 姓名 LIKE _立%任务1 简单查询l 基本查询 查询结果排序 (ORDER BY 子句) 语法:ORDER BY 表达式1 ASC | DESC ,表达式2 ASC | DESC,n 例 在订单表p_order中,查询产品ID、数量和订货日期,并 按订货日期降序给产品排序。SELECT 产品ID,数量,订货日期FROM p_orderORDER BY 订货日期 desc返回小节任务1 简单查询l 基本查询 带条件的查询 练习 请写出下列各题的命令 (1)查询1号产品的信息; (2)查询出单价在10元以上20元以下的产品ID和 产品名,并按产品ID降序排列; (3)查询打印机和墨盒的库存量; (4)查询联系方式中以0311打头的客户信息; (5)查询特长是读书、旅游和音乐的雇员信息。返回小节任务2 各种统计l 聚合函数 聚 合 函 数结 果SUM()数字表达式中所有值的和AVG()数字表达式中所有值的平均值COUNT()表达式中值的个数COUNT(*)选定的行数MAX()表达式中的最大值MIN()表达式中的最小值任务2 各种统计例 计算订单表p_order中所有产品已订购总额。SELECT SUM(数量)FROM p_order任务2 各种统计l 分组GROUP BY子句 在SELECT子句中的选项列表中出现的列,包含 在聚合函数中或者包含在GROUP BY子句中。例 在订单表p_order中按产品ID,查询每件产品 的订购总和。SELECT 产品ID,sum(数量)as 总数量FROM p_order GROUP BY 产品ID 任务2 各种统计例 在订单表p_order中按产品ID的种类分类,求 出各种类型产品的平均单价以及各类产品的数量 。SELECT 产品ID ,avg(单价) 平均单价,count(*) FROM product GROUP BY 产品ID 任务2 各种统计l 筛选HAVING子句例 从product表查询平均价格超过10元的产品的 种类,并按平均价格升序排列。SELECT 类别ID ,avg(单价) 平均价格FROM productGROUP By 类别IDHAVING avg(单价) 10ORDER BY avg(单价) 返回任务2 各种统计练习 (1)从pruduct表中查询共有多少类产品; (2)从pruduct表中查询库存量最大和最小的产 品; (3)从pruduct表中查询总库存量超过500的产品 类别,并按类别ID升序排列。返回任务2 各种统计练习 (1)从bk表中查询:订阅份数大于10岁的用户有 那些,并按年龄从大到小排序; (2)从bk表中查询每位订户订阅的份数; (2)从bk表中查询订阅的份数大于10的用户姓名 和份数; (3)从bk表中查询订阅报刊大于2类的姓名和地址 。返回任务3 复杂查询l 连接查询 内连接内连接也叫自然连接,将两个表中的列进行 比较,返回每对匹配的行,废弃两个表中不匹配 的行。如果未指定连接类型,则默认设置为内连 接。返回任务3 复杂查询l 连接查询 内连接 语法结构 语法一:SELECT 列FROM 表1 inner JION 表2ON 表1.列=表2.列 语法二:SELECT 列FROM 表1,表2WHERE 表1.列=表2.列返回任务3 复杂查询l连接查询 内连接 例 查询已订购了产品的公司的公司名称、联系人 姓名和所订产品的产品ID和数量。SELECT 公司名称,联系人姓名,产品ID,数量FROM customer JOIN p_order ON customer.客户ID= p_order.客户ID返回练习l查询牛奶这种产品的类别名。 l查询王孔若的所有订单。 l查询东南实业公司的订单信息。 l查询王孔若的所有客户信息返回任务3 复杂查询l连接查询 外连接 l外连接分为左外连接、右外连接和全外连接。 l左外连接是对连接条件中左边的表不加以限制; l右外连接是对右边的表不加以限制; l全外连接是对两个表都不加以限制,所有两个表中 的行都包括在结果集中。返回任务3 复杂查询l连接
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号