查询语法:
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为学生出生日期;
(1)查询所有教职工的情况;
SELECT *
FROM teacher
(2)查询所有教职工的职工编号、姓名;
SELECT Tno,TName
FROM teacher
(3)查询所有教职工的工号和年薪,并且将输出结果中的列名显示为==“教职工号”、“年薪”==(注意teacher表里的工资是月薪);
SELECT Tno 教职工号,Sal*12 年薪
FROM teacher
(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')
(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
(13)查询课程号为001的成绩前五名的学生学号和成绩(假设成绩没有重复)。
SELECT *
FROM SC
WHERE CNO='001'
ORDER BY SCORE DESC
LIMIT 0,5
(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
(17)查询每个系的学生人数以及全部学生总人数;
SELECT Clno,count(*) 人数
FROM student
GROUP BY CLno
with rollup
(18)查询每个部门年龄35岁及以上的教师的月薪平均工资,找出平均工资超过3000的部门号和平均工资。
SELECT DNo,AVG(sal) 平均工资
FROM teacher
WHERE age>=35
GROUP BY DNo
HAVING AVG(SAL)>=3000