1、Visual FoxPro程序设计本章主要内容SQL语言概述4.1 数据查询4.2 数据操作4.3 数据定义 2.2.-结构化查询语言结构化查询语言-Structured Query LanguageSQL语言概述表表4-1 SQL语言的语言的9个命令动词个命令动词 本节主要内容本节主要内容1、基本查询、基本查询2、排序查询、排序查询3、带特殊运算符的条件查询、带特殊运算符的条件查询4、计算与分组查询、计算与分组查询5、嵌套查询、嵌套查询6、利用空值查询、利用空值查询7、查询中的特殊选项、查询中的特殊选项4.1 数据查询 selectfromwhere查询内容查询内容(字段名)(字段名)来自哪
2、来自哪(表名)(表名)查询条件查询条件(表达式)(表达式)一、基本查询格式:一、基本查询格式:1 1、单表无条件查询:、单表无条件查询:格式:格式:SELECT SELECT FROM FROM 例例1:将:将“学生学生”表中的表中的学号、姓名学号、姓名信息检索出信息检索出来来 select 学号学号,姓名姓名 from 学生学生例例2:将:将“学生学生”表中的表中的专业专业信息检索出来,并信息检索出来,并去掉重复元组去掉重复元组。select 专业专业 from 学生学生distinct例例3:查询:查询“学生学生”表中的所有信息。表中的所有信息。方法一:方法一:select 学号学号,姓名
3、姓名,性别性别,出生日期出生日期,专业专业,家庭住址家庭住址;from 学生学生 方法二:方法二:select*from 学生学生注意注意:去掉重复元组去掉重复元组distinct所有属性所有属性*,Select后多字段名之间后多字段名之间2 2、单表条件查询、单表条件查询格式:格式:SELECT SELECT FROM WHERE FROM WHERE 例例1:查询:查询成绩成绩表中表中成绩大于成绩大于80分分的的学号学号。select 学号学号 from score;where 成绩成绩80注:注:distinct 短语的位置短语的位置distinct例例2:从:从成绩成绩表中检索出选修了
4、表中检索出选修了课程编号为课程编号为“02”的,并且的,并且成绩大于成绩大于80分分的的所有信息所有信息。select*from 成绩成绩;where 课程编号课程编号=02 and 成绩成绩80例例3:检索出选修了课程编号为:检索出选修了课程编号为“02”或或“05”的,的,并且并且成绩大于成绩大于80分的所有信息。分的所有信息。select*from 成绩成绩;where(课程编号课程编号=02 or 课程编号课程编号=05);and 成绩成绩80例例4:从学生表中检索出性别为:从学生表中检索出性别为“男男”的学生的的学生的学号、姓名、性别、专业和年龄学号、姓名、性别、专业和年龄信息。信息
5、。select 学号学号,姓名姓名,性别性别,专业专业,;year(date()-year(出生日期出生日期)as 年龄年龄;from 学生学生;where 性别性别=“男男”2 2、单表条件查询:、单表条件查询:(1 1)条件中,涉及到字符型字段值,)条件中,涉及到字符型字段值,加定界符加定界符(“”)(“”)(2 2)多个条件之间用)多个条件之间用and/orand/or相连相连(3 3)一行书写不下,除最后一行,各)一行书写不下,除最后一行,各行结尾加分号(行结尾加分号(;)注注意意3 3、多表连接查询:、多表连接查询:格式格式:SELECTSELECT FROMFROM 表表1,1,表
6、表2 2,;WHEREWHERE 查询条件查询条件 and and 连接条件连接条件例如学生表与成绩表连接条件为:例如学生表与成绩表连接条件为:学生学生.学号学号=成绩成绩.学号学号.=.连接条件连接条件例例1:1:检索出成绩大于检索出成绩大于80分的分的学号学号、姓名、性别和、姓名、性别和成绩成绩select 学生学生.学号学号,姓名姓名,性别性别,成绩成绩;from 学生学生,成绩成绩;where 成绩成绩80 and 学生学生.学号学号=成绩成绩.学号学号例例2:2:检索学号为检索学号为“201931001”的学生姓名以的学生姓名以及所选修的课程名称和授课教师姓名。及所选修的课程名称和授
7、课教师姓名。select 姓名姓名,课程名称课程名称,教师姓名教师姓名;from 学生学生,课程课程,成绩成绩,教师教师;where 学生学生.学号学号=成绩成绩.学号学号 and ;成绩成绩.课程编号课程编号=课程课程.课程编号课程编号 and;课程课程.教师编号教师编号=教师教师.教师编号教师编号 and;学生学生.学号学号=“201931001 格式:格式:注:注:Asc 表示升序表示升序 Desc 表示降序表示降序selectfrom whereorder by 字段名字段名1 asc|desc,字段名字段名2asc|desc二、排序查询:二、排序查询:例例1:查询:查询学生学生表中的
8、全部信息,并按表中的全部信息,并按出生日出生日期升序期升序排序。排序。select *;from 学生学生 ;order by 出生日期出生日期 asc例例2:查询学生信息,按学生的:查询学生信息,按学生的专业升序排序专业升序排序,若专业相同,则按学生的若专业相同,则按学生的出生日期降序出生日期降序进行排进行排序。序。select*from 学生学生;order by 专业专业 asc,出生日期出生日期 desc1)order by对最终结果进行排序,对最终结果进行排序,位位置在最后置在最后2)asc/desc在排序的字段名后,默认在排序的字段名后,默认为升序为升序3)按多列排序时,各字段名之
9、间用)按多列排序时,各字段名之间用“,”相隔相隔注注意意1 1、确定范围、确定范围格式:格式:BETWEENANDBETWEENAND l 表示在表示在和和之间之间l 包含界值包含界值lNOTNOT BETWEENAND BETWEENAND 表示表示不不在在和和之间之间注注意意三、带特殊运算符的条件查询三、带特殊运算符的条件查询例例1 1:查询出生日期在:查询出生日期在19881988年年8 8月月1 1日至日至19901990年年1212月月3030日之间的学生的信息。日之间的学生的信息。select*from 学生学生;Where 出生日期出生日期 between 1988-08-01;
10、and 1990-12-30select*from 学生学生;Where 出生日期出生日期=1988-08-01;and 出生日期出生日期=80例例3:查询没有选修课程编号为:查询没有选修课程编号为“02”或或“05”并且并且成绩不及格的学生的学号、课程编号和成绩。成绩不及格的学生的学号、课程编号和成绩。select*from score;where 课程编号课程编号 not in(02,05)and 成绩成绩60 3、部分匹配查询、部分匹配查询格式:格式:字段名字段名 like 字符型常量字符型常量 通配符:通配符:%:0个或多个字符个或多个字符 _:一个字符:一个字符 例例4:查询所有姓:
11、查询所有姓“李李”的同学的学号、姓名、的同学的学号、姓名、性别、专业性别、专业。select 学号学号,姓名姓名,性别性别,专业专业 from 学生学生;where 姓名姓名 like 李李%例例5:查询第二个汉字是:查询第二个汉字是“海海”的学生的学号、的学生的学号、姓名、性别、专业。姓名、性别、专业。select 学号学号,姓名姓名,性别性别,专业专业 from 学生学生;where 姓名姓名 like _海海%4、不等于(、不等于(!=)例例6:查询家庭住址在查询家庭住址在哈尔滨哈尔滨并且并且不是不是学学商务英商务英语语专业的学生信息。专业的学生信息。select*from 学生学生;w
12、here 家庭住址家庭住址=哈尔滨哈尔滨;and 专业专业!=“商务英语商务英语 1、简单的计算查询简单的计算查询(用在用在selectselect中,对查询结果中中,对查询结果中数数值型字段值值型字段值进行计算进行计算 )注注:as as 新字段名新字段名:给结果指定字段别名给结果指定字段别名(1)count(distinct 字段名字段名):统计数目统计数目 count():统计元组个数统计元组个数(2)sum(字段名字段名):求总和求总和(3)avg(字段名字段名):求平均值求平均值(4)max(字段名字段名):求最大值求最大值(5)min(字段名字段名):求最小值求最小值四、计算与分组
13、查询四、计算与分组查询例例1:统计学生表中有多少个学生记录。:统计学生表中有多少个学生记录。select count(*)as 人数人数 from 学生学生例例2:求学号为:求学号为0104的学生的平均成绩。的学生的平均成绩。select avg(成绩成绩)as 平均分平均分 from 成绩成绩;where 学号学号=201931001例例3:统计成绩表中的最高分和最低分。:统计成绩表中的最高分和最低分。select max(成绩成绩)as 最高分最高分,min(成绩成绩)as 最低分最低分;from 成绩成绩用在用在select后后count(*):计算关系中所含元组个数:计算关系中所含元组
14、个数as 新字段名:给计算结果指定字段新字段名:给计算结果指定字段名名注注意意2、分组与计算查询、分组与计算查询格式:格式:GROUP BY HAVING 例例1:检索出:检索出每个每个学生的学号平均平均分。学生的学号平均平均分。select 学号学号,avg(成绩成绩)as 平均分平均分;from 成绩成绩;group by 学号学号例例2:检索出:检索出每个每个学生的学号、总分、平均分、学生的学号、总分、平均分、最高分和最低分。最高分和最低分。select 学号学号,sum(成绩成绩)as 总分总分,;avg(成绩成绩)as 平均分平均分,;max(成绩成绩)as 最高分最高分,;min(
15、成绩成绩)as 最低分最低分;from 成绩成绩;group by 学号学号例例3:在成绩表中查询选修课程在:在成绩表中查询选修课程在3门以上(含门以上(含3门)的门)的每个学生的学号和平均成绩,并按平均成绩升序排序每个学生的学号和平均成绩,并按平均成绩升序排序注意:注意:order by后后只能接字段名,不只能接字段名,不能接函数能接函数select 学号学号,avg(成绩成绩)as 平均成绩平均成绩 from 成绩成绩;group by 学号学号 having count(*)=3;order by 平均成绩平均成绩select 学号学号,avg(成绩成绩)as 平均成绩平均成绩 from
16、 成绩成绩;group by 学号学号 having count(*)=3;order by 平均成绩平均成绩分组条件分组条件select 学生学生.学号学号,avg(成绩成绩)as 平均成绩平均成绩 from 学生学生,成绩成绩;where 学生学生.学号学号=成绩成绩.学号学号 and;专业专业=“英语英语”;group by 学生学生.学号学号 having count(*)=3;order by 平均成绩平均成绩 desc查询条件查询条件分组条件分组条件连接条件连接条件注意:先用注意:先用where选择满足条件的元组,然后选择满足条件的元组,然后分组分组,再再计算计算,最后去掉不满足最
17、后去掉不满足分组条件分组条件的记录的记录例例4:检索:检索英语英语专业的学生专业的学生选修课程在选修课程在3门以上门以上(含(含3门)的每个学生的门)的每个学生的学号学号和和平均成绩平均成绩,并按,并按平均成绩平均成绩降序排序降序排序例例5:检索除:检索除“商务英语商务英语”专业之外的,专业之外的,选修课程在选修课程在3门以上(含门以上(含3门)门)的每个学生的的每个学生的学号学号、姓名姓名和和平均平均成绩成绩,并按将结果按,并按将结果按平均成绩降序平均成绩降序排序,保存到表排序,保存到表aa.dbf中中select 学生学生.学号学号,姓名姓名,avg(成绩成绩)as 平均成绩平均成绩;fr
18、om 学生学生,成绩成绩;where 学生学生.学号学号=成绩成绩.学号学号 and 专业专业!=”商务英语商务英语”;group by student.学号学号 having count(*)=3;order by 平均成绩平均成绩 descinto table aa(1)位置:)位置:where后,后,order by前前(2)having子句总是跟在子句总是跟在group by子句之子句之后后,不不可以单独使用可以单独使用(3)先)先where,再再group by,然后然后计算计算,最后最后having.注注意意(查询结果出自一个表,条件涉及多个表)(查询结果出自一个表,条件涉及多个表
19、)格式:格式:SELECTFROM SELECTFROM 表表1 1 WHERE WHERE 字段名字段名 in in;(SELECT(SELECT 字段名字段名 FROM FROM 表表2 2 WHERE)WHERE)五、嵌套查询五、嵌套查询本节所用的四个表本节所用的四个表例例1:检索没有授课的教师信息。:检索没有授课的教师信息。例例2:检索选修了课程的学生信息。检索选修了课程的学生信息。例例3:找出没有选课的学生的信息。找出没有选课的学生的信息。select*from teacher;where 教师编号教师编号 not in(select 教师编号教师编号 from course)sel
20、ect*from student;where 学号学号 not in(select 学号学号 from score)select*from student;where 学号学号 in(select 学号学号 from score)格式:格式:IS NULL IS NOT NULL六、利用空值查询六、利用空值查询例例1:查询出还没有确定联系方式的学生记录。:查询出还没有确定联系方式的学生记录。例例2:查询已经确定了联系方式的学生信息。:查询已经确定了联系方式的学生信息。select*from student where 联系方式联系方式 is nullselect*from student wh
21、ere 联系方式联系方式 is not null不能写成不能写成“=NULL”或或“!=NULL”注意注意 1、显示、显示部分结果部分结果 2、将结果存放在、将结果存放在临时文件临时文件中中 3、将结果存放在、将结果存放在永久表永久表中中七、查询中的特殊选项七、查询中的特殊选项1、显示部分结果、显示部分结果(显示前几项)(显示前几项)格式:格式:top n percent位置:紧跟位置:紧跟select后后top短语要与短语要与order by 同时使用同时使用例例1:显示成绩:显示成绩最低最低的的两两名学生成绩信息。名学生成绩信息。例例2:显示成绩:显示成绩最高最高的那的那40%的学生成绩信
22、息的学生成绩信息select*top 2 from score order by 成绩成绩 ascselect*top 40 percent from score order by 成绩成绩 desc2、将结果存放在临时文件中、将结果存放在临时文件中格式:格式:into cursor 临时文件名临时文件名注意注意:(1)文件关闭后,自动删除)文件关闭后,自动删除(2)位置:)位置:from短语后或最后短语后或最后3、将结果存放在临时文件中、将结果存放在临时文件中例例3:将:将teacher表中的信息保存在表中的信息保存在临时文件临时文件“教师教师”中。中。select*from teacher
23、 into cursor 教师教师4、将结果存放在永久表中、将结果存放在永久表中 格式:格式:into table 表名表名注意:注意:(1)查看结果可以使用下面的命令操作)查看结果可以使用下面的命令操作use 表名表名browse(2)通过该子句可实现)通过该子句可实现表的复制表的复制。例例4:将所有课程信息按学分降序保存永久将所有课程信息按学分降序保存永久表表“课程课程”中。中。select*from course order by 学分学分 desc;into table 课程课程Select.From 表名表名where 查询条件查询条件 and 联接条件联接条件group by.ha
24、ving.order by.into cursor|into table 字段名字段名,as ,函数函数说明查询内容来自哪个些表说明查询内容来自哪个些表说明条件说明条件按某列分组按某列分组,分组条件分组条件对查询结果排序对查询结果排序保存查询结果保存查询结果SQL 查询语句的总格式查询语句的总格式4.2 4.2 数据操作数据操作本节主要内容本节主要内容格式格式1:insert into 表名表名;values(表达式表达式1,表达式表达式2,表达式表达式n)格式格式2:insert into 表名表名(字段名字段名1,字段名字段名2,);values(表达式表达式1,表达式表达式2,)一、插入
25、记录一、插入记录例例1 1:向:向scorescore表中插入一条记录表中插入一条记录(2019468006,05,98)(2019468006,05,98)例例2:2:向向scorescore表中插入一条记录表中插入一条记录(05,98)(05,98)insert intoinsert into score(score(课程编号课程编号,成绩成绩););values values(05,98)(05,98)insert into score;values(2019468006,05,98)insert into score(学号学号,课程编号课程编号,成绩成绩);values(2019468
26、006“,05,98)格式:格式:update 表名表名;set 字段名字段名1=表达式表达式1,字段名,字段名2=表达式表达式2.;where说明:说明:(1)当)当不不使用使用where时,则更新时,则更新全部全部记录记录二、更新记录二、更新记录例例1:给给score表中所有成绩加表中所有成绩加10分分例例2:给给score表中所有不及格的成绩加表中所有不及格的成绩加10分分update score set 成绩成绩=成绩成绩+10update score set 成绩成绩=成绩成绩+10;where 成绩成绩70格式格式:delete from 表名表名 where 说明说明:(1)当不
27、使用)当不使用where时,逻辑删除表中时,逻辑删除表中全部记录全部记录(2)物理删除:)物理删除:Pack逻辑删除逻辑删除三、删除记录三、删除记录例例1:将:将teacher表中职称为助教的教师信息删表中职称为助教的教师信息删除。除。delete from teacher where 职称职称=助教助教例例2:物理删除:物理删除student表中年龄为表中年龄为20的学生的学生记录记录delete from student;where year(date()-year(出生日期出生日期)=20pack本节主要内容本节主要内容1、定义表、定义表2、删除表、删除表3、修改表、修改表4、定义视图、
28、定义视图4.3 4.3 数据定义数据定义格式:格式:create table|dbf 表名表名 (字段名字段名1 类型类型(宽度宽度,小数位数小数位数)null|not null check 规则规则|error 信息信息 default 表达式表达式 primary key|unique ,字段名字段名2,foreign key 表达式表达式 tag 表达式表达式 references 表名表名1)一、表的定义一、表的定义例例1:用用SQL CREATESQL CREATE命令建立命令建立“仓库仓库”表表create table 仓库仓库(;仓库号仓库号 C(5)primary key,;面
29、积面积 N(20),;城市城市 C(20)例例2:用用SQL CREATESQL CREATE命令建立命令建立“职工职工”表表create table 职工职工 (;仓库号仓库号 C(5),;职工号职工号 C(5)primary key,;工资工资 I I check(工资工资=1000 and 工资工资0;error“总金额应该大于总金额应该大于0!”check 规则规则|error 信息信息 default 表达式表达式primary key|unique三、修改表结构三、修改表结构格式二:修改已有字段的类型和宽度格式二:修改已有字段的类型和宽度alter table 表名;表名;alte
30、r 字段名字段名 类型类型(宽度宽度)例例2:将将订购单表订购单表的的订购单号订购单号字段的宽度由原来字段的宽度由原来5改为改为6alter table 订购单订购单;alter 订购单号订购单号 C(6)格式三:更改字段名格式三:更改字段名alter table 表名;表名;rename column 字段名字段名 to 新字段名新字段名例例3:将订购单表的总金额字段名改为金额将订购单表的总金额字段名改为金额alter table 订购单订购单;rename column 总金额总金额 to 金额金额格式四:删除已有字段格式四:删除已有字段alter table 表名表名drop colum
31、n 字段名字段名例例4:删除订购单删除订购单1表中的金额字段表中的金额字段alter table 订购单订购单1;drop column 金额金额格式五:修改或定义有效性规则格式五:修改或定义有效性规则alter table 表名表名alter 字段名字段名 set checkerror例例5:修改或定义总金额字段的有效性规则修改或定义总金额字段的有效性规则 alter table 订购单订购单1;alter 总金额总金额 set check 总金额总金额100;error“总金额应该大于总金额应该大于100!”格式六:删除有效性规则格式六:删除有效性规则alter table 表名表名alt
32、er 字段名字段名 drop check例例6:删除删除总金额总金额字段的有效性规则字段的有效性规则alter table 订购单订购单1;alter 总金额总金额 drop check格式:格式:CREATE VIEW 视图名视图名 AS SELECT-select1、从单个表派生出来的视图、从单个表派生出来的视图CREATE VIEW chengji_view AS;SELECT 学号学号,课程编号课程编号,成绩成绩 FROM score基本表基本表四、视图的定义四、视图的定义2、从多个表派生出来的视图、从多个表派生出来的视图例:建立一个视图例:建立一个视图xuesheng_view,要求
33、该视,要求该视图包含图包含1980年年1月月1日之后出生的学生的学号,日之后出生的学生的学号,姓名,平均成绩。姓名,平均成绩。CREATE VIEW xuesheng_view AS;SELECT student.学号学号,姓名姓名,avg(成绩成绩)as 平均成绩平均成绩;FROM student,score;WHERE student.学号学号=score.学号学号and;出生日期出生日期1980-01-01;GROUP BY score.学号学号格式:格式:DROP VIEW 例:删除视图例:删除视图xuesheng_viewDROP VIEW xuesheng_view五、视图的删除五
34、、视图的删除复习复习1-学生管理学生管理1.查询查询student表中学生的姓名和年龄。表中学生的姓名和年龄。2.查询出生日期在查询出生日期在1983年年2月月2日到日到1985年年2月月2日之间的学生的信息。日之间的学生的信息。3.查询查询“计算机科学与技术系计算机科学与技术系”和和“中文中文系系”学生的信息。学生的信息。4、从、从student表中检索出性别为表中检索出性别为“男男”且且入学时间为入学时间为2019年年9月月7日的学生的学号、日的学生的学号、姓名、性别、专业和年龄信息。(注:用姓名、性别、专业和年龄信息。(注:用表达式表达式year(date()-year(出生日期出生日期
35、)可以可以计算出学生的年龄。)计算出学生的年龄。)answer3、select*from student;where 专业专业=计算机科学与技术计算机科学与技术 or 专业专业=中文中文2、select*from student;where 出生日期出生日期=1983-02-02 and;出生日期出生日期=1985-02-021、select 姓名姓名,year(date()-year(出生日期出生日期)as 年龄年龄;from student4、select 学号学号,姓名姓名,性别性别,专业专业,;year(date()-year(出生日期出生日期)as 年龄年龄 from student
36、;where 性别性别=“.F.”and 入学时间入学时间=2019-9-7复习复习1-订货管理订货管理1、从职工表中检索所有工资信息。、从职工表中检索所有工资信息。2、查询仓库表中的所有信息。、查询仓库表中的所有信息。3、查询工资多于、查询工资多于1230的职工号。的职工号。4、查询哪些仓库有工资多于、查询哪些仓库有工资多于1210元的职工。元的职工。5、查询在仓库、查询在仓库“WH1”或或“WH2”工作,并且工资少工作,并且工资少于于1250元的职工号。元的职工号。6、查询工资多于、查询工资多于1230元的职工号和他们所在的城市。元的职工号和他们所在的城市。7、按职工的工资值升序检索出全部
37、职工信息。、按职工的工资值升序检索出全部职工信息。8、先按仓库号排序,再按工资排序并输出全部职工信、先按仓库号排序,再按工资排序并输出全部职工信息。息。9、找出工作在面积大于、找出工作在面积大于400的仓库的职工号以及这些的仓库的职工号以及这些职工工作所在的城市。职工工作所在的城市。订货管理订货管理复习复习2-订货管理订货管理4、查询哪些仓库有工资多于、查询哪些仓库有工资多于1210元的职工。元的职工。8、先按仓库号排序,再按工资排序并输出、先按仓库号排序,再按工资排序并输出全部职工信息。全部职工信息。9、找出工作在面积大于、找出工作在面积大于400的仓库的职工号的仓库的职工号以及这些职工工作
38、所在的城市。以及这些职工工作所在的城市。14、求在北京和上海的仓库职工的工资总和。、求在北京和上海的仓库职工的工资总和。15、找出地址不在北京的全部供应商信息找出地址不在北京的全部供应商信息。复习复习2-学生管理学生管理1、检索出选修了、检索出选修了“艺术设计艺术设计”的学生的信息及成绩,的学生的信息及成绩,并将结果按出生日期升序排列,出生日期相同的按成并将结果按出生日期升序排列,出生日期相同的按成绩降序排列绩降序排列,最后将查询结果保存到表最后将查询结果保存到表cc.dbf中。中。5、检索出姓郭的学生的姓名和入学时间,并按入学时、检索出姓郭的学生的姓名和入学时间,并按入学时间降序排列,最后将
39、查询结果保存到表间降序排列,最后将查询结果保存到表xs.dbf中中4、检索出成绩在、检索出成绩在60和和80之间的学生的姓名、课程名称之间的学生的姓名、课程名称和成绩和成绩,最后将查询结果保存到表最后将查询结果保存到表dd.dbf中中“学生管理学生管理”数据库数据库复习复习2-分组和计算(学生管理)分组和计算(学生管理)Eg1:检索出所有学生的学号、总分、平:检索出所有学生的学号、总分、平均分、最高分和最低分。均分、最高分和最低分。select 学号学号,sum(成绩成绩)as 总分总分,;avg(成绩成绩)as 平均分平均分,;max(成绩成绩)as 最高分最高分,;min(成绩成绩)as
40、最低分最低分;from score复习复习2-分组和计算(学生管理)分组和计算(学生管理)Eg2:检索出所有学生的学号、姓名、总分、平均:检索出所有学生的学号、姓名、总分、平均分、最高分和最低分。分、最高分和最低分。select student.学号学号,姓名姓名,;sum(成绩成绩)as 总分总分,;avg(成绩成绩)as 平均分平均分,;max(成绩成绩)as 最高分最高分,;min(成绩成绩)as 最低分最低分;from student,score;where student.学号学号=score.学号学号复习复习2-分组和计算(学生管理)分组和计算(学生管理)Eg3:检索出:检索出“计
41、算机科学与技术系计算机科学与技术系”所有学生的学号、所有学生的学号、姓名、总分、平均分、最高分和最低分,并将结果按姓名、总分、平均分、最高分和最低分,并将结果按总分降序排序。总分降序排序。select student.学号学号,姓名姓名,sum(成绩成绩)as 总分总分,;avg(成绩成绩)as 平均分平均分,;max(成绩成绩)as 最高分最高分,;min(成绩成绩)as 最低分最低分;from student,score;where student.学号学号=score.学号学号 and;专业专业=“计算机科学与技术计算机科学与技术”order by 总分总分 desc复习将将“学生学生”
42、表复制为表复制为“学生学生1”表:表:方法方法1:Select*from 学生学生 into table 学生学生1 方法方法2:新建新建“学生学生1”表,表结构与表,表结构与“学生学生”表相表相同同Use 学生学生1Append from 学生学生 方法方法3:use 学生学生copy to 学生学生1SQL查询语句的总格式:查询语句的总格式:Select.From 表名表名 into cursor|into table where 查询条件查询条件 and 联接条件联接条件group by.having.order by.*,字段名字段名,as 别名别名,函数函数,top短语短语说明查询内
43、容来自哪个些表说明查询内容来自哪个些表说明条件说明条件按某列分组按某列分组,分组条件分组条件对查询结果排序对查询结果排序字段名字段名(not)betweenand,likein,!=,is nullSQL-select与查询文件与查询文件字段-Select筛选-Where分组依据-Group by排序依据-Order by杂项-TopselectfromSum(成绩成绩)as 别名别名*联接联接条件条件wherenotOrder byascdescgroup byhavingdistinctTop npercentInto tableInto cursor1、五个有关计算查询的函数是什么?、五
44、个有关计算查询的函数是什么?2、分组的关键词?、分组的关键词?3、查询出生日期在、查询出生日期在1983年年2月月2日到日到1985年年2月月2日之间的学生的信息。日之间的学生的信息。select*from student where 出生日期出生日期;between 1983-02-02 and 1985-02-024、查询所有学生的平均成绩。、查询所有学生的平均成绩。Select avg(成绩成绩)as 平均成绩平均成绩 from score 5、查询每个学生的平均成绩,。、查询每个学生的平均成绩,。Select avg(成绩成绩)as 平均成绩平均成绩 from score;Group by 学号学号6、查询每门课程的平均成绩,并按平均成绩降序、查询每门课程的平均成绩,并按平均成绩降序排列。排列。Select avg(成绩成绩)as 平均成绩平均成绩 ;from score;group by 课程编号课程编号;Order by 平均成绩平均成绩