MySQL-视图、存储过程和触发器

news2024/9/22 1:29:09

一、视图的定义和使用 

        视图是从一个或者几个基本表(或视图)导出的表。它与基本表不同,是一个虚表,视图只能用来查询。不能做增删改查(虚拟的表)

1.视图的作用

  1. 简化查询
  2. 重写格式化数据
  3. 频繁访问数据库
  4. 过滤数据
2.创建视图

-- 创建视图
-- 语法:create view 视图名 【view_xxx / v_xxx】
-- as 查询语句


CREATE VIEW v_stu_man AS
SELECT * FROM student WHERE ssex = '男';
3.视图的使用
-- 视图的使用
SELECT * FROM v_stu_man;

运用:

//创建一个新视图
CREATE VIEW v_vstuman_class AS
SELECT v_stu_man.*,classname FROM v_stu_man
LEFT JOIN class ON v_stu_man.classid = class.classid
//使用这个视图
SELECT * FROM v_vstuman_class

若修改表中的Sid = 1的Sname='赵蕾蕾',查看数据显示结果

UPDATE student SET sname = '赵蕾蕾' WHERE sid = 1

4.查看库中所有的视图
-- 查看库中所有的视图
SELECT * FROM
information_schema.VIEWS 
WHERE table_schema = 'schoolp';

5.删除视图 
-- 删除视图
DROP VIEW v_stu_man;

二、存储过程的创建和使用

1.什么是存储过程

        存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后,再次调用不需要重复编译,用户通过指定存储过程的名字并给出参数 (如果该存储过程带有参数)来执行它。

简单来讲就是:SQL语句集+预编译+特定功能

2.为什么要使用存储过程
  1. 业务流程复杂:业务复杂时,SQL语句相互依赖, 顺序执行;
  2. 频繁访问数据库:每条SQL语句都需单独连接和访 问数据库;
  3. 先编译后执行:SQL语句的执行需要先编译。
3.创建存储过程

语法:# 存储过程
-- create procedure 存储过程名字【proc_xxx】(形参列表)
-- begin
--     一组sql语句集
-- end

-- 创建最简单存储过程
DELIMITER $$
CREATE PROCEDURE proc_test()
BEGIN
	SELECT * FROM student;
END  $$
DELIMITER;
4.存储过程的操作
调用存储过程CALL 存储过程名 [参数名]
查看存储过程SELECT * FROM information_schema.ROUTINES WHERE routine_schema=‘库名’
删除存储过程DROP PROCEDURE 存储过程名;
-- 存储过程的基本用法
DELIMITER $$ -- 定制定界符
creat PROCEDURE pro_showstudent()
BEGIN
	SELECT
	student.Sname,student.birthday,student.classid,student.Sid,student.Ssex
FROM student 
LEFT JOIN sc  ON student.Sid = sc.Sid
LEFT JOIN course ON course.Cid = sc.Cid
END$$
DELIMITER ; -- 恢复默认的定界符
CALL pro_showstudent();
-- 带参数的存储过程
DELIMITER $$
CREATE PROCEDURE proc_test2(
    IN a INT,   -- in 只入参(值传递)
    OUT b INT,  -- out 只出参 (无)
    INOUT c INT -- inout 出入参 (引用传递)
)
BEGIN 
    SET a = a+1;
    SET b = b+100;
    SET c = c+1000;
END $$
DELIMITER ;

-- 环境变量  @ 局部环境变量  @@ 全局环境变量
SET @X = 10;   
SET @Y = 20;     
SET @z = 30;      

SELECT @X, @Y, @z;

CALL proc_test2(@X,@Y,@z)

SELECT @X, @Y, @z;

(面试题)写一个分页的存储过程

DELIMITER $$
CREATE PROCEDURE proc_stuPage(
    IN curpage INT,-- 
    IN sizepage INT,
    OUT stucount INT,
    OUT pagecount INT
)
BEGIN 
    DECLARE cp INT;-- 声名和定义局部变量的语句
    SET cp = (curpage-1)*sizepage;
    SELECT COUNT(*) FROM student INTO stucount;
    SET pagecount = CEILING(stucount / sizepage); -- ceiling 向上取整
    SELECT * FROM student LIMIT (curpage-1)*sizepage;,sizepage;
