MySQL:03-高级查询

一、模糊查询

在这里插入图片描述

LIKE

-- LIKE 结合%(代表0到任意个字符) 
SELECT studentno,studentname FROM student WHERE studentname LIKE '张%';
-- LIKE 结合_(代表1个字符) 
SELECT studentno,studentname FROM student WHERE studentname LIKE '张_';

IN

-- 查询1001,1002,1003号学员
SELECT studentno,studentname FROM student WHERE studentno IN (1001,1002,1003);

二、连表查询

MySQL中没有full outer join操作,有union操作。

在这里插入图片描述

join (连接的表) on (判断的条件)

1、内联结(Inner join)

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

2、外联结(Outer join)

(1)RIGHT JOIN

-- RIGHT JOIN
SELECT s.studentno,studentname,subjectno,studentresult
FROM student s
RIGHT JOIN result r
ON s.studentno = r.studentno;

在这里插入图片描述

(2)LEFT JOIN

-- LEFT JOIN
SELECT s.studentno,studentname,subjectno,studentresult
FROM student s
LEFT JOIN result r
ON s.studentno = r.studentno;

在这里插入图片描述

3、交叉联接(Cross join)

SELECT <字段名> FROM <1> CROSS JOIN <2> [WHERE子句]
-- 或者
SELECT <字段名> FROM <1>, <2> [WHERE子句] 

当连接的表之间没有关系时,可以省略掉WHERE 子句,这时返回结果就是两个表的笛卡尔积,返回结果数量就是两个表的数据行相乘。

4、多表查询

三表查询

-- 三表查询
SELECT s.studentno,studentname,subjectname,studentresult
from student s
RIGHT JOIN result r
ON r.subjectno = s.studentno
INNER JOIN `subject` sub
on r.studentno = sub.subjectno;

在这里插入图片描述

5、自连接

自己的表和自己的表连接,一张表拆分为两张一样的表

-- 查询父子信息:把一张表看为两个一模一样的表
SELECT a.categoryname AS '父栏目',b.categoryname AS '子栏目'
FROM category AS a,category AS b
WHERE a.categoryid = b.pid;

在这里插入图片描述

三、子查询

where语句中嵌套select语句。

-- 子查询(WHERE中嵌套select)
SELECT studentno,subjectno,studentresult
FROM result
WHERE subjectno = (
		SELECT subjectno FROM `subject`
		WHERE subjectname = '数据库结构-1'
		)
ORDER BY studentresult DESC;

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值