Mysql----浅入浅出之视图、存储过程、触发器_MySQL
一、视图 VIEW
视图是虚拟的表,本身不存储任何数据。只有运行时,才包含动态检索出来的数据。
eg:SELECT sid, name, sex, s_num FROM student, school WHERE sid = 2 AND student.sid = scholl.sid ;
这个简单的查询涉及到两个表。所以任何需要这个数据的人都必须熟悉两个表以及之间的关系。想检索其他学生信息,就必须修改WHERE子句。如果可以把整个查询包装成一个虚拟表studentinfo,那么就可以这样得到数据:
eg:SELECT sid, name, sex, s_num FROM studentinfo WHERE sid = 2;
使用视图可以重用sql语句。对于使用的人可以不必知道细节。对原始数据也有保护作用。
视图也有一些限制,比如不能索引,不能有关联的触发器。名字必须唯一。
创建视图:
eg:CREATE VIEW studentinfo AS SELECT sid name, sex, s_num FROM student, school WHERE student.sid = school.sid;
视图也可以更新,但是只在特定的情况下。如果视图有这些定义,则不能更新:分组、联结、子查询、并、聚集函数DISTINCT、计算列。
二、存储过程
当需要处理的业务逻辑很复杂的时候,可以一条条的写sql语句,而且需要考虑到所有的需要处理的细节、数据完整性。可以创建存储过程来代替。它就像一个批处理,包含预先定义好的一条或多条sql语句的集合。但它的作用可不仅限于此。
创建:
eg:CREAT PROCEDURE prostudent()
BEGIN
SELECT Max(score) AS scoremax FROM student;
END;
删除:
eg:DROP PROCEDURE prostudent;
使用参数:
eg:CREATE PROCEDURE prostudent(OUT scorehigh DECIMAL(8, 2), OUT scorelow DECIMAL(8, 2))
BEGIN
SELECT Max(score) INTO scorehigh FROM student;
SELECT Min(score) INTO scorelow FROM student;
END;
执行:
eg:CALL prostudent(@scorelow, @scorehigh);
SELECT @scorehigh, @scorelow;
执行了名为prostudent的存储过程,并返回了最高成绩和最低成绩。
此外,存储过程还可以写注释、定义临时变量、IN传入参数、流程控制语句。
SHOW CREATE PROCEDURE ****; 可以查看创建存储过程的语句。
SHOW PROCEDURE STATUS;可以查看这个存储过程是何时、由谁创建的。
三、游标
SELECT语句返回的是一个结果集,可能是满足条件的多个航。那我们想对这个结果集的每一行进行一些处理时,或者在第一行、最后一行、前一行等特殊要求时,怎么办呢?这里就用到里游标。mysql中的游标只能用于存储过程,这是与其他数据库的不同。
使用游标需要先定义DECLARE *** CURSOR FOR、然后打开OPEN ***、使用、关闭CLOSE ***。游标的生命周期只在存储过程中,也就是如果你不关闭它,当存储过程END时,会自动关闭。
游标打开后,可以用FETCH取出一行,并在内部指向下一行的位置,当再次FETCH的时候,将取出下一行。
举个例子:现在要将所有sid大于3的学生的成绩加和。
eg: DELIMITER //
CREATE PROCEDURE sumofscore(OUT sum INT)
BEGIN
DECLARE done BOOLEEAN DEFAULT 0;
DELCARE tmp INT;
DECLARE s INT DEFAULT 0;
DECLARE yb CURSOR FOR SELECT score FROM student WHERE sid > 3;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN yb;
REPEAT
FETCH yb INTO tmp;
SET s = s + tmp;
UNTIL done END REPEAT;
CLOSE yb;
SELECT s INTO sum;
END
//
DELIMITER ;
DELIMITER 重定义mysql的结束符。02000是数据未找到的错误码,利用它来判断是否遍历完所有数据。
四、触发器
在某些需求下,想要某些语句在特定事件发生时,自动执行,那么就用到了触发器。mysql触发器只能响应delete、insert和update语句。
创建触发器:
eg:CRESTE TRIGGER newstudent AFTER INSERT ON student FOR EACH ROW SELECT new.sid INTO @s;
触发器名字是newstudent,INSERT指定响应事件是插入操作。AFTER/BEFORE指定是在事件执行前还是事件执行后触发。FOR EACH ROW指定对插入的每一行都进行操作,所以每插入一行,就把这行的sid传给变量s。每个表每个事件只允许有一个触发器,所以每个表最多有6个触发器。一个触发器也只能响应一个事件。
删除触发器:
eg:DROP TRIGGER newstudent;
使用触发器:
在INSERTZHONG ,可引用一个名为NEW的虚拟表,访问被插入的行。在BEFROE INSERT中,也可以引用NEW,甚至可以更新数据,以改变插入数据的内容。
DELETE触发器中,可以引用名为OLD的虚拟表,访问被删除的行。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Les tableaux sont un composant essentiel dans de nombreuses applications Web. Les tableaux contiennent généralement de grandes quantités de données. Ils nécessitent donc certaines fonctionnalités spécifiques pour améliorer l'expérience utilisateur. L'une des fonctionnalités importantes est la possibilité de modification. Dans cet article, nous explorerons comment implémenter des tables modifiables à l'aide de Vue.js et fournirons des exemples de code spécifiques. Étape 1 : préparer les données Tout d'abord, nous devons préparer les données pour le tableau. Nous pouvons utiliser un objet JSON pour stocker les données de la table et les stocker dans la propriété data de l'instance Vue. Dans ce cas