END $$
DELIMITER ;

SET @a = 0;
SET @b = 0;
CALL proc_stuPage(2,3,@a,@b);

SELECT @a,@b

5.存储过程与函数的区别
语法关键字不同,存储过程是procedure, 函数是function;
执行存储过程可以独立执行,函数必须依 赖表达式的调用;
返回值存储过程可以定义多个返回结果, 函数只有一个返回值;
功能函数不易做复杂的业务逻辑,但是存 储过程可以。
6.存储过程的缺陷
维护性存储过程的维护成本高,修改调试较为麻烦。
移植性大多数关系型数据库的存储过程存在细微差异。
协作性没有相关的版本控制或者IDE,团 队中对于存储过程的使用大多是 依赖文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1945078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机三级嵌入式笔记(二)——嵌入式处理器

目录 考点1 嵌入式处理器的结构类型 考点2 嵌入式处理器简介 考点3 ARM处理器概述 考点4 处理器和处理器核 考点5 ARM 处理器的分类 考点6 经典 ARM 处理器 考点7 ARM Cortex 嵌入式处理器 考点8 ARM Cortex实时嵌入式处理器 考点9 ARM Cortex 应用处理器 考点10 AR…

Python群体趋向性潜关联有向无向多图层算法

🎯要点 🎯算法模型图层节点和边数学定义 | 🎯算法应用于贝叶斯推理或最大似然优化概率建模的多图层生成模型 | 🎯算法结合图结构边和节点属性 | 🎯对比群体关联预测推理生成式期望最大化多图层算法 | 🎯使…

51单片机嵌入式开发:17、STC89C52的嵌入式 遥控器 控制步进电机 转速 和 转向 操作并 printf打印信息

51单片机嵌入式开发 STC89C52的嵌入式 遥控器 控制步进电机 转速 和 转向 操作并 printf打印信息 51单片机嵌入式开发STC89C52的嵌入式 遥控器 控制步进电机 转速 和 转向 操作并 printf打印信息1 概述2 硬件电路2.1 遥控器2.2 红外接收器电路2.3 STC89C52单片机电路2.4 数码管…

工程视角:数据结构驱动的应用开发--字典(dictionary),列表(list)与实体

这里写目录标题 业务业务场景流程分析 实现数据访问层(DAL)业务逻辑层(BLL)用户界面层(UI)工具类 设计思路为什么抽出工具类关于U层使用字典的好处工程视角 业务 业务场景 在一个金融应用系统中&#xff0c…

【N-MOS】N-mos(场效应管)驱动电路分析

目录 1、MOS管分类 2、MOS管导通原理 3、电路分析 源文件下载 可访问底部联系方式也可前往电子校园网官网搜索关键词 关键词:N-MOS 1、MOS管分类 MOS管是金属(metal)、氧化物(oxide)、半导体(semiconductor)场效应晶体管。FET是场效应管。合在一起是金属氧化物半导…

正则表达式与文本三剑客之grep

目录 前言 一、grep命令 二、基础正则表达式常见元字符 2.1、特殊字符 2.2、定位符 2.3、非打印字符 三、元字符操作实例 3.1、查找特定字符 3.2、利用中括号“[]”来查找集合字符 3.3、查找行首“^”与行尾字符“$” 3.4、查找任意一个字符“.”与重复字符“*” 3.…

ARM系列运行异常排查

一、断点指令BKPT BKPT指令产生软件断点中断,可用于程序的调试。它使处理器停止执行正常指令(使处理器中止预取指)而进入相应的调试程序。 BKPT指令的格式为:BKPT 16位的立即数 二、使用BKPT进行软件异常定位 假设异常发生后,全局变量k变成了88,现在想确认具体是什么…

【题解】UVA1564/SP2883 Widget Factory

