事业单位考试计算机基础知识:SQL的数据查询功能(2)
(7)分组查询按属性列或属性列组合在行的方向上进行分组,每组在属性列或属性列组上具有相同的值。
select 教师号,count(*) as 任课门数 from 授课 group by 教师号
select 学号 as 选课在两门以上课程的学生号,count(*) as 选课门数 from 选课 group by 学号 having
count(*)>=2
(8)查询的排序(ORDER BY子句)
select 学号,课程号,成绩 from 选课 where 课程号='c140' order by 成绩 desc
select 学号,课程号,成绩 from 选课 where 课程号 in('c120','c130','c150') order by 课程号,成绩
desc
(9)连接查询
当查询同时涉及到两个以上的表时的查询。(通过相同属性列的关联建立查询)
方法:表之间满足一定条件的行进行连接;
利用关键字JOIN进行连接,放入FROM子句中,有ON与之相对应,表明连接的条件。
INNER JION:显示符合条件的记录(默认)
LEFT JION:显示符合条件的记录以及左边表中不符合条件的记录,此时右边的列显示为NULL。
RIGHT JION:显示符合条件的记录以及右边表中不符合条件的记录,此时左边的列显示为NULL。
FULL JOIN:显示符合条件的记录以及左右表中不符合条件的记录,此时左右边的列显示为NULL。
A.等值连接与非等值连接
格式:[.][.]
select 教师.教师号,姓名,课程号 from 教师,授课 where 教师.教师号=授课.教师号 and 姓名='陈静' ***
select 教师.教师号,姓名,课程号 from 教师 inner join 授课 on 教师.教师号=授课.教师号 and 姓名='陈
静'
select 学生.学号,姓名,课程名,成绩 from 学生,课程,选课 where 学生.学号=选课.学号 and 选课.课程号=课程.课程号
and (课程名='数据库' or 课程名='电子商务')
B.自身连接
select x.姓名,x.性别,x.职称 from 教师 as x,教师 as y where x.职称=y.职称 and y.姓名='周
密'
C.外连接(左为主表,右为从表)
select 姓名,职称,课程名 from 教师,课程,授课 where 教师.教师号=授课.教师号 and 授课.课程号=课程.课程号
select 姓名,职称,课程名 from 教师 left join 授课 on 教师.教师号=授课.教师号 left join 课程 on
授课.课程号=课程.课程号
(10)嵌套查询
A.返回一个值的子查询
select 姓名,职称 from 教师 where 职称=(select 职称 from 教师 where 姓名='陈 静')
B.返回一组值的子查询(ANY、IN、ALL和EXISTS)
select 姓名 from 教师 where 教师号=any(select 教师号 from 授课 where 课程号='c140')
select 姓名,入校总分 from 学生 where 入校总分>any(select 入校总分 from 学生 where 性别='男')
and 性别'男'
select 姓名 from 教师 where 教师号=in(select 教师号 from 授课 where 课程号='c140')
select 姓名,入校总分 from 学生 where 入校总分>all(select 入校总分 from 学生 where 性别='男')
and 性别='女'
select 姓名 from 教师 where exists (select * from 授课 where 教师.教师号=授课.教师号 and
课程号='c140')
(11)查询结果的输出
INTO TABLE:到数据表
INTO CURSOR:到临时表
TO FILE:到文本文件
TO PRINT:到打印机
TO SCREEN:到VF主窗口
页:
[1]