首页 > 数据库 >MySQL数据库select语句详细用法三(子查询及其select练习)

MySQL数据库select语句详细用法三(子查询及其select练习)

时间:2024-09-18 19:19:30浏览次数:10  
标签:语句 sno 查询 select student MySQL sc WHERE SELECT

SELECT *FROM student2 WHERE age > 
(SELECT age FROM student2 WHERE NAME ='欧阳丹丹')

首先解释一下括号中的代码,意思是在查询student2中的name为欧阳丹丹的人的名字,然后解释一下整个语句的意思:在括号中查询出来的字段中再次进行查询在student2中age大于name为欧阳丹丹的字段的字段。就是子查询

练习:

CREATE DATABASE studb;

INSERT INTO student (sno, sname, ssex, sage, sdept) VALUE (10001, '李勇', '男', 19, 'cs'),
(10002, '刘晨', '女', 20, 'is'),(10003, '王敏', '女', 21, 'ma'),(10004, '张力', '男', 20, 'is'),
(10005, '欧阳丹丹', '女', 22, 'ma');

INSERT INTO course (cno, cname, cpno, ccredit) VALUE (1, '数学', 5, 6),(2,'语文', 4, 5),
(3,'英语', 3, 3),(4, '物理', 1, 3),(5, '化学', 2, 4);
 
INSERT INTO sc(sno, cno, grade) VALUE (10001,    1,    96),
(10001,    2,    95),
(10001,3,    68),
(10001,    4,    89),
(10001,    5,    99),
(10002,    1,    87),
(10002,    2,    97),
(10002,    3,    100),
(10003,    1,    84),
(10004,    2,    95),
(10004,    4,    94),
(10004,    5,    75),
(10005,    2,    94),
(10005,    3,    100),
(10005,    4,    61),
(10005,    5,    56);

#把两个表中sno相同的记录关联到一起进行输出
SELECT * FROM student INNER JOIN sc ON student.sno=sc.sno
WHERE sdept='is'

SELECT * FROM student LEFT JOIN sc ON student.sno=sc.sno
WHERE grade>95

SELECT * FROM student RIGHT JOIN sc ON student.sno=sc.sno
WHERE sdept='is'


SELECT * FROM student,sc where student.sno=sc.sno AND sdept='is'

 

将此代码复制粘贴到数据库中运行即可获得一个数据库和三个表分别是student ,sc, course

这里7,8题较难所以解释一下其他的难度适中。

1.查询全体学生的学号和姓名
2.查询全体学生的姓名、学号、所在系
3.查询全体学生的详细记录
4.查全体学生的姓名及其出生年份
5.查看全体学生的姓名、出生年份和所在系(用小写字母表示所有系名)

1.SELECT sno,sname FROM student ;
2.SELECT sno,sname,sdept FROM student;
3.SELECT * FROM student;
4.SELECT sname,(2024-sage) AS birthday FROM student;
5.SELECT sname,(2024-sage) AS birthday,sdept FROM student;

sno代表着每个学生的编号,cno代表每个课程的编号,cname是课程名称,grade是分数

子查询可以进行多个表之间的查询,它可以将他们连接起来

6.查询每个学员所有科目平均成绩
7.按成绩从高到低排序查询成绩在80——90(闭区间)之间的学员姓名
8.查询选课学分在3以上的年龄最小的两个学员的姓名
9.查询每门课的平均分

6.SELECT sno,AVG(grade) FROM sc GROUP BY sno

7.SELECT sname FROM student WHERE sno IN 
(SELECT sno FROM sc WHERE grade IN 
(SELECT grade FROM sc WHERE grade>=80 AND grade<=90 ORDER BY grade DESC ));

解释:首先在sc表中找到成绩在80到90的成绩,然后再根据这个成绩在sc表中找到学生的编号最终在student表中找到学生的姓名。

8.SELECT sname FROM student WHERE sno IN 
(SELECT sno FROM sc WHERE cno IN 
(SELECT cno FROM course WHERE ccredit>3)) 
ORDER by sage ASC LIMIT 2

解释:首先在course表中找到学分大于三的并且年龄是升序的同学但是题中说是要两个人,所以我们要限制人数使用limit关键字,然后在sc表中根据这个cno查询出学生的编号,最后在student表中查询到姓名。

9.SELECT cno,AVG(grade) FROM sc GROUP BY cno

这里面重要的是处理问题的先后顺序,要选择正确的处理顺序才可以完成的有效率

至此MySQL的基本用法已经完成,请大家多多练习其实并不难的。难度过大的操作也是有的,但是对于工作上的数据库后端操作这些已经够用了。

