vf结构化查询语言SQL.ppt

上传人:聆听****声音 文档编号:11832121 上传时间:2023-06-02 格式: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_第6页
第6页 / 共99页
vf结构化查询语言SQL.ppt_第7页
第7页 / 共99页
vf结构化查询语言SQL.ppt_第8页
第8页 / 共99页
vf结构化查询语言SQL.ppt_第9页
第9页 / 共99页
vf结构化查询语言SQL.ppt_第10页
第10页 / 共99页
vf结构化查询语言SQL.ppt_第11页
第11页 / 共99页
vf结构化查询语言SQL.ppt_第12页
第12页 / 共99页
vf结构化查询语言SQL.ppt_第13页
第13页 / 共99页
vf结构化查询语言SQL.ppt_第14页
第14页 / 共99页
vf结构化查询语言SQL.ppt_第15页
第15页 / 共99页
vf结构化查询语言SQL.ppt_第16页
第16页 / 共99页
vf结构化查询语言SQL.ppt_第17页
第17页 / 共99页
vf结构化查询语言SQL.ppt_第18页
第18页 / 共99页
vf结构化查询语言SQL.ppt_第19页
第19页 / 共99页
vf结构化查询语言SQL.ppt_第20页
第20页 / 共99页
亲,该文档总共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(05,98),insertintoscore;values(1996468006,05,98)insertintoscore(学号,课程编号,成绩);values(1996468006“,05,98),格式:

update表名;set字段名1=表达式1,字段名2=表达式2.;where说明:

(1)当不使用where时,则更新全部记录,例1:

给score表中所有成绩加10分例2:

给score表中所有不及格的成绩加10分,updatescoreset成绩=成绩+10,updatescoreset成绩=成绩+10;where成绩60,例3:

将course表中课程编号为“01”的课程的学分加2分。

例4:

将成绩大于70分的的所有课程的成绩提高10%。

updatecourseset学分=学分+2where课程编号=01,updatescoreset成绩=成绩*1.1;Where成绩70,格式:

deletefrom表名where说明:

(1)当不使用where时,逻辑删除表中全部记录

(2)物理删除:

Pack,逻辑删除,例1:

将teacher表中职称为助教的教师信息删除。

deletefromteacherwhere职称=助教,例2:

