数据操纵语句大全

上传人:嘀****l 文档编号:246692138 上传时间:2024-10-15 格式:PPT 页数:92 大小:1.80MB
返回 下载 相关 举报
数据操纵语句大全_第1页
第1页 / 共92页
数据操纵语句大全_第2页
第2页 / 共92页
数据操纵语句大全_第3页
第3页 / 共92页
点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第四章 数据操纵语句,4.1,在SQL Server Management Studio中查看记录,4.2,INSERT语句,4.3,UPDATE语句,4.4,DELETE语句,4.5,简单查询,4.6,数据统计查询,1,4.1 在SQL Server Management Studio中查看记录,4.1.1,打开表,4.1.2,快速定位记录,4.1.3,返回前几条记录,2,4.1.1 打开表,例:在,SQL server Management Studio,中打开 “,Northwind,” 数据库中的“,products,”表。,1.,启动【,SQL server Management Studio,】,在【对象资源管理器】中展开树形目录,定位到【,products,】表。,2.,右击【,products,】表,在弹出的快捷菜单中选择【打开表】选项。,3.,此时已经将【,products,】表打开了,右边对话框显示的是【,products,】表里的记录内容,该表格对话框名为【结果窗格】。,3,4.1.2 快速定位记录,在【结果窗格】的最下方,可以快速定位到上一条、下一条记录,也可以直接跳到第一条、最后一条记录。如果要想跳到某一条记录的话,在文本框内输入数字,再按回车键。,4,4.1.3 返回前几条记录,1.,在打开表之后,调出【属性】对话框。调出方法为:,单击菜单栏中的【视图】|【属性窗口】选项。在【属性】对话框里,展开【,TOP,规范】选项,在【(最前面)】下拉列表框里选择【是】选项,在【,percent,】下拉列表框里选择【否】选项,在【表达式】文本框里输入数字“,10,”。,2.,选择【结果窗格】,然后再单击【运行,SQL,】按钮。在【结果窗格】里只显示前十条记录。,5,第四章 数据操纵语句,4.1,在SQL Server Management Studio中查看记录,4.2,INSERT语句,4.3,UPDATE语句,4.4,DELETE语句,4.5,简单查询,4.6,数据统计查询,6,4.2 INSERT语句,4.2.1,在,SSMS,中插入记录,4.2.2,用,INSERT,语句记录,7,4.2.1 在SSMS中插入记录,注意事项:,1.,标识列、计算列的字段不能输入字段内容。,2.,不能为NULL值的字段必须输入字段内容。,3.,输入字段内容的数据类型要和字段定义的数据类型一致。,4.,如果字段上有约束,一定要符合约束要求。,5.,如果要让字段输入默认值,则不用在字段内输入任何数据,在保存记录时,,SQL server,会自动填入默认值,但前提是该字段设置有默认值。,8,4.2.2 用INSERT语句记录,语法格式如下:,INSERT,INTO,table_name, ( column_list ) ,VALUES,( expression ,.n ),9,4.2.2 用INSERT语句记录,语法注释:,INTO:一个可选的关键字,可以将它用在 INSERT 和目标表之间。,table_name:将要接收数据的表或 table 变量的名称。,(column_list):要在其中插入数据的一列或多列的列表。,必须用圆括号将column_list括起来,并且用逗号进行分隔,。,VALUES:引入要插入的数据值的列表。对于column_list(如果已指定)中或者表中的每个列,都必须有一个数据值。,必须用圆括号将值列表括起来,。如果 VALUES 列表中的值与表中列的顺序不相同,或者未包含表中所有列的值,那么必须使用column_list明确地指定存储每个传入值的列。,10,4.2.2 用INSERT语句记录,1.最简单的,INSERT,语句,示范案例1,在“,Northwind,”数据库的“,Order Details,”表里插入一条记录,其中“,OrderID,”字段的值为,10248,;“,ProductID,”字段的值为,1,;“,UnitPrice,”字段的值为,10,;“,Quantity,”字段的值为,2,;“,Discount,”字段的值为,0.8 。,程序清单如下:,INSERT order details (orderid,productid,unitprice,quantity,discount),VALUES(10248,1,10,2,0.8),11,4.2.2 用INSERT语句记录,2.省略清单的INSERT语句,示范案例2,在上例中省略字段清单,程序清单如下:,INSERT order details,VALUES(10249,2,10,2,0.9),12,4.2.2 用INSERT语句记录,3.标识列、允许为空字段的处理,示范案例3,在“,Northwind,”数据库的“,Categories,”表里插入一条记录,其中“,CategoryName,”字段的值为“图书”;“,Description,”字段的值为“所有类型的图书”,。,程序清单如下:,INSERT INTO categories(categoryname,description),VALUES,(图书,所有类型的图书),13,4.2.2 用INSERT语句记录,4.有默认值字段的处理,示范案例4,在“学生”数据库中创建“教师”表(性别为有默认值列),。在该表中录入数据。,程序清单如下:,INSERT INTO teachers(teach_id,teach_name,tsex,tdegree),VALUES,(,rj001, 李波,DEFAULT, 本科),14,4.2.2 用INSERT语句记录,5.省略VALUES清单的INSERT语句,在T-SQL中,有一种简单的插入多行的方法。这种方法是使用SELECT语句查询出的结果代替VALUES子句。这种方法的语法结构如下:,INSERT,INTO, table_name,(column_name1,column_name2,column_namen),SELECT,column_name ,n,FROM,table_name,WHERE,search_conditions,15,4.2.2 用INSERT语句记录,示范案例5,在“,Northwind,”数据库中,从“,Employees,”表里查出“,EmployeeID,”、“,LastName,”、“,FirstName,”、“,PostalCode,”、“,City,”、“,Address,”、“,HomePhone,”,7,个字段,组成一个“雇员通信录”表。,16,4.2.2 用INSERT语句记录,程序清单如下:,CREATE TABLE,雇员通信录,(雇员,ID int primary key,姓氏,nvarchar(20) not null,名字,nvarchar(10) not null,邮政编码,nvarchar(10) null,城市,nvarchar(15) null,地址,nvarchar(60) null,家庭电话,nvarchar(24) null,),GO,INSERT INTO,雇员通信录,SELECT employeeid,lastname,firstname,postalcode,city,address,homephone,FROM employees,GO,17,第四章 数据操纵语句,4.1,在SQL Server Management Studio中查看记录,4.2,INSERT语句,4.3,UPDATE语句,4.4,DELETE语句,4.5,简单查询,4.6,数据统计查询,18,4.3 UPDATE语句,4.3.1,在,SSMS,中更新记录,4.3.2,用,UPDATE,语句更新记录,19,4.3.1 在SSMS中更新记录,注意事项:,1.,在修改,char,和,nchar,这类长度固定的字段时,要注意其后的空格 。,2.,在可以为空值,NULL,的字段中,如果要设为,NULL,,可以按,Ctrl+0,键 。,3.,如果将记录字段内容修改过后,又想回到修改前的值,可用将光标聚焦到该字段,然后按,Esc,键。,4.,如果想放弃整条记录的修改,可以连按两次,Esc,键。,20,4.3.2 用UPDATE语句更新记录,语法格式如下:,UPDATE,table_name,SET, column_name = expression | DEFAULT | NULL , ,.n ,FROM, ,.n ,WHERE, , :=,table_name AS table_alias WITH ( ,.n ) ,21,4.3.2 用UPDATE语句更新记录,语法注释:,table_name:需要更新的表的名称。,SET:指定要更新的列或变量名称的列表。,column_name:含有要更改数据的列的名称。, expression | DEFAULT | NULL :列值表达式。,:修改数据来源表。,22,4.3.2 用UPDATE语句更新记录,示范案例6,使用,T-SQL,语句,将“,Northwind,”数据库“,Employees,”表中“,EmployeeID,”字段值为,1,的记录的“,LastName,”字段值修改为“,bb,”,。,程序清单如下:,UPDATE employees,SET lastname=bb,WHERE employeeid=1,23,4.3.2 用UPDATE语句更新记录,示范案例7,用计算值来更新记录,修改“,Northwind,”数据库“,Products,”表中“,ProductID,”字段值为,1,的记录的“,UnitPrice,”字段的值,使其值在当前的基础上减少,5,。,程序清单如下:,UPDATE products,SET unitprice=unitprice-5,WHERE productid=1,24,第四章 数据操纵语句,4.1,在SQL Server Management Studio中查看记录,4.2,INSERT语句,4.3,UPDATE语句,4.4,DELETE语句,4.5,简单查询,4.6,数据统计查询,25,4.4 DELETE语句,4.4.1,在,SSMS,中删除记录,4.4.2,用,DELETE,语句删除记录,4.4.3 用Truncate table语句删除记录,26,4.4.1 在SSMS中删除记录,注意事项:,1.,记录删除之后不能再撤消删除 。,2.,一次可以删除多条记录 。,3.,在选择记录后,按,Delete,键也可以进行删除操作 。,4.,如果要删除的记录是其他表的外键字段,删除操作可能会影响外键表 。,27,4.4.2 用DELETE语句删除记录,语法格式如下:,DELETE,table_name,FROM, ,.n ,WHERE, , := table_name AS table_alias ,.n ) ,28,4.4.2 用DELETE语句删除记录,语法注释:,table_name:是要从其中删除行的表的名称。,FROM :指定附加的 FROM 子句。,table_name AS table_alias :是为删除操作提供标准的表名。,WHERE:指定用于限制删除行数的条件。,如果没有提供 WHERE 子句,则 DELETE 删除表中的所有行。,:指定删除行的限定条件。对搜索条件中可以包含的谓词数量没有限制。,29,4.4.2 用DELETE语句删除记录,示范案例8,将“,Northwind,”数据库“,Order Details,”表中“,OrderID,”字段值为,10251,的记录删除。,程序清单如下:,DELETE order details,WHERE orderid=10251,30,4.4.2 用DELETE语句删除记录,示范案例9,在“,Northwind,”数据库中删除雇员“,Nancy,”的所有订单。在该例中删除的数据引用的是雇员表中的数据。,程序清单如下:,select * from orders where employeeid=1,DELETE orders,FROM employees,WHERE employees.employeeid=orders.employeeid,AND employees.firstname=Nancy,31,4.4.3 用TRUNCATE TABLE语句删除记录,基本语法格式:,TRUNCATE TABLE,table_name,功能:删除表中的所有记录,语法注释:,TRUNCATE TABLE:为关键字,table_name:为要删除所用记录的表名。,32,4.4.3 用TRUNCATE TABLE语句删除记录,TRUNCATE与DELETE比较:,比DELETE快,不记录日志的操作,它将释放表的数据和索引所占据的所有空间及所有为全部索引分配的页,删除的数据是不可恢复的。,33,4.4.3 用TRUNCATE TABLE语句删除记录,示范案例10,删除学生信息管理数据库,student,中教师表,teachers,中的所有记录,。,程序清单如下:,DELETE teachers,或,TRUNCATE TABLE teachers,34,第四章 数据操纵语句,4.1,在SQL Server Management Studio中查看记录,4.2,INSERT语句,4.3,UPDATE语句,4.4,DELETE语句,4.5,简单查询,4.6,数据统计查询,35,4.5 简单查询,4.5.1,选择表中的若干列,4.5.2,选择表中的若干记录,4.5.3,对查询的结果排序,36,4.5 简单查询,基本语法格式:,SELECT,DISTINCT|TOP n PERCENT,WITH TIES, select_list,FROM,table_list,WHERE,search_conditions,ORDER BY,order_list ,ASC | DESC, ,37,4.5 简单查询,注释说明:,SELECT,子句,用于指定所选择的要查询的特定表中的列,它可以是星号(,*,)、表达式、列表、变量等。,FROM,子句,用于指定要查询的表或者视图,最多可以指定,16,个表或者视图,用逗号相互隔开。,WHERE,子句,用来限定查询的范围和条件。,ORDER BY,用于指定排序方式。,DISTINCT,用于消除结果集中的重复值。,TOP n PERCENT,用于显示前,n,条或,n%,条的记录信息.,WITH TIES,用于在结果集中包含附加记录,在使用,ORDER,BY,子句时,当出现两个或多个记录和最后一条记录的值相等时,这些附加记录也将出现在结果集中。,38,4.5.1 选择表中的若干列,1.,查询表,中的所有列,示范案例,11,查询“,Northwind,”数据库中,Categories,表中的所有记录,。,程序清单如下:,USE northwind,GO,SELECT *,FROM categories,GO,39,4.5.1 选择表中的若干列,2.,查询表中部分列,示范案例,12,查询“,Northwind,”数据库中“,Categories,”表中的“,categoryname,”和“,description,”字段,。,程序清单如下:,USE northwind,GO,SELECT categoryname,Description,FROM categories,GO,40,4.5.1 选择表中的若干列,3.,为结果集内的列指定别名,格式:表达式,AS,别名,由于计算列不是数据表中的列,所以用到了“AS”关键字来指定列的别名。即使要查询的列是数据表中真实存在的列,也可以用“AS”来指定别名。关键字AS可以省略。,41,4.5.1 选择表中的若干列,示范案例,13,查询“,Northwind,”数据库中“,Order Details,”表中每个订单的总价,。,程序清单如下:,USE northwind,GO,SELECT orderid,productid,unitprice,quantity,discount,unitprice*(1-discount)*quantity AS zongjia,FROM order details,GO,42,4.5.2 选择表中的若干记录,1.查看不重复记录,DISTINCT,例如,在“,Northwind,”数据库中要查看货物在哪些城市里有过销售记录。在订购表“,Orders,”中有一个字段是“,ShipCity,”,通过查询这个字段,就可以了解货物曾经销往过哪些城市。,如果程序代码如下:,SELECT shipcity FROM orders,或,SELECT ALL shipcity FROM orders,43,4.5.2 选择表中的若干记录,如果要显示不重复的记录的话,可以使用如下代码 :,SELECT DISTINCT shipcity FROM orders,Distinct,关键字可以同时指定多个字段,例如同时指定两个字段的话,那么查询的结果是两个字段同时不重复的记录,如以下代码:,SELECT DISTINCT shipname,shipcity,FROM orders,44,4.5.2 选择表中的若干记录,示范案例,14,在“,northwind,”数据库中“s,uppliers,”表中检索所有行,但每个国家“,Country,”只显示一次。,程序清单如下:,USE northwind,GO,SELECT DISTINCT country,FROM suppliers,GO,45,4.5.2 选择表中的若干记录,2.查看满足条件记录,WHERE,如果只希望得到表中满足特定条件的一些记录,用户可以在查询语句中使用,WHERE,子句。,46,4.5.2 选择表中的若干记录,常用的查询条件,:,查询条件,运算符,意义,比较,=,=-,!,!16,55,4.5.2 选择表中的若干记录,3.限制返回行数,TOP,TOP n,PERCENT WITH TIES,示范案例,22,在“,Northwind,”数据库“,order details,”订单明细表中查看订购数量最多的五条订单,。,程序清单如下:,SELECT TOP 5 *,FROM order details,ORDER BY quantity DESC,56,4.5.3 对查询的结果排序,用户可以使用,ORDER BY,子句对查询结果按照一个或多个属性列的升序(,ASC,)或降序(,DESC,)排列,默认为升序。如果不使用,ORDER BY,子句,则结果集按照记录在表中的顺序排列。,基本语法格式:,ORDER BY 列名,列名 DESC|ASC,57,4.5.3 对查询的结果排序,示范案例23,在“,Northwind,”数据库“,products,”产品表中查看所有产品记录,并以产品名排序。,程序清单如下:,SELECT *,FROM products,ORDER BY productname,58,4.5.3 对查询的结果排序,当按多列排序时,先按前面的列排序,如果值相同再按后面的列排序。,示范案例,24,在“,Northwind,”数据库“,products,”产品表中查看所有产品记录,并以供应商编号和产品名排序,。,程序清单如下:,SELECT *,FROM products,ORDER BY supplierid,productname,59,第四章 数据操纵语句,4.1,在SQL Server Management Studio中查看记录,4.2,INSERT语句,4.3,UPDATE语句,4.4,DELETE语句,4.5,简单查询,4.6,数据统计查询,60,4.6 数据统计查询,4.6.1,使用聚合函数,4.6.2,对结果进行分组,4.6.3,用,COMPUTE,子句来归类,61,4.6.1 使用聚合函数,SQL Server,提供了许多聚合函数,主要有:,聚合函数,描述,AVG,(列名),计算给定列的平均值,COUNT,(列名),计算表达式中值的数目,COUNT,(*),计算所选择的行的数目,MAX,(列名),计算给定列的中的最大值,MIN,(列名),计算给定列的中最小值,SUM,(列名),计算给定列的中所有值的和,62,4.6.1 使用聚合函数,字段的数据类型决定了可以用在该字段上的聚合函数类型。,如:,SUM 和 AVG 只能用在数据类型代表数字的字段上。,63,4.6.1 使用聚合函数,示范案例25,在“,Northwind,”数据库中查询“,employees,”表中雇员的数目,。,程序清单如下:,SELECT count(*) AS,雇员数目,FROM employees,64,4.6.1 使用聚合函数,实验并思考:,1) 如果本例中将count(*)更改为count(employeeid),其显示的个数为多少?,2) 如果改为count(city)呢?结果又如何呢?,65,4.6.1 使用聚合函数,对包含空值的字段使用聚合函数时,应注意,SQL Server,的聚合函数(,COUNT,(*) 除外)将忽略字段中的空值。,COUNT,(*)将计算所有的行,即使每个字段都含有空值。,66,4.6.2 对结果进行分组,GROUP BY,子句将查询结果集按某一列或多列值分组,分组列的值相等的为一组,并对每一组进行统计计算。对查询结果集分组的目的是为了细化聚合函数的作用对象。,GROUP BY,子句的语法格式为:,GROUP BY,ALL, 列名,列名 ,WITH,CUBE,|,ROLLUP,HAVING,筛选条件表达式,67,4.6.2 对结果进行分组,语法注释:,ALL,:用于指定包含所有组和结果集,。,BY,列名:是按列名指定的字段进行分组,。,使用,WITH CUBE,会对,GROUP BY,所列出的所有分组字段进行汇总运算,。,使用,WITH ROLLUP,会对,GROUP BY,所列出的第一个分组字段进行汇总运算,。,HAVING,筛选条件表达式:表示对生成的组筛选后再对满足条件的组进行统计,。,68,USE northwind,SELECT productid, orderid ,quantity,FROM order detailsGO,productid,orderid,quantity,1,1,5,1,1,10,2,1,10,2,2,25,3,1,15,3,2,30,productid,total_quantity,2,35,只对满足,WHERE,子句的行分组,productid,total_quantity,1,15,2,35,3,45,USE northwind,SELECT productid,SUM(quantity) AS total_quantity,FROM order details,GROUP BY productidGO,示例,1,USE northwind,SELECT,productid,SUM(quantity),AS total_quantity,FROM,order details,WHERE productid = 2,GROUP BY,productid,GO,示例,2,4.6.2 对结果进行分组,69,4.6.2 对结果进行分组,示范案例,26,统计“,northwind,”数据库“,orders,”表中每个城市的订单总数 。,程序清单如下:,SELECT shipcity,count(orderid) AS,订单总数,FROM orders,GROUP BY shipcity,70,4.6.2 对结果进行分组,使用,GROUP BY,子句时,应注意,SQL Server,将为,每一组,计算一个,汇总值,,并把汇总值保存在一个字段中。,对于指定的一组,,SQL Server,只生成一条记录,,,不返回详细信息。,SQL Server,只对满足,WHERE,子句的记录进行分组和汇总。,不要对可能,包含空值的字段,使用,GROUP BY,子句,因为空值也将被当作一组,而不管记录是否满足,WHERE,子句的条件。,71,USE northwind,SELECT productid, orderid,quantity,FROM order detailsGO,productid,orderid,quantity,1,1,5,1,1,10,2,1,10,2,2,25,3,1,15,3,2,30,productid,total_quantity,2,35,3,45,USE northwind,SELECT productid, SUM(quantity),AS total_quantity,FROM order details,GROUP BY productid,HAVING SUM(quantity)=30,GO,示例,4.6.2 对结果进行分组,72,4.6.2 对结果进行分组,示范案例,27,统计“,northwind,”数据库订购“,orders,”表中订单总数超过,20,的城市,以及这些城市的订单总数和总运费,。,程序清单如下:,SELECT shipcity,count(orderid),订单总数,sum(freight),运货费总数,FROM orders,GROUP BY shipcity,HAVING count(orderid)20,73,USE northwind,SELECT productid, orderid ,quantity,FROM order detailsGO,productid,orderid,quantity,1,1,5,1,1,10,2,1,10,2,2,25,3,1,15,3,2,30,USE northwind,SELECT,productid,orderid,SUM(quantity),AS total_quantity,FROM order details GROUP BY,productid,orderid,GO,示例,4.6.2 对结果进行分组,productid,orderid,quantity,1,1,1,5,2,1,10,2,2,25,3,1,15,3,2,30,74,4.6.2 对结果进行分组,示范案例,28,在“,northwind,”数据库订购“,orders,”表中按年份统计每个城市的订单总数,。,程序清单如下:,SELECT shipcity,count(orderid),订单总数,year(orderdate) AS,订购年份,FROM orders,GROUP BY shipcity,year(orderdate),ORDER BY shipcity,year(orderdate),75,4.6.2 对结果进行分组,CUBE,操作符比,ROLLUP,操作符,多产生两个汇总,值,总数,对,orderid 1,中的所有行汇总,对,orderid 2,中的所有行汇总,只对,productid 1,中的行汇总,productid 1、 orderid 1,的具体值,productid 1、 orderid 2,的具体值,只对,productid 2,中的行汇总,productid 2、 orderid 1,的具体值,productid 2、 orderid 2,的具体值,只对,productid 3,中的行汇总,productid 3、 orderid 1,的具体值,productid 3、 orderid 2,的具体值,productid,orderid,total_quantity,NULL,NULL,95,NULL,1,30,NULL,2,65,1,NULL,15,1,1,5,1,2,10,2,NULL,35,2,1,10,2,2,25,3,NULL,45,3,1,15,3,2,30,描述,USE northwind,SELECT productid, orderid, SUM(quantity) AS total_quantity,FROM order details,GROUP BY productid, orderid,WITH CUBE,ORDER BY productid, orderidGO,示例,76,4.6.2 对结果进行分组,示范案例,29,统计“,Northwind,”数据库“,orders,”表中每个城市的订单总数,并进行汇总。,程序清单如下:,SELECT shipcity,count(orderid) AS,订单总数,FROM orders,GROUP BY shipcity,WITH CUBE,77,4.6.2 对结果进行分组,联合使用,GROUP BY,子句和,CUBE,操作符,能生成基于,GROUP BY,子句指定的,所有字段的可能组合,使用,GROUP BY,子句和,CUBE,操作符时,应注意,如果在,GROUP BY,子句中有,n,个字段,或表达式,,SQL Server,将在结果集中返回,2,n,种可能的组合。,结果集中含有,NULL,的记录代表该记录由,CUBE,操作符生成。,78,4.6.2 对结果进行分组,描述,USE northwind,SELECT productid, orderid, SUM(quantity) AS total_quantity,FROM order details,GROUP BY productid, orderid,WITH ROLLUP,ORDER BY productid, orderidGO,示例,productid,orderid,total_quantity,NULL,NULL,95,1,NULL,15,1,1,5,1,2,10,2,NULL,35,2,1,10,2,2,25,3,NULL,45,3,1,15,3,2,30,总数,只对,productid 1,中的行汇总,productid 1、 orderid 1,的具体值,productid 1、 orderid 2,的具体值,只对,productid 2,中的行汇总,productid 2、 orderid 1,的具体值,productid 2、 orderid 2,的具体值,只对,productid 3,中的行汇总,productid 3、orderid 1,的具体值,productid 3、orderid 2,的具体值,79,4.6.2 对结果进行分组,示范案例,30,在“,Northwind,”数据库“,orders,”表中按年份统计每个城市的订单总数,并按城市进行汇总。,程序清单如下:,SELECT shipcity,year(orderdate) AS,订购年份,count(orderid) AS,订单总数,FROM orders,GROUP BY shipcity,year(orderdate),WITH ROLLUP,80,4.6.2 对结果进行分组,联合使用,GROUP BY,子句和,ROLLUP,操作符,,计算,组,中的汇总值,使用,GROUP BY,子句和,ROLLUP,操作符时,应注意,SQL Server,处理,GROUP BY,中字段列表的顺序是,从右到左,,然后对每个组使用聚合函数。,SQL Server,将在结果集中增加一行,这行将显示总和或平均值之类的汇总值,,新增的行以,NULL,标识。,81,4.6.3 用COMPUTE子句来归类,COMPUTE,子句对查询结果集中的所有记录进行汇总统计,并显示所有参加汇总记录的详细信息。当与,by,一起使用时,,COMPUTE,子句在结果集内生成控制中断和小计。可在同一查询内指定,COMPUTE,BY,和,COMPUTE,。,使用语法格式为:,COMPUTE,聚合函数(列名) ,BY,列名,82,4.6.3 用COMPUTE子句来归类,注释说明:,聚合函数(列名):例如,SUM,(),,AVG,(),,COUNT,()等。此处的列名用于指明要用来汇总函数处理的字段或表达式,在此不能用字段别名,并且必须是,SELECT,子句列表中的一项,。,BY,列名:按指定列名的字段进行分组计算,并显示被统计记录的详细信息,。,BY,选项必须与,ORDER BY,子句一起使用,。,83,4.6.3 用COMPUTE子句来归类,USE northwind,SELECT productid, orderid,quantity,FROM,order details,COMPUTE SUM(quantity),GO,COMPUTE,示例,1,USE northwind,SELECT productid, orderid ,quantity,FROM order detailsGO,productid,orderid,quantity,1,1,5,1,1,10,2,1,10,2,2,25,3,1,15,3,2,30,productid,orderid,quantity,1,1,5,1,2,10,2,1,10,2,2,25,3,1,15,3,2,30,sum,95,84,4.6.3 用COMPUTE子句来归类,示范案例,31,统计“,northwind,”数据库“,orders,”表中还没有发货的订单,以及运费的总数。,程序清单如下:,SELECT orderid,shipcity,freight FROM orders,WHERE shippeddate IS NULL,COMPUTE sum(freight),85,4.6.3 用COMPUTE子句来归类,COMPUTE BY,USE northwind,SELECT productid, orderid, quantity,FROM,order details,ORDER BY productid, orderid,COMPUTE SUM(quantity) BY productid,COMPUTE SUM(quantity),GO,示例,2,USE northwind,SELECT productid, orderid ,quantity,FROM,order details,GO,productid,orderid,quantity,1,1,5,1,1,10,2,1,10,2,2,25,3,1,15,3,2,30,productid,orderid,quantity,1,1,5,1,1,10,sum,15,2,1,10,2,2,25,sum,35,3,1,15,3,2,30,sum,45,sum,95,86,4.6.3 用COMPUTE子句来归类,示范案例,32,在“,northwind,”数据库“,orders,”表中按城市统计还没有发货的订单,以及运费的总数。,程序清单如下:,SELECT orderid,shipcity,freight,FROM orders,WHERE shippeddate IS NULL,ORDER BY shipcity DESC,COMPUTE sum(freight) BY shipcity,87,4.6.3 用COMPUTE子句来归类,使用,COMPUTE,子句的注意事项和原则,COMPUTE,子句中聚合函数使用的字段,必须在,SELECT,语句的,选择列表,中出现。,应当,同时使用,ORDER BY,子句和,COMPUTE BY,子句,这样记录就会被分组显示。且,ORDER BY,子句必须出现在,COMPUTE BY,子句前,其使用字段必须顺序相同。,不能同时使用,SELECT INTO,和,COMPUTE,,因为,COMPUTE,不会生成关系型的输出结果。,88,几种分组语句的区别,GROUP BY,和,HAVING,子句,只能,提供一种级别,的汇总(或分组),并不显示详细记录信息,。,GROUP BY,和,ROLLUP,运算符,可以,提供一种类型的汇总,能够,显示详细记录,并在结果集中生成汇总值,并,提供标准的关系型格式,的数据。,GROUP BY,和,CUBE,运算符,可以,提供多种类型的汇总,能够,显示详细记录,并在结果集中生成汇总值,并,提供标准的关系型格式,的数据。,COMPUTE,或,COMPUTE BY,子句,能够,显示详细记录,所产生的额外数据汇总行属于,非标准的非关系型格式,。,89,小结,掌握,1、,使用,SSMS,录入、修改、删除数据表中的数据,2、,使用,T-SQL,语句,录入、修改、删除数据表中的数据,3、,掌握对数据的简单查询,4、,掌握对数据的分组统计,了解,1、,了解,DELETE,和,TRUNCAT,删除表的不同之处,2、,了解,COMPUTE,及,COMPUTE BY,子句,90,演讲完毕,谢谢观看!,内容总结,第四章 数据操纵语句。2. 右击【products】表,在弹出的快捷菜单中选择【打开表】选项。如果要想跳到某一条记录的话,在文本框内输入数字,再按回车键。单击菜单栏中的【视图】|【属性窗口】选项。2.选择【结果窗格】,然后再单击【运行SQL】按钮。INTO:一个可选的关键字,可以将它用在 INSERT 和目标表之间。必须用圆括号将column_list括起来,并且用逗号进行分隔。VALUES(图书,所有类型的图书)。SET lastname=bb。SET unitprice=unitprice-5。1.记录删除之后不能再撤消删除。WHERE employees.employeeid=orders.employeeid。AND employees.firstname=Nancy。删除学生信息管理数据库student中教师表teachers中的所有记录。%_%:特殊字符的处理用【】匹配,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!