数据库登录
主机地址: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的记录查出来,并显示共有多少条记录数
- 数据库表记录的增、删、改分别用什么语法?