标签:语句,sno,查询,select,student,MySQL,sc,WHERE,SELECT
From: https://blog.csdn.net/2302_80464795/article/details/142340865

相关文章

  • canal+ftp实现mysql数据跨网同步
    canal服务端编辑my.ini文件,保存后重启mysql,执行showvariableslike'log_bin'; 显示on代表开启#打开binloglog-bin=mysql-bin#选择ROW(行)模式binlog-format=ROW#配置MySQLreplaction需要定义,不要和canal的slaveId重复server_id=1#binlog文件最大值max_binlog_......
  • 使用客户端连接Mysql服务器.
    Mysql客户端软件有很多种,这种软件的目的就是为了连接到Mysql服务器,提供了一种图形化界面操作数据库的工具。[1]Navicat[2]Sqlyog[3]mysql黑窗口客户端界面。[4]Idea连接mysql...第一种:第二种:第三种:(这里我们使用idea居多,所以着重的说一下)......
  • asm内联语句在编译不支持的情况下的解决办法
    asm内联语句在编译不支持的情况下的解决办法本文链接在编写CUDA的C++程序时,NVIDIA的库文件中包含这样一行代码,这行代码在NVIDIA的编译器nvcc编译时可以正常通过,但迁移到AMD的编译器中将无法识别,生成报错。为了便于做迁移工作,我需要获得这行代码的执行信息。首先观察......
  • 2024-03-01 Windows MySQL5.7.27绿色版安装
    背景MySQL是常用数据库,其中版本已经有很多了,安装方式也有很多,联网装、安装包等。不仅安装麻烦,卸载也很麻烦。因此笔者一般都是使用绿色版安装,安装过程自己很清晰,每一步都知道自己做了什么,卸载时也很容易,自己安装的时候做了什么,卸载的时候删除什么就行了。版本MySQL版本很多,而......
  • 20240918_142249 mysql 事务与隔离级别
    认识mysql的两个端服务端只有服务端开启我们才可以连上客户端用户端我们通过客户端来连接服务端操作流程不论是哪种操作都是客户端请求服务端服务端响应客户端与事务相关的主要操作有增删改普通情况下增删改直接就成功但是有些情况下我们需要看情况来处理如果我......
  • zblog安装时出现您在zb_users/c_option.php内配置、或刚才填写的的 MySQL 连接信息是
    当你在安装Z-BlogPHP时遇到“您在 zb_users/c_option.php 内配置、或刚才填写的MySQL连接信息是否正确?”的提示时,这通常意味着数据库连接配置存在问题。以下是详细的排查和解决步骤:1.检查数据库连接配置首先,确保数据库连接配置正确。你需要检查以下几个方面:步骤1:查看......
  • ZBLOG PHP提示"Call to undefined function mysql_connect()"错误
    当遇到Z-BlogPHP在PHP7.2上出现 mysql_connect() 未定义的错误时,这是因为PHP7.2默认不再支持MySQL扩展(mysql 扩展)。你需要进行一些调整来使Z-BlogPHP兼容PHP7.2。以下是两种解决方案:解决方案一:降级PHP版本如果你暂时不想修改代码,可以选择降级PHP版本到一......
  • 在 MySQL InnoDB 中,允许开发人员在 MySQL 事务中手动控制锁 - 称之为“用户级锁”。
    在MySQLInnoDB中,允许开发人员在MySQL事务中手动控制锁-称之为“用户级锁”。用户级锁不直接与InnoDB的内部行或表锁定机制交互。用户级锁使用GET_LOCK()、RELEASE_LOCK()函数进行管理。用户级锁提供了更细粒度的控制,让你能在应用层实施自定义加锁策略。主要函数包括:GET_L......
  • 如何选择适合项目的 MySQL 存储引擎?
    在选择适合项目的MySQL存储引擎时,需要考虑多个因素。以下是一些关键的考虑点和选择方法:一、了解不同存储引擎的特点InnoDB支持事务:这是InnoDB最显著的特点之一。如果你的项目需要确保数据的完整性和一致性,并且可能涉及多个操作的原子性,那么InnoDB是一个很好的选......
  • Docker-compose安装MySQL8.0.39
    编写DockerfileFROMmysql:8.0.39ENVTZ=Asia/ShanghaiRUNln-sf/usr/share/zoneinfo/$TZ/etc/localtime&&echo$TZ>/etc/timezone编写docker-compose.yml,与Dockerfile在同目录中services:db:build:context:./image:mysql:8.0.39......