物理删除student表中年龄为20的学生记录,deletefromstudent;whereyear(date()-year(出生日期)=20pack,本节主要内容1、定义表2、删除表3、修改表4、定义视图,格式:

createtable|dbf表名(字段名1类型(宽度,小数位数)null|notnullcheck规则|error信息default表达式primarykey|unique,字段名2,foreignkey表达式tag表达式references表名1),例1:

用SQLCREATE命令建立“仓库”表createtable仓库(;仓库号C(5)primarykey,;面积N(20),;城市C(20),例2:

用SQLCREATE命令建立“职工”表createtable职工(;仓库号C(5),;职工号C(5)primarykey,;工资Icheck(工资=1000and工资=5000);error工资值的范围在1000-5000!

;default1200,;foreignkey仓库号tag仓库号references仓库),格式:

droptable表名例1:

删除订货管理数据库中的仓库表droptable仓库,格式一:

添加新字段altertable表名;add字段名类型(宽度)例1:

为订购单表增加一个货币类型的总金额字段altertable订购单;add总金额Ycheck总金额0;error“总金额应该大于0!

”,check规则|error信息default表达式primarykey|unique,格式二:

修改已有字段的类型和宽度altertable表名;alter字段名类型(宽度)例2:

将订购单表的订购单号字段的宽度由原来5改为6altertable订购单;alter订购单号C(6),格式三:

更改字段名altertable表名;renamecolumn字段名to新字段名例3:

将订购单表的总金额字段名改为金额altertable订购单;renamecolumn总金额to金额,格式四:

删除已有字段altertable表名dropcolumn字段名例4:

删除订购单1表中的金额字段altertable订购单1;dropcolumn金额,格式五:

修改或定义有效性规则altertable表名alter字段名setcheckerror例5:

修改或定义总金额字段的有效性规则altertable订购单1;alter总金额setcheck总金额100;error“总金额应该大于100!

”,格式六:

删除有效性规则altertable表名alter字段名dropcheck例6:

删除总金额字段的有效性规则altertable订购单1;alter总金额dropcheck,格式:

CREATEVIEW视图名ASSELECT-select1、从单个表派生出来的视图,CREATEVIEWchengji_viewAS;SELECT学号,课程编号,成绩FROMscore,基本表,2、从多个表派生出来的视图例:

建立一个视图xuesheng_view,要求该视图包含1980年1月1日之后出生的学生的学号,姓名,平均成绩。

CREATEVIEWxuesheng_viewAS;SELECTstudent.学号,姓名,avg(成绩)as平均成绩;FROMstudent,score;WHEREstudent.学号=score.学号and;出生日期1980-01-01;GROUPBYscore.学号,格式:

DROPVIEW例:

删除视图xuesheng_view,DROPVIEWxuesheng_view,复习1-学生管理,1.查询student表中学生的姓名和年龄。

2.查询出生日期在1983年2月2日到1985年2月2日之间的学生的信息。

3.查询“计算机科学与技术系”和“中文系”学生的信息。

4、从student表中检索出性别为“男”且入学时间为1996年9月7日的学生的学号、姓名、性别、专业和年龄信息。

(注:

用表达式year(date()-year(出生日期)可以计算出学生的年龄。

),answer,3、select*fromstudent;where专业=计算机科学与技术or专业=中文,2、select*fromstudent;where出生日期=1983-02-02and;出生日期=1985-02-02,1、select姓名,year(date()-year(出生日期)as年龄;fromstudent,4、select学号,姓名,性别,专业,;year(date()-year(出生日期)as年龄fromstudent;where性别=“.F.”and入学时间=1996-9-7,复习1-订货管理,1、从职工表中检索所有工资信息。

2、查询仓库表中的所有信息。

3、查询工资多于1230的职工号。

4、查询哪些仓库有工资多于1210元的职工。

5、查询在仓库“WH1”或“WH2”工作,并且工资少于1250元的职工号。

6、查询工资多于1230元的职工号和他们所在的城市。

7、按职工的工资值升序检索出全部职工信息。

8、先按仓库号排序,再按工资排序并输出全部职工信息。

9、找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市。

订货管理,复习2-订货管理,4、查询哪些仓库有工资多于1210元的职工。

8、先按仓库号排序,再按工资排序并输出全部职工信息。

9、找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市。

14、求在北京和上海的仓库职工的工资总和。

15、找出地址不在北京的全部供应商信息。

复习2-学生管理,1、检索出选修了“艺术设计”的学生的信息及成绩,并将结果按出生日期升序排列,出生日期相同的按成绩降序排列,最后将查询结果保存到表cc.dbf中。

5、检索出姓郭的学生的姓名和入学时间,并按入学时间降序排列,最后将查询结果保存到表xs.dbf中4、检索出成绩在60和80之间的学生的姓名、课程名称和成绩,最后将查询结果保存到表dd.dbf中,“学生管理”数据库,复习2-分组和计算(学生管理),Eg1:

检索出所有学生的学号、总分、平均分、最高分和最低分。

select学号,sum(成绩)as总分,;avg(成绩)as平均分,;max(成绩)as最高分,;min(成绩)as最低分;fromscore,复习2-分组和计算(学生管理),Eg2:

检索出所有学生的学号、姓名、总分、平均分、最高分和最低分。

selectstudent.学号,姓名,;sum(成绩)as总分,;avg(成绩)as平均分,;max(成绩)as最高分,;min(成绩)as最低分;fromstudent,score;wherestudent.学号=score.学号,复习2-分组和计算(学生管理),Eg3:

检索出“计算机科学与技术系”所有学生的学号、姓名、总分、平均分、最高分和最低分,并将结果按总分降序排序。

selectstudent.学号,姓名,sum(成绩)as总分,;avg(成绩)as平均分,;max(成绩)as最高分,;min(成绩)as最低分;fromstudent,score;wherestudent.学号=score.学号and;专业=“计算机科学与技术”orderby总分desc,复习,将“学生”表复制为“学生1”表:

方法1:

Select*from学生intotable学生1方法2:

新建“学生1”表,表结构与“学生”表相同Use学生1Appendfrom学生方法3:

use学生copyto学生1,SQL查询语句的总格式:

Select.From表名intocursor|intotablewhere查询条件and联接条件groupby.having.orderby.,*,字段名,as别名,函数,top短语,说明查询内容来自哪个些表,说明条件,按某列分组,分组条件,对查询结果排序,字段名(not)betweenand,likein,!

=,isnull,SQL-select与查询文件,字段-Select筛选-Where分组依据-Groupby排序依据-Orderby杂项-Top,select,from,Sum(成绩)as别名,*,联接条件,where,not,Orderby,asc,desc,groupby,having,distinct,Topn,percent,Intotable,Intocursor,1、五个有关计算查询的函数是什么?

2、分组的关键词?

3、查询出生日期在1983年2月2日到1985年2月2日之间的学生的信息。

select*fromstudentwhere出生日期;between1983-02-02and1985-02-024、查询所有学生的平均成绩。

Selectavg(成绩)as平均成绩fromscore5、查询每个学生的平均成绩,。

Selectavg(成绩)as平均成绩fromscore;Groupby学号,6、查询每门课程的平均成绩,并按平均成绩降序排列。

Selectavg(成绩)as平均成绩;fromscore;groupby课程编号;Orderby平均成绩,THEEND,

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2