vf结构化查询语言SQL.ppt

上传人:b****9 文档编号:336033 上传时间:2022-10-09 格式:PPT 页数:99 大小:2.42MB
下载 相关 举报
vf结构化查询语言SQL.ppt_第1页
第1页 / 共99页
vf结构化查询语言SQL.ppt_第2页
第2页 / 共99页
vf结构化查询语言SQL.ppt_第3页
第3页 / 共99页
vf结构化查询语言SQL.ppt_第4页
第4页 / 共99页
vf结构化查询语言SQL.ppt_第5页
第5页 / 共99页
点击查看更多>>
下载资源
资源描述

vf结构化查询语言SQL.ppt

《vf结构化查询语言SQL.ppt》由会员分享,可在线阅读,更多相关《vf结构化查询语言SQL.ppt(99页珍藏版)》请在冰豆网上搜索。

vf结构化查询语言SQL.ppt

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(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1