【MYSQL】单表查询


查询语法:

select 字段(*表示全字段)
from 数据表
【where 条件表达式】
【group by 分组字段【having 分组条件表达式】】
【order by 排序字段【asc | desc】】


例子:

教职工表Teacher(Tno, TName, age, sal, mgr, DNo),TNo为教职工编号,TName为教职工姓名,age年龄,sal为月薪,mgr为教职工的上一级领导的职工号,DNo为部门号;
课程表Course(Cno, CName, CCredits, CTno),Cno为课程编号,CName为课程名字,CCredits为课程学分, CTno为该课程上课老师的编号,其中外键CTno来自表Teacher的Tno键;
学生表Student(Sno, CLno, SName, SSex, SBir, Email),其中Sno为学生学号,CLno为系别编号,SName为学生姓名,SSex为学生性别,SBir为学生出生日期;
学生选课表SC(Sno, Cno, Score)。


(1)查询所有教职工的情况;

SELECT *
FROM teacher

【MYSQL】单表查询_第1张图片
(2)查询所有教职工的职工编号姓名

SELECT Tno,TName
FROM teacher

【MYSQL】单表查询_第2张图片

(3)查询所有教职工的工号和年薪,并且将输出结果中的列名显示为==“教职工号”“年薪”==(注意teacher表里的工资是月薪);

SELECT Tno 教职工号,Sal*12 年薪
FROM teacher

【MYSQL】单表查询_第3张图片
(4)查询职工编号为0002的教职工情况;

SELECT *
FROM teacher
where Tno='0002'

在这里插入图片描述
(5)查询有选课成绩大于等于90分的学生学号(重复学号只出现一次);

SELECT DISTINCT SNO
FROM SC
WHERE SCORE>=90

在这里插入图片描述
(6)查询学生中年龄在21-23岁之间的学生姓名出生日期

SELECT Sname, SBir
FROM student
where year(now())-year(SBir) BETWEEN 21 AND 23

在这里插入图片描述
(7)查询在部门01、02、或03的教职工情况;

SELECT *
FROM teacher
where DNo in ('01','02','03')

【MYSQL】单表查询_第4张图片
(8)查询没有给出成绩的选课情况;

SELECT *
FROM SC
WHERE SCORE IS NULL

在这里插入图片描述
(9)查询最高分大于等于90的课程总门数;

SELECT count(DISTINCT CNo) 课程门数
FROM SC
WHERE SCORE>=90

在这里插入图片描述
(10)查询姓马的同学信息;

SELECT *
FROM student
WHERE sname like '马%'

在这里插入图片描述
(11)查询名字里第二个字为剑的同学信息;

SELECT *
FROM student
WHERE SName like '_剑%'

在这里插入图片描述
(12)查询所有职工的姓名年龄,按年龄从小到大的顺序排列;

SELECT tname, age
FROM teacher
ORDER BY age

【MYSQL】单表查询_第5张图片
(13)查询课程号为001的成绩前五名的学生学号成绩(假设成绩没有重复)。

SELECT *
FROM SC
WHERE CNO='001'
ORDER BY SCORE DESC
LIMIT 0,5

【MYSQL】单表查询_第6张图片
(14)查询课程号为001的成绩倒数1、2名的学生学号成绩(成绩没录入的学生不纳入排名)。

SELECT CNO,SCORE
FROM SC
WHERE CNO='001' AND SCORE IS NOT NULL
ORDER BY SCORE 
LIMIT 0,2

在这里插入图片描述
(15)查询学号为00001和00002的学生选修课程号为001和002的选课情况;

SELECT CNO,SCORE
FROM SC
WHERE (sno='00001' or sno='00002') and (CNO='001' or CNO='002') 

在这里插入图片描述
(16)查询每门课程的最高分

SELECT CNo, Max(score)
FROM SC
GROUP BY CNo

【MYSQL】单表查询_第7张图片
(17)查询每个系的学生人数以及全部学生总人数

SELECT Clno,count(*)  人数
FROM student
GROUP BY CLno
with rollup

【MYSQL】单表查询_第8张图片
(18)查询每个部门年龄35岁及以上的教师的月薪平均工资,找出平均工资超过3000的部门号平均工资

SELECT DNo,AVG(sal)  平均工资
FROM teacher
WHERE age>=35
GROUP BY DNo
HAVING AVG(SAL)>=3000

在这里插入图片描述

你可能感兴趣的:(mysql)