数据库登录

  1. 主机地址:rm-bp188nr95fk4l9545ao.mysql.rds.aliyuncs.com
  2. 端口号:3306
  3. 用户名:fanmao65
  4. 密码:abc@fanmao65
  5. 数据库:fanmao65_hm

student表

Sno Sname Ssex Sbirthday class
108 曾华 1990/9/1 20033
107 匡明 1989/8/9 20031
101 王丽 1992/8/9 20033
109 李军 1991/7/8 20033
103 王芳 1993/7/9 20031
105 陆君 1990/7/8 20031

course科目表

Cno Cname Tno
3-105 计算机导论 825
3-245 操作系统 804
6-166 数字电路 856
9-888 高等数学 831

score成绩表

Sno Cno Degree
103 3-245 86
105 3-245 75
109 3-245 68
103 3-105 92
105 3-105 88
109 3-105 76
101 3-105 64
107 3-105 91
108 3-105 78
101 6-166 85
107 6-166 79
108 6-166 81

teacher老师表

Tno Tname Tsex Tbirthday Prof Depart
804 李成 1958/12/12 副教授 计算机系
856 张栩 1969/3/12 讲师 电子工程系
825 汪萍 1972/5/5 助教 计算机系
831 柳冰 1977/8/14 助教 电子工程系

完成如下题目:


  1. 查询教师表Depart列去重显示;

  2. 查询student表中班级为20031班或性别为女的同学记录;

  3. 查询20031班学生人数;

  4. 以Cno升序Degree降序查询Score表的学号,学生姓名,学科名称,成绩;

  5. 查询Score表中单科最高分的学生学号和课程号(子查询或排序);

  6. 查询20033班得分在80分以上或者等于 60,61,62的学生;

  7. 查询所有班级的名称,以及每个班级中人数和平均分;

  8. 查询总分最高的人员姓名,班级,总分;


如果想自己电脑上搭建,对应的sql创建语句如下:

  1. drop TABLE if EXISTS student;
  2. create table student(
  3. `sno` int(5) not null,
  4. `sname` varchar(3),
  5. `ssex` varchar(1),`sbirthday` datetime not null,
  6. `class` VARCHAR(10)
  7. );
  8. insert into student(`sno`,`sname`,`ssex`,`sbirthday`,`class`)
  9. values
  10. ("108","曾华","男","1990/9/1","20033"),
  11. ("107","匡明","男","1989/8/9","20031"),
  12. ("101","王丽","女","1992/8/9","20033"),
  13. ("109","李军","男","1991/7/8","20033"),
  14. ("103","王芳","女","1993/7/9","20031"),
  15. ("105","陆君","男","1990/7/8","20031");
  16. drop table if EXISTS course;
  17. create table course(
  18. `cno` VARCHAR(11) not null,
  19. `cname` varchar(255) not null,
  20. `tno` int(11)not null,
  21. primary key (`cno`)
  22. );
  23. insert into course
  24. (`cno`,`cname`,`tno`)
  25. VALUES
  26. ("3-105","计算机导论","825"),
  27. ("3-245","操作系统","804"),
  28. ("6-166","数字电路","856"),
  29. ("9-888","高等数学","831");
  30. DROP TABLE if EXISTS score;
  31. create table score(
  32. `sno` VARCHAR(10) not null,
  33. `cno` varchar(20) not null,
  34. `degree` varchar(15) not NULL
  35. );
  36. INSERT INTO `score`
  37. (`Sno`, `Cno`,`Degree`)
  38. values
  39. ("103","3-245","86"),
  40. ("105","3-245","75"),
  41. ("109","3-245","68"),
  42. ("103","3-105","92"),
  43. ("105","3-105","88"),
  44. ("109","3-105","76"),
  45. ("101","3-105","64"),
  46. ("107","3-105","91"),
  47. ("108","3-105","78"),
  48. ("101","6-166","85"),
  49. ("107","6-166","79"),
  50. ("108","6-166","81");
  51. DROP TABLE if EXISTS teacher;
  52. create table teacher
  53. (`tno` VARCHAR(11) not null,
  54. `tname` varchar(50) not null,
  55. `tsex` varchar(1) null,
  56. `tbirthday` datetime(6) not null,
  57. `prof` varchar(50) not null ,
  58. `depart` varchar(50) not null)
  59. ;
  60. insert into `teacher`
  61. (`tno`,`tname`,`tsex`,`tbirthday`,`prof`,`depart`)
  62. values
  63. ('804','李成','男','1958/12/1','副教授','计算机系'),
  64. ('856','张翔','男','1969/3/12','讲师','电子工程系'),
  65. ('825','汪萍','女','1972/5/5','助教','计算机系'),
  66. ('831','柳冰','女','1977/8/14','助教','电子工程系');

下面有个sql 里面的学生数据更多,也可以直接使用下面数据
升级版数据
fanmao65_hm.sql


  1. 给你一个这样的数据库表数据 | Y | M | Amount | | —- | —- | —- | | 2020 | 1 | 101 | | 2020 | 2 | 102 | | 2020 | 3 | 103 | | 2021 | 1 | 201 | | 2021 | 2 | 202 | | 2021 | 3 | 203 |

请写一个SQL,得出如下结果:

Y M1 M2 M3
2020 101 102 103
2021 201 202 203

简答题

  1. 请分别阐述 inner join、left join、right join SQL语句的结果差异
  2. 一个表中的ID有多个记录,把所有这个ID的记录查出来,并显示共有多少条记录数
  3. 数据库表记录的增、删、改分别用什么语法?