简单查询(1)

  1. 基本知识

简单查询(1)_第1张图片
简单查询(1)_第2张图片

  1. 按指定列、全部列和计算表达式的查询

本次编程任务是:

● 根据3-1SELECT语法规则,参照3-2关于按指定列、全部列、常量和计算表达式等目标列表达式要求的单表查询T-SQL方法示例,尽量先在本地或平台上完成示例内容练习;

●“评测”通关。

 SET NOCOUNT ON
GO

USE JX
GO

----------------------BEGIN-------------------
--*****1、查询所有教师的教工号、姓名和电话号码信息*****
select Tno,Tname,Tphone
from Teacher;




--*****2、查询所有系的名称*****
select  distinct Sdept 系名
from Student;




--*****3、查询各教师的教工号、姓名、工资及按工资的95%发放的预发工资,查询结果列名用中文描述,其中,预发工资列名为‘预发95%的工资’。
select Tno 教工号,Tname 姓名, Tpay 工资,Tpay*0.95 AS [预发95%的工资]
from Teacher;




----------------------END-----------------------

GO

  1. 按指定范围、模板、值集等条件查询

本次编程任务是:

● 根据3-1SELECT语法规则,参照3-2关于单表的多种筛选条件使用方法示例,尽量先在本地或平台上完成示例内容练习;

●“评测”通关。

SET NOCOUNT ON
GO
USE JX
GO

----------------------BEGIN-------------------
--*****1、查询‘计算机’系的所有副教授的基本信息*****
select *
from Teacher
where Tdept="计算机" AND Tprof="副教授"

--*****2、查询所有女同学的姓名及所在的系,显示结果不允许重复出现*****
select distinct Sname,Sdept
from Student
where Ssex="女"

--*****3、设学号的5个数字中,前2位代表年级,后3位为序号,检索计算机系21级总学分在60~90之间的学生信息*****
select *
from Student
where Sno like "21%" AND Total between 60 and 90

--*****4、查询课程号不为‘1’、‘4’和‘7’的课程信息*****
select *
from Course
where Cno not in ('1','4','7')

--*****5、查询所有姓‘张’、或‘刘’或‘高’的学生信息*****
select *
from Student
where Sname like "张%" or Sname like "刘%"  or Sname like "高%" 

----------------------END-----------------------

GO

  1. 聚集函数在统计查询中的使用

本次编程任务是:

● 根据3-1SELECT语句关于GROUP BY子句的语法规则,参照3-2关于单表的分组统计使用方法示例,尽量先在本地或平台上完成示例内容练习;

● “评测”通关。

SET NOCOUNT ON
GO
USE JX
GO

----------------------BEGIN-------------------
--*****1、查询共有多少个同学*****
select count(*) 学生总人数
from Student

--*****2、查询每个系有多少个同学*****
select distinct Sdept 系别,count(Sno) 学生人数
from Student
group by Sdept
--*****3、查询选课门数在两门以上的同学的选课门数及其平均成绩*****
select Sno 学号 ,count(distinct Cno) 选课门数,avg(Grade)
from SC
group by Sno
having count(*)>2
--*****4、统计已有学生选课的课程的课程号,选课人数、平均成绩、最高成绩、最低成绩*****
select Cno 课程号,count(Sno) 选课人数,max(Grade) 最高分,min(Grade) 最低分
from SC
group by Cno
having count(*)>0


----------------------END-----------------------

GO 

5.按要求对查询结果排序

本次编程任务是:

● 根据3-1SELECT语句关于ORDER BY子句的语法规则,参照3-2关于单表的排序使用方法示例,尽量先在本地或平台上完成示例内容练习;

●“评测”通关。

SET NOCOUNT ON
GO
USE JX
GO

----------------------BEGIN-------------------
--*****1、查询按总学分降序排序的学生信息,若总学分相同则按姓名升序排序*****
select *
from Student
order by Total DESC,Sname ASC

--*****2、查询各课程的平均成绩并按平均成绩降序排列*****
select Cno 课程号,avg(Grade) 平均成绩
from SC
group by Cno
order by avg(Grade) DESC
--*****3、查询老师的授课门数并按教工号升序排序*****
select Tno 教师号, count(distinct Cno)授课门数
from SC
group by Tno
order by Tno


----------------------END-----------------------
GO 

6.简单查询综合应用

本次编程任务是:

●根据3-1SELECT语句关于GROUP BY子句的语法规则,参照3-2关于单表的分组统计使用方法示例,尽量先在本地或平台上完成示例内容练习;

●“评测”通关。

SET NOCOUNT ON
GO
USE JX
GO

----------------------BEGIN-------------------
--*****1、获取所有选课的同学的学号*****
select distinct Sno 有选课同学的学号
from SC
where Cno is not null

--*****2、列出课程表中有先行课的课程名*****
select Cname 有先行课的课程名
from Course
where Cpno is not null

--*****3、查询平均成绩最高的前3名同学的学号及平均成绩*****
select top 3 Sno 学号, avg(Grade) 平均成绩
from SC
group by Sno
order by avg(Grade) DESC

--*****4、查询授课门数在两门及以上的老师的授课门数并按教工号升序排序*****
select Tno 教师号,count(distinct Cno) 授课门数
from SC
group by Tno
having count(distinct Cno)>=2
order by Tno
--*****5、查询至少有两门课在80分以上的学生学号及80分以上课程数*****
select Sno 学号,count(Cno) as [80分以上课程数]
from SC
where  Grade>80
group by Sno
having count(Cno)>=2

----------------------END-----------------------

GO 

你可能感兴趣的:(数据库原理,数据库)