1. -- 1. 使用本机MySQL-School数据库,测试多表查询
    2. select * from classes c, student s WHERE c.cid = s.cno
    3. select * from classes c LEFT JOIN student s ON c.cid = s.cno
    4. -- 查询学生生日在1710月之后的班级的信息
    5. SELECT * FROM classes WHERE cid in ( SELECT cno FROM student WHERE birthday > '2017-10-01')
    6. -- 查询学生生日大于17101日,如果记录存在,前面的SQL语句就会执行
    7. SELECT * FROM classes WHERE EXISTS ( SELECT cno FROM student WHERE birthday > '2017-10-01')
    8. -- 学生所在班级编号大于任意一个班级编号就符合
    9. SELECT * FROM classes WHERE cid > ANY(SELECT cno FROM student)
    10. -- 学生所在班级编号大于所有班级编号才符合
    11. SELECT * FROM classes WHERE cid > ALL(SELECT cno FROM student)
    12. -- 查询班级名称,和班级总人数
    13. SELECT c.cname , count(*) FROM classes c,student s WHERE c.cid = s.cno GROUP BY cname
    14. -- 查询学生的姓名和学生所选的总课程平均成绩。
    15. SELECT s.sname,AVG(sc.score) FROM student s,stu_cour sc WHERE s.sid = sc.sno GROUP BY sname
    16. -- 查询学生的姓名和学生的选课总数,显示选课超过2门学生姓名。
    17. SELECT s.sname,count(sc.cno) FROM student s,stu_cour sc WHERE s.sid = sc.sno GROUP BY sname HAVING count(sc.cno) > 2
    18. -- 查询平均成绩大于80分的学生的总数
    19. SELECT count(c.sname) from (SELECT s.sname,AVG(sc.score) FROM student s,stu_cour sc WHERE s.sid = sc.sno GROUP BY sname HAVING AVG(sc.score > 80)) c
    20. -- 查询学生的平均成绩,但是平均成绩大于01班的任何一个学生的平均成绩。
    21. SELECT s.sname,AVG(sc.score) FROM student s,stu_cour sc WHERE s.sid = sc.sno GROUP BY s.sname HAVING AVG(sc.score) > ANY(SELECT AVG(sc.score) FROM student s,stu_cour sc WHERE s.sid = sc.sno AND s.cno = 1 GROUP BY s.sname)
    22. -- 2. 使用本机Oraclewateruser/itcast
    23. -- 按区域分组统计水费合计数
    24. SELECT a.AREAID,SUM(a.money) FROM T_ACCOUNT a GROUP BY a.AREAID
    25. -- 查询水费合计大于 16900 的区域及水费合计
    26. SELECT sum(a.MONEY),a.AREAID FROM T_ACCOUNT a GROUP BY a.AREAID HAVING SUM(a.MONEY) > 169000
    27. -- 查询显示业主编号,业主名称,业主类型名称
    28. SELECT ow.id 业主编号,ow.name 业主名称,ot.name 业主类型 FROM T_OWNERS ow,T_OWNERTYPE ot WHERE ow.ownertypeid=ot.id
    29. -- 查询显示业主编号,业主名称、地址和业主类型
    30. SELECT ow.id 业主编号,ow.name 业主名称,ot.name 业主类型,ad.name 地址 FROM T_OWNERS ow,T_OWNERTYPE ot,T_ADDRESS ad WHERE ow.ownertypeid=ot.id AND ow.addressid=ad.id
    31. -- 查询显示业主编号、业主名称、地址、所属区域、业主分类
    32. SELECT ow.id 业主编号,ow.name 业主名称,ot.name 业主类型,ad.name 地址,ar.name 所属区域 FROM T_OWNERS ow,T_OWNERTYPE ot,T_ADDRESS ad,T_AREA ar WHERE ow.ownertypeid=ot.id AND ow.addressid=ad.id AND ad.areaid=ar.id
    33. -- 查询显示业主编号、业主名称、地址、所属区域、收费员、业主分类
    34. SELECT ow.id 业主编号,ow.name 业主名称,ot.name 业主类型,ad.name 地址,ar.name 所属区域,op.name 收费员 FROM T_OWNERS ow,T_OWNERTYPE ot,T_ADDRESS ad,T_AREA ar,T_OPERATOR op WHERE ow.ownertypeid=ot.id AND ow.addressid=ad.id AND ad.areaid=ar.id AND ad.operatorid=op.id
    35. -- 查询业主的账务记录,显示业主编号、名称、年、月、金额。如果此业主 没有账务记录也要列出姓名。
    36. SELECT ow.id,ow.name,ac.year,ac.month,ac.money FROM T_OWNERS ow LEFT JOIN T_ACCOUNT ac ON ow.id = ac.owneruuid
    37. SELECT ow.id,ow.name,ac.year,ac.month,ac.money FROM T_ACCOUNT ac RIGHT JOIN T_OWNERS ow ON ow.id = ac.owneruuid
    38. SELECT ow.id,ow.name,ac.year ,ac.month,ac.money FROM T_OWNERS ow,T_ACCOUNT ac WHERE ow.id=ac.owneruuid(+)
    39. -- 查询 2012 1 月用水量大于平均值的台账记录
    40. SELECT * FROM T_ACCOUNT ac WHERE ac.year = 2012 and ac.month = 01 and ac.usenum > (SELECT AVG(usenum) FROM T_ACCOUNT WHERE year = 2012 AND month = 01)
    41. -- 查询地址编号为 1 34 的业主记录
    42. SELECT * FROM T_OWNERS ow WHERE ow.addressid in (1,3,4)
    43. -- 查询地址含有“花园”的业主的信息
    44. SELECT * FROM T_OWNERS ow,T_ADDRESS ad WHERE ow.addressid=ad.id and ad.name like '%花园%'
    45. select * from T_OWNERS where addressid in ( select id from t_address where name like '%花园%' )
    46. -- 查询地址不含有“花园”的业主的信息
    47. SELECT * FROM T_OWNERS ow WHERE ow.addressid in (SELECT id FROM T_ADDRESS ad WHERE ad.name not like '%花园%')
    48. -- 查询显示业主编号,业主名称,业主类型名称,条件为业主类型为”居民”, 使用子查询实现。
    49. SELECT * FROM (SELECT ow.id,ow.name,ot.name 业主类型 FROM T_OWNERS ow,T_OWNERTYPE ot WHERE ow.ownertypeid=ot.id) WHERE 业主类型 = '居民'
    50. -- 列出业主信息,包括 ID,名称,所属地址。
    51. SELECT ow.id,ow.name,(SELECT name FROM T_ADDRESS ad WHERE ad.id=ow.addressid) FROM T_OWNERS ow
    52. -- 列出业主信息,包括 ID,名称,所属地址,所属区域
    53. SELECT
    54. ow.id 业主ID,
    55. ow.name 名称,
    56. ( SELECT ad.name 所属地址 FROM T_ADDRESS ad WHERE ow.addressid = ad.id ),
    57. (SELECT (SELECT name FROM T_AREA ar WHERE ad.areaid = ar.id) FROM T_ADDRESS ad WHERE ad.id = ow.addressid)
    58. FROM
    59. T_OWNERS ow
    60. --