2020/01/08 02-多表查询和函数存储过程

cross join 交叉链接,是完全没有条件,直接连接在一起

在这里插入图片描述

full outer join的写法在mysql不支持
在这里插入图片描述
可以把左外连接和右外连接union 纵向合并
在这里插入图片描述
union起来就实现了完全外连接在这里插入图片描述在这里插入图片描述
A表B表进行连接,但是把交集部分排除了
子查询就是select语句嵌套
在这里插入图片描述在这里插入图片描述在这里插入图片描述
交集不要就是teacherid为null,或者tid为空在这里插入图片描述
名字不明确就需要过滤下
在这里插入图片描述
创建一个表塞入数据,auto_increment自动递增
在这里插入图片描述
每个员工的名字,和上司的ID在这里插入图片描述
现在想查每个员工的上司姓名
在这里插入图片描述在这里插入图片描述
如果用inner join 会丢失mage的记录
在这里插入图片描述
outer可以省略不写
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
一个学生可能参加多门课程学习,每门课都可能多个学生参加学习*

查学生姓名和考试成绩
在这里插入图片描述
inner join就变成参加科目有成绩的人了在这里插入图片描述
在这里插入图片描述
子查询一般性能比较差
在这里插入图片描述在这里插入图片描述
select语句的执行顺序,先from,where,group by,having,order by ,select,limit
在这里插入图片描述在这里插入图片描述

视图

视图本身并不存放数据,就是对实体表的查询结果,存放在虚拟表里,经常要查,就可以定义成视图
在这里插入图片描述在这里插入图片描述在这里插入图片描述
这个不是表只是一个查询结果
可以对它进行查询操作
在这里插入图片描述在这里插入图片描述
可以看到创建视图的时候定义的命令
在这里插入图片描述
这里显示的就是视图在这里插入图片描述
如果是表就没有view的提示
在这里插入图片描述
可以对视图插入数据在这里插入图片描述
实际上修改了物理表
在这里插入图片描述
视图定义的是大于30的
在这里插入图片描述
本质上还是放到表里了
在这里插入图片描述在这里插入图片描述
删除视图
在这里插入图片描述
在这里插入图片描述

用户在使用视图的时候,不需要关心数据来自哪些表,可以实现在显示的时候加约束,表结构发生变化,如果用的视图,只需要修改视图定义,不用修改程序
在这里插入图片描述
系统函数有很多
在这里插入图片描述在这里插入图片描述
如果系统函数满足不来要求,也可以自定义函数UDF
在这里插入图片描述在这里插入图片描述
可以创建一个函数
在这里插入图片描述
函数调用,要加()
在这里插入图片描述在这里插入图片描述
换个数据库无法调用在这里插入图片描述
加上数据库的前缀才可以调用,跨数据库了
在这里插入图片描述
select function status 当前显示所有的函数
在这里插入图片描述
函数定义好后,存放在mysql数据库种
在这里插入图片描述在这里插入图片描述
定义在proc中
在这里插入图片描述在这里插入图片描述
可以加参数,UNSIGNED只能正数
在这里插入图片描述**定义有参数的命令需要把DELIMITER执行一下,
是因为在定义函数的时候可能有多条语句,多条语句就需要分号,分号带来的问题,系统就会自动认为是独立语句要执行,但是实际上却是完整的一个命令,
所以把以前认为分号;是执行命令的情况改一下,改成认为// **
在这里插入图片描述
有两个函数,把delimiter 结束符改成原来的分号;在这里插入图片描述在这里插入图片描述在这里插入图片描述
查看ID
在这里插入图片描述
函数不能直接使用,必须要调用
删除27条记录,还剩26条

在这里插入图片描述
第27条被删除了
在这里插入图片描述在这里插入图片描述xy是虚拟参数,以后往里面传入的值就是实际参数
在这里插入图片描述
在这里插入图片描述
set赋值和select into赋值
在这里插入图片描述
把执行的结果作为值赋值给x在这里插入图片描述在这里插入图片描述存储过程是存在mysql.proc找个表里的
函数也是存放在里面的

存储过程可以有多个返回结果,自定义函数就一个,存储过程可以理解是一个shell命令,函数一般嵌套在sql语句使用
在这里插入图片描述在这里插入图片描述查看所有存储过程列表
在这里插入图片描述在这里插入图片描述在这里插入图片描述now是显示当前系统时间
在这里插入图片描述在这里插入图片描述mysql数据库是用CALL来调用,
sqlserver 可以直接调用procedure ,当命令用,更新bash脚本直接调用
存储过程和函数都是语句块的集合
存储过程是可以当命令来用的

也支持加参数在这里插入图片描述IN id代表这个参数是传入用的
这个数值就赋值给了id,用 下面的语句去查
存储过程和函数,有一个趋向就是数据库就是数据库不用 搞那么复杂,其他处理的用善于处理这些语言来进行处理
在这里插入图片描述在这里插入图片描述REPEAT 等于循环,,不断的+1,直到i>n
在这里插入图片描述在这里插入图片描述把26条删除了,也只是影响一条
在这里插入图片描述
存储过程还可以用到其他语法在这里插入图片描述
相当于break continue
在这里插入图片描述
现在sql数据库的性能瓶颈是比较严重的,应该想尽办法减轻数据库的负担,逻辑处理交给语言处理就可以了
一般mysql并发达到100,200用户就差不多 了,所以尽量减少对数据库的负担
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值