vf结构化查询语言SQL.ppt
- 文档编号:336033
- 上传时间:2022-10-09
- 格式:PPT
- 页数:99
- 大小:2.42MB
vf结构化查询语言SQL.ppt
《vf结构化查询语言SQL.ppt》由会员分享,可在线阅读,更多相关《vf结构化查询语言SQL.ppt(99页珍藏版)》请在冰豆网上搜索。
VisualFoxPro程序设计,第四章结构化查询语言SQL,本章主要内容,1.SQL的中英文名称是什么?
2.SQL的语言功能是什么?
-结构化查询语言-StructuredQueryLanguage,表4-1SQL语言的9个命令动词,本节主要内容1、基本查询2、排序查询3、带特殊运算符的条件查询4、计算与分组查询5、嵌套查询6、利用空值查询7、查询中的特殊选项,selectfromwhere,查询内容(字段名),来自哪(表名),查询条件(表达式),1、单表无条件查询:
格式:
SELECTFROM例1:
将“学生”表中的学号、姓名信息检索出来select学号,姓名from学生例2:
将“学生”表中的专业信息检索出来,并去掉重复元组。
select专业from学生,distinct,例3:
查询“学生”表中的所有信息。
方法一:
select学号,姓名,性别,出生日期,专业,家庭住址;from学生方法二:
select*from学生,注意:
去掉重复元组,distinct,所有属性,*,,,Select后多字段名之间,2、单表条件查询格式:
SELECTFROMWHERE例1:
查询成绩表中成绩大于80分的学号。
select学号fromscore;where成绩80注:
distinct短语的位置,distinct,例2:
从成绩表中检索出选修了课程编号为“02”的,并且成绩大于80分的所有信息。
select*from成绩;where课程编号=02and成绩80,例3:
检索出选修了课程编号为“02”或“05”的,并且成绩大于80分的所有信息。
select*from成绩;where(课程编号=02or课程编号=05);and成绩80,例4:
从学生表中检索出性别为“男”的学生的学号、姓名、性别、专业和年龄信息。
select学号,姓名,性别,专业,;year(date()-year(出生日期)as年龄;from学生;where性别=“男”,2、单表条件查询:
(1)条件中,涉及到字符型字段值,加定界符(“”)
(2)多个条件之间用and/or相连(3)一行书写不下,除最后一行,各行结尾加分号(;),注意,3、多表连接查询:
格式:
SELECTFROM表1,表2,;WHERE查询条件and连接条件例如学生表与成绩表连接条件为:
学生.学号=成绩.学号,.=.,连接条件,例1:
检索出成绩大于80分的学号、姓名、性别和成绩select学生.学号,姓名,性别,成绩;from学生,成绩;where成绩80and学生.学号=成绩.学号,例2:
检索学号为“200731001”的学生姓名以及所选修的课程名称和授课教师姓名。
select姓名,课程名称,教师姓名;from学生,课程,成绩,教师;where学生.学号=成绩.学号and;成绩.课程编号=课程.课程编号and;课程.教师编号=教师.教师编号and;学生.学号=“200731001,格式:
注:
Asc表示升序Desc表示降序,selectfromwhereorderby字段名1asc|desc,字段名2asc|desc,例1:
查询学生表中的全部信息,并按出生日期升序排序。
select*;from学生;orderby出生日期asc,例2:
查询学生信息,按学生的专业升序排序,若专业相同,则按学生的出生日期降序进行排序。
select*from学生;orderby专业asc,出生日期desc,1)orderby对最终结果进行排序,位置在最后2)asc/desc在排序的字段名后,默认为升序3)按多列排序时,各字段名之间用“,”相隔,注意,1、确定范围格式:
BETWEENAND表示在和之间包含界值NOTBETWEENAND表示不在和之间,注意,例1:
查询出生日期在1988年8月1日至1990年12月30日之间的学生的信息。
select*from学生;Where出生日期between1988-08-01;and1990-12-30select*from学生;Where出生日期=1988-08-01;and出生日期=1999-12-30,2、确定集合格式:
字段名NOTIN(表达式1,表达式2,)例2:
查询选修了课程编号为“02”或“05”或“04”,并且成绩在80分以上的学生的学号、课程编号和成绩。
select学号,课程编号,成绩;From成绩;where课程编号in(02,04,05);and成绩=80,例3:
查询没有选修课程编号为“02”或“05”并且成绩不及格的学生的学号、课程编号和成绩。
select*fromscore;where课程编号notin(02,05)and成绩60,3、部分匹配查询格式:
字段名like字符型常量通配符:
%:
0个或多个字符_:
一个字符例4:
查询所有姓“李”的同学的学号、姓名、性别、专业。
select学号,姓名,性别,专业from学生;where姓名like李%,例5:
查询第二个汉字是“海”的学生的学号、姓名、性别、专业。
select学号,姓名,性别,专业from学生;where姓名like_海%,4、不等于(!
=)例6:
查询家庭住址在哈尔滨并且不是学商务英语专业的学生信息。
select*from学生;where家庭住址=哈尔滨;and专业!
=“商务英语,1、简单的计算查询(用在select中,对查询结果中数值型字段值进行计算)注:
as新字段名:
给结果指定字段别名,
(1)count(distinct字段名):
统计数目count():
统计元组个数
(2)sum(字段名):
求总和(3)avg(字段名):
求平均值(4)max(字段名):
求最大值(5)min(字段名):
求最小值,例1:
统计学生表中有多少个学生记录。
selectcount(*)as人数from学生例2:
求学号为0104的学生的平均成绩。
selectavg(成绩)as平均分from成绩;where学号=200731001,例3:
统计成绩表中的最高分和最低分。
selectmax(成绩)as最高分,min(成绩)as最低分;from成绩,用在select后count(*):
计算关系中所含元组个数as新字段名:
给计算结果指定字段名,注意,2、分组与计算查询格式:
GROUPBYHAVING例1:
检索出每个学生的学号平均平均分。
select学号,avg(成绩)as平均分;from成绩;groupby学号,例2:
检索出每个学生的学号、总分、平均分、最高分和最低分。
select学号,sum(成绩)as总分,;avg(成绩)as平均分,;max(成绩)as最高分,;min(成绩)as最低分;from成绩;groupby学号,例3:
在成绩表中查询选修课程在3门以上(含3门)的每个学生的学号和平均成绩,并按平均成绩升序排序,注意:
orderby后只能接字段名,不能接函数,select学号,avg(成绩)as平均成绩from成绩;groupby学号havingcount(*)=3;orderby平均成绩,select学号,avg(成绩)as平均成绩from成绩;groupby学号havingcount(*)=3;orderby平均成绩,分组条件,select学生.学号,avg(成绩)as平均成绩from学生,成绩;where学生.学号=成绩.学号and;专业=“英语”;groupby学生.学号havingcount(*)=3;orderby平均成绩desc,查询条件,分组条件,连接条件,注意:
先用where选择满足条件的元组,然后分组,再计算,最后去掉不满足分组条件的记录,例4:
检索英语专业的学生选修课程在3门以上(含3门)的每个学生的学号和平均成绩,并按平均成绩降序排序,例5:
检索除“商务英语”专业之外的,选修课程在3门以上(含3门)的每个学生的学号、姓名和平均成绩,并按将结果按平均成绩降序排序,保存到表aa.dbf中,select学生.学号,姓名,avg(成绩)as平均成绩;from学生,成绩;where学生.学号=成绩.学号and专业!
=”商务英语”;groupbystudent.学号havingcount(*)=3;orderby平均成绩descintotableaa,
(1)位置:
where后,orderby前
(2)having子句总是跟在groupby子句之后,不可以单独使用(3)先where,再groupby,然后计算,最后having.,注意,(查询结果出自一个表,条件涉及多个表)格式:
SELECTFROM表1WHERE字段名in;(SELECT字段名FROM表2WHERE),本节所用的四个表,例1:
检索没有授课的教师信息。
例2:
检索选修了课程的学生信息。
例3:
找出没有选课的学生的信息。
select*fromteacher;where教师编号notin(select教师编号fromcourse),select*fromstudent;where学号notin(select学号fromscore),select*fromstudent;where学号in(select学号fromscore),格式:
ISNULLISNOTNULL,例1:
查询出还没有确定联系方式的学生记录。
例2:
查询已经确定了联系方式的学生信息。
select*fromstudentwhere联系方式isnull,select*fromstudentwhere联系方式isnotnull,不能写成“=NULL”或“!
=NULL”,注意,1、显示部分结果2、将结果存放在临时文件中3、将结果存放在永久表中,1、显示部分结果(显示前几项)格式:
topnpercent位置:
紧跟select后top短语要与orderby同时使用,例1:
显示成绩最低的两名学生成绩信息。
例2:
显示成绩最高的那40%的学生成绩信息,select*top2fromscoreorderby成绩asc,select*top40percentfromscoreorderby成绩desc,2、将结果存放在临时文件中格式:
intocursor临时文件名注意:
(1)文件关闭后,自动删除
(2)位置:
from短语后或最后,3、将结果存放在临时文件中例3:
将teacher表中的信息保存在临时文件“教师”中。
select*fromteacherintocursor教师,4、将结果存放在永久表中格式:
intotable表名注意:
(1)查看结果可以使用下面的命令操作use表名browse
(2)通过该子句可实现表的复制。
例4:
将所有课程信息按学分降序保存永久表“课程”中。
select*fromcourseorderby学分desc;intotable课程,Select.From表名where查询条件and联接条件groupby.having.orderby.intocursor|intotable,字段名,as,函数,说明查询内容来自哪个些表,说明条件,按某列分组,分组条件,对查询结果排序,保存查询结果,本节主要内容,格式1:
insertinto表名;values(表达式1,表达式2,表达式n)格式2:
insertinto表名(字段名1,字段名2,);values(表达式1,表达式2,),例1:
向score表中插入一条记录(1996468006,05,98)例2:
向score表中插入一条记录(05,98)insertintoscore(课程编号,成绩);values(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vf 结构 查询 语言 SQL