文章目录

  • MySQL学习记录04where条件子句、联表查询、子查询
    • 4.1DQL
    • 4.2指定查询字段
    • 4.3where条件子句
    • 4.4联表查询
    • 4.5分页和排序
    • 4.6子查询

MySQL学习记录04where条件子句、联表查询、子查询

4.1DQL

Data Query Language:数据查询语言

  • 所有的查询操作都用它
  • 简单的查询和复杂的查询都能做
  • 数据库中最核心的语言,最重要的语句
  • 使用频率最高的语句

4.2指定查询字段

数据库school建立sql文件:

/*
SQLyog Enterprise v12.08 (64 bit)
MySQL - 5.7.37 : Database - school
*********************************************************************
*//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE=''*/;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`school` /*!40100 DEFAULT CHARACTER SET latin1 */;USE `school`;/*Table structure for table `grade` */DROP TABLE IF EXISTS `grade`;CREATE TABLE `grade` (`gradeid` int(11) NOT NULL AUTO_INCREMENT COMMENT '年级编号',`gradename` varchar(50) NOT NULL COMMENT '年级名称',PRIMARY KEY (`gradeid`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;/*Data for the table `grade` */insert  into `grade`(`gradeid`,`gradename`) values (1,'大一'),(2,'大二'),(3,'大三'),(4,'大四'),(5,'预科班');/*Table structure for table `result` */DROP TABLE IF EXISTS `result`;CREATE TABLE `result` (`studentno` int(4) NOT NULL COMMENT '学号',`subjectno` int(4) NOT NULL COMMENT '课程编号',`examdate` datetime NOT NULL COMMENT '考试日期',`studentresult` int(4) NOT NULL COMMENT '考试成绩',KEY `subjectno` (`subjectno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `result` */insert  into `result`(`studentno`,`subjectno`,`examdate`,`studentresult`) values (1000,1,'2013-11-11 16:00:00',85),(1000,2,'2013-11-12 16:00:00',70),(1000,3,'2013-11-11 09:00:00',68),(1000,4,'2013-11-13 16:00:00',98),(1000,5,'2013-11-14 16:00:00',58),(1000,6,'2013-11-14 16:00:00',66),(1000,7,'2013-11-14 16:00:00',97),(1000,8,'2013-11-14 16:00:00',87),(1000,9,'2013-11-14 16:00:00',60),(1000,10,'2013-11-14 16:00:00',68),(1000,11,'2013-11-14 16:00:00',87),(1000,12,'2013-11-14 16:00:00',86),(1000,13,'2013-11-14 16:00:00',78),(1000,14,'2013-11-14 16:00:00',88),(1000,15,'2013-11-14 16:00:00',79),(1000,16,'2013-11-14 16:00:00',67),(1001,1,'2013-11-11 16:00:00',85),(1001,2,'2013-11-12 16:00:00',70),(1001,3,'2013-11-11 09:00:00',68),(1001,4,'2013-11-13 16:00:00',98),(1001,5,'2013-11-14 16:00:00',76),(1001,6,'2013-11-14 16:00:00',66),(1001,7,'2013-11-14 16:00:00',87),(1001,8,'2013-11-14 16:00:00',87),(1001,9,'2013-11-14 16:00:00',80),(1001,10,'2013-11-14 16:00:00',65),(1001,11,'2013-11-14 16:00:00',77),(1001,12,'2013-11-14 16:00:00',86),(1001,13,'2013-11-14 16:00:00',98),(1001,14,'2013-11-14 16:00:00',68),(1001,15,'2013-11-14 16:00:00',69),(1001,16,'2013-11-14 16:00:00',77),(1002,1,'2013-11-11 16:00:00',85),(1002,2,'2013-11-12 16:00:00',90),(1002,3,'2013-11-11 09:00:00',78),(1002,4,'2013-11-13 16:00:00',98),(1002,5,'2013-11-14 16:00:00',76),(1002,6,'2013-11-14 16:00:00',76),(1002,7,'2013-11-14 16:00:00',87),(1002,8,'2013-11-14 16:00:00',57),(1002,9,'2013-11-14 16:00:00',80),(1002,10,'2013-11-14 16:00:00',95),(1002,11,'2013-11-14 16:00:00',67),(1002,12,'2013-11-14 16:00:00',66),(1002,13,'2013-11-14 16:00:00',68),(1002,14,'2013-11-14 16:00:00',90),(1002,15,'2013-11-14 16:00:00',79),(1002,16,'2013-11-14 16:00:00',67),(1003,1,'2013-11-11 16:00:00',83),(1003,2,'2013-11-12 16:00:00',90),(1003,3,'2013-11-11 09:00:00',70),(1003,4,'2013-11-13 16:00:00',98),(1003,5,'2013-11-14 16:00:00',74),(1003,6,'2013-11-14 16:00:00',76),(1003,7,'2013-11-14 16:00:00',87),(1003,8,'2013-11-14 16:00:00',54),(1003,9,'2013-11-14 16:00:00',80),(1003,10,'2013-11-14 16:00:00',95),(1003,11,'2013-11-14 16:00:00',87),(1003,12,'2013-11-14 16:00:00',66),(1003,13,'2013-11-14 16:00:00',88),(1003,14,'2013-11-14 16:00:00',56),(1003,15,'2013-11-14 16:00:00',79),(1003,16,'2013-11-14 16:00:00',66),(1004,1,'2013-11-11 16:00:00',80),(1004,2,'2013-11-12 16:00:00',91),(1004,3,'2013-11-11 09:00:00',61),(1004,4,'2013-11-13 16:00:00',68),(1004,5,'2013-11-14 16:00:00',84),(1004,6,'2013-11-14 16:00:00',66),(1004,7,'2013-11-14 16:00:00',77),(1004,8,'2013-11-14 16:00:00',54),(1004,9,'2013-11-14 16:00:00',84),(1004,10,'2013-11-14 16:00:00',90),(1004,11,'2013-11-14 16:00:00',77),(1004,12,'2013-11-14 16:00:00',86),(1004,13,'2013-11-14 16:00:00',68),(1004,14,'2013-11-14 16:00:00',50),(1004,15,'2013-11-14 16:00:00',69),(1004,16,'2013-11-14 16:00:00',60),(1005,1,'2013-11-11 16:00:00',80),(1005,2,'2013-11-12 16:00:00',91),(1005,3,'2013-11-11 09:00:00',61),(1005,4,'2013-11-13 16:00:00',62),(1005,5,'2013-11-14 16:00:00',83),(1005,6,'2013-11-14 16:00:00',61),(1005,7,'2013-11-14 16:00:00',71),(1005,8,'2013-11-14 16:00:00',54),(1005,9,'2013-11-14 16:00:00',81),(1005,10,'2013-11-14 16:00:00',94),(1005,11,'2013-11-14 16:00:00',71),(1005,12,'2013-11-14 16:00:00',85),(1005,13,'2013-11-14 16:00:00',61),(1005,14,'2013-11-14 16:00:00',53),(1005,15,'2013-11-14 16:00:00',61),(1005,16,'2013-11-14 16:00:00',60),(1006,1,'2013-11-11 16:00:00',83),(1006,2,'2013-11-12 16:00:00',90),(1006,3,'2013-11-11 09:00:00',61),(1006,4,'2013-11-13 16:00:00',72),(1006,5,'2013-11-14 16:00:00',73),(1006,6,'2013-11-14 16:00:00',71),(1006,7,'2013-11-14 16:00:00',71),(1006,8,'2013-11-14 16:00:00',74),(1006,9,'2013-11-14 16:00:00',61),(1006,10,'2013-11-14 16:00:00',64),(1006,11,'2013-11-14 16:00:00',81),(1006,12,'2013-11-14 16:00:00',55),(1006,13,'2013-11-14 16:00:00',91),(1006,14,'2013-11-14 16:00:00',57),(1006,15,'2013-11-14 16:00:00',65),(1006,16,'2013-11-14 16:00:00',60),(1007,1,'2013-11-11 16:00:00',83),(1007,2,'2013-11-12 16:00:00',90),(1007,3,'2013-11-11 09:00:00',61),(1007,4,'2013-11-13 16:00:00',72),(1007,5,'2013-11-14 16:00:00',70),(1007,6,'2013-11-14 16:00:00',61),(1007,7,'2013-11-14 16:00:00',81),(1007,8,'2013-11-14 16:00:00',68),(1007,9,'2013-11-14 16:00:00',61),(1007,10,'2013-11-14 16:00:00',64),(1007,11,'2013-11-14 16:00:00',70),(1007,12,'2013-11-14 16:00:00',55),(1007,13,'2013-11-14 16:00:00',70),(1007,14,'2013-11-14 16:00:00',54),(1007,15,'2013-11-14 16:00:00',70),(1007,16,'2013-11-14 16:00:00',60),(1008,1,'2013-11-11 16:00:00',83),(1008,2,'2013-11-12 16:00:00',90),(1008,3,'2013-11-11 09:00:00',81),(1008,4,'2013-11-13 16:00:00',82),(1008,5,'2013-11-14 16:00:00',77),(1008,6,'2013-11-14 16:00:00',66),(1008,7,'2013-11-14 16:00:00',77),(1008,8,'2013-11-14 16:00:00',55),(1008,9,'2013-11-14 16:00:00',97),(1008,10,'2013-11-14 16:00:00',56),(1008,11,'2013-11-14 16:00:00',67),(1008,12,'2013-11-14 16:00:00',78),(1008,13,'2013-11-14 16:00:00',67),(1008,14,'2013-11-14 16:00:00',66),(1008,15,'2013-11-14 16:00:00',56),(1008,16,'2013-11-14 16:00:00',88),(1009,1,'2013-11-11 16:00:00',80),(1009,2,'2013-11-12 16:00:00',60),(1009,3,'2013-11-11 09:00:00',80),(1009,4,'2013-11-13 16:00:00',82),(1009,5,'2013-11-14 16:00:00',64),(1009,6,'2013-11-14 16:00:00',66),(1009,7,'2013-11-14 16:00:00',76),(1009,8,'2013-11-14 16:00:00',55),(1009,9,'2013-11-14 16:00:00',97),(1009,10,'2013-11-14 16:00:00',55),(1009,11,'2013-11-14 16:00:00',77),(1009,12,'2013-11-14 16:00:00',78),(1009,13,'2013-11-14 16:00:00',86),(1009,14,'2013-11-14 16:00:00',76),(1009,15,'2013-11-14 16:00:00',50),(1009,16,'2013-11-14 16:00:00',88),(1010,1,'2013-11-11 16:00:00',80),(1010,2,'2013-11-12 16:00:00',90),(1010,3,'2013-11-11 09:00:00',80),(1010,4,'2013-11-13 16:00:00',80),(1010,5,'2013-11-14 16:00:00',70),(1010,6,'2013-11-14 16:00:00',60),(1010,7,'2013-11-14 16:00:00',70),(1010,8,'2013-11-14 16:00:00',50),(1010,9,'2013-11-14 16:00:00',90),(1010,10,'2013-11-14 16:00:00',50),(1010,11,'2013-11-14 16:00:00',60),(1010,12,'2013-11-14 16:00:00',70),(1010,13,'2013-11-14 16:00:00',60),(1010,14,'2013-11-14 16:00:00',60),(1010,15,'2013-11-14 16:00:00',50),(1010,16,'2013-11-14 16:00:00',88),(1011,1,'2013-11-11 16:00:00',81),(1011,2,'2013-11-12 16:00:00',91),(1011,3,'2013-11-11 09:00:00',81),(1011,4,'2013-11-13 16:00:00',81),(1011,5,'2013-11-14 16:00:00',71),(1011,6,'2013-11-14 16:00:00',61),(1011,7,'2013-11-14 16:00:00',71),(1011,8,'2013-11-14 16:00:00',51),(1011,9,'2013-11-14 16:00:00',91),(1011,10,'2013-11-14 16:00:00',60),(1011,11,'2013-11-14 16:00:00',70),(1011,12,'2013-11-14 16:00:00',60),(1011,13,'2013-11-14 16:00:00',80),(1011,14,'2013-11-14 16:00:00',80),(1011,15,'2013-11-14 16:00:00',80),(1011,16,'2013-11-14 16:00:00',78),(1012,1,'2013-11-11 16:00:00',82),(1012,2,'2013-11-12 16:00:00',93),(1012,3,'2013-11-11 09:00:00',84),(1012,4,'2013-11-13 16:00:00',65),(1012,5,'2013-11-14 16:00:00',66),(1012,6,'2013-11-14 16:00:00',78),(1012,7,'2013-11-14 16:00:00',56),(1012,8,'2013-11-14 16:00:00',59),(1012,9,'2013-11-14 16:00:00',61),(1012,10,'2013-11-14 16:00:00',89),(1012,11,'2013-11-14 16:00:00',67),(1012,12,'2013-11-14 16:00:00',97),(1012,13,'2013-11-14 16:00:00',70),(1012,14,'2013-11-14 16:00:00',89),(1012,15,'2013-11-14 16:00:00',86),(1012,16,'2013-11-14 16:00:00',78);/*Table structure for table `student` */DROP TABLE IF EXISTS `student`;CREATE TABLE `student` (`studentno` int(4) NOT NULL COMMENT '学号',`loginpwd` varchar(20) DEFAULT NULL,`studentname` varchar(20) DEFAULT NULL COMMENT '学生姓名',`sex` tinyint(1) DEFAULT NULL COMMENT '性别,0或1',`gradeid` int(11) DEFAULT NULL COMMENT '年级编号',`phone` varchar(50) NOT NULL COMMENT '联系电话,允许为空',`address` varchar(255) NOT NULL COMMENT '地址,允许为空',`borndate` datetime DEFAULT NULL COMMENT '出生时间',`email` varchar(50) NOT NULL COMMENT '邮箱账号允许为空',`identitycard` varchar(18) DEFAULT NULL COMMENT '身份证号',PRIMARY KEY (`studentno`),UNIQUE KEY `identitycard` (`identitycard`),KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;/*Data for the table `student` */insert  into `student`(`studentno`,`loginpwd`,`studentname`,`sex`,`gradeid`,`phone`,`address`,`borndate`,`email`,`identitycard`) values (1000,'123456','张伟',0,2,'13800001234','北京朝阳','1980-01-01 00:00:00','text123@qq.com','123456198001011234'),(1001,'123456','赵强',1,3,'13800002222','广东深圳','1990-01-01 00:00:00','text111@qq.com','123456199001011233'),(1002,'111111','韩萌',1,1,'13500024565','北京东城区','1989-02-02 22:53:07','xxxx@qq.com','123456198902021234'),(1003,'123456','张三',0,2,'13800453434','北京朝阳','1980-01-01 00:00:00','text123@qq.com','123456198001011255'),(1004,'123456','李四',1,3,'13800552222','广东佛山','1990-01-01 00:00:00','text12341@qq.com','123456199001011244'),(1005,'123456','刘洋',0,1,'13801223434','广西桂林','1981-01-01 00:00:00','text1266@qq.com','123456198101011255'),(1006,'123456','赵成',1,4,'13800389222','河南洛阳','1992-01-01 00:00:00','text1255541@qq.com','123456199201011244'),(1007,'123456','陈冕',0,3,'13811153434','北京朝阳','1983-01-01 00:00:00','text143@qq.com','123456198301011255'),(1008,'123456','刘杰',1,4,'13521153434','天津市和平区','1983-02-01 00:00:00','text143@qq.com','123456198302011255'),(1009,'123456','刘杰辉',1,2,'13811243434','北京朝阳','1980-02-01 00:00:00','text143@qq.com','123456198002011255'),(1010,'123456','牛恩来',1,3,'13822153434','北京朝阳','1983-03-01 00:00:00','text143@qq.com','123456198303011255'),(1011,'123456','陈茜',0,4,'13811152234','安徽','1981-02-01 00:00:00','text143@qq.com','123456198102011255'),(1012,'123456','马辉',1,3,'13800511122','上海','1994-01-01 00:00:00','text11341@qq.com','123456199401011244');/*Table structure for table `subject` */DROP TABLE IF EXISTS `subject`;CREATE TABLE `subject` (`subjectno` int(11) NOT NULL AUTO_INCREMENT COMMENT '课程编号',`subjectname` varchar(50) DEFAULT NULL COMMENT '课程名称',`classhour` int(4) DEFAULT NULL COMMENT '学时',`gradeid` int(4) DEFAULT NULL COMMENT '年级编号',PRIMARY KEY (`subjectno`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;/*Data for the table `subject` */insert  into `subject`(`subjectno`,`subjectname`,`classhour`,`gradeid`) values (1,'高等数学-1',110,1),(2,'高等数学-2',110,2),(3,'高等数学-3',100,3),(4,'高等数学-4',130,4),(5,'C语言-1',110,1),(6,'C语言-2',110,2),(7,'C语言-3',100,3),(8,'C语言-4',130,4),(9,'Java程序设计-1',110,1),(10,'Java程序设计-2',110,2),(11,'Java程序设计-3',100,3),(12,'Java程序设计-4',130,4),(13,'数据库结构-1',110,1),(14,'数据库结构-2',110,2),(15,'数据库结构-3',100,3),(16,'数据库结构-4',130,4),(17,'C#基础',130,1);/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

1、查询全部学生
SELECT 字段 FROM 表

SELECT * FROM student

2、查询指定字段

SELECT `studentno`,`studentname` FROM student

给结果取列取别名

SELECT `studentno` AS 学号,`studentname` AS 学生姓名 FROM student


也可以给表取别名

3、拼接字符串 函数concat(a,b)

SELECT CONCAT('姓名:',studentname) AS 新名字 FROM student


4、去重
例,
查询全部考试成绩:

SELECT * FROM result

查询有哪些同学参加了考试:

SELECT `studentno` FROM result


但是有很多重复,需要去重:

SELECT  DISTINCT `studentno` FROM result

DISTINCT作用:去除selest查询出来的结果中重复的数据

4.3where条件子句

作用:检索数据中符合条件的值
搜索的条件由一个或多个表达式组成,一般返回结果为布尔值

逻辑运算符

运算符 语法 描述
and(&&) a and b ,a &&b 逻辑与,两个为真结果为真
or(||) a or b,a ||b 逻辑或,其中一个为真则结果为真
not() not a,!a 逻辑非,真为假,假为真

例:
查询考试成绩

SELECT `studentno`,`studentresult` FROM result

查询考试成绩在95~100分之间:

SELECT `studentno`,`studentresult` FROM result
WHERE `studentresult`>=95 AND `studentresult`<100


模糊查询:比较运算符

符号 描述
IS NULL 为空
IS NOT NULL 不为空
BETWEEN AND 在两值之间
LIKE 模糊匹配
IN 在集合中

例:
查询刘姓学生

SELECT `studentno`,`studentname` FROM `student`
WHERE `studentname` LIKE '刘%';


查询刘姓、名字只有两个字的学生

SELECT `studentno`,`studentname` FROM `student`
WHERE `studentname` LIKE '刘_';


查询学号为1001、1002、1003的学生

SELECT `studentno`,`studentname` FROM `student`
WHERE `studentno` IN(1001,1002,1003);

注意:
IN 查的是具体的值,不能用“ IN (‘北京%’)”来查地址由“北京”开头的信息

4.4联表查询

1、JOIN对比
七种join理论:

例,查询参加了考试的学生,要求查询出学号、姓名、科目编号、分数信息

思路:
1.分析需求,分析查询的字段来自哪些表,(连接查询)
2.确定使用哪种连接查询
确定交叉点(这两个表中哪个数据是相同的)
判断的条件:学生表的中 studentno = 成绩表studentno

SELECT s.studentno,studentname ,subjectno,studentresult
FROM `student` AS s
INNER JOIN `result` AS r
WHERE s.`studentno` = r.`studentno`

SELECT s.studentno,studentname ,subjectno,studentresult
FROM `student` AS s
INNER JOIN `result` AS r
ON s.`studentno` = r.`studentno`

操作 描述
inner join 在两张表进行连接查询时,只保留两张表中完全匹配的结果集
eft join 在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录
right join 在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录
full join 在两张表进行连接查询时,返回左表和右表中所有没有匹配的行

关于on和where的选择条件的区别:
on后面的是连接条件, 代表两个表建立关系所遵循的规则(连接查询)
where后面的可以看作是筛选条件,是对最终结果集进行过滤所遵循的规则(等值查询)

SELECT s.studentno, studentname , Subjectname, `studentResult`
FROM student s
RIGHT JOIN result r
ON r.studentNo = s.studentNo
INNER JOIN `subject` sub
ON r.subjectNo = sub.subjectNo

思路小结:
要查询哪些数据? select…
从哪几张表查? FROM 表 XXX Join 连接的表 on 交叉条件
若存在多表查询,慢慢来,先查询两张表然后再慢慢添加

2、自连接(了解)
自己的表和自己的表连接,核心:一张表拆为两张一样的表

CREATE TABLE `category`(`categoryid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主题id',`pid` INT(10) NOT NULL COMMENT '父id',`categoryname` VARCHAR(50) NOT NULL COMMENT '主题名字',
PRIMARY KEY (`categoryid`) ) ENGINE=INNODB  AUTO_INCREMENT=9 DEFAULT CHARSET=utf8; INSERT INTO `category` (`categoryid`, `pid`, `categoryname`)
VALUES ('2','1','信息技术'),
('3','1','软件开发'),
('5','1','美术设计'),
('4','3','数据库'),
('8','2','办公信息'),
('6','3','web开发'),
('7','5','ps技术');


父类

categoryid categoryname
2 信息技术
3 软件开发
5 美术设计

子类

pid categoryid categoryname
3 4 数据库
2 8 办公信息
3 6 web开发
5 7 PS技术

查询父子信息:

SELECT a.`categoryname` AS '父栏目',b.`categoryname` AS '子栏目'
FROM `category` AS a,`category` AS b
WHERE a.`categoryid` = b.`pid`

4.5分页和排序

1、排序:

SELECT s.`studentNo`, `studentName`, `subjectName`, `studentResult`
FROM student s
INNER JOIN `result` r
ON s.studentNo = r .studentNo
INNER JOIN `subject` sub
ON r.`subjectNo` = sub. `subjectNo`
WHERE subjectName ='数据库结构-1'
ORDER BY `studentresult` ASC

ORDER BY 通过哪个字段排序,怎么排
升序 :ASC
降序 :DESC

2、分页:

LIMIT 起始值,页面的大小

SELECT s.`studentNo`, `studentName`, `subjectName`, `studentResult`
FROM student s
INNER JOIN `result` r
ON s.studentNo = r .studentNo
INNER JOIN `subject` sub
ON r.`subjectNo` = sub. `subjectNo`
WHERE subjectName ='数据库结构-1'
ORDER BY `studentresult` ASC
LIMIT 0,5

– 第一页 limit 0,5 (1-1)*5
– 第二页 limit 5,5 (2-1)5
– 第三页 limit 10,5 (3-1)
5
– 第N页 limit 0,5 (n-1) pageSize,pageSize
– 【pageSize:页面大小】
– 【(n-1) pageSize:起始值】
– 【n :当前页 】
– 【数据总数/页面大小 = 总页数】

4.6子查询

例,查询 数据库结构-1 的所有考试结果(学号,科目编号,成绩),降序排序
方式一:连接查询

SELECT `studentNo`,r.`SubjectNo`, `studentResult`
FROM `result` r
INNER JOIN `subject` sub
ON r.subjectNo =sub.subjectNo
WHERE SubjectName = '数据库结构-1'
ORDER BY studentResult DESC


方式二:子查询

SELECT `studentNo`,`SubjectNo`, `studentResult`
FROM `result`
WHERE subjectno = (SELECT subjectno FROM `subject`WHERE SubjectName = '数据库结构-1'
)
ORDER BY studentResult DESC

本质是一个查询里嵌套另一个查询

例2,科目为 高等数学-2 且分数不小于80的学生的学号和姓名
法一:inner join

SELECT s.studentNo ,studentName
FROM student s
INNER JOIN result r
ON s.studentNo = r.studentNo
INNER JOIN `subject` sub
ON r.`SubjectNo` = sub.`SubjectNo`
WHERE `subjectName` = '高等数学-2' AND StudentResult>=80


法二:子查询

SELECT DISTINCT s.`studentNo`, `studentName`
FROM student s
INNER JOIN result r
ON r.studentNo =s.studentNo
WHERE `StudentResult` >=80 AND `SubjectNo`=(
SELECT subjectNo FROM `subject`
WHERE `subjectName` = '高等数学-2'
)

MySQL学习记录04where条件子句、联表查询、子查询相关推荐

  1. mySQL学习记录(局域网连接/基础查询/条件查询/常见函数/窗口函数/表连接/子查询/插修删建表)

    一些基础概念 DB 数据库 存储数据的容器 DBMS 数据库管理系统 又称数据库软件.产品如mysql/oracle/db2/sqlserver SQL 结构化查询语言 是所有的DBMS都使用的一种D ...

  2. MySQL学习记录 (二) ----- SQL数据查询语句(DQL)

    相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...

  3. MySQL学习总结(2) --- 数据表管理(增删改查)、使用DQL查询数据(SELECT)

    MySQL学习总结(2) - 数据表管理(增删改查).使用DQL查询数据(SELECT) 1. 数据管理(增删改查) 数据库数据管理方法: a.通过SQLyog等管理工具管理数据库数据 b. 通过DM ...

  4. MySQL学习记录 (五) ----- 存储函数、存储过程和触发器

    相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...

  5. MySQL学习记录 (四) ----- SQL数据管理语句(DML)

    相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...

  6. Mysql学习记录(6)

    Mysql学习记录(1) Mysql学习记录(2) Mysql学习记录(3) Mysql学习记录(4) Mysql学习记录(5) Day06 12.变量 12.1系统变量 12.1.1全局变量 12. ...

  7. MySQL学习记录 (三) ----- SQL数据定义语句(DDL)

    相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...

  8. MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令

    相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...

  9. 除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询...

    执行sql语句: select * from ( select * from tab where ID>20 order by userID desc ) as a order by date ...

最新文章

  1. 泼点冷水,P2P借款限额是不是想的太美好?
  2. go get 失败 no go files in_Go 每日一库之 dig
  3. oracle常用sql命令
  4. 休眠日志:常见问题的提示和解决方案
  5. [家里蹲大学数学杂志]第041期中山大学数计学院 2008 级数学与应用数学专业《泛函分析》期末考试试题 A...
  6. 快速删除从CSDN复制的代码行前的数字的方法
  7. 一次清空所有数据方法
  8. C++ 推断进程是否存在
  9. android项目设计实验报告模板,Android实验报告模板_实验一.doc
  10. ThingJS图表整合
  11. 微软商店的iTunes备份文件路径正确修改方法(2022.3.25)
  12. 在线遥感影像与地图集数据下载搜集
  13. ubuntu无法清空回收站解决办法
  14. Springboot毕设项目咖啡馆管理系统4598u(java+VUE+Mybatis+Maven+Mysql)
  15. Shell替换数组元素之间的间隔符号
  16. 如何禁止Windows Defender自动扫描
  17. python怎么解压rar文件_Python解压 rar、zip、tar文件的方法
  18. 【2】基因功能注释之SwissProt和Interproscan
  19. Java 基础 | Java 中引用与指针的关系
  20. 华三(h3c)交换机操作命令详解vlan切换

热门文章

  1. Tomcat 到底干了啥
  2. 22.3TB全国1-20级谷歌离线卫星影像终于出炉了
  3. 企业运维容器之 docker仓库
  4. go语言基础-文件读写操作
  5. 素民党的故事 (01) 什么是素民党
  6. 苏州大学信息与通信工程837考研上岸经验分享
  7. 想拿4w的offer,这些技能不可少!作为程序员的你了解吗?
  8. “读芯术”精华文章汇总:前程规划
  9. (静态,动态,文件)三个版本的通讯录
  10. 【MQTT】在Windows下搭建MQTT服务器