SQL查询命令.ppt
《SQL查询命令.ppt》由会员分享,可在线阅读,更多相关《SQL查询命令.ppt(23页珍藏版)》请在冰豆网上搜索。
第14章第4节,14.4SQL查询命令,14.4.1SQLSelect语句14.4.2在查询设计器中查看Select语句,第14章第4节,14.4.1SQLSelect语句,1.命令格式2.简单查询3.简单的联接查询4.嵌套查询5.两个特殊运算符6.排序,7.简单的计算查询8.分组与计算查询9.超联接查询10.集合的并运算11.select中的几个特殊选项,第14章第4节,1.SQLSelect语句格式,Selectall|distinct.as,.asfromForce!
Inner|LeftOuter|RighterOuter|FullOuterJoin!
Oninto|tofileadditive|toprinterprompt|toscreenpreferencenoconsoleplainnowaitwhereandand|orand|orGroupBy,havingunionallorderbyasc|desc,asc|descTopPercent,第14章第4节,2.简单查询,Selectall|distinct.as,.asfrom!
Select子句中all表示选出的记录中可以包括重复记录,这是默认值;Distinct则表示选出的记录中不包括重复记录。
.as:
表达式可以是字段名,也可以是包含用户自定义函数和系统函数。
是字段所在的表名,表示输出时使用的列标题。
其中可用*代表所有的字段。
from子句用来指定查询的表及连接类型。
对于数据库表可以用!
来指定,如果此表属于当前数据库则!
可以省略不写。
简单查询应用举例:
第14章第4节,例1.从student表中检索所有的总分值。
select总分fromstudent例2.检索student表中所有元组。
select*fromstudent例3.检索student表中总分多于300分的学号。
Select学号fromstudentwhere总分300例4.检索student表中总分多于300分且是团员的学号,姓名,总分。
Select学号,姓名,总分fromstudentwhere总分300.and.团员,简单查询应用举例,第14章第4节,联接查询是基于多个关系的查询。
在此先给出一个简单的联接查询。
例5.从student和score两表中找出总分大于等于300的学号,姓名,总分,大学英语。
selectstudent.学号,姓名,总分,大学英语fromstudent,scorewhere总分=300.and.student.学号=score.学号,3.简单的联接查询,第14章第4节,4.嵌套查询,这也是一种基于多个关系的查询,这类查询所要求的结果出自一个关系,但相关的条件却涉及多个关系。
(in相当于集合运算,notin中的not两边不加园点)例6.查询大学英语=80的学生姓名。
Select姓名fromstudentwhere学号in(select学号fromscorewhere大学英语=80)例7.查询大学英语=80),第14章第4节,5.两个特殊运算符,SQLselect中有几个特殊的运算符,betweenand和!
=(不等于)例8.检索出总分在280到320范围内的学生信息。
select*fromstudentwhere总分between280and320“总分between280and320”等价于“总分=280and总分=320”例9.从teacher表中检索出职称不为讲师的。
select*fromteacherwhere职称!
=“讲师”或select*fromteacherwherenot(职称=“讲师”)not的应用范围很广,如notin,notbetween。
第14章第4节,6.排序,使用SQLselect可以将查询结果排序,排序短语是orderby,格式:
orderbyASC|DESC,ASC|DESC例10.按总分的升序检索出全部学生信息。
Select*fromstudentorderby总分desc注意:
orderby是对最终的查询结果排序,不可以在子查询中使用该短语。
第14章第4节,7.简单的计算查询,用于计算检索的函数有count(),sum(),avg(),max()和min()。
例11.找出student表中总记录数。
selectcount(*)fromstudent例12.求出student表中总分之和。
selectsum(总分)fromstudent,第14章第4节,8.分组与计算查询,利用groupby子句可以进行分组计算查询。
可以用having进一步限定分组条件。
groupby短语格式:
GroupBy,having例13.分组求男女同学的总分。
Select性别,sum(总分)fromstudentgroupby性别例14.分组求男女同学的总分,每组至少有2个同学。
select性别,sum(总分)fromstudentgroupby性别havingcount(*)=2Having子句总是跟在groupby之后,不可以单独用。
having子句和Where子句不矛盾,在查询中先用where子句限定元组,然后进行分组,最后再用having子句限定分组。
第14章第4节,9.超联接查询,与联接运算相关的语法格式为:
SelectfromInner|LeftOuter|RightOuter|FullOuterJoin!
OnWhere其中:
interjoin等价于join,为普通联接,称为内联接。
Leftjoin为左联接,即除满足联接条件的记录出现在查询结果中外,第一个表中不满足联接条件的记录也出现在查询结果中。
第14章第4节,9.超联接查询,rightjoin为右联接,即除满足联接条件的记录出现在查询结果中外,第二个表中不满足联接条件的记录也出现在查询结果中,但显示值为null。
Fulljoin为全联接,即两表中的记录不管是否满足联接条件将都在目标表或查询结果中出现,第二个表中不满足联接条件的记录对应部分为null。
On指定联接条件。
应用举例:
第14章第4节,应用举例,例15.查询student表的学号姓名总分,联接条件为student.学号=score.学号。
Selectstudent.学号,姓名,总分fromstudentjoinscoreonstudent.学号=score.学号等价于:
interjoin和selectstudent.学号,姓名,总分fromstudent,scorewherestudent.学号=score.学号,第14章第4节,例16.左联接selectstudent.学号,姓名,总分fromstudentleftjoinscoreonstudent.学号=score.学号例17.右联接selectstudent.学号,姓名,总分fromstudentrightjoinscoreonstudent.学号=score.学号例18.全联接selectstudent.学号,姓名,总分fromstudentfulljoinscoreonstudent.学号=score.学号,第14章第4节,10.集合的并运算,SQL支持集合的并(union)运算,即可以将两个语句的查询结果通过并运算合并成一个查询结果。
为了进行并运算,要求这样的两个查询结果具相同的字段个数,并且对应字段的值出自同一个值域,即具有相同的数据类型和取值范围。
例19.在teacher表中查询职称既是教授又是副教授的信息。
select*fromteacherwhere职称=教授unionselect*fromteacherwhere职称=副教授,第14章第4节,11.select中的几个特殊选项,
(1)显示部分结果
(2)Into与To子句(3)Noconsole子句用来禁止将输出结果送往屏幕。
如果指定Into子句,则忽略它的设置。
(4)Plain子句表示输出时省略字段名。
(5)Nowait子句表示显示Browse窗口后程序继续往下执行。
第14章第4节,
(1)显示部分结果,TopPercent用来指定选取记录条数。
该子句必须和OrderBy子句同时使用。
其中Top子句后如果只跟表示从符合条件的记录中按OrderBy指定的顺序选取条记录,取值范围为1-32767;Top子句后如跟Percent时,将不再代表选取的记录条数,而是代表从符合条件的记录中按百分比选取,取值范围为0.01-99.99。
例如top75Percent子句就表示从符合条件的记录中选取75%条记录,如果该值含有小数部分,则系统自动对记录数取整。
第14章第4节,应用举例,例20.显示总分最高的三个学生的信息。
Select*fromstudentorderby总分desctop3例21.显示总分最高的那50学生的信息。
Select*fromstudentorderby总分desctop50percent,第14章第4节,2.Into与To子句,用于指定查询结果的输出方向,默认查询结果显示在Browse窗口中。
格式:
into|tofileadditive|toprinterpromptInto子句中的目标可以有3种选择:
Array:
查询结果输出到数组;Cursor:
查询结果输出到临时表中;Dbf:
查询结果输出到永久表中。
第14章第4节,应用举例,例22.(a)将查询结果存到数组B中。
Select*fromstudentorderby总分desctop50percentintoarrayb例22.(b)将查询结果存到临时文件a1中。
Select*fromstudentorderby总分desctop50percentintocursora1例22.(c)将查询结果永久表st11中。
Select*fromstudentorderby总分desctop50percentintotablee:
xtst11,第14章第4节,To子句,to子句常用的3种方法:
Tofile:
表示把结果输出到指定的文本文件。
Additive表示只添加新数据而不清除原文本文件的内容。
Toprinter:
表示结果在屏幕上显示的同时由打印机打印出来。
Prompt表示打印前先显示打印确认框。
Toscreen:
表示结果输出到屏幕。
例23.将输出结果输出到屏幕,且不显示字段名。
Select*fromstudentorderby总分desctoscreenplain,第14章第4节,14.4.2在查询设计器中查看Select语句,选择“查询”选单的“查看SQL”命令,则出现一个只读窗口,在这个窗口中显示查询产生的SQLselect命令。
这样对于不太熟悉Select语句的用户,可以先使用“查询设计器”设计查询条件,再通过查看SQL窗口来学习Select语句的用法。