欢迎来到天天文库
浏览记录
ID:61748450
大小:1.34 MB
页数:176页
时间:2020-02-06
《第4章 数据库的查询和视图.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第4章数据库的查询和视图4.1数据库的查询4.2视图4.3游标4.1数据库的查询SELECT语法:SELECT[INTO]FROM[WHERE][GROUPBY][HAVING][ORDERBY[ASC
2、DESC]4.1.1选择列通过SELECT语句的3、t>项组成结果表的列。::=SELECT[ALL4、DISTINCT][TOPn[PERCENT][WITHTIES]]{*/*选择当前表或视图的所有列*/5、{table_name6、view_name7、table_alias}.*/*选择指定的表或视图的所有列*/8、{colume_name9、expression10、IDENTITYCOL11、ROWGUIDCOL}[[AS]column_alias]/*选择指定的列*/12、column_alias=expression/*选择指定13、列并更改列标题*/}[,…n]本小节讨论上述格式中的常用表示方法。1.选择一个表中指定的列一般情况下,希望包含在结果表中的列表清单在SELECT关键字之后,就像前面用到的那样,当在SELECT关键字后面指定*时,就表示全部列都包含在结果表中。不指定*,可以列出一个表中的某些列,各列名之间要以逗号分隔。4.1.1选择列【例4.1】查询XSCJ数据库的XS表中各个同学的姓名、专业名和总学分。USEXSCJSELECT姓名,专业名,总学分FROMXS执行结果如图4.1所示。图4.1在XS表中选择列4.14、1.1选择列【例4.2】查询XS表中计算机专业同学的学号、姓名和总学分。查询XS表中的所有列。SELECT学号,姓名,总学分FROMXSWHERE专业名=‘计算机’GOSELECT*FROMXSGO当在SELECT语句指定列的位置上使用*号时,表示选择表的所有列。执行后将列出XS表中的所有数据,如图4.2所示:4.1.1选择列图4.2XS表中的所有数据记录4.1.1选择列2.修改查询结果中的列标题当希望查询结果中的某些列或所有列显示时使用自己选择的列标题时,可以在列名之后使用AS子句来更改查询结15、果的列标题名。其中column_alias是指定的列标题。【例4.3】查询XS表中计算机系同学的学号、姓名和总学分,结果中各列的标题分别指定为number、name和mark。SELECT学号ASnumber,姓名ASname,总学分ASmarkFROMXSWHERE专业名=‘计算机’4.1.1选择列该语句的执行结果如图4.3所示。更改查询结果中的列标题也可以使用column_alias=expression的形式。例如:SELECTnumber=学号,name=姓名,mark=总学分FROMX16、SWHERE专业名=’计算机’该语句的执行结果与上例的结果完全相同。图4.3更改查询结果的列标题4.1.1选择列注意,当自定义的列标题中含有空格时,必须使用引号将标题括起来。例如:SELECT‘Studentnumber’=学号,姓名AS‘Studentname’,mark=总学分FROMXSWHERE专业名=‘计算机’4.1.1选择列3.替换查询结果中的数据在对表进行查询时,有时对所查询的某些列希望得到的是一种概念而不是具体的数据。例如查询XS表的总学分,所希望知道的是学习的总体情况,这时,就17、可以用等级来替换总学分的具体数字。4.1.1选择列3.替换查询结果中的数据要替换查询结果中的数据,则要使用查询中的CASE表达式,格式为:CASEWHEN条件1THEN表达式1WHEN条件2THEN表达式2……ELSE表达式ENDSQLServer按照顺序计算每一个条件,如果找到条件为真的语句,SQLServer就执行TEHN关键字后的表达式;否则执行可选的ELSE关键字后的语句。若没有为真的条件,也没有关键字,则CASE表达式返回值为空。4.1.1选择列【例4.4】查询XS表中计算机系各同学的18、学号、姓名和总学分,对其总学分按以下规则进行替换:若总学分为空值,替换为“尚未选课”;若总学分小于50,替换为“不及格”;若总学分在50与52之间,替换为“合格”;若总学分大于52,替换为“优秀”。列标题更改为“等级”。SELECT学号,姓名,等级=CASEWHEN总学分ISNULLTHEN‘尚未选课’WHEN总学分<50THEN‘不及格’WHEN总学分>=50and总学分<=52THEN‘合格’ELSE‘优秀’ENDFROMXSWHERE专业名=’计算机’4.1.1选择列该语句的执行结果如图4
3、t>项组成结果表的列。::=SELECT[ALL
4、DISTINCT][TOPn[PERCENT][WITHTIES]]{*/*选择当前表或视图的所有列*/
5、{table_name
6、view_name
7、table_alias}.*/*选择指定的表或视图的所有列*/
8、{colume_name
9、expression
10、IDENTITYCOL
11、ROWGUIDCOL}[[AS]column_alias]/*选择指定的列*/
12、column_alias=expression/*选择指定
13、列并更改列标题*/}[,…n]本小节讨论上述格式中的常用表示方法。1.选择一个表中指定的列一般情况下,希望包含在结果表中的列表清单在SELECT关键字之后,就像前面用到的那样,当在SELECT关键字后面指定*时,就表示全部列都包含在结果表中。不指定*,可以列出一个表中的某些列,各列名之间要以逗号分隔。4.1.1选择列【例4.1】查询XSCJ数据库的XS表中各个同学的姓名、专业名和总学分。USEXSCJSELECT姓名,专业名,总学分FROMXS执行结果如图4.1所示。图4.1在XS表中选择列4.
14、1.1选择列【例4.2】查询XS表中计算机专业同学的学号、姓名和总学分。查询XS表中的所有列。SELECT学号,姓名,总学分FROMXSWHERE专业名=‘计算机’GOSELECT*FROMXSGO当在SELECT语句指定列的位置上使用*号时,表示选择表的所有列。执行后将列出XS表中的所有数据,如图4.2所示:4.1.1选择列图4.2XS表中的所有数据记录4.1.1选择列2.修改查询结果中的列标题当希望查询结果中的某些列或所有列显示时使用自己选择的列标题时,可以在列名之后使用AS子句来更改查询结
15、果的列标题名。其中column_alias是指定的列标题。【例4.3】查询XS表中计算机系同学的学号、姓名和总学分,结果中各列的标题分别指定为number、name和mark。SELECT学号ASnumber,姓名ASname,总学分ASmarkFROMXSWHERE专业名=‘计算机’4.1.1选择列该语句的执行结果如图4.3所示。更改查询结果中的列标题也可以使用column_alias=expression的形式。例如:SELECTnumber=学号,name=姓名,mark=总学分FROMX
16、SWHERE专业名=’计算机’该语句的执行结果与上例的结果完全相同。图4.3更改查询结果的列标题4.1.1选择列注意,当自定义的列标题中含有空格时,必须使用引号将标题括起来。例如:SELECT‘Studentnumber’=学号,姓名AS‘Studentname’,mark=总学分FROMXSWHERE专业名=‘计算机’4.1.1选择列3.替换查询结果中的数据在对表进行查询时,有时对所查询的某些列希望得到的是一种概念而不是具体的数据。例如查询XS表的总学分,所希望知道的是学习的总体情况,这时,就
17、可以用等级来替换总学分的具体数字。4.1.1选择列3.替换查询结果中的数据要替换查询结果中的数据,则要使用查询中的CASE表达式,格式为:CASEWHEN条件1THEN表达式1WHEN条件2THEN表达式2……ELSE表达式ENDSQLServer按照顺序计算每一个条件,如果找到条件为真的语句,SQLServer就执行TEHN关键字后的表达式;否则执行可选的ELSE关键字后的语句。若没有为真的条件,也没有关键字,则CASE表达式返回值为空。4.1.1选择列【例4.4】查询XS表中计算机系各同学的
18、学号、姓名和总学分,对其总学分按以下规则进行替换:若总学分为空值,替换为“尚未选课”;若总学分小于50,替换为“不及格”;若总学分在50与52之间,替换为“合格”;若总学分大于52,替换为“优秀”。列标题更改为“等级”。SELECT学号,姓名,等级=CASEWHEN总学分ISNULLTHEN‘尚未选课’WHEN总学分<50THEN‘不及格’WHEN总学分>=50and总学分<=52THEN‘合格’ELSE‘优秀’ENDFROMXSWHERE专业名=’计算机’4.1.1选择列该语句的执行结果如图4
此文档下载收益归作者所有