第05章销售管理数据库的数据查询_第1页
第05章销售管理数据库的数据查询_第2页
第05章销售管理数据库的数据查询_第3页
第05章销售管理数据库的数据查询_第4页
第05章销售管理数据库的数据查询_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

第五章数据库的数据查询技能目标在销售管理系统数据库中能根据按照指定的要求灵活、快速地查询相关信息。SQLServer2005数据库应用技术知识目标掌握SELECT语句语法格式;掌握最基本的查询技术;掌握条件查询技术;掌握多重条件查询技术;掌握连接查询技术;掌握嵌套查询。SQLServer2005数据库应用技术SELECT语句的语法格式SELECT<输出列表>[INTO<新表名>]FROM数据源或视图列表[WHERE<查询条件表达式>][GROUPBY<分组表达式>[HAVING<过滤条件>]][ORDERBY<排序表达式>[ASC|DESC]][COMPUTE行聚合函数名(表达式)[,...n][BY表达式[,...n]]]

SQLServer2005数据库应用技术SELECT语句各子句的功能(1)SELECT子句:指定查询返回的列。(2)INTO子句:将检索结果存储到新表或视图中。(3)FROM子句:用于指定查询列所在的表和视图。(4)WHERE子句:指定用于限制返回的行的搜索条件。(4)GROUPBY子句:指定用来放置输出行的组。并且如果SELECT子句<SELECTLIST>中包含聚合函数,则计算每组的汇总值。(5)HAVING子句:指定组或聚合的搜索条件。HAVING通常与GROUPBY子句一起使用。(6)ORDERBY子句:指定结果集的排序。(7)COMPUTE字句:用于对结果集进行分组并对每一组数据进行汇总计算。SQLServer2005数据库应用技术SELECT语句的执行方式SQLServer2005提供了查询编辑器,用于编辑和运行查询代码。【例】查询所有员工的信息。操作的具体步骤如下。(1)启动SQLServerManagementStudio。(2)在【对象资源管理器】中,单击工具栏的【新建查询】按钮,打开查询编辑器。(3)在查询编辑器中,输入如下代码。SELECT*FROMemployee(4)单击【工具栏】的按钮,进行语法分析。在【结果】窗体中出现“命令已成功完成”的消息,表示当前的查询语句没有语法错误。(5)单击按钮,在当前数据库中执行查询语句。SQLServer2005数据库应用技术简单查询-SELECT子句1、查询所有的列(使用*)【例】从商品表中查询所有商品的信息。2、查询指定的列【例】从客户表中检索所有客户的公司名称、联系人姓名和地址。3、使用TOP关键字限制返回行数【例】检索客户表中前5位客户的公司名称、联系人姓名和地址。4、使用DISTINCT关键字过滤重复行【例】从员工表中查询所有员工的部门信息,并消去重复记录。SQLServer2005数据库应用技术简单查询-SELECT子句(续)5、更改列标题方法:采用“列标题=列名”的格式采用“列名列标题”的格式采用“列名as列标题”的格式【例】查询每个员工的姓名和性别,并在每人的姓名标题上显示“员工姓名”。【练习】使用其他两种方法SQLServer2005数据库应用技术简单查询-SELECT子句(续)6、使用计算列【例】查询所有员工的工资在提高10%后信息,将提高后的工资列标题为“提高后工资”。SQLServer2005数据库应用技术简单查询-INTO子句INTO子句用于将查询的结果插入新表中,其语法格式如下。INTO新表名【例】使用INTO子句创建一个包含员工姓名和工资,并命名为new_employee的新表。USECompanySalesGOSELECTEmployeeName,SalaryINTOnew_employeeFROMemployeeGOSQLServer2005数据库应用技术简单查询-WHERE子句使用WHERE子句的目的是为了从表格的数据集中过滤出符合条件的行。其语法格式如下:SELECT<输出列表>[INTO<新表名>]FROM<数据源列表>[WHERE<查询条件表达式>SQLServer2005数据库应用技术简单查询-WHERE子句(续)1、使用算术表达式比较运算符包含多个,例如>、<、>=、>、!=、!>等,其中<>、!=均表示不等于,!>表示不大于。【例】查询员工“蔡慧敏”的工资。【例】在CompanySales数据库的员工表(employee)中,查询工资大于3000元的员工信息2、使用逻辑表达式

表达式AND或OR表达式或:NOT表达式【例】在CompanySales数据库的员工表(employee)中,查询工资在3400元以下的女性员工姓名和工资信息。SQLServer2005数据库应用技术3、使用搜索范围运算符使用关键字Between…and,即查询介于两个值之间的记录信息。语法格式如下:列名Between【NotBetween】起始值And终止值4、使用IN关键字IN关键字给出表达式的取值范围。如果字段取值等于列表中某个取值,则运算结果为TRUE,否则运算结果为FALSE,并显示相应的记录。语法:列名[NOT]IN(值1,值2,…值n)【例】在CompanySales数据库的销售订单表(Sell_order)中,查询员工编号为1、5和7的员工接受订单信息。SQLServer2005数据库应用技术简单查询-WHERE子句(续)5、使用模糊匹配LIKE子句格式如下:列名[NOT]LIKE<模式字符串>

通配符:%_(下划线)【例】找出所有姓“章”的员工信息。【例】找出所有不姓“李”的员工信息。6、空或非空性空和非空的判断准则是ISNULL和ISNOTNULL。【例】在销售管理数据库中,查找目前有哪些主管位置是为不空。SQLServer2005数据库应用技术简单查询-ORDERBY子句通常查询结果集中的记录的显示顺序是它们在表中的顺序,但有时候用户希望按照表中某个字段的升序或者降序显示。语法格式:ORDERBY列名1[ASC|DESC][,列名2[ASC|DESC][,…n]]【例】按工资降序显示员工的姓名和工资,工资相同时按姓名升序排序。USECompanySalesGOSELECT*FROMemployeeSQLServer2005数据库应用技术使用聚合函数AVG函数SUM函数MAX函数MIN函数COUNT函数SQLServer2005数据库应用技术使用聚合函数(续)1.求和函数SUM与求平均值函数AVG 它们只能用于数值型字段,而且忽略列值为NULL的记录。2.最大值函数MAX与最小值函数MIN 忽略列值为NULL的记录,列表达式中的列可以是任何可排序的类型。3.计数函数COUNT 用于统计查询结果集中记录的个数,“*”用于统计所有记录的个数,ALL用于统计指定列的列值非空的记录个数,DISTINCT用于统计指定列的列值非空且不重复的记录个数。默认值为ALL。SQLServer2005数据库应用技术简单查询-GROUPBY子句如果需要按某一列数据的值进行分类,在分类的基础上再进行查询,就要使用GROUPBY子句,它的语法格式如下。GROUPBY<组合表达式>【例】查询男女员工的平均工资。【例】在销售表Sell_Order表中,统计目前各种商品的订单总数。SQLServer2005数据库应用技术简单查询-HAVING子句HAVING子句指定组或聚合的搜索条件。HAVING只能与SELECT语句一起使用。HAVING通常在GROUPBY子句中使用。HAVING条件表达式选项,则表示对生成的组进行筛选后,再对每组进行汇总计算。如果不使用GROUPBY子句,则HAVING的行为与WHERE子句一样,它的语法格式如下。HAVING搜索条件【例】在销售表Sell_Order表中,查询目前订单总数超过1000的商品订单信息。SQLServer2005数据库应用技术简单查询-COMPUTE子句COMPUTE子句可以用于SELECT语句既查看明细行,又查看汇总行。可以计算分组的汇总值,也可以计算整个结果集的汇总值。语法格式如下。COMPUTE{聚合函数名(列名)}[,…N][BY表达式[,…N]【例】查询员工表employee中部门编号为1的各员工工资信息,并计算平均工资。【例】对employee表中部门编号为1或2的员工工资,按照其部门编号生成分组汇总行和明细行。SQLServer2005数据库应用技术连接查询连接的类型分为内连接、外连接和交叉连接。连接的格式有两种如下。格式一:SELECT<输出列表>FROM<表1><连接类型><表2>[ON(<连接条件>)]格式二:SELECT<输出列表>FROM<表1>,<表2>[WHERE<表1>.<列名><连接操作符><表2>.<列名>]SQLServer2005数据库应用技术交叉连接交叉连接又称笛卡儿积,返回两个表的乘积。例:表A有10行数据,表B有20行数据,那么表A和表B交叉连接的结果记录集有400行(10×20)数据。交叉连接使用CROSSJOIN关键字来创建。说明:交叉连接只是用于测试一个数据库的执行效率,在实际应用中是无意义的。交叉连接的使用是比较少的,交叉连接不需要连接条件。SQLServer2005数据库应用技术交叉连接(续)【例】查询员工表与部门表的所有组合。USECompanySalesGOSELECTemployee.*,department.*FROMemployeeCROSSJOINdepartmentGOSQLServer2005数据库应用技术内连接内连接把两个表中的数据,通过相同的列,连接生成第3个表,仅包含那些满足连接条件的数据行。内连接分为等值连接、非等值连接和自然连接。【例】查询已订购了商品客户的公司名称,联系人姓名和所订商品编号和订购数量。【例】查询“国皓科技有限公司”的订单信息说明:在多表查询中,Select子句或Where子句中的列名前都加上了表名作为前缀,这样可避免来自不同表中相同属性名发生混淆。SQLServer2005数据库应用技术外连接分类:左外连接、右外连接和全外连接。左向外连接:只包括左表的所有行,不包括右表的不匹配行的外连接;右向外连接:只包括右表的所有行,不包括左表的不匹配行的外连接。完整外部连接:既包括左表不匹配的行,也包括右表的不匹配的行的连接SQLServer2005数据库应用技术左外连接语法如下:SELECT<选择列表>FROM左表名LEFT[OUTER]JOIN右表名ON连接条件【例】查询是否所有的员工均接受了销售订单,包括员工的姓名和订单信息。SELECTemployee.employeename,sell_order.*FROMemployeeLEFTJOINsell_orderonemployee.employeeID=sell_order.employeeIDSQLServer2005数据库应用技术右外连接右外连接的语法如下。SELECT<选择列表>FROM左表名RIGHT[OUTER]JOIN右表名ON连接条件包括右表(出现在JOIN子句的最右边)中的所有行。不包括左表中的不匹配行。【例】查询是否所有的供应商提供的商品情况。USECompanySalesGOSELECTPurchase_order.*,viderNameFROMPurchase_orderRIGHTJOINprovideronPurchase_viderID=viderIDGOSQLServer2005数据库应用技术全外连接全外连接的语法如下。SELECT<选择列表>FROM左表名FULL[OUTER]JOIN右表名ON连接条件包括所有连接表中的所有记录,不论它们是否匹配。【例】使用全外连接查询客户和商品的订购信息,包括客户名称、联系人姓名、订购的商品名称、订购的数量和订购日期。SQLServer2005数据库应用技术嵌套查询在SQL中,将一条SELECT语句作为另一条SELECT语句的一部分称为嵌套查询。外层的SELECT语句被称为外部查询或父查询,内层的SELECT语句成为内部查询或子查询。嵌套查询如下。SELECT<语句>/*外层查询或父查询*/FROM<语句>WHERE<表达式>IN

(SELECT<语句>/*内层查询或子查询*/FROM<语句>WHERE<条件>)SQLServer2005数据库应用技术单值嵌套单值嵌套就是通过子查询返回一个单一的数据。当子查询返回的是单值,可以使用>,<,=,<=,>=,!=或<>等比较运算符参加相关表达式的运算。SQLServer2005数据库应用技术单值嵌套(续)【例】查找员工“姚安娜”所在的部门名称。步骤1:查询员工“姚安娜”所在的部门编号,查询语句如下。SELECTdepartmentIDFROMemployeeWHEREemployeeName='姚安娜'得到的结果为3步骤2:查询部门编号为3的部门名称。SELECTdepartmentNameFROMdepartmentWHEREdepartmentID=3得到结果为“人事部”。组合:SELECTdepartmentName部门名称FROMdepartmentWHEREdepartmentID=(SELECTdepartmentIDFROMemployeeWHEREemployeeName='姚安娜')SQLServer2005数据库应用技术单值嵌套(续)【例】查找年龄最小的员工姓名、性别和工资。USECompanySalesGOSELECTemployeeName姓名,sex性别,BirthDate出生年月,salary工资FROMemployeeWHEREBirthDate=(SELECTMAX(BirthDate)FROMemployee)GOSQLServer2005数据库应用技术多值嵌套子查询的返回结果是一列值的嵌套查询称为多值嵌套查询。多值嵌套查询经常使用IN操作符。IN操作符使用的格式如下。<表达式>[NOT]IN(子查询

温馨提示

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

评论

0/150

提交评论