多表查询实例
use studentmanager
SELECT * FROM student
SELECT * FROM score
SELECT * FROM student CROSS JOIN score
SELECT * FROM student JOIN score
SELECT * FROM student,score
SELECT * FROM student,score WHERE student.stuid = score.stuid
SELECT stu.stuid,`name`,subid,score
FROM student stu,score sco
WHERE stu.stuid = sco.stuid AND `name`='jim'
SELECT student.stuid,`name`,sex,subid,score
FROM student
INNER JOIN score
ON student.stuid = score.stuid
WHERE `name` = 'jim'
SELECT score.subid,subname,AVG(score) AS avg
FROM score
INNER JOIN `subject`
ON score.subid = `subject`.subid
GROUP BY score.subid,subname
ORDER BY avg DESC,subid
SELECT stu.stuid,`name`,c.cid,cname,sub.subname,score
FROM student stu,classinfo c,score sco,`subject` sub
WHERE stu.stuid = sco.stuid AND stu.cid = c.cid AND sub.subid = sco.subid
SELECT stu.stuid,`name`,cla.cid,cname,subname,score
FROM student stu
INNER JOIN classinfo cla
ON stu.cid = cla.cid
INNER JOIN score sco
ON sco.stuid = stu.stuid
INNER JOIN `subject` sub
ON sco.subid = sub.subid
SELECT stu.stuid,`name`,subid,score
FROM student stu
LEFT JOIN score sco
ON sco.stuid = stu.stuid
SELECT student.stuid,`name`,IFNULL(subid,'未修'),IFNULL(score,'缺考')
FROM student
LEFT JOIN score
ON score.stuid = student.stuid
SELECT subname,`subject`.subid,score
FROM score
RIGHT JOIN `subject`
ON `subject`.subid = score.subid
SELECT `name`,subid,score
FROM student
RIGHT JOIN score
ON student.stuid = score.stuid
SELECT student.stuid,`name`,AVG(score) score
FROM student
LEFT JOIN score
ON score.stuid = student.stuid
GROUP BY student.stuid
SELECT student.stuid,`name`,score
FROM student
LEFT JOIN score
ON student.stuid = score.stuid
WHERE score IS NULL
SELECT *
FROM
(SELECT stu.stuid,`name`,cla.cid,cname,sub.subid,subname,score
FROM student stu
INNER JOIN classinfo cla
ON stu.cid = cla.cid
INNER JOIN score sco
ON sco.stuid = stu.stuid
INNER JOIN `subject` sub
ON sco.subid = sub.subid) newtable
ORDER BY score DESC,stu.stuid
SELECT score.stuid,name,AVG(score) score
FROM score
INNER JOIN student
ON student.stuid = score.stuid
GROUP BY score.stuid
HAVING score >= 60
ORDER BY score DESC
LIMIT 3
SELECT `subject`.subid,subname,IFNULL(AVG(score),'0') avgs
FROM `subject`
LEFT JOIN score
ON `subject`.subid=score.subid
GROUP BY score.subid
ORDER BY avgs DESC
USE employeemanager
SELECT eid,ename,job,salary,
CASE gid
WHEN 1 THEN '初级'
ELSE '其他等级'
END
FROM employee
INNER JOIN salarygrade
ON employee.salary >= salarygrade.lowsalary
AND employee.salary < salarygrade.highsalary
ORDER BY eid DESC
SELECT eid,ename,job,dname,salary,gid
FROM employee e
INNER JOIN dept d
ON e.did = d.did
INNER JOIN salarygrade s
ON e.salary >= s.lowsalary
AND e.salary < s.highsalary
ORDER BY eid
SELECT * FROM t1
UNION
SELECT * FROM t2
SELECT * FROM t1
UNION ALL
SELECT * FROM t2