项目四公司管理数据库系统的数据查询.ppt
《项目四公司管理数据库系统的数据查询.ppt》由会员分享,可在线阅读,更多相关《项目四公司管理数据库系统的数据查询.ppt(98页珍藏版)》请在三一办公上搜索。
1、项目四 公司管理数据库系统的数据查询,终极目标:能根据需要灵活、快速地查询公司管理系统数据库的数据,一、教学目标:1、会在一个数据表中实现数据的简单查询 2、会同时在多个数据表中实现数据的复合查询 3、会实现分组查询 4、会对查询结果集排序 5、会利用库函数进行数据统计二、工作任务 根据需要灵活快速地查询公司管理数据库系统的数据,模块1 公司管理数据库系统的简单查询,一、教学目标:1、准确理解TRANSACT-SQL查询语句的基本结构 2、能根据需要灵活使用查询语句的各子句二、工作任务 公司对所有招收的雇员的材料都存储在公司管理数据库系统COMPANYINFO的employee表中,该表中包含
2、了雇员的姓名、性别、出生年月、雇佣日期、特长和薪水等信息。现编写查询语句,按要求得到相应的结果。,SELECT语句,使用数据库和数据表的主要目的是存储数据,以便在需要时进行检索、统计或组织输出,通过T-SQL的查询可以从表或视图中迅速、方便地检索数据。在众多的T-SQL语句中,SELECT语句是使用频率最高的一个。查询的最基本方式是使用SELECT语句,按照用户给定的条件从SQL SERVER数据库中取出数据,并将数据通过一个或多个结果集返回给用户。,一、SELECT格式,从数据库中检索行,并允许从一个或多个表中选择一个或多个行或列。SELECT ALL|DISTINCT,INTO FROM,
3、WHERE GROUP BY HAVING ORDER BY ASC|DESC,Select子句:指定由查询返回的列。Into子句:将检索结果存储到新表或视图中。From子句:用于指定引用的列所在的表和视图。Where子句:指定用于限制返回的行的搜索条件。Group by子句:指定用来放置输出行的组,并且如果 SELECT 子句 中包含聚合函数,则计算每组的汇总值。having子句:指定组或聚合的搜索条件。HAVING 通常与 GROUP BY 子句一起使用。如果不使用 GROUP BY 子句,HAVING 的行为与 WHERE 子句一样。Order by子句:指定结果集的排序。,1、子句的功
4、能,2、SELECT语句的执行方式,1)通过查询设计器辅助生成和执行select语句2)查询分析器执行select语句,二、SELECT 子句,功能:指定由查询返回的列。格式:SELECT ALL|DISTINCTTOP N PERCENT 列名1,列名2,列名N FROM 表名或视图名 参数的含义:ALL:指定在结果集中可以显示重复行。ALL 是默认设置。DISTINCT:指定在结果集中只能显示唯一行。即表示输出无重复的所有记录。TOP N PERCENT:指定只从查询结果集中输出前 N 行。如果还指定了 PERCENT,则只从结果集中输出前百分之 N 行。,1、查询所有的列,SELECT
5、子句中,在选择列表处使用通配符“*”,表示选择指定的表或视图中所有的列。服务器会按用户创建表格时声明列的顺序来显示所有的列.语法:SELECT*FROM 表名,【例1】从公司管理数据库COMPANYINFO中的客户表(customer)中检索所有的客户的公司名称、联系人姓名、联系方式、地址和邮编。USE COMPANYINFOGOSELECT*FROM customerGO,2、查询特定的列,【例2】从公司管理数据库(COMPANYINFO)中的客户表(customer)中检索所有的客户的公司名称、联系人姓名、地址。USE COMPANYINFOGOSELECT 公司名称,联系人姓名,地址FR
6、OM customerGO,【例3】从公司管理数据库(COMPANYINFO)中的雇员表(employee)中检索所有的雇员的姓名和特长。USE COMPANYINFOGOSELECT 姓名,特长FROM employeeGO,3、指定特定列的列名,(1)采用符合ANSI规则的标准方法,在列表达式后面给出列名。【例4】查询每个人的薪水降低30%信息。USE COMPANYINFO GO SELECT 姓名,薪水 原薪水,薪水-薪水*0.3 现薪水 FROM employee GO,(2)用“=”来连接列表达式,【例5】查询每个人的薪水降低30%信息。USE COMPANYINFOGOSELEC
7、T 姓名,原薪水=薪水,现薪水=薪水-薪水*0.3FROM employeeGO,(3)用AS关键字来连接列表达式和指定的列名,【例6】查询每个人的薪水降低30%信息。USE COMPANYINFOGOSELECT 姓名,薪水 as 原薪水,薪水-薪水*0.3 as 现薪水FROM employeeGO,4使用TOP关键字,SQL Server 2000提供了TOP关键字,让用户指定返回前面一定数量的数据。语法格式:SELECT TOP n|TOP n PERCENT 列名1,列名2,列名n FROM 表名其中:TOP n:表示返回最前面的n行,n表示返回的行数。TOP n PERCENT:表
8、示返回的前面的n%行。,【例7】从northwind数据库的customers表中返回前面10行数据。use northwindgoselect top 10*from customersgo,【例8】从northwind数据库中的customers表中返回前10%的数据。use northwindgoselect top 10 percent*from customersgo,三、WHERE 字句,使用WHERE子句的目的是为了从表格的数据集中过滤出符合条件的行。语法格式:SELECT 列名1,列名2,列名n FROM 表名 WHERE 条件,常用查询条件,1使用算术表达式,使用算术表达式作
9、为搜索条件的一般表达形式是:表达式 算术操作符 表达式 表达式为:常量、变量和列表达式的任意有效组合。,【例9】查询COMPANYINFO数据库的雇员表(employee)中,特长是计算机的雇员的信息。USE COMPANYINFOGO SELECT*FROM employee WHERE 特长=计算机,【例10】查询COMPANYINFO数据库的雇员表(employee)中,薪水超过3000元的雇员的姓名和薪水。USE COMPANYINFOGO SELECT 姓名,薪水FROM employee WHERE 薪水=3000GO,2使用逻辑表达式,在T-SQL里的逻辑表达式共有3个。分别是:
10、NOT:非,对表达式的否定。AND:与,连接多个条件,所有的条件都成立时为真。OR:或,连接多个条件,只要有一个条件成立就为真。,【例11】查询所有在美国加利福尼亚州的出版社。use pubsgo select pub_id as 出版社代号,pub_name as 出版社名称,city as 城市,state as 州,country as 国家from publisherswhere country=usa and state=cago,查询结果如下:出版社代号 出版社名称 城市 州 国家-1389 Algodata Infosystems Berkeley CA USA(所影响的行数为
11、1 行),3使用BETWEEN关键字,使用BETWEEN关键字可以更方便地限制查询数据的范围。语法格式为:表达式 NOT BETWEEN 表达式1 AND 表达式2,【例12】查询COMPANYINFO数据库的雇员表(employee)中,薪水在3000元至4000元的雇员的姓名和薪水。SELECT 姓名,薪水FROM employee WHERE 薪水 between 3000 and 4000,【例13】查询库存量大于200和库存量小于100的产品名、库存量和单价。SELECT 产品名,库存量,单价 FROM productWHERE 库存量 not between 200 and 100
12、,【例 14】查询价格在15和20美元之间的书的书号、种类和价格。use pubsgo select title_id as 书号,type as 种类,price as 原价from titleswhere price between$15 and$20go,【例15】查询书价大于20和书价小于15的书的代号、种类和价格。use pubsgo select title_id as 书号,type as 种类,price as 原价 from titleswhere price$20go,查询结果如下:书号种类原价-BU1111business11.9500BU2075business2.99
13、00MC3021mod_cook2.9900PC1035popular_comp22.9500(所影响的行数为 11 行),4使用IN关键字,同BETWEEN关键字一样,IN的引入也是为了更方便地限制检索数据的范围,灵活使用IN关键字,可以用简洁的语句实现结构复杂的查询。语法格式为:表达式 NOT IN(表达式1,表达式2,表达式n),【例16】查询所有居住在KS、CA、MI或IN州的作家。use pubsgoselect au_id,au_lname,au_fnamefrom authorswhere state IN(CA,KS,MI,IN)go 如果不使用IN关键字,这些语句可以使用下面
14、的语句代替:use pubsgoselect au_id,au_lname,au_fnamefrom authorswhere state=CA or state=KS or state=MI or state=INgo,【例17】查询所有不在上述4个州居住的作家。use pubsgo select au_id,au_lname,au_fnamefrom authorswhere state not in(CA,KS,MI,IN)go 与下面的语句等价:use pubsgoselect au_id,au_lname,au_fnamefrom authorswhere stateCA and s
15、tateKS and stateMIand stateINgo,5、通配符的使用,注意:所有通配符都只有在LIKE子句中才有意义,否则通配符会被当作普通字符处理。,【例18】列出所有姓“章”的雇员的信息。查询语句如下:SELECT*FROM employeeWHERE 姓名 LIKE 章%,【例19】查询雇员表(employee)中所有姓名中含有“利”字的雇员。SELECT 雇员ID,姓名FROM employeeWHERE 姓名 like%利%GO,【例20】查询雇员表(employee)中所有雇员ID满足前2个字符为“01”,第4个字符为“-”的雇员的姓名和出生年月。SELECT 雇员ID
16、,姓名,出生年月FROM employeeWHERE 雇员id like 01_-%GO,【例21】查询所有au_id满足前2个字符为“72”,第4个字符为“-”的作家的姓名和电话号码。use pubsgoselect au_lname,au_fname,phone,au_id from authorswhere au_id like 72_-%go,查询结果如下:au_lnameau_fnamephone au_id-DeFranceMichel219 547-9982722-51-5454StringerDirk 415 843-2991724-08-9931MacFeather Stea
17、rns 415 354-7128724-80-9391(所影响的行数为 3 行),【例22】查询所有au_id的第一个字符为5-9、第二个字符为1-4的作家的姓名和电话号码。use pubs goselect au_lname,au_fname,phone,au_idfrom authorswhere au_id like 5-91-4%go,五、from 子句,在每一条要从表或视图中检索数据的 SELCET 语句中,都需要使用 FROM 子句。用 FROM 子句可以:列出选择列表和 WHERE 子句中所引用的列所在的表和视图。可用 AS 子句为表和视图的名称指定别名。,FROM 子句可以指定
18、:,一个或多个表或视图。例:SELECT*FROM Shippers 两个表或视图之间的联接:SELECT Cst.CustomerID,Cst.CompanyName,Cst.ContactName,Ord.ShippedDate,Ord.Freight FROM Northwind.dbo.Orders AS Ord JOIN Northwind.dbo.Customers AS Cst ON(Cst.CustomerID=Ord.CustomerID),六、ORDER BY子句,SELECT语句获得的数据一般是没有排序的。为了方便阅读和使用,最好对查询的结果进行一次排序。SQL语言中,用
19、于排序的是ORDER BY子句。语法格式为:ORDER BY 表达式1 ASC|DESC,表达式2 ASC|DESC,n,【例24】在公司管理数据库(COMPANYINFO)中的订单表(p_order)中,查询产品ID,数量和订货日期,并按的订货日期降序给产品排序。USE COMPANYINFOGO SELECT 产品ID,数量,订货日期FROM p_orderORDER BY 订货日期 descGO,【例25】查询pubs数据库中的表stores中商店的名字,并按商店名的降序给商店排序。use pubsgoselect stor_namefrom storesorder by stor_na
20、me descgo,【例26】查询titles中各类书的销售利润和书号,并按照各种书的销售利润降序排列。use pubsgoselect title_id,profit=price*ytd_salesfrom titlesorder by profit descgo,查询结果如下:title_idprofit-PC1035201501.0000TC4203180397.2000PC888881900.0000BU103281859.0500BU783281859.0500PS333381399.2800(所影响的行数为 18 行),【例27】查询titles中各类书的书号、价格、年销售量和销售
21、利润,并用年销售量和书价进行升序排列。use pubsgoselect title_id,price,ytd_sales,profit=price*ytd_sales from titlesorder by ytd_sales,price go,七 GROUP BY子句,在大多数情况下,使用统计函数返回的是所有行数据的统计结果。如果需要按某一列数据的值进行分类,在分类的基础上再进行查询,就要使用GROUP BY子句了。,常用统计函数,为了有效的决心数据集分类汇总、求平均等统计,SQL Server2000提供了一系列统计函数。,【例 28】计算订单表(p_order)中所有产品的已订购总额:U
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 公司 管理 数据库 系统 数据 查询

链接地址:https://www.31ppt.com/p-5099320.html