项目四公司管理数据库系统的数据查询课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《项目四公司管理数据库系统的数据查询课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 公司 管理 数据库 系统 数据 查询 课件
- 资源描述:
-
1、项目四 公司管理数据库系统的数据查询 终极目标:能根据需要灵活、快速地查询公司管理系统数据库的数据 一、教学目标:1、会在一个数据表中实现数据的简单查询 2、会同时在多个数据表中实现数据的复合查询 3、会实现分组查询 4、会对查询结果集排序 5、会利用库函数进行数据统计二、工作任务 根据需要灵活快速地查询公司管理数据库系统的数据2模块1 公司管理数据库系统的简单查询一、教学目标:1、准确理解TRANSACT-SQL查询语句的基本结构 2、能根据需要灵活使用查询语句的各子句二、工作任务 公司对所有招收的雇员的材料都存储在公司管理数据库系统COMPANYINFO的employee表中,该表中包含了
2、雇员的姓名、性别、出生年月、雇佣日期、特长和薪水等信息。现编写查询语句,按要求得到相应的结果。3SELECT语句 使用数据库和数据表的主要目的是存储数据,以便在需要时进行检索、统计或组织输出,通过T-SQL的查询可以从表或视图中迅速、方便地检索数据。在众多的T-SQL语句中,SELECT语句是使用频率最高的一个。查询的最基本方式是使用SELECT语句,按照用户给定的条件从SQL SERVER数据库中取出数据,并将数据通过一个或多个结果集返回给用户。4一、SELECT格式 从数据库中检索行,并允许从一个或多个表中选择一个或多个行或列。SELECT ALL|DISTINCT,INTO FROM ,
3、WHERE GROUP BY HAVING ORDER BY ASC|DESC 5vSelect子句:指定由查询返回的列。vInto子句:将检索结果存储到新表或视图中。vFrom子句:用于指定引用的列所在的表和视图。vWhere子句:指定用于限制返回的行的搜索条件。vGroup by子句:指定用来放置输出行的组,并且如果 SELECT 子句 中包含聚合函数,则计算每组的汇总值。vhaving子句:指定组或聚合的搜索条件。HAVING 通常与 GROUP BY 子句一起使用。如果不使用 GROUP BY 子句,HAVING 的行为与 WHERE 子句一样。vOrder by子句:指定结果集的排序
4、。1、子句的功能62、SELECT语句的执行方式1)通过查询设计器辅助生成和执行select语句2)查询分析器执行select语句7二、SELECT 子句功能功能:指定由查询返回的列。指定由查询返回的列。格式:格式:SELECT ALL|DISTINCTTOP N PERCENT SELECT ALL|DISTINCTTOP N PERCENT 列名列名1,1,列名列名2,2,列名列名NN FROM FROM 表名或视图名表名或视图名 参数的含义:参数的含义:vALLALL:指定在结果集中可以显示重复行。:指定在结果集中可以显示重复行。ALL ALL 是默认设置。是默认设置。vDISTINCT
5、DISTINCT:指定在结果集中只能显示唯一行。即表示输出:指定在结果集中只能显示唯一行。即表示输出无重复的所有记录。无重复的所有记录。vTOP NTOP N PERCENTPERCENT:指定只从查询结果集中输出前:指定只从查询结果集中输出前 N N 行。行。如果还指定了如果还指定了 PERCENTPERCENT,则只从结果集中输出前百分之,则只从结果集中输出前百分之 N N 行。行。81、查询所有的列 SELECT 子句中,在选择列表处使用通配符“*”,表示选择指定的表或视图中所有的列。服务器会按用户创建表格时声明列的顺序来显示所有的列.语法:SELECT *FROM 表名 9【例【例1
6、1】从公司管理数据库】从公司管理数据库COMPANYINFOCOMPANYINFO中的客户表中的客户表(customer)(customer)中检索所有的客户的公司名称、联系中检索所有的客户的公司名称、联系人姓名、联系方式、地址和邮编。人姓名、联系方式、地址和邮编。USE COMPANYINFOUSE COMPANYINFOGOGOSELECT SELECT *FROM customerFROM customerGO GO 102、查询特定的列【例【例2 2】从公司管理数据库从公司管理数据库(COMPANYINFO)(COMPANYINFO)中的中的客户表客户表(customer)(custo
7、mer)中检索所有的客户的公司名中检索所有的客户的公司名称、联系人姓名、地址。称、联系人姓名、地址。USE COMPANYINFOUSE COMPANYINFOGOGOSELECT SELECT 公司名称,联系人姓名,地址公司名称,联系人姓名,地址FROM customerFROM customerGO GO 11【例3】从公司管理数据库(COMPANYINFO)中的雇员表(employee)中检索所有的雇员的姓名和特长。USE COMPANYINFOGOSELECT 姓名,特长FROM employeeGO 123 3、指定特定列的列名、指定特定列的列名(1)采用符合ANSI规则的标准方法,
8、在列表达式后面给出列名。【例4】查询每个人的薪水降低30%信息。USE COMPANYINFO GO SELECT 姓名,薪水 原薪水,薪水-薪水*0.3 现薪水 FROM employee GO13(2)用“=”来连接列表达式【例5】查询每个人的薪水降低30%信息。USE COMPANYINFOGOSELECT 姓名,原薪水=薪水,现薪水=薪水-薪水*0.3FROM employeeGO14(3 3)用)用ASAS关键字来连接列表达式关键字来连接列表达式和指定的列名和指定的列名【例【例6 6】查询每个人的薪水降低】查询每个人的薪水降低30%30%信息。信息。USE COMPANYINFOUS
9、E COMPANYINFOGOGOSELECT SELECT 姓名姓名,薪水薪水 as as 原薪水原薪水,薪水薪水-薪水薪水*0.3 as 0.3 as 现薪水现薪水 FROM employeeFROM employeeGOGO154使用TOP关键字 SQL Server 2000提供了TOP关键字,让用户指定返回前面一定数量的数据。语法格式:SELECT TOP n|TOP n PERCENT 列名1,列名2,列名n FROM 表名其中:vTOP n:表示返回最前面的n行,n表示返回的行数。vTOP n PERCENT:表示返回的前面的n%行。16【例7】从northwind数据库的cus
10、tomers表中返回前面10行数据。use northwindgoselect top 10*from customersgo17【例8】从northwind数据库中的customers表中返回前10%的数据。use northwindgoselect top 10 percent*from customersgo18三、WHERE 字句 使用WHERE子句的目的是为了从表格的数据集中过滤出符合条件的行。语法格式:SELECT 列名1 ,列名2,列名n FROM 表名 WHERE 条件19常用查询条件常用查询条件 查询条件运算符号比较=、=、!=、!、!=3000=3000GOGO232使用逻
11、辑表达式 在T-SQL里的逻辑表达式共有3个。分别是:1)NOT:非,对表达式的否定。2)AND:与,连接多个条件,所有的条件都成立时为真。3)OR:或,连接多个条件,只要有一个条件成立就为真。24【例11】查询所有在美国加利福尼亚州的出版社。use pubsgo select pub_id as 出版社代号,pub_name as 出版社名称,city as 城市,state as 州,country as 国家from publisherswhere country=usa and state=cago25查询结果如下:出版社代号 出版社名称 城市 州 国家-1389 Algodata I
12、nfosystems Berkeley CA USA(所影响的行数为 1 行)263使用BETWEEN关键字 使用BETWEEN关键字可以更方便地限制查询数据的范围。语法格式为:表达式 NOT BETWEEN 表达式1 AND 表达式227【例12】查询COMPANYINFO数据库的雇员表(employee)中,薪水在3000元至4000元的雇员的姓名和薪水。SELECT 姓名,薪水FROM employee WHERE 薪水 between 3000 and 400028【例13】查询库存量大于200和库存量小于100的产品名、库存量和单价。SELECT 产品名,库存量,单价 FROM pr
13、oductWHERE 库存量 not between 200 and 10029【例 14】查询价格在15和20美元之间的书的书号、种类和价格。use pubsgo select title_id as 书号,type as 种类,price as 原价from titleswhere price between$15 and$20go3031【例15】查询书价大于20和书价小于15的书的代号、种类和价格。use pubsgo select title_id as 书号,type as 种类,price as 原价 from titleswhere price$20go32查询结果如下:书号种
14、类原价-BU1111business11.9500BU2075business2.9900MC3021mod_cook2.9900PC1035popular_comp22.9500(所影响的行数为 11 行)334使用IN关键字 同BETWEEN关键字一样,IN的引入也是为了更方便地限制检索数据的范围,灵活使用IN关键字,可以用简洁的语句实现结构复杂的查询。语法格式为:表达式 NOT IN (表达式1,表达式2,表达式n)34【例16】查询所有居住在KS、CA、MI或IN州的作家。use pubsgo select au_id,au_lname,au_fnamefrom authorswher
15、e state IN(CA,KS,MI,IN)go 如果不使用IN关键字,这些语句可以使用下面的语句代替:use pubsgo select au_id,au_lname,au_fnamefrom authorswhere state=CA or state=KS or state=MI or state=INgo35【例17】查询所有不在上述4个州居住的作家。use pubsgo select au_id,au_lname,au_fnamefrom authorswhere state not in (CA,KS,MI,IN)go 与下面的语句等价:use pubsgo select au_
16、id,au_lname,au_fnamefrom authorswhere stateCA and stateKS and stateMIand stateINgo 365、通配符的使用 注意:所有通配符都只有在LIKE子句中才有意义,否则通配符会被当作普通字符处理。符号含义%(百分号)表示从0N个任意字符_(下划线)表示单个的任意字符(封闭方括号)表示方括号里列出的任意一个字符任意一个没有在方括号里列出的字符37【例18】列出所有姓“章”的雇员的信息。查询语句如下:SELECT *FROM employeeWHERE 姓名 LIKE 章%38【例19】查询雇员表(employee)中所有姓名
17、中含有“利”字的雇员。SELECT 雇员ID,姓名FROM employeeWHERE 姓名 like%利%GO39【例20】查询雇员表(employee)中所有雇员ID满足前2个字符为“01”,第4个字符为“-”的雇员的姓名和出生年月。SELECT 雇员ID,姓名,出生年月FROM employeeWHERE 雇员id like 01_-%GO40【例21】查询所有au_id满足前2个字符为“72”,第4个字符为“-”的作家的姓名和电话号码。use pubsgo select au_lname,au_fname,phone,au_id from authorswhere au_id like
18、 72_-%go41查询结果如下:au_lnameau_fnamephone au_id-DeFranceMichel 219 547-9982722-51-5454StringerDirk 415 843-2991724-08-9931MacFeather Stearns 415 354-7128724-80-9391(所影响的行数为 3 行)42【例22】查询所有au_id的第一个字符为5-9、第二个字符为1-4的作家的姓名和电话号码。use pubs go select au_lname,au_fname,phone,au_idfrom authorswhere au_id like 5
19、-91-4%go43五、from 子句 在每一条要从表或视图中检索数据的 SELCET 语句中,都需要使用 FROM 子句。用 FROM 子句可以:列出选择列表和 WHERE 子句中所引用的列所在的表和视图。可用 AS 子句为表和视图的名称指定别名。44FROM 子句可以指定:一个或多个表或视图。例:SELECT*FROM Shippers 两个表或视图之间的联接:SELECT Cst.CustomerID,Cst.CompanyName,Cst.ContactName,Ord.ShippedDate,Ord.Freight FROM Northwind.dbo.Orders AS Ord J
20、OIN Northwind.dbo.Customers AS Cst ON(Cst.CustomerID=Ord.CustomerID)45六、ORDER BY子句 SELECT语句获得的数据一般是没有排序的。为了方便阅读和使用,最好对查询的结果进行一次排序。SQL语言中,用于排序的是ORDER BY子句。语法格式为:ORDER BY 表达式1 ASC|DESC ,表达式2 ASC|DESC,n 46【例24】在公司管理数据库(COMPANYINFO)中的订单表(p_order)中,查询产品ID,数量和订货日期,并按的订货日期降序给产品排序。USE COMPANYINFOGO SELECT 产
21、品ID,数量,订货日期FROM p_orderORDER BY 订货日期 descGO47【例25】查询pubs数据库中的表stores中商店的名字,并按商店名的降序给商店排序。use pubsgo select stor_namefrom storesorder by stor_name descgo48【例26】查询titles中各类书的销售利润和书号,并按照各种书的销售利润降序排列。use pubsgo select title_id,profit=price*ytd_salesfrom titlesorder by profit descgo49查询结果如下:title_idprofi
22、t -PC1035201501.0000TC4203180397.2000PC888881900.0000BU103281859.0500BU783281859.0500PS333381399.2800(所影响的行数为 18 行)50【例27】查询titles中各类书的书号、价格、年销售量和销售利润,并用年销售量和书价进行升序排列。use pubsgo select title_id,price,ytd_sales,profit=price*ytd_sales from titlesorder by ytd_sales,price go5152七 GROUP BY子句 在大多数情况下,使用统计
23、函数返回的是所有行数据的统计结果。如果需要按某一列数据的值进行分类,在分类的基础上再进行查询,就要使用GROUP BY子句了。53常用统计函数 为了有效的决心数据集分类汇总、求平均等统计,SQL Server2000提供了一系列统计函数。54【例 28】计算订单表(p_order)中所有产品的已订购总额:USE COMPANYINFOGOSELECT sum(数量)FROM p_order55【例 29】对订单表(p_order)中按产品ID,查询每件产品的订购总和USE COMPAMYINFOSELECT 产品ID,sum(数量)as 总数量FROM p_order GROUP BY 产品I
展开阅读全文