数据库登录
主机地址:rm-bp188nr95fk4l9545ao.mysql.rds.aliyuncs.com端口号:3306用户名:fanmao65密码:abc@fanmao65数据库: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 | 助教 | 电子工程系 |
完成如下题目:
查询教师表Depart列去重显示;
查询student表中班级为
20031班或性别为女的同学记录;查询20031班学生人数;
以Cno升序Degree降序查询Score表的学号,学生姓名,学科名称,成绩;
查询Score表中单科最高分的学生学号和课程号(子查询或排序);
查询
20033班得分在80分以上或者等于 60,61,62的学生;查询所有班级的名称,以及每个班级中人数和平均分;
查询总分最高的人员姓名,班级,总分;
如果想自己电脑上搭建,对应的sql创建语句如下:
drop TABLE if EXISTS student;create table student(`sno` int(5) not null,`sname` varchar(3),`ssex` varchar(1),`sbirthday` datetime not null,`class` VARCHAR(10));insert into student(`sno`,`sname`,`ssex`,`sbirthday`,`class`)values("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");drop table if EXISTS course;create table course(`cno` VARCHAR(11) not null,`cname` varchar(255) not null,`tno` int(11)not null,primary key (`cno`));insert into course(`cno`,`cname`,`tno`)VALUES("3-105","计算机导论","825"),("3-245","操作系统","804"),("6-166","数字电路","856"),("9-888","高等数学","831");DROP TABLE if EXISTS score;create table score(`sno` VARCHAR(10) not null,`cno` varchar(20) not null,`degree` varchar(15) not NULL);INSERT INTO `score`(`Sno`, `Cno`,`Degree`)values("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");DROP TABLE if EXISTS teacher;create table teacher(`tno` VARCHAR(11) not null,`tname` varchar(50) not null,`tsex` varchar(1) null,`tbirthday` datetime(6) not null,`prof` varchar(50) not null ,`depart` varchar(50) not null);insert into `teacher`(`tno`,`tname`,`tsex`,`tbirthday`,`prof`,`depart`)values('804','李成','男','1958/12/1','副教授','计算机系'),('856','张翔','男','1969/3/12','讲师','电子工程系'),('825','汪萍','女','1972/5/5','助教','计算机系'),('831','柳冰','女','1977/8/14','助教','电子工程系');
下面有个sql 里面的学生数据更多,也可以直接使用下面数据
升级版数据
fanmao65_hm.sql
- 给你一个这样的数据库表数据 | 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 |
简答题
- 请分别阐述 inner join、left join、right join SQL语句的结果差异
- 一个表中的ID有多个记录,把所有这个ID的记录查出来,并显示共有多少条记录数
- 数据库表记录的增、删、改分别用什么语法?
