资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第五章 数据库的数据查询,SQL Server 2005数据库应用技术,技能目标,在销售管理系统数据库中能根据按照指定的要求灵活、快速地查询相关信息。,SQL Server 2005数据库应用技术,知识目标,掌握SELECT语句语法格式; 掌握最基本的查询技术; 掌握条件查询技术;掌握多重条件查询技术; 掌握连接查询技术;掌握嵌套查询。,SQL Server 2005数据库应用技术,SELECT语句的语法格式,SELECT INTO FROM 数据源或视图列表 WHERE GROUP BY HAVING ORDER BY ASC | DESC COMPUTE 行聚合函数名(表达式),.n BY 表达式 ,.n ,SQL Server 2005数据库应用技术,SELECT语句各子句的功能,(1)SELECT子句:指定查询返回的列。 (2)INTO子句:将检索结果存储到新表或视图中。 (3)FROM子句:用于指定查询列所在的表和视图。 (4)WHERE子句:指定用于限制返回的行的搜索条件。 (4)GROUP BY子句:指定用来放置输出行的组。并且如果 SELECT 子句 中包含聚合函数,则计算每组的汇总值。 (5)HAVING子句:指定组或聚合的搜索条件。HAVING 通常与 GROUP BY 子句一起使用。 (6)ORDER BY子句:指定结果集的排序。 (7)COMPUTE字句:用于对结果集进行分组并对每一组数据进行汇总计算。,SQL Server 2005数据库应用技术,SELECT 语句的执行方式,SQL Server2005 提供了查询编辑器,用于编辑和运行查询代码。 【例】查询所有员工的信息。 操作的具体步骤如下。 (1)启动SQL Server Management Studio。 (2)在【对象资源管理器】中,单击工具栏的【新建查询】按钮,打开查询编辑器。 (3)在查询编辑器中,输入如下代码。 SELECT * FROM employee (4)单击【工具栏】的按钮,进行语法分析。在【结果】窗体中出现“命令已成功完成”的消息,表示当前的查询语句没有语法错误。 (5)单击按钮,在当前数据库中执行查询语句。,SQL Server 2005数据库应用技术,简单查询-SELECT 子句,1、查询所有的列(使用*) 【例】从商品表中查询所有商品的信息 。 2、查询指定的列 【例】从客户表中检索所有客户的公司名称、联系人姓名和地址。 3、使用TOP 关键字限制返回行数 【例】检索客户表中前5位客户的公司名称、联系人姓名和地址。 4、使用DISTINCT 关键字过滤重复行 【例】从员工表中查询所有员工的部门信息,并消去重复记录。,SQL Server 2005数据库应用技术,简单查询-SELECT 子句(续),5、更改列标题 方法: 采用“列标题=列名”的格式 采用“列名 列标题”的格式 采用“列名 as 列标题”的格式 【例】查询每个员工的姓名和性别,并在每人的姓名标题上显示“员工姓名”。 【练习】使用其他两种方法,SQL Server 2005数据库应用技术,简单查询-SELECT 子句(续),6、使用计算列 【例】查询所有员工的工资在提高10%后信息,将提高后的工资列标题为“提高后工资”。,SQL Server 2005数据库应用技术,简单查询- INTO 子句,INTO 子句用于将查询的结果插入新表中,其语法格式如下。 INTO 新表名 【例】使用INTO子句创建一个包含员工姓名和工资,并命名为new_employee的新表。 USE CompanySales GO SELECT EmployeeName,Salary INTO new_employee FROM employee GO,SQL Server 2005数据库应用技术,简单查询- WHERE子句,使用WHERE子句的目的是为了从表格的数据集中过滤出符合条件的行。 其语法格式如下: SELECT INTO FROM WHERE ,SQL Server 2005数据库应用技术,简单查询- WHERE子句(续),1、使用算术表达式 比较运算符包含多个,例如、=、!=、!等,其中、!=均表示不等于,!表示不大于。 【例】查询员工“蔡慧敏”的工资。 【例】 在CompanySales数据库的员工表(employee)中,查询工资大于3000元的员工信息 2、使用逻辑表达式 表达式 AND或OR 表达式 或:NOT 表达式 【例】在CompanySales数据库的员工表(employee)中,查询工资在3400元以下的女性员工姓名和工资信息。,SQL Server 2005数据库应用技术,3、使用搜索范围运算符 使用关键字Betweenand,即查询介于两个值之间的记录信息。语法格式如下: 列名 Between【Not Between】 起始值 And 终止值 4、使用IN关键字 IN关键字给出表达式的取值范围。如果字段取值等于列表中某个取值,则运算结果为TRUE,否则运算结果为FALSE,并显示相应的记录。语法: 列名 NOT IN (值1 , 值2 ,值n) 【例】在CompanySales数据库的销售订单表(Sell_order)中,查询员工编号为1、5和7的员工接受订单信息。,SQL Server 2005数据库应用技术,简单查询- WHERE子句(续),5、使用模糊匹配 LIKE子句格式如下: 列名 NOT LIKE 通配符: % _(下划线) 【例】找出所有姓“章”的员工信息。 【例】找出所有不姓“李”的员工信息。 6、空或非空性 空和非空的判断准则是IS NULL和IS NOT NULL。 【例】在销售管理数据库中,查找目前有哪些主管位置是为不空。,SQL Server 2005数据库应用技术,简单查询- ORDER BY子句,通常查询结果集中的记录的显示顺序是它们在表中的顺序,但有时候用户希望按照表中某个字段的升序或者降序显示。 语法格式: ORDER BY 列名1 ASC | DESC ,列名2 ASC | DESC,n 【例】按工资降序显示员工的姓名和工资,工资相同时按姓名升序排序 。 USE CompanySales GO SELECT * FROM employee,SQL Server 2005数据库应用技术,使用聚合函数,AVG函数 SUM函数 MAX函数 MIN函数 COUNT函数,SQL Server 2005数据库应用技术,使用聚合函数(续),1求和函数SUM与求平均值函数AVG 它们只能用于数值型字段,而且忽略列值为NULL的记录。 2最大值函数MAX与最小值函数MIN 忽略列值为NULL的记录,列表达式中的列可以是任何可排序的类型。 3计数函数COUNT 用于统计查询结果集中记录的个数,“*”用于统计所有记录的个数,ALL用于统计指定列的列值非空的记录个数,DISTINCT用于统计指定列的列值非空且不重复的记录个数。默认值为ALL。,SQL Server 2005数据库应用技术,简单查询- GROUP BY子句,如果需要按某一列数据的值进行分类,在分类的基础上再进行查询,就要使用GROUP BY子句,它的语法格式如下。 GROUP BY 【例】查询男女员工的平均工资。 【例】在销售表Sell_Order表中,统计目前各种商品的订单总数。,SQL Server 2005数据库应用技术,简单查询- HAVING子句,HAVING子句指定组或聚合的搜索条件。HAVING 只能与 SELECT 语句一起使用。HAVING通常在GROUP BY 子句中使用。 HAVING 条件表达式选项,则表示对生成的组进行筛选后,再对每组进行汇总计算。如果不使用GROUP BY 子句,则 HAVING的行为与WHERE 子句一样,它的语法格式如下。 HAVING 搜索条件 【例】在销售表Sell_Order表中,查询目前订单总数超过1000的商品订单信息。,SQL Server 2005数据库应用技术,简单查询- COMPUTE 子句,COMPUTE子句可以用于SELECT 语句既查看明细行,又查看汇总行。可以计算分组的汇总值,也可以计算整个结果集的汇总值。语法格式如下。 COMPUTE 聚合函数名 (列名) , N BY 表达式, N 【例 】查询员工表employee中部门编号为1的各员工工资信息,并计算平均工资。 【例】 对employee表中部门编号为1或2的员工工资,按照其部门编号生成分组汇总行和明细行,SQL Server 2005数据库应用技术,连接查询,连接的类型分为内连接、外连接和交叉连接。连接的格式有两种如下。 格式一: SELECT FROM ON ( ) 格式二: SELECT FROM , WHERE . . ,SQL Server 2005数据库应用技术,交叉连接,交叉连接又称笛卡儿积,返回两个表的乘积。 例: 表A有10行数据,表B有20行数据,那么表A和表B交叉连接的结果记录集有400行(1020)数据。 交叉连接使用CROSS JOIN关键字来创建。 说明: 交叉连接只是用于测试一个数据库的执行效率,在实际应用中是无意义的 交叉连接的使用是比较少的,交叉连接不需要连接条件。,SQL Server 2005数据库应用技术,交叉连接(续),【例】查询员工表与部门表的所有组合。 USE CompanySales GO SELECT employee.* , department.* FROM employee CROSS JOIN department GO,SQL Server 2005数据库应用技术,内连接,内连接把两个表中的数据,通过相同的列,连接生成第3个表,仅包含那些满足连接条件的数据行。内连接分为等值连接、非等值连接和自然连接。 【例】查询已订购了商品客户的公司名称,联系人姓名和所订商品编号和订购数量。 【例】查询“国皓科技有限公司”的订单信息 说明: 在多表查询中,Select子句或 Where子句中的列名前都加上了表名作为前缀,这样可避免来自不同表中相同属性名发生混淆。,SQL Server 2005数据库应用技术,外连接,分类:左外连接、右外连接和全外连接。 左向外连接:只包括左表的所有行,不包括右表的不匹配行的外连接; 右向外连接:只包括右表的所有行,不包括左表的不匹配行的外连接。 完整外部连接:既包括左表不匹配的行,也包括右表的不匹配的行的连接,SQL Server 2005数据库应用技术,左外连接,语法如下: SELECT FROM 左表名 LEFT OUTER JOIN 右表名 ON 连接条件 【例】查询是否所有的员工均接受了销售订单,包括员工的姓名和订单信息。 SELECT employee.employeename, sell_order.* FROM employee LEFT JOIN sell_order on employee.employeeID = sell_order.employeeID,SQL Server 2005数据库应用技术,右外连接,右外连接的语法如下。 SELECT FROM 左表名 RIGHT OUTER JOIN 右表名 ON 连接条件 包括右表(出现在 JOIN 子句的最右边)中的所有行。不包括左表中的不匹配行。 【例】查询是否所有的供应商提供的商品情况。 USE CompanySales GO SELECT Purchase_order.*,provider.providerName FROM Purchase_order RIGHT JOIN provider on Purchase_order.providerID=provider.provi
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号