SQL语言回顾与进阶.ppt_第1页
SQL语言回顾与进阶.ppt_第2页
SQL语言回顾与进阶.ppt_第3页
SQL语言回顾与进阶.ppt_第4页
SQL语言回顾与进阶.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

实验2SQL语言回顾与进阶,数据定义语言(DDL)语句Create、Alter、Drop数据操作语言(DML)语句Insert、Update、Delete、Select数据控制语言(DCL)语句Grant、Revoke、Deny,SQL语言,Insert语句-插入数据,用Values子句插入一行数据使用INSERTSELECT语句使用SELECTINTO语句创建表插入部分数据示例参考文件Lab02Demo.sql。,Update语句-更新数据,根据表中数据更新行根据其他表更新行示例参考文件Lab02Demo.sql。,Delete语句-删除数据,使用DELETE语句使用TRUNCATETABLE语句删除基于其他表的行,Select语句,检索数据数据分组与汇总多表联接子查询修改数据,使用WHERE子句,USEAdventureWorksSELECTProductID,NAMEFROMProduction.ProductWHEREClass=H,设置结果集格式,可以通过设置结果集格式,改善结果集的可读性。使用ORDERBY使用DISTINCT消除重复行改变列名使用字面值,使用TOPn列出前n个记录,可以用TOPn关键字列出结果集中前n个记录。,USEAdventureWorksSELECTTop5Salesorderid,productid,OrderQtyFROMSales.SalesOrderDetailORDERBYOrderQtyDESCGO,使用聚合函数,聚合函数的功能是计算平均值和总和。COUNTMINandMAXSUMandAVG,GROUPBY的基础知识,如果想要在一列中生成多个汇总值,可以使用聚合函数与GROUPBY子句。,USEAdventureWorksSELECTSize,AVG(ListPrice)ASAverageListPriceFROMProduction.ProductGROUPBYSizeORDERBYSize,联合使用GROUPBY子句和HAVING子句,当使用HAVING子句时,注意以下事项和原则:HAVING子句只有与GROUPBY子句联用才能对分组进行约束。只使用HAVING子句而不使用GROUPBY子句是没有意义的。可以引用任何出现在选择列表中的列。不要与HAVING子句一起使用ALL关键字,因为HAVING子句会忽略ALL关键字而返回只满足自己条件的分组。,在结果集中生成汇总值,使用带有ROLLUP运算符的GROUPBY子句使用带有CUBE运算符的GROUPBY子句使用GROUPING函数使用PIVOT和UNPIVOT,使用COMPUTE和COMPUTEBY子句,生成某一列的明细值和汇总值的报表为组中的子集生成明细值和汇总值的报表,推荐操作,当使用子句和运算符汇总数据时,注意下面的推荐操作:对经常聚合的列进行索引可以提高查询效率。例如,增加quantity列的索引能加快汇总操作的执行,甚至当使用了ROLLUP运算符时也是如此。在包含空值的列中避免使用聚合函数,因为结果集可能并没有正确地返回你要查询的数据。在结果集中使用ORDERBY子句以保证返回数据的排列顺序。如果不使用ORDERBY子句,SQLServer就不保证结果顺序。因为ROLLUP运算符比CUBE运算符更高效,所以只要可能就使用它。ROLLUP运算符之所以高效是因为它把汇总数据作为具体数据处理。CUBE运算符在执行时需要大量的运算,所以它需要更多的资源。使用COMPUTE或COMPUTEBY子句,是因为它们可以有助于查看和输出用于测试应用程序的结果集。但是,它们产生的额外汇总记录不符合关系型格式,所以它们不适合作为产品数据库的输出。,使用表的别名,使用表的别名可以增强脚本的可读性,有利于编写复杂联接,同时简化对Transact-SQL的维护。,SELECT*FROMserver.database.schema.tableAStable_alias,组合多个表中的数据(本次实验不作要求),联接概述使用内联接使用外联接使用交叉联接联接两个以上的表自联接(Self-Join)合并多个结果集,推荐操作,下面的推荐操作会有助于你执行查询:根据主键和外键联接表。当表中使用组合键时,ON子句中一定要引用组合主键中的所有列。尽量在联接中限制表的个数。因为你要联接的表越多,SQLServer要完成这个查询需要的时间也就越长。,子查询介绍,子查询是一种SELECT语句的使用方法,它嵌套在SELECT、INSERT、UPDATE、DELETE语句或其他的子查询语句中。使用子查询的原因使用联接查询而不使用子查询的原因子查询的使用方法,把子查询用作派生表,可以用子查询产生一个派生表,用于代替WHERE,HAVING或者FROM子句中的表。,USEAdventureWorksSELECTSalesOrderID,ProductID,OrderQtyFROMSales.SalesOrderDetailWHEREUnitPrice(SELECTAVG(UnitPrice)FROMSales.SalesOrderDetail),把子查询用作表达式,所有使用表达式的地方,都可以用子查询代替。此时子查询必须取值为标量值或单个列值列表。,SELECTAuthorID=A.au_id,Author=CONVERT(varchar(20),RTRIM(au_lname)+,+RTRIM(au_fname),stateFROMauthorsAWHEREA.au_idNOTIN(SELECTB.au_idFROMtitleauthorB),使用子查询关联数据,计算一个关联子查询模拟JOIN子句使用EXISTS和NOTEXISTS子句,推荐操作,下面推荐的操作有助于你执行高级查询:用子查询分解复杂的查询。你可以通过使用子查询的单个语句解决一个复杂的问题。当你的查询依赖于另一个查询的结果时子查询会很有用。在相关子查询中使用表的别名。为了区分开内部查询和外部查询的表,SQLServer要求使用

温馨提示

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

评论

0/150

提交评论