Dans iOS 17, Apple introduit le mode veille, une nouvelle expérience d'affichage conçue pour charger les iPhones en orientation horizontale. Dans cette position, l'iPhone est capable d'afficher une série de widgets en plein écran, le transformant en un hub domestique utile. Le mode veille s'active automatiquement sur un iPhone sous iOS 17 placé horizontalement sur le chargeur. Vous pouvez afficher l'heure, la météo, le calendrier, les commandes musicales, les photos et bien plus encore. Vous pouvez faire glisser votre doigt vers la gauche ou la droite parmi les options de veille disponibles, puis appuyer longuement ou glisser vers le haut/bas pour personnaliser. Par exemple, vous pouvez choisir entre une vue analogique, une vue numérique, une police à bulles et une vue lumière du jour, où la couleur d'arrière-plan change en fonction du temps qui passe. Il existe quelques options

Comment masquer le texte avant tout clic dans PowerPoint Si vous souhaitez que le texte apparaisse lorsque vous cliquez n'importe où sur une diapositive PowerPoint, sa configuration est simple et rapide. Pour masquer du texte avant de cliquer sur un bouton dans PowerPoint : Ouvrez votre document PowerPoint et cliquez sur le menu Insérer. Cliquez sur Nouvelle diapositive. Choisissez Vide ou l’un des autres préréglages. Toujours dans le menu Insertion, cliquez sur Zone de texte. Faites glisser une zone de texte sur la diapositive. Cliquez sur la zone de texte et entrez votre

Comparez SpringBoot et SpringMVC et comprenez leurs différences Avec le développement continu du développement Java, le framework Spring est devenu le premier choix pour de nombreux développeurs et entreprises. Dans l'écosystème Spring, SpringBoot et SpringMVC sont deux composants très importants. Bien qu'ils soient tous deux basés sur le framework Spring, il existe certaines différences dans les fonctions et l'utilisation. Cet article se concentrera sur la comparaison de SpringBoot et Spring

PHP est un langage de programmation très populaire et CodeIgniter4 est un framework PHP couramment utilisé. Lors du développement d'applications Web, l'utilisation de frameworks est très utile. Elle peut accélérer le processus de développement, améliorer la qualité du code et réduire les coûts de maintenance. Cet article expliquera comment utiliser le framework CodeIgniter4. Installation du framework CodeIgniter4 Le framework CodeIgniter4 peut être téléchargé depuis le site officiel (https://codeigniter.com/). Vers le bas

Laravel est actuellement l'un des frameworks PHP les plus populaires et ses puissantes capacités de génération de vues sont impressionnantes. Une vue est une page ou un élément visuel affiché à l'utilisateur dans une application Web, qui contient du code tel que HTML, CSS et JavaScript. LaravelView permet aux développeurs d'utiliser un langage de modèle structuré pour créer des pages Web et générer les vues correspondantes via les contrôleurs et le routage. Dans cet article, nous explorerons comment générer des vues à l'aide de LaravelView. 1. Quoi

Je suppose que de nombreux étudiants souhaitent acquérir les compétences de composition de Word, mais l'éditeur vous dit secrètement qu'avant d'acquérir les compétences de composition, vous devez comprendre clairement les vues de mots. Dans Word2007, 5 vues sont proposées aux utilisateurs. les vues incluent la vue pages, la vue mise en page de lecture, la vue mise en page Web, la vue plan et la vue normale. Découvrons ces 5 vues de mots avec l'éditeur aujourd'hui. 1. Vue de page La vue de page peut afficher l'apparence du résultat d'impression du document Word2007, qui comprend principalement les en-têtes, les pieds de page, les objets graphiques, les paramètres de colonne, les marges de page et d'autres éléments. Il s'agit de la vue de page la plus proche du résultat d'impression. 2. Mode de lecture Le mode de lecture affiche les documents Word2007 et Office dans le style de colonne d'un livre.

Dans la base de données Oracle, vous pouvez utiliser l'instruction CREATE TRIGGER pour ajouter des déclencheurs. Un déclencheur est un objet de base de données qui peut définir un ou plusieurs événements sur une table de base de données et exécuter automatiquement les actions correspondantes lorsque l'événement se produit.