题解 题意 题解分析Code 前言 调了好久,还是太菜了 题意 洛谷: SP UVA vjudge SP UVA 题解 分析 转换一下,题目就是让我们解方程组: { ∑ i 1 n a 1 , i x i ≡ b 1 ( m o d 7 ) ∑ i 1 n a 2 , i x i ≡ b 2 ( m o d 7 ) …

Java学习Day13:基础篇3

流程控制 1.if 案例: public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int a sc.nextInt();int b sc.nextInt();int c sc.nextInt();if (ab>c&&ac>b&&bc>a){System.out.println(&quo…

连锁店收银系统源码

系统概况: 专门为零售行业的连锁店量身打造的收银系统,适用于常规超市、生鲜超市、水果店、便利店、零食专卖店、服装店、母婴用品、农贸市场等类型的门店使用。同时线上线下数据打通,线下收银的数据与小程序私域商城中的数据完全同步&#…

06-Ubuntu 22.04LTS安装 Redis | QuickRedis 远程连接

文章目录 1. 安装命令2. 查看redis 状态3. 查看配置文件的位置4. 注释掉bind addr,并设置redis密码5. 设置端口6379开放6. 重启redis6. 本地测试连接7. QuickRedis 远程连接 1. 安装命令 sudo apt-get update sudo apt-get install redis-server2. 查看redis 状态 …

dsa加训

refs: OI Wiki - OI Wiki (oi-wiki.org) 1. 枚举 POJ 2811 熄灯问题 refs : OpenJudge - 2811:熄灯问题 如果要枚举每个灯开或者不开的情况,总计2^30种情况,显然T。 不过我们可以发现:若第i行的某个灯亮了,那么有且仅有第i行和第…

MQ传递用户信息

theme: nico 你们好,我是金金金。 场景 购物车里面有5个商品,用户勾选了并且提交订单了,此时需要删除购物车对应勾选的商品,mq的话涉及到传递用户信息~因为删除对应的购物车商品是需要传递用户信息来知晓对应用户的 生产者 消费者…

SolidWorks 二次开发--创建属性页面及控件事件(二)

在前文中我们学习了如何创建和显示属性页面,本章节将重点介绍如何向属性页面中添加控件。控件是属性页面的基本组成部分,可以是文本框、按钮、复选框等,用于用户交互和数据展示。接下来我们将看到如何定义、配置和操作这些控件,让…

ROS2入门到精通—— 2-8 ROS2实战:机器人安全通过狭窄区域的方案

0 前言 室内机器人需要具备适应性和灵活性,以便在狭窄的空间中进行安全、高效的导航。本文提供一些让机器人在狭窄区域安全通过的思路,希望帮助读者根据实际开发适当调整和扩展 1 Voronoi图 Voronoi图:根据给定的一组“种子点”&#xff0…

【保姆级介绍PyCharm安装教程】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🤹目录 🤹前言🤹前提条件🤹安装步骤🤹前言 🥰PyChar…

外卖霸王餐系统架构怎么选?

在当今日益繁荣的外卖市场中,外卖霸王餐作为一种独特的营销策略,受到了众多商家的青睐。然而,要想成功实施外卖霸王餐活动,一个安全、稳定且高效的架构选择至关重要。本文将深入探讨外卖霸王餐架构的选择,以期为商家提…

仕考网:公务员考试申论答题技巧

在国家公务员考试的申论部分,要想取得好的成绩,关键在于掌握有效的写作方法。 1.文章结构 申论考试中,一个清晰、逻辑性强的结构是至关重要的。这种结构能迅速找到核心论点和支持论据。 2.紧贴主题 申论试题经常设置特定条件或要求&#…

谁说软考高级难?这个“通关秘籍”人人都能掌握

今天给大家分享一个非常有效的学习方法,来自网友的经验精华,仅供参考。 尝试了这个方法之后,你会觉得软考高级考试真的有点容易了!想要及格拿证都是分分钟的事情!按照我的方法,就算你从来没有考过初级和中级…

Python+Flask+Mysql or sqlite,搭建个人博客

昨天逛csdn看到了一个前端小框架界面,想着试着搭建一下要了一份源代码,因为我自己本身好久没有接触,好多知识有忘记了,只能重温python爬虫问题了,随后跟博主要了一份源码,作为练习使用,也不是很…