子查询、存储过程、视图

本文探讨了数据库中的三个关键概念:子查询,它用于将内部查询的结果供外部查询使用;存储过程,这是一种预编译的SQL集合;以及视图,它是基于查询结果的虚拟表,提供了一种简化数据访问的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

子查询:把内层的查询结果供外层使用,先执行内层,再执行外层,先做内层,再做外层

例:查询比Tom小的所有学生的信息
SELECT * FROM student WHERE birthday>
(
SELECT birthday FROM student WHERE name='Tom'	找出Tom的出生日期
);

存储过程:

 CREATE PROCEDURE 存储过程名字(参数)
BEGIN  BEGIN...END就类似于java方法的{}
SQL语句
END

调用存储过程:CALL 存储过程名;
删除存储过程:DROP PROCEDURE 存储过程名;

例:
CREATE PROCEDURE usp_maxMysqlScore()
BEGIN
SELECT subname,MAX(socre) FROM score INNER JOIN `subject`
ON score.subid=`subject`.subid
WHERE subname='MySQL';
END

CALL use_maxMysqlScore();


例如:查询某科考试没有及格的学生姓名,并获得参加考试的人数和未及格的人数。
-- 输入参数:科目名;IN输入参数
-- 输出参数:参加考试人数  未及格人数OUT输出参数:把执行结果返回给调用者
CREATE PROCEDURE usp_getCount(IN suname VARCHAR(20),OUT testCount 	INT,OUT notestCount INT)
BEGIN
-- 查询某科考试没有及格的学生姓名
SELECT name,socre FROM student INNER JOIN score ON student.stuid=score.stuid INNER JOIN `subject` ON score.subid=`subject`.subid WHERE subname=suname AND socre<60;
-- 参加考试的人数
SELECT COUNT(*) FROM `subject` INNER JOIN score ON `subject`.subid=score.su
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值