版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章数据操纵语句4.1在SQLServerManagementStudio中查看记录
4.2INSERT语句4.3UPDATE语句4.4DELETE语句4.5简单查询4.6数据统计查询
1第四章数据操纵语句4.1在SQLServerMana4.1在SQLServerManagementStudio中查看记录4.1.1打开表4.1.2快速定位记录4.1.3返回前几条记录24.1在SQLServerManagementStu4.1.1打开表例:在SQLserverManagementStudio中打开“Northwind”数据库中的“products”表。1.启动【SQLserverManagementStudio】,在【对象资源管理器】中展开树形目录,定位到【products】表。2.右击【products】表,在弹出的快捷菜单中选择【打开表】选项。3.此时已经将【products】表打开了,右边对话框显示的是【products】表里的记录内容,该表格对话框名为【结果窗格】。34.1.1打开表例:在SQLserverManagem4.1.2快速定位记录在【结果窗格】的最下方,可以快速定位到上一条、下一条记录,也可以直接跳到第一条、最后一条记录。如果要想跳到某一条记录的话,在文本框内输入数字,再按回车键。
44.1.2快速定位记录在【结果窗格】的最下方,可以4.1.3返回前几条记录1.在打开表之后,调出【属性】对话框。调出方法为:单击菜单栏中的【视图】|【属性窗口】选项。在【属性】对话框里,展开【TOP规范】选项,在【(最前面)】下拉列表框里选择【是】选项,在【percent】下拉列表框里选择【否】选项,在【表达式】文本框里输入数字“10”。2.选择【结果窗格】,然后再单击【运行SQL】按钮。在【结果窗格】里只显示前十条记录。54.1.3返回前几条记录1.在打开表之后,调出【属性】对话第四章数据操纵语句4.1在SQLServerManagementStudio中查看记录
4.2INSERT语句
4.3UPDATE语句4.4DELETE语句4.5简单查询4.6数据统计查询
6第四章数据操纵语句4.1在SQLServerMana4.2INSERT语句4.2.1在SSMS中插入记录4.2.2用INSERT语句记录74.2INSERT语句4.2.1在SSMS中插入记录74.2.1在SSMS中插入记录注意事项:1.标识列、计算列的字段不能输入字段内容。2.不能为NULL值的字段必须输入字段内容。3.输入字段内容的数据类型要和字段定义的数据类型一致。4.如果字段上有约束,一定要符合约束要求。5.如果要让字段输入默认值,则不用在字段内输入任何数据,在保存记录时,SQLserver会自动填入默认值,但前提是该字段设置有默认值。
84.2.1在SSMS中插入记录注意事项:84.2.2用INSERT语句记录语法格式如下:INSERT[INTO]
table_name
{[(column_list)]{VALUES({expression}[,...n])}}94.2.2用INSERT语句记录语法格式如下:94.2.2用INSERT语句记录语法注释:
[INTO]:一个可选的关键字,可以将它用在INSERT和目标表之间。table_name:将要接收数据的表或table变量的名称。
(column_list):要在其中插入数据的一列或多列的列表。必须用圆括号将column_list括起来,并且用逗号进行分隔。VALUES:引入要插入的数据值的列表。对于column_list(如果已指定)中或者表中的每个列,都必须有一个数据值。必须用圆括号将值列表括起来。如果VALUES列表中的值与表中列的顺序不相同,或者未包含表中所有列的值,那么必须使用column_list明确地指定存储每个传入值的列。104.2.2用INSERT语句记录语法注释:104.2.2用INSERT语句记录1.最简单的INSERT语句
[示范案例1]
在“Northwind”数据库的“OrderDetails”表里插入一条记录,其中“OrderID”字段的值为10248;“ProductID”字段的值为1;“UnitPrice”字段的值为10;“Quantity”字段的值为2;“Discount”字段的值为0.8。程序清单如下:INSERT[orderdetails](orderid,productid,unitprice,quantity,discount)VALUES(10248,1,10,2,0.8)114.2.2用INSERT语句记录1.最简单的INSERT4.2.2用INSERT语句记录2.省略清单的INSERT语句[示范案例2]
在上例中省略字段清单,程序清单如下:INSERT[orderdetails]VALUES(10249,2,10,2,0.9)124.2.2用INSERT语句记录2.省略清单的INSERT4.2.2用INSERT语句记录3.标识列、允许为空字段的处理[示范案例3]
在“Northwind”数据库的“Categories”表里插入一条记录,其中“CategoryName”字段的值为“图书”;“Description”字段的值为“所有类型的图书”。程序清单如下:INSERTINTOcategories(categoryname,description)VALUES('图书','所有类型的图书')134.2.2用INSERT语句记录3.标识列、允许为空字段的4.2.2用INSERT语句记录4.有默认值字段的处理[示范案例4]
在“学生”数据库中创建“教师”表(性别为有默认值列)
。在该表中录入数据。程序清单如下:INSERTINTOteachers(teach_id,teach_name,tsex,tdegree)VALUES('rj001','李波',DEFAULT,'本科')144.2.2用INSERT语句记录4.有默认值字段的处理144.2.2用INSERT语句记录5.省略VALUES清单的INSERT语句
在T-SQL中,有一种简单的插入多行的方法。这种方法是使用SELECT语句查询出的结果代替VALUES子句。这种方法的语法结构如下:
INSERT[INTO]table_name(column_name1[,column_name2,…column_namen])
SELECTcolumn_name[,…n]
FROMtable_name
WHEREsearch_conditions154.2.2用INSERT语句记录5.省略VALUES清单的4.2.2用INSERT语句记录[示范案例5]在“Northwind”数据库中,从“Employees”表里查出“EmployeeID”、“LastName”、“FirstName”、“PostalCode”、“City”、“Address”、“HomePhone”7个字段,组成一个“雇员通信录”表。164.2.2用INSERT语句记录[示范案例5]164.2.2用INSERT语句记录程序清单如下:CREATETABLE雇员通信录(雇员IDintprimarykey,姓氏nvarchar(20)notnull,名字nvarchar(10)notnull,邮政编码nvarchar(10)null,城市nvarchar(15)null,地址nvarchar(60)null,家庭电话nvarchar(24)null)GOINSERTINTO雇员通信录SELECTemployeeid,lastname,firstname,postalcode,city,address,homephoneFROMemployeesGO174.2.2用INSERT语句记录程序清单如下:17第四章数据操纵语句4.1在SQLServerManagementStudio中查看记录
4.2INSERT语句4.3UPDATE语句
4.4DELETE语句4.5简单查询4.6数据统计查询
18第四章数据操纵语句4.1在SQLServerMana4.3UPDATE语句4.3.1在SSMS中更新记录4.3.2用UPDATE语句更新记录194.3UPDATE语句4.3.1在SSMS中更新记录194.3.1在SSMS中更新记录注意事项:1.在修改char和nchar这类长度固定的字段时,要注意其后的空格。2.在可以为空值NULL的字段中,如果要设为NULL,可以按Ctrl+0键。3.如果将记录字段内容修改过后,又想回到修改前的值,可用将光标聚焦到该字段,然后按Esc键。4.如果想放弃整条记录的修改,可以连按两次Esc键。204.3.1在SSMS中更新记录注意事项:204.3.2用UPDATE语句更新记录语法格式如下:
UPDATEtable_name
SET{column_name={expression|DEFAULT|NULL}}[,...n][FROM{<table_source>}[,...n]][WHERE<search_condition>]<table_source>::=table_name[[AS]table_alias][WITH(<table_hint>[,...n])]214.3.2用UPDATE语句更新记录语法格式如下:214.3.2用UPDATE语句更新记录语法注释:table_name:需要更新的表的名称。SET:指定要更新的列或变量名称的列表。column_name:含有要更改数据的列的名称。{expression|DEFAULT|NULL}:列值表达式。
<table_source>:修改数据来源表。
224.3.2用UPDATE语句更新记录语法注释:224.3.2用UPDATE语句更新记录[示范案例6]使用T-SQL语句,将“Northwind”数据库“Employees”表中“EmployeeID”字段值为1的记录的“LastName”字段值修改为“bb”。程序清单如下:
UPDATEemployeesSETlastname='bb'WHEREemployeeid=1234.3.2用UPDATE语句更新记录[示范案例6]234.3.2用UPDATE语句更新记录[示范案例7]用计算值来更新记录,修改“Northwind”数据库“Products”表中“ProductID”字段值为1的记录的“UnitPrice”字段的值,使其值在当前的基础上减少5。程序清单如下:
UPDATEproductsSETunitprice=unitprice-5WHEREproductid=1244.3.2用UPDATE语句更新记录[示范案例7]24第四章数据操纵语句4.1在SQLServerManagementStudio中查看记录
4.2INSERT语句4.3UPDATE语句4.4DELETE语句
4.5简单查询4.6数据统计查询
25第四章数据操纵语句4.1在SQLServerMana4.4DELETE语句4.4.1在SSMS中删除记录4.4.2用DELETE语句删除记录4.4.3用Truncatetable语句删除记录
264.4DELETE语句4.4.1在SSMS中删除记录264.4.1在SSMS中删除记录注意事项:1.记录删除之后不能再撤消删除。2.一次可以删除多条记录。3.在选择记录后,按Delete键也可以进行删除操作。4.如果要删除的记录是其他表的外键字段,删除操作可能会影响外键表。274.4.1在SSMS中删除记录注意事项:274.4.2用DELETE语句删除记录语法格式如下:DELETEtable_name[FROM{<table_source>}[,...n]][WHERE{<search_condition>}]<table_source>::=table_name[[AS]table_alias][,...n])]
284.4.2用DELETE语句删除记录语法格式如下:284.4.2用DELETE语句删除记录
语法注释:table_name:是要从其中删除行的表的名称。FROM<table_source>:指定附加的FROM子句。table_name[[AS]table_alias]:是为删除操作提供标准的表名。WHERE:指定用于限制删除行数的条件。如果没有提供WHERE子句,则DELETE删除表中的所有行。<search_condition>:指定删除行的限定条件。对搜索条件中可以包含的谓词数量没有限制。
294.4.2用DELETE语句删除记录语法注释:294.4.2用DELETE语句删除记录[示范案例8]将“Northwind”数据库“OrderDetails”表中“OrderID”字段值为10251的记录删除。程序清单如下:
DELETE[orderdetails]WHEREorderid=10251304.4.2用DELETE语句删除记录[示范案例8]304.4.2用DELETE语句删除记录[示范案例9]在“Northwind”数据库中删除雇员“Nancy”的所有订单。在该例中删除的数据引用的是雇员表中的数据。程序清单如下:
select*fromorderswhereemployeeid=1
DELETEordersFROMemployeesWHEREemployees.employeeid=orders.employeeidANDemployees.firstname='Nancy'314.4.2用DELETE语句删除记录[示范案例9]314.4.3用TRUNCATETABLE语句删除记录基本语法格式:TRUNCATETABLEtable_name功能:删除表中的所有记录语法注释:TRUNCATETABLE:为关键字
table_name:为要删除所用记录的表名。324.4.3用TRUNCATETABLE语句删除记录基本语4.4.3用TRUNCATETABLE语句删除记录TRUNCATE与DELETE比较:比DELETE快,不记录日志的操作,它将释放表的数据和索引所占据的所有空间及所有为全部索引分配的页,删除的数据是不可恢复的。334.4.3用TRUNCATETABLE语句删除记录TR4.4.3用TRUNCATETABLE语句删除记录[示范案例10]删除学生信息管理数据库student中教师表teachers中的所有记录
。程序清单如下:DELETEteachers或TRUNCATETABLEteachers344.4.3用TRUNCATETABLE语句删除记录[示范第四章数据操纵语句4.1在SQLServerManagementStudio中查看记录
4.2INSERT语句4.3UPDATE语句4.4DELETE语句4.5简单查询4.6数据统计查询
35第四章数据操纵语句4.1在SQLServerMana4.5简单查询
4.5.1选择表中的若干列
4.5.2选择表中的若干记录
4.5.3对查询的结果排序
364.5简单查询4.5.1选择表中的若干列364.5简单查询基本语法格式:SELECT[DISTINCT|TOPn[PERCENT][WITHTIES]]select_list
FROMtable_list[WHEREsearch_conditions]
[ORDERBYorder_list[ASC|DESC]]
374.5简单查询基本语法格式:374.5简单查询注释说明:SELECT子句用于指定所选择的要查询的特定表中的列,它可以是星号(*)、表达式、列表、变量等。FROM子句用于指定要查询的表或者视图,最多可以指定16个表或者视图,用逗号相互隔开。WHERE子句用来限定查询的范围和条件。ORDERBY用于指定排序方式。DISTINCT用于消除结果集中的重复值。TOPn[PERCENT]用于显示前n条或n%条的记录信息.WITHTIES用于在结果集中包含附加记录,在使用ORDER
BY子句时,当出现两个或多个记录和最后一条记录的值相等时,这些附加记录也将出现在结果集中。384.5简单查询注释说明:384.5.1选择表中的若干列1.查询表中的所有列[示范案例11]
查询“Northwind”数据库中Categories表中的所有记录
。程序清单如下:USEnorthwindGOSELECT*FROMcategoriesGO
394.5.1选择表中的若干列1.查询表中的所有列394.5.1选择表中的若干列2.查询表中部分列
[示范案例12]查询“Northwind”数据库中“Categories”表中的“categoryname”和“description”字段
。程序清单如下:
USEnorthwindGOSELECTcategoryname,DescriptionFROMcategoriesGO404.5.1选择表中的若干列2.查询表中部分列404.5.1选择表中的若干列3.为结果集内的列指定别名格式:表达式AS别名由于计算列不是数据表中的列,所以用到了“AS”关键字来指定列的别名。即使要查询的列是数据表中真实存在的列,也可以用“AS”来指定别名。关键字AS可以省略。414.5.1选择表中的若干列3.为结果集内的列指定别名414.5.1选择表中的若干列[示范案例13]查询“Northwind”数据库中“OrderDetails”表中每个订单的总价
。程序清单如下:USEnorthwindGOSELECTorderid,productid,unitprice,quantity,discount,unitprice*(1-discount)*quantityASzongjiaFROM[orderdetails]GO
424.5.1选择表中的若干列[示范案例13]424.5.2选择表中的若干记录1.查看不重复记录—DISTINCT例如,在“Northwind”数据库中要查看货物在哪些城市里有过销售记录。在订购表“Orders”中有一个字段是“ShipCity”,通过查询这个字段,就可以了解货物曾经销往过哪些城市。如果程序代码如下:
SELECTshipcityFROMorders
或SELECTALLshipcityFROMorders434.5.2选择表中的若干记录1.查看不重复记录—DISTI4.5.2选择表中的若干记录如果要显示不重复的记录的话,可以使用如下代码:SELECTDISTINCTshipcityFROMordersDistinct关键字可以同时指定多个字段,例如同时指定两个字段的话,那么查询的结果是两个字段同时不重复的记录,如以下代码:SELECTDISTINCTshipname,shipcityFROMorders444.5.2选择表中的若干记录如果要显示不重复的记录的话,可4.5.2选择表中的若干记录[示范案例14]在“northwind”数据库中“suppliers”表中检索所有行,但每个国家“Country”只显示一次。程序清单如下:USEnorthwindGOSELECTDISTINCTcountryFROMsuppliersGO
454.5.2选择表中的若干记录[示范案例14]454.5.2选择表中的若干记录2.查看满足条件记录—WHERE
如果只希望得到表中满足特定条件的一些记录,用户可以在查询语句中使用WHERE子句。464.5.2选择表中的若干记录2.查看满足条件记录—WHER4.5.2选择表中的若干记录常用的查询条件:查询条件运算符意义比较=,>,<,>=-,<=,!=,<>,!>,!<;NOT+上述运算符比较大小确定范围BETWEENAND,NOTBETWEENAND判断值是否在范围内确定集合IN,NOTIN判断值是否为列表中的值字符匹配LIKE,NOTLIKE判断值是否与指定的字符通配格式相符空值ISNULL,ISNOTNULL判断值是否为空多重条件AND,OR,NOT用于多重条件判断474.5.2选择表中的若干记录常用的查询条件:查询条件运算(1)比较大小
[示范案例15]查询“Northwind”数据库中“Products”表中库存量unitinstock不为零的产品
。程序清单如下:USEnorthwindGOSELECT*FROMproductsWHEREunitsinstock<>0
GO
4.5.2选择表中的若干记录48(1)比较大小4.5.2选择表中的若干记录48(2)确定范围[示范案例16]在“Northwind”数据库中“products”表中检索“unitprice”在$10.00到$20.00之间的所有产品的产品名称和单价
。程序清单如下:SELECT*FROMproductsWHEREunitpriceBETWEEN10AND20GO
4.5.2选择表中的若干记录49(2)确定范围4.5.2选择表中的若干记录49(3)确定集合IN[示范案例17]在“northwind”数据库中“suppliers”表中检索坐落在日本或意大利的公司列表
。程序清单如下:SELECT*FROMsuppliersWHEREcountryIN('Japan','Italy')4.5.2选择表中的若干记录50(3)确定集合IN4.5.2选择表中的若干记录504.5.2选择表中的若干记录(4)模糊查询—通配符:语法格式:
[not]like‘<匹配串>’[ESCAPE‘<换码字符>’]%:代表任意长度的字符串(长度可为0)的字符串。_:代表任意单个字符。[]:表示和方括号中列出的任意一个字符相匹配。[^]:表示不在方括号中列出的任意一个字符。%[_]%:特殊字符的处理用【】匹配。514.5.2选择表中的若干记录(4)模糊查询—通配符:514.5.2选择表中的若干记录字符匹配[示范案例18]在“northwind”数据库“customers”表中检索公司名称中包含字符串“restaurant”公司名称。程序清单如下:SELECT*FROMcustomersWHEREcompanynameLIKE'%restaurant%'524.5.2选择表中的若干记录字符匹配524.5.2选择表中的若干记录转义字符的使用:[示范案例19]在“northwind”数据库的类别“categories”表查询类别名称categoryName中包含下划线’_’的所有的类别记录信息
。程序清单如下:
SELECT*FROMcategoriesWHEREcategorynameLIKE'%_%'
534.5.2选择表中的若干记录转义字符的使用:534.5.2选择表中的若干记录(5)涉及空值(非空值)查询
列表达式is[not]null[示范案例20]在“northwind”数据库“Customers”表中查看区域为空值的顾客信息
。程序清单如下:SELECT*FROMcustomersWHEREregionISNULL544.5.2选择表中的若干记录(5)涉及空值(非空值)查询54.5.2选择表中的若干记录(6)多重条件查询[示范案例21]在“northwind”数据库“products”表中检索产品名称“productname”以字母T开头或产品标识为46,并且单价大于$16.00
。程序清单如下:SELECT*FROMproductsWHERE(productnameLIKE't%'ORproductid=46)ANDunitprice>16554.5.2选择表中的若干记录(6)多重条件查询554.5.2选择表中的若干记录3.限制返回行数—TOPTOPn
[PERCENT][WITHTIES][示范案例22]在“Northwind”数据库“orderdetails”订单明细表中查看订购数量最多的五条订单
。程序清单如下:SELECTTOP5*FROM[orderdetails]ORDERBYquantityDESC564.5.2选择表中的若干记录3.限制返回行数—TOP564.5.3对查询的结果排序用户可以使用ORDERBY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,默认为升序。如果不使用ORDERBY子句,则结果集按照记录在表中的顺序排列。基本语法格式:ORDERBY列名[,列名]DESC|ASC
574.5.3对查询的结果排序用户可以使用ORDER4.5.3对查询的结果排序[示范案例23]在“Northwind”数据库“products”产品表中查看所有产品记录,并以产品名排序。程序清单如下:SELECT*FROMproductsORDERBYproductname584.5.3对查询的结果排序[示范案例23]584.5.3对查询的结果排序当按多列排序时,先按前面的列排序,如果值相同再按后面的列排序。[示范案例24]在“Northwind”数据库“products”产品表中查看所有产品记录,并以供应商编号和产品名排序。程序清单如下:
SELECT*FROMproductsORDERBYsupplierid,productname
594.5.3对查询的结果排序当按多列排序时,先按前面第四章数据操纵语句4.1在SQLServerManagementStudio中查看记录
4.2INSERT语句4.3UPDATE语句4.4DELETE语句4.5简单查询4.6数据统计查询
60第四章数据操纵语句4.1在SQLServerMana4.6数据统计查询4.6.1使用聚合函数4.6.2对结果进行分组4.6.3用COMPUTE子句来归类
614.6数据统计查询4.6.1使用聚合函数614.6.1使用聚合函数SQLServer提供了许多聚合函数,主要有:聚合函数描述AVG(列名)计算给定列的平均值COUNT
(列名)计算表达式中值的数目COUNT
(*)计算所选择的行的数目MAX
(列名)计算给定列的中的最大值MIN
(列名)计算给定列的中最小值SUM(列名)计算给定列的中所有值的和624.6.1使用聚合函数SQLServer提供了许多聚合函4.6.1使用聚合函数
字段的数据类型决定了可以用在该字段上的聚合函数类型。如:SUM和AVG只能用在数据类型代表数字的字段上。634.6.1使用聚合函数字段的数据类型决定了可以用在4.6.1使用聚合函数[示范案例25]
在“Northwind”数据库中查询“employees”表中雇员的数目
。程序清单如下:
SELECTcount(*)AS雇员数目
FROMemployees644.6.1使用聚合函数[示范案例25]644.6.1使用聚合函数实验并思考:1)如果本例中将count(*)更改为count(employeeid),其显示的个数为多少?2)如果改为count(city)呢?结果又如何呢?
654.6.1使用聚合函数实验并思考:654.6.1使用聚合函数对包含空值的字段使用聚合函数时,应注意SQLServer的聚合函数(COUNT(*)除外)将忽略字段中的空值。COUNT(*)将计算所有的行,即使每个字段都含有空值。664.6.1使用聚合函数对包含空值的字段使用聚合函数时,应注4.6.2对结果进行分组GROUPBY子句将查询结果集按某一列或多列值分组,分组列的值相等的为一组,并对每一组进行统计计算。对查询结果集分组的目的是为了细化聚合函数的作用对象。
GROUPBY子句的语法格式为:
GROUPBY[ALL]列名[,列名]…[WITH{CUBE|ROLLUP}][HAVING筛选条件表达式]674.6.2对结果进行分组GROUPBY子句将查询4.6.2对结果进行分组
语法注释:ALL:用于指定包含所有组和结果集
。BY列名:是按列名指定的字段进行分组
。使用WITHCUBE会对GROUPBY所列出的所有分组字段进行汇总运算
。使用WITHROLLUP会对GROUPBY所列出的第一个分组字段进行汇总运算
。HAVING筛选条件表达式:表示对生成的组筛选后再对满足条件的组进行统计
。
684.6.2对结果进行分组语法注释:68USEnorthwindSELECTproductid,orderid
,quantityFROM[orderdetails]
GOproductidorderidquantity11511102110222531153230productidtotal_quantity235只对满足
WHERE
子句的行分组productidtotal_quantity115235345USEnorthwindSELECTproductid,SUM(quantity)AStotal_quantityFROM[orderdetails]GROUPBYproductid
GO示例
1USEnorthwindSELECTproductid,SUM(quantity)AStotal_quantityFROM[orderdetails]
WHEREproductid=2GROUPBYproductid
GO示例24.6.2对结果进行分组69USEnorthwindproductidorderidq4.6.2对结果进行分组[示范案例26]统计“northwind”数据库“orders”表中每个城市的订单总数。程序清单如下:
SELECTshipcity,count(orderid)AS订单总数
FROMordersGROUPBYshipcity704.6.2对结果进行分组[示范案例26]704.6.2对结果进行分组使用GROUPBY子句时,应注意SQLServer将为每一组计算一个汇总值,并把汇总值保存在一个字段中。对于指定的一组,SQLServer只生成一条记录,不返回详细信息。SQLServer只对满足WHERE子句的记录进行分组和汇总。不要对可能包含空值的字段使用GROUPBY子句,因为空值也将被当作一组,而不管记录是否满足WHERE子句的条件。714.6.2对结果进行分组使用GROUPBY子句时,应USEnorthwindSELECTproductid,orderid,quantityFROM[orderdetails]
GOproductidorderidquantity11511102110222531153230productidtotal_quantity235345USEnorthwindSELECTproductid,SUM(quantity)AStotal_quantityFROM[orderdetails]GROUPBYproductid
HAVINGSUM(quantity)>=30
GO示例4.6.2对结果进行分组72USEnorthwindproductidorderidq4.6.2对结果进行分组[示范案例27]统计“northwind”数据库订购“orders”表中订单总数超过20的城市,以及这些城市的订单总数和总运费
。程序清单如下:
SELECTshipcity,count(orderid)订单总数,
sum(freight)运货费总数
FROMordersGROUPBYshipcityHAVINGcount(orderid)>20734.6.2对结果进行分组[示范案例27]73USEnorthwindSELECTproductid,orderid,quantityFROM[orderdetails]
GOproductidorderidquantity11511102110222531153230USEnorthwindSELECTproductid,orderid,SUM(quantity)AStotal_quantityFROM[orderdetails]
GROUPBYproductid,orderidGO示例
4.6.2对结果进行分组productidorderidquantity1115211022253115323074USEnorthwindproductidorderidq4.6.2对结果进行分组[示范案例28]在“northwind”数据库订购“orders”表中按年份统计每个城市的订单总数
。程序清单如下:
SELECTshipcity,count(orderid)订单总数,year(orderdate)AS订购年份FROMordersGROUPBYshipcity,year(orderdate)ORDERBYshipcity,year(orderdate)754.6.2对结果进行分组[示范案例28]754.6.2对结果进行分组CUBE操作符比ROLLUP操作符多产生两个汇总值总数对
orderid1中的所有行汇总对
orderid2中的所有行汇总只对productid1中的行汇总productid1、orderid1的具体值productid1、orderid2的具体值只对
productid2中的行汇总productid2、orderid1的具体值productid2、orderid2的具体值只对
productid3中的行汇总productid3、orderid1的具体值productid3、orderid2的具体值productidorderidtotal_quantityNULLNULL95NULL130NULL2651NULL1511512102NULL35211022253NULL4531153230描述USEnorthwindSELECTproductid,orderid,SUM(quantity)AStotal_quantityFROM[orderdetails]GROUPBYproductid,orderid
WITHCUBE
ORDERBYproductid,orderid
GO示例764.6.2对结果进行分组CUBE操作符比总数对orde4.6.2对结果进行分组[示范案例29]统计“Northwind”数据库“orders”表中每个城市的订单总数,并进行汇总。程序清单如下:SELECTshipcity,count(orderid)AS订单总数FROMordersGROUPBYshipcityWITHCUBE774.6.2对结果进行分组[示范案例29]774.6.2对结果进行分组联合使用GROUPBY子句和CUBE操作符,能生成基于GROUPBY子句指定的所有字段的可能组合使用GROUPBY子句和CUBE操作符时,应注意如果在GROUPBY子句中有
n
个字段或表达式,SQLServer将在结果集中返回2n
种可能的组合。结果集中含有NULL的记录代表该记录由CUBE操作符生成。784.6.2对结果进行分组联合使用GROUPBY子句和4.6.2对结果进行分组描述USEnorthwindSELECTproductid,orderid,SUM(quantity)AStotal_quantityFROM[orderdetails]GROUPBYproductid,orderid
WITHROLLUPORDERBYproductid,orderid
GO示例productidorderidtotal_quantityNULLNULL951NULL1511512102NULL35211022253NULL4531153230总数只对productid1中的行汇总productid1、orderid1的具体值productid1、orderid2的具体值只对
productid2中的行汇总productid2、orderid1的具体值productid2、orderid2的具体值只对
productid3中的行汇总productid3、orderid1的具体值productid3、orderid2的具体值794.6.2对结果进行分组描述USEnorthwind示例4.6.2对结果进行分组[示范案例30]在“Northwind”数据库“orders”表中按年份统计每个城市的订单总数,并按城市进行汇总。程序清单如下:
SELECTshipcity,year(orderdate)AS订购年份,
count(orderid)AS订单总数
FROMordersGROUPBYshipcity,year(orderdate)WITHROLLUP
804.6.2对结果进行分组[示范案例30]804.6.2对结果进行分组联合使用GROUPBY子句和ROLLUP操作符,计算组中的汇总值使用GROUPBY子句和ROLLUP操作符时,应注意SQLServer处理GROUPBY中字段列表的顺序是从右到左,然后对每个组使用聚合函数。SQLServer将在结果集中增加一行,这行将显示总和或平均值之类的汇总值,新增的行以NULL标识。814.6.2对结果进行分组联合使用GROUPBY子句和4.6.3用COMPUTE子句来归类COMPUTE子句对查询结果集中的所有记录进行汇总统计,并显示所有参加汇总记录的详细信息。当与by一起使用时,COMPUTE子句在结果集内生成控制中断和小计。可在同一查询内指定COMPUTE
BY和COMPUTE。使用语法格式为:COMPUTE聚合函数(列名)[BY列名]824.6.3用COMPUTE子句来归类COMPUT4.6.3用COMPUTE子句来归类注释说明:聚合函数(列名):例如SUM(),AVG(),COUNT()等。此处的列名用于指明要用来汇总函数处理的字段或表达式,在此不能用字段别名,并且必须是SELECT子句列表中的一项
。BY列名:按指定列名的字段进行分组计算,并显示被统计记录的详细信息
。BY选项必须与ORDERBY子句一起使用
。834.6.3用COMPUTE子句来归类注释说明:834.6.3用COMPUTE子句来归类USEnorthwindSELECTproductid,orderid,quantityFROM[orderdetails]COMPUTESUM(quantity)
GOCOMPUTE示例
1USEnorthwindSELECTproductid,orderid
,quantityFROM[orderdetails]
GOproductidorderidquantity11511102110222531153230productidorderidquantity11512102110222531153230sum95844.6.3用COMPUTE子句来归类USEnorthwi4.6.3用COMPUTE子句来归类[示范案例31]统计“northwind”数据库“orders”表中还没有发货的订单,以及运费的总数。程序清单如下:
SELECTorderid,shipcity,freightFROMordersWHEREshippeddateISNULLCOMPUTEsum(freight)854.6.3用COMPUTE子句来归类[示范案例31]854.6.3用COMPUTE子句来归类COMPUTEBYUSEnorthwindSELECTproductid,orderid,quantityFROM[orderdetails]
ORDERBYproductid,orderidCOMPUTESUM(quantity)BYproductid
COMPUTESUM(quantity)
GO示例
2USEnorthwindSELECTproductid,orderid
,quantityFROM[orderdetails]
GOproductidorderidquantity11511102110222531153230productidorderidquantity1151110sum1521102225sum3531153230sum45sum95864.6.3用COMPUTE子句来归类COMPUTEBYU4.6.3用COMPUTE子句来归类[示范案例32]在“northwind”数据库“orders”表中按城市统计还没有发货的订单,以及运费的总数。
程序清单如下:
SELECTorderid,shipcity,freightFROMordersWHEREshippeddateISNULLORDERBYshipcityDESCCOMPUTEsum(freight)BYshipcity874.6.3用COMPUTE子句来归类[示范案例32]874.6.3用COMPUTE子句来归类使用COMPUTE子句的注意事项和原则COMPUTE子句中聚合函数使用的字段必须在SELECT语句的选择列表中出现。应当同时使用ORDERBY子句和COMPUTEBY子句,这样记录就会被分组显示。且ORDERBY子句必须出现在COMPUTEBY子句前,其使用字段必须顺序相同。不能同时使用SELECTINTO和COMPUTE,因为COMPUTE不会生成关系型的输出结果。884.6.3用COMPUTE子句来归类使用COMPUTE子几种分组语句的区别GROUPBY和HAVING子句只能提供一种级别的汇总(或分组),并不显示详细记录信息。GROUPBY和ROLLUP运算符可以提供一种类型的汇总,能够显示详细记录,并在结果集中生成汇总值,并提供标准的关系型格式的数据。GROUPBY和CUBE运算符可以提供多种类型的汇总,能够显示详细记录,并在结果集中生成汇总值,并提供标准的关系型格式的数据。COMPUTE或COMPUTEBY子句能够显示详细记录,所产生的额外数据汇总行属于非标准的非关系型格式。89几种分组语句的区别GROUPBY和HAVING子句只能提供小结[掌握]1、使用SSMS录入、修改、删除数据表中的数据
2、使用T-SQL语句录入、修改、删除数据表中的数据
3、掌握对数据的简单查询4、掌握对数据的分组统计[了解]1、了解DELETE和TRUNCAT删除表的不同之处2、了解COMPUTE及COMPUTEBY子句90小结[掌握]90第四章数据操纵语句4.1在SQLServerManagementStudio中查看记录
4.2INSERT语句4.3UPDATE语句4.4DELETE语句4.5简单查询4.6数据统计查询
91第四章数据操纵语句4.1在SQLServerMana4.1在SQLServerManagementStudio中查看记录4.1.1打开表4.1.2快速定位记录4.1.3返回前几条记录924.1在SQLServerManagementStu4.1.1打开表例:在SQLserverManagementStudio中打开“Northwind”数据库中的“products”表。1.启动【SQLserverManagementStudio】,在【对象资源管理器】中展开树形目录,定位到【products】表。2.右击【products】表,在弹出的快捷菜单中选择【打开表】选项。3.此时已经将【products】表打开了,右边对话框显示的是【products】表里的记录内容,该表格对话框名为【结果窗格】。934.1.1打开表例:在SQLserverManagem4.1.2快速定位记录在【结果窗格】的最下方,可以快速定位到上一条、下一条记录,也可以直接跳到第一条、最后一条记录。如果要想跳到某一条记录的话,在文本框内输入数字,再按回车键。
944.1.2快速定位记录在【结果窗格】的最下方,可以4.1.3返回前几条记录1.在打开表之后,调出【属性】对话框。调出方法为:单击菜单栏中的【视图】|【属性窗口】选项。在【属性】对话框里,展开【TOP规范】选项,在【(最前面)】下拉列表框里选择【是】选项,在【percent】下拉列表框里选择【否】选项,在【表达式】文本框里输入数字“10”。2.选择【结果窗格】,然后再单击【运行SQL】按钮。在【结果窗格】里只显示前十条记录。954.1.3返回前几条记录1.在打开表之后,调出【属性】对话第四章数据操纵语句4.1在SQLServerManagementStudio中查看记录
4.2INSERT语句
4.3UPDATE语句4.4DELETE语句4.5简单查询4.6数据统计查询
96第四章数据操纵语句4.1在SQLServerMana4.2INSERT语句4.2.1在SSMS中插入记录4.2.2用INSERT语句记录974.2INSERT语句4.2.1在SSMS中插入记录74.2.1在SSMS中插入记录注意事项:1.标识列、计算列的字段不能输入字段内容。2.不能为NULL值的字段必须输入字段内容。3.输入字段内容的数据类型要和字段定义的数据类型一致。4.如果字段上有约束,一定要符合约束要求。5.如果要让字段输入默认值,则不用在字段内输入任何数据,在保存记录时,SQLserver会自动填入默认值,但前提是该字段设置有默认值。
984.2.1在SSMS中插入记录注意事项:84.2.2用INSERT语句记录语法格式如下:INSERT[INTO]
table_name
{[(column_list)]{VALUES({expression}[,...n])}}994.2.2用INSERT语句记录语法格式如下:94.2.2用INSERT语句记录语法注释:
[INTO]:一个可选的关键字,可以将它用在INSERT和目标表之间。table_name:将要接收数据的表或table变量的名称。
(column_list):要在其中插入数据的一列或多列的列表。必须用圆括号将column_list括起来,并且用逗号进行分隔。VALUES:引入要插入的数据值的列表。对于column_list(如果已指定)中或者表中的每个列,都必须有一个数据值。必须用圆括号将值列表括起来。如果VALUES列表中的值与表中列的顺序不相同,或者未包含表中所有列的值,那么必须使用column_list明确地指定存储每个传入值的列。1004.2.2用INSERT语句记录语法注释:104.2.2用INSERT语句记录1.最简单的INSERT语句
[示范案例1]
在“Northwind”数据库的“OrderDetails”表里插入一条记录,其中“OrderID”字段的值为10248;“ProductID”字段的值为1;“UnitPrice”字段的值为10;“Quantity”字段的值为2;“Discount”字段的值为0.8。程序清单如下:INSERT[orderdetails](orderid,productid,unitprice,quantity,discount)VALUES(10248,1,10,2,0.8)1014.2.2用INSERT语句记录1.最简单的INSERT4.2.2用INSERT语句记录2.省略清单的INSERT语句[示范案例2]
在上例中省略字段清单,程序清单如下:INSERT[orderdetails]VALUES(10249,2,10,2,0.9)1024.2.2用INSERT语句记录2.省略清单的INSERT4.2.2用INSERT语句记录3.标识列、允许为空字段的处理[示范案例3]
在“Northwind”数据库的“Categories”表里插入一条记录,其中“CategoryName”字段的值为“图书”;“Description”字段的值为“所有类型的图书”。程序清单如下:INSERTINTOcategories(categoryname,description)VALUES('图书','所有类型的图书')1034.2.2用INSERT语句记录3.标识列、允许为空字段的4.2.2用INSERT语句记录4.有默认值字段的处理[示范案例4]
在“学生”数据库中创建“教师”表(性别为有默认值列)
。在该表中录入数据。程序清单如下:INSERTINTOteachers(teach_id,teach_name,tsex,tdegree)VALUES('rj001','李波',DEFAULT,'本科')1044.2.2用INSERT语句记录4.有默认值字段的处理144.2.2用INSERT语句记录5.省略VALUES清单的INSERT语句
在T-SQL中,有一种简单的插入多行的方法。这种方法是使用SELECT语句查询出的结果代替VALUES子句。这种方法的语法结构如下:
INSERT[INTO]table_name(column_name1[,column_name2,…column_namen])
SELECTcolumn_name[,…n]
FROMtable_name
WHEREsearch_conditions1054.2.2用INSERT语句记录5.省略VALUES清单的4.2.2用INSERT语句记录[示范案例5]在“Northwind”数据库中,从“Employees”表里查出“EmployeeID”、“LastName”、“FirstName”、“PostalCode”、“City”、“Address”、“HomePhone”7个字段,组成一个“雇员通信录”表。1064.2.2用INSERT语句记录[示范案例5]164.2.2用INSERT语句记录程序清单如下:CREATETABLE雇员通信录(雇员IDintprimarykey,姓氏nvarchar(20)notnull,名字nvarchar(10)notnull,邮政编码nvarchar(10)null,城市nvarchar(15)null,地址nvarchar(60)null,家庭电话nvarchar(24)null)GOINSERTINTO雇员通信录SELECTemployeeid,lastname,firstname,postalcode,city,address,homephoneFROMemployeesGO1074.2.2用INSERT语句记录程序清单如下:17第四章数据操纵语句4.1在SQLServerManagementStudio中查看记录
4.2INSERT语句4.3UPDATE语句
4.4DELETE语句4.5简单查询4.6数据统计查询
108第四章数据操纵语句4.1在SQLServerMana4.3UPDATE语句4.3.1在SSMS中更新记录4.3.2用UPDATE语句更新记录1094.3UPDATE语句4.3.1在SSMS中更新记录194.3.1在SSMS中更新记录注意事项:1.在修改char和nchar这类长度固定的字段时,要注意其后的空格。2.在可以为空值NULL的字段中,如果要设为NULL,可以按Ctrl+0键。3.如果将记录字段内容修改过后,又想回到修改前的值,可用将光标聚焦到该字段,然后按Esc键。4.如果想放弃整条记录的修改,可以连按两次Esc键。1104.3.1在SSMS中更新记录注意事项:204.3.2用UPDATE语句更新记录语法格式如下:
UPDATEtable_name
SET{column_name={expression|DEFAULT|NULL}}[,...n][FROM{<table_source>}[,...n]][WHERE<search_condition>]<table_source>::=table_name[[AS]table_alias][WITH(<table_hint>[,...n])]1114.3.2用UPDATE语句更新记录语法格式如下:214.3.2用UPDATE语句更新记录语法注释:table_name:需要更新的表的名称。SET:指定要更新的列或变量名称的列表。column_name:含有要更改数据的列的名称。{expression|DEFAULT|NULL}:列值表达式。
<table_source>:修改数据来源表。
1124.3.2用UPDATE语句更新记录语法注释:224.3.2用UPDATE语句更新记录[示范案例6]使用T-SQL语句,将“Northwind”数据库“Employees”表中“EmployeeID”字段值为1的记录的“LastName”字段值修改为“bb”。程序清单如下:
UPDATEemployeesSETlastname='bb'WHEREemployeeid=11134.3.2用UPDATE语句更新记录[示范案例6]234.3.2用UPDATE语句更新记录[示范案例7]用计算值来更新记录,修改“Northwind”数据库“Products”表中“ProductID”字段值为1的记录的“UnitPrice”字段的值,使其值在当前的基础上减少5。程序清单如下:
UPDATEproductsSETunitprice=unitprice-5WHEREproductid=11144.3.2用UPDATE语句更新记录[示范案例7]24第四章数据操纵语句4.1在SQLServerMa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 瘢痕子宫孕妇阴道分娩围产期管理全流程循证总结2026
- 2025年建筑行业数字化转型组织文化建设
- 2026届达州市高三第二次调研历史试卷含解析
- 2025-2026学年驻马店市高考历史二模试卷含解析
- 基于认知冲突的初中数学课堂问题解决能力培养策略教学研究课题报告
- 循证康复实践中的康复-应用创新
- 2026年智能纤维创新应用报告
- 影像组学特征与肿瘤血管生成的相关性及疗效预测
- 生成式AI在教育内容创作中的知识产权保护与利益平衡教学研究课题报告
- 2026年自动驾驶交通管理创新报告及未来五至十年基础设施报告
- 贵州红星山海生物科技有限责任公司招聘笔试题库2026
- 高考听力播放应急预案(3篇)
- 区域经济研究报告:西安经济产业现状及发展建议
- 展览设计专业考试试题及答案
- 2026年政务服务知识培训课件
- 六年同窗 不负韶华-小学毕业成长纪念册
- 病理学 课件 第十四章 消化系统疾病
- 2025年管道系统安装及试验测试卷附答案
- 2026年4月自考02324离散数学试题及答案含评分参考
- 2026中考语文文言文九大主题对比整合梳理(附真题)
- 中医门诊绩效考核制度
评论
0/150
提交评论