MySql45道练习

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySql45道练习
show databases ;
create database newTest;
use newTest;
CREATE TABLE STUDENTS
(sno VARCHAR(3) NOT NULL,
sname VARCHAR(4) NOT NULL,
ssex VARCHAR(2) NOT NULL,
sbirthday DATETIME,
class VARCHAR(5));
CREATE TABLE COURSES
(cno VARCHAR(5) NOT NULL,
cname VARCHAR(10) NOT NULL,
tno VARCHAR(10) NOT NULL);
CREATE TABLE SCORES
(sno VARCHAR(3) NOT NULL,
cno VARCHAR(5) NOT NULL,
degree NUMERIC(10, 1) NOT NULL);
CREATE TABLE TEACHERS
(tno VARCHAR(3) NOT NULL,
tname VARCHAR(4) NOT NULL, tsex VARCHAR(2) NOT NULL,
tbirthday DATETIME NOT NULL, prof VARCHAR(6),
depart VARCHAR(10) NOT NULL);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108 ,‘曾华’ ,‘男’ ,‘1977-09-01’,95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (105 ,‘匡明’ ,‘男’ ,‘1975-10-02’,95031);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (107 ,‘王丽’ ,‘女’ ,‘1976-01-23’,95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (101 ,‘李军’ ,‘男’ ,‘1976-02-20’,95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (109 ,‘王芳’ ,‘女’ ,‘1975-02-10’,95031);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (103 ,‘陆君’ ,‘男’ ,‘1974-06-03’,95031);
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES (‘3-105’ ,‘计算机导论’,825);
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES (‘3-245’ ,‘操作系统’ ,804);
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES (‘6-166’ ,‘数据电路’ ,856);
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES (‘9-888’ ,‘高等数学’ ,100);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (103,‘3-245’,86);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (105,‘3-245’,75);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (109,‘3-245’,68);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (103,‘3-105’,92);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (105,‘3-105’,88);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (109,‘3-105’,76);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (101,‘3-105’,64);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (107,‘3-105’,91);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (108,‘3-105’,78);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (101,‘6-166’,85);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (107,‘6-106’,79);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (108,‘6-166’,81);
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (804,‘李诚’,‘男’,‘1958-12-02’,‘副教授’,‘计算机系’);
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (856,‘张旭’,‘男’,‘1969-03-12’,‘讲师’,‘电子工程系’);
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (825,‘王萍’,‘女’,‘1972-05-05’,‘助教’,‘计算机系’);
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (831,‘刘冰’,‘女’,‘1977-08-14’,‘助教’,‘电子工程系’);

1、 查询Student表中的所有记录的Sname、Ssex和Class列。

select s.sname,s.ssex,s.class from STUDENTS s;

2、 查询教师所有的单位即不重复的Depart列。

select distinct t.depart from TEACHERS t;

3、 查询Student表的所有记录。

select * from STUDENTS;

4、 查询Score表中成绩在60到80之间的所有记录。

select * from SCORES s where s.degree>=60 and s.degree <=80;

5、 查询Score表中成绩为85,86或88的记录。

select * from SCORES s where s.degree=85 or s.degree =86 or s.degree =88;

6、 查询Student表中“95031”班或性别为“女”的同学记录。

select * from STUDENTS s where s.class=‘95031’ or s.ssex =‘女’;

7、 以Class降序查询Student表的所有记录。

select * from STUDENTS order by STUDENTS.class desc ;

8、 以Cno升序、Degree降序查询Score表的所有记录。

select * from SCORES sc order by sc.cno ,sc.degree desc;

9、 查询“95031”班的学生人数。

select count(1) from STUDENTS st where st.class=‘95031’;

10、查询Score表中的最高分的学生学号和课程号。

select sc.sno,sc.cno from SCORES sc where degree =(select MAX(sc2.degree) from SCORES sc2);

11、查询‘3-105’号课程的平均分。

select avg(degree) ‘‘3-105’号课程的平均分’ from COURSES co ,SCORES sc where co.cno=sc.cno and co.cno=‘3-105’;
12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
select * from SCORES sc ,COURSES co where co.cno=sc.cno
and co.cno like ‘3%’ and count();
select avg(degree) from SCORES sc ,COURSES co where co.cno=sc.cno and co.cno like ‘3%’ group by co.cno having count(1)>5;
select avg(Degree) from SCORES group by Cno having count(*) > 5
and Cno like ‘3%’;
####### 13、查询最低分大于70,最高分小于90的Sno列。
select * from STUDENTS stu,SCORES sco where stu.sno=sco.sno
and sco.degree =(select MIN(sco.degree) from STUDENTS stu,SCORES sco where stu.sno=sco.sno ) ;
select Sno from SCORES where Degree >70 and Degree < 90;

select Sno from SCORES Degree be 70 and 90;

14、查询所有学生的Sname、Cno和Degree列。

select stu.sname,sco.cno ,sco.degree from STUDENTS stu,SCORES sco where stu.sno=sco.sno;

15、查询所有学生的Sno、Cname和Degree列。

select stu.sno,co.cname ,sco.degree from STUDENTS stu,SCORES sco,COURSES co where stu.sno=sco.sno and co.cno=sco.cno;

16、查询所有学生的Sname、Cname和Degree列。

select stu.sname,co.cname ,sco.degree from STUDENTS stu,SCORES sco,COURSES co where stu.sno=sco.sno and co.cno=sco.cno;

17、查询“95033”班所选课程的平均分。

select avg(degree) ‘“95033”班所选课程的平均分’ from STUDENTS st ,SCORES so where st.sno=so.sno and st.class=‘95033’ group by so.cno;

18、假设使用如下命令建立了一个grade表:

create table grade(low int,upp int,rank char(1));
insert into grade values(90,100,‘A’);
insert into grade values(80,89,‘B’);
insert into grade values(70,79,‘C’);
insert into grade values(60,69,‘D’);
insert into grade values(0,59,‘E’);
commit;

现查询所有同学的Sno、Cno和rank列。

select distinct (stu.sno),sco.cno, g.rank from STUDENTS stu,SCORES sco,grade g where stu.sno=sco.sno;

19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。

select * from STUDENTS stu,SCORES sco,COURSES co where stu.sno=sco.sno
and co.cno=sco.cno and co.cno=‘3-105’
and sco.degree> (select degree from STUDENTS stu,SCORES sco,COURSES co
where stu.sno=sco.sno and co.cno=sco.cno and sco.sno=‘109’ and co.cno=‘3-105’);

20、查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。

select * from SCORES sco,COURSES co where co.cno=sco.cno and sco.degree not in
(select MAX(sco.degree) from SCORES sco,COURSES co ) group by sco.sno;
select * from SCORES a where Sno in
(select Sno from SCORES group by Sno having count(*)>1)
and Degree not in (select max(Degree) from SCORES b where b.Cno=a.Cno);
select count(co.cno) from SCORES sco,COURSES co where co.cno=sco.cno and sco.degree group by sco.sno;

21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。

select * from SCORES sco,COURSES co where co.cno=sco.cno and
sco.degree> (select sco.degree from SCORES sco,COURSES co where co.cno=sco.cno and sco.sno=‘109’ and co.cno=‘3-105’);

22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。

select sno,sname,sbirthday from STUDENTS stu where 2020-YEAR(stu.sbirthday)=(
select distinct 2020-YEAR(stu.sbirthday) from STUDENTS stu,SCORES sco,COURSES co
where stu.sno=sco.sno and co.cno=sco.cno and stu.sno=‘107’);
select Sno,Sname,Sbirthday from STUDENTS where year(Sbirthday) in (select year(Sbirthday) from STUDENTS where Sno=‘108’ or ‘101’);

23、查询“张旭“教师任课的学生成绩。

select sco.degree from SCORES sco ,TEACHERS tea where tea.tname =‘张旭’;

24、查询选修某课程的同学人数多于5人的教师姓名。

select Tname from TEACHERS where Tno in
(select Tno from COURSES where Cno in
(select Cno from SCORES
group by Cno
having count(Sno)>5));
select tname from TEACHERS
where tno in (select tno from COURSES where cno in (
select cno from SCORES sc group by cno having count(sc.sno)>5));

25、查询95033班和95031班全体学生的记录。

select * from STUDENTS stu;

26、查询存在有85分以上成绩的课程Cno.

select co.cno from COURSES co ,SCORES sco where sco.cno=co.cno and sco.degree >85;

27、查询出“计算机系“教师所教课程的成绩表。

select degree from TEACHERS tea ,SCORES sco where tea.depart=‘计算机系’;

28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。

select prof,tname from TEACHERS tea ;

29、查询选修编号为“3-105“课程

且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,

并按Degree从高到低次序排序。

select co.cno,sco.sno,sco.degree from STUDENTS stu,SCORES sco,COURSES co
where stu.sno=sco.sno and co.cno=sco.cno
and co.cno=‘3-105’
and sco.degree >(select min( sc.degree) from SCORES sc where sc.cno=‘3-245’)
order by sco.degree desc ;

30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.

select co.cno,sco.sno,sco.degree from STUDENTS stu,SCORES sco,COURSES co
where stu.sno=sco.sno and co.cno=sco.cno
and co.cno=‘3-105’
and sco.degree >(select max( sc.degree) from SCORES sc where sc.cno=‘3-245’)
order by sco.degree desc ;

31、查询所有教师和同学的name、sex和birthday.

select tname 老师,tsex,tbirthday,sname 学生,ssex,sbirthday from TEACHERS ,STUDENTS ;

32、查询所有“女”教师和“女”同学的name、sex和birthday.

select tname 老师,tsex,tbirthday,sname 学生,ssex,sbirthday from TEACHERS ,STUDENTS where ssex=‘女’ and tsex=‘女’;

33、查询成绩比该课程平均成绩低的同学的成绩表。

select * from SCORES so where so.degree <(select avg(so.degree) from SCORES so);

34、查询所有任课教师的Tname和Depart.

select tea.tname,depart from TEACHERS tea where prof like ‘讲师’;

35 查询所有未讲课的教师的Tname和Depart.

select tea.tname,depart from TEACHERS tea where prof not like ‘讲师’;

36、查询至少有2名男生的班号。

select class ,count(ssex) c from STUDENTS stu having c>=2;

37、查询Student表中不姓“王”的同学记录。

select * from STUDENTS stu where stu.sname not like ‘王%’;

38、查询Student表中每个学生的姓名和年龄。

SELECT sname 姓名,2020-YEAR(sbirthday) 年龄
FROM STUDENTS;

39、查询Student表中最大和最小的Sbirthday日期值。

select MAX(sbirthday),MIN(sbirthday) from STUDENTS stu ;

40、以班号和年龄从大到小的顺序查询Student表中的全部记录。

select class 班号,2020-YEAR(sbirthday) 年龄 from STUDENTS stu order by sbirthday;
select * from STUDENTS order by class desc,sbirthday asc;

41、查询“男”教师及其所上的课程。

select tname,cname from TEACHERS tea ,COURSES co where tea.tsex like ‘男’ and tea.tno =co.tno;

42、查询最高分同学的Sno、Cno和Degree列。

select * from SCORES sco where degree=(select max(degree) from SCORES) ;

43、查询和“李军”同性别的所有同学的Sname.

select sname from STUDENTS stu where stu.ssex = (
select stu.ssex from STUDENTS stu where stu.sname=‘李军’
) having sname !=‘李军’;

44、查询和“李军”同性别并同班的同学Sname.

select * from STUDENTS stu where class='95031’and stu.ssex = (
select stu.ssex from STUDENTS stu where stu.sname=‘李军’
) having sname !=‘李军’;

45、查询所有选修“计算机导论”课程的“男”同学的成绩表

select sco.degree from STUDENTS stu ,COURSES co ,SCORES sco where stu.sno=sco.sno and co.cno=sco.cno and cname=‘计算机导论’ and ssex=‘男’ order by degree;
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
存储 关系型数据库 MySQL
Mysql全面总结
本文全面总结了MySQL的相关知识,涵盖思维导图、架构、存储引擎、数据类型、索引、查询、事务、锁机制、调优、分区与分表分库、主从复制及其他问题。MySQL采用插件式存储引擎架构,支持多种存储引擎,如InnoDB和MyISAM,每种引擎具备不同的特性。文章详细介绍了InnoDB和MyISAM的对比,包括事务支持、行级锁定、索引类型等。此外,还探讨了MySQL的查询优化、性能调优、主从复制等内容,适合数据库开发者和运维人员阅读。如涉及版权问题,请联系作者删除。
Mysql全面总结
|
5月前
|
SQL 关系型数据库 MySQL
MySQL
MySQL
30 1
|
6月前
|
SQL NoSQL 关系型数据库
Mysql锁及适用场景
Mysql锁及适用场景
55 0
|
关系型数据库 MySQL
MySQL问题汇总
MySQL问题汇总
91 0
|
关系型数据库 MySQL
MySQL一行变多行,多行变一行
MySQL一行变多行,多行变一行
201 1
MySQL一行变多行,多行变一行
|
SQL 关系型数据库 MySQL
盘点一下Mysql中的一些小知识(二)
盘点一下Mysql中的一些小知识(二)
86 0
|
SQL 存储 Oracle
盘点一下Mysql中的一些小知识(一)
盘点一下Mysql中的一些小知识(一)
84 0
|
存储 关系型数据库 MySQL
MySQL练习(二)
MySQL存储过程运用
81 0
MySQL练习(二)
|
SQL 关系型数据库 MySQL
MySQL(三)
MySQL(三),一起来学习吧。
|
存储 SQL 关系型数据库
MySQL 总结
引擎类型 与其他 DBMS 一样,MySQL 有一个具体管理和处理数据的内部引擎。在你使用CREATE TABLE 语句时,该引擎具体创建表,而在你使用 SELECT 语句或进行其他数据库处理时,该引擎在内部处理你的请求。多数时候,此引擎都隐藏在 DBMS 内,不需要过多关注它。但 MySQL 与其他 DBMS 不一样,它具有多种引擎。它打包多个引擎,这些引擎都隐藏在MySQL服务器内,全都能执行 CREATE TABLE 和 SELECT 等命令。为什么要发行多种引擎呢?因为它们具有各自不同的功能和特性,为不同的任务选择正确的引擎能获得良好的功能和灵活性。 以下是几个需要知道的引擎: ❑
214 0