数据库视图、存储过程

一:视图

1.视图的概念

视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,是基本表的部分行和列数据的组合。它与基本表不同的是,视图是一个虚表。数据库中只存放视图的定义,而不存放视图包含的数据,这些数据仍存放在原来的基本表中。

2.视图的作用

1.重用SQL语句。
2.简化复杂的SQL操作,不必知道它的查询细节。
3.使用户可以从多角度看待同一数据。
4.保护数据,提高安全性。可以给⽤户授予表的特定部分的访问权限⽽不是整个表的访问权限
比如说,某个公司和中国移动合作,需要获取一些用户的数据,那么中国移动不可能把用户的所有信息都透露出来,它只能把用户的姓名,手机号提供给那个公司,那么中国移动就可以把查询用户姓名和手机号的结果做成一张视图,那么那个公司需要的数据都将是从这个视图中查询的,那么就保护了数据的安全性
5.提供了一定程度的逻辑独立性。

3.视图的创建、修改、查看和删除

1.创建视图

创建信息系学生相关数据的视图

CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student WHERE Sdept = '信息系'

2.修改视图

方式一:
CREATE OR REPLACE VIEW IS_Student

方式二:
ALTER VIEW IS_Student

3.删除视图

DROP VIEW IS_Student

4.查看视图

查看视图的结构
DESC IS_Student

4.视图的介绍

应用场景:
**·**多个地方用到同样的查询结果。
**·**该查询结果使用的SQL语句比较复杂。(那么我们就可以为这个查询结果创建一个视图,便于以后的复用

下面举一个简单的例子:

业务:查询姓张的学生名和专业名

1.按正常的查询
SELECT stuname,majorname
FROM stuinfo s
INNER JOIN major m ON s.'majorid' = m.'id'
WHERE s.'stuname' LIKE '张%';

2.使用视图
首先我们可以把查询学生名和专业名的SQL语句封装成一个视图
CREATE VIEW v1
AS
SELECT stuname,majorname
FROM stuinfo s
INNER JOIN major m ON s.'majorid' = m.'id';

然后查询姓张的学生名和专业名时就只需要在这张视图中进行查询就行了。
如果以后业务变成了查询姓赵的,那么只需要改成LIKE '赵%'就行了,
不需要在重复写那么复杂的SQL语句。
SELECT * FROM v1 WHERE stuname LIKE '张%';

其实就是把一些经常使用的SQL语句封装成一个视图,便于以后这些SQL语句的复用。

二、存储过程

存储过程和函数类似于java中的方法。

1.概念

一组预先编译好的SQL语句的集合,可以理解成批处理语句
好处:
1.提高代码的重用性
2.简化操作
3.减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率

2.创建语法

CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
      存储过程体(一组合法的SQL语句)
END

注意:
1.参数列表包含三部分
参数模式   参数名  参数类型
举例:
IN stuname VARCHAR(20)

参数模式:
IN:该参数可以作为输入,也就是该参数需要调用方传入值
OUT:该参数可以作为输出,也就是该参数可以作为返回值
INOUT:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值

2.如果存储过程体中仅仅只有一句话,BEGIN END可以省略
 存储过程体中的每条SQL语句的结尾要求必须加分号。
 存储过程的结尾可以使用 DELIMITER 重新设置
 语法:
 DELIMITER 结束标记

2.调用语法

CALL 存储过程名(实参列表); 

3.案例

#1.空参列表
插入到admin表中五条记录

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小本科生debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值