mysql存储过程、触发器实验总结_触发器可以调用存储过程吗

mysql存储过程、触发器实验总结_触发器可以调用存储过程吗1.视图:view 视图就是一张虚拟的表。表是真正存数据的,视图只是显示查询结果。 视图的作用:隐藏表的结构、简化sql嵌套查询操作 注意:视图就是你要查询数据的一个中间结果集,我们一般只用来做数据查

MySQL  视图、函数、存储过程、触发器、事件(了解即可)

1.视图:view
  • 视图就是一张虚拟的表。表是真正存数据的,视图只是显示查询结果。

  • 视图的作用:隐藏表的结构、简化sql嵌套查询操作

注意:视图就是你要查询数据的一个中间结果集,我们一般只用来做数据查询的

创建视图:create view view_name as 查询语句

例如:

mysql> create view v_name_course_socre as select  st.name,co.course,sc.score  from students st inner join scores sc on st.StuID=sc.StuID inner join courses co on  sc.courseid=co.courseid;
Query OK, 0 rows affected (1.63 sec)

mysql> show tables;
+---------------------+
| Tables_in_hellodb   |
+---------------------+
| classes             |
| coc                 |
| courses             |
| scores              |
| students            |
| teachers            |
| toc                 |
| v_name_course_socre |
+---------------------+
8 rows in set (0.00 sec)

mysql> select * from v_name_course_socre;
+-------------+----------------+-------+
| name        | course         | score |
+-------------+----------------+-------+
| Shi Zhongyu | Kuihua Baodian |    77 |
| Shi Zhongyu | Weituo Zhang   |    93 |
| Shi Potian  | Kuihua Baodian |    47 |
| Shi Potian  | Daiyu Zanghua  |    97 |
| Xie Yanke   | Kuihua Baodian |    88 |
| Xie Yanke   | Weituo Zhang   |    75 |
| Ding Dian   | Daiyu Zanghua  |    71 |
| Ding Dian   | Kuihua Baodian |    89 |
| Yu Yutong   | Hamo Gong      |    39 |
| Yu Yutong   | Dagou Bangfa   |    63 |
| Shi Qing    | Hamo Gong      |    96 |
| Xi Ren      | Hamo Gong      |    86 |
| Xi Ren      | Dagou Bangfa   |    83 |
| Lin Daiyu   | Taiji Quan     |    57 |
| Lin Daiyu   | Jinshe Jianfa  |    93 |
+-------------+----------------+-------+
15 rows in set (1.69 sec)
删除视图:drop view view_name
mysql> show tables;
+---------------------+
| Tables_in_hellodb   |
+---------------------+
| classes             |
| coc                 |
| courses             |
| scores              |
| students            |
| teachers            |
| toc                 |
| v_name_course_socre |
| v_student           |
+---------------------+
9 rows in set (0.00 sec)

mysql> drop view v_student;
Query OK, 0 rows affected (0.00 sec)

查看创建视图时候用的SQL语句
  • SHOW CREATE VIEW view_name #只能看视图定义

  • SHOW CREATE TABLE view_name # 可以查看表和视图

查看视图属性信息:show table status like “xxx”
mysql> show table status  like "v_%"G
*************************** 1. row ***************************
           Name: v_name_course_socre
         Engine: NULL
        Version: NULL
     Row_format: NULL
           Rows: NULL
 Avg_row_length: NULL
    Data_length: NULL
Max_data_length: NULL
   Index_length: NULL
      Data_free: NULL
 Auto_increment: NULL
    Create_time: NULL
    Update_time: NULL
     Check_time: NULL
      Collation: NULL
       Checksum: NULL
 Create_options: NULL
        Comment: VIEW
1 row in set (0.00 sec)
修改视图:
  • 视图只是一个虚拟的表,本身不存放数据,只是某个select语句的执行结果。

  • 修改视图实际上就是修改后台对应表的数据。

mysql> create view v_student as select * from students;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from v_studet;
ERROR 1146 (42S02): Table "hellodb.v_studet" doesn"t exist
mysql> select * from v_student;
+-------+---------------+-----+--------+---------+-----------+
| StuID | Name          | Age | Gender | ClassID | TeacherID |
+-------+---------------+-----+--------+---------+-----------+
|     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
|     2 | Shi Potian    |  22 | M      |       1 |         7 |
|     3 | Xie Yanke     |  53 | M      |       2 |        16 |
|     4 | Ding Dian     |  32 | M      |       4 |         4 |
|     5 | Yu Yutong     |  26 | M      |       3 |         1 |
|     6 | Shi Qing      |  46 | M      |       5 |      NULL |
|     7 | Xi Ren        |  19 | F      |       3 |      NULL |
|     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |
|     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
|    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |
|    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
|    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |
|    13 | Tian Boguang  |  33 | M      |       2 |      NULL |
|    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |
|    15 | Duan Yu       |  19 | M      |       4 |      NULL |
|    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
|    17 | Lin Chong     |  25 | M      |       4 |      NULL |
|    18 | Hua Rong      |  23 | M      |       7 |      NULL |
|    19 | Xue Baochai   |  18 | F      |       6 |      NULL |
|    20 | Diao Chan     |  19 | F      |       7 |      NULL |
|    21 | Huang Yueying |  22 | F      |       6 |      NULL |
|    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
|    23 | Ma Chao       |  23 | M      |       4 |      NULL |
|    24 | Xu Xian       |  27 | M      |    NULL |      NULL |
+-------+---------------+-----+--------+---------+-----------+
24 rows in set (0.00 sec)

mysql> delete from v_student where StuID=24;
Query OK, 1 row affected (0.11 sec)

mysql> select * from students;
+-------+---------------+-----+--------+---------+-----------+
| StuID | Name          | Age | Gender | ClassID | TeacherID |
+-------+---------------+-----+--------+---------+-----------+
|     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
|     2 | Shi Potian    |  22 | M      |       1 |         7 |
|     3 | Xie Yanke     |  53 | M      |       2 |        16 |
|     4 | Ding Dian     |  32 | M      |       4 |         4 |
|     5 | Yu Yutong     |  26 | M      |       3 |         1 |
|     6 | Shi Qing      |  46 | M      |       5 |      NULL |
|     7 | Xi Ren        |  19 | F      |       3 |      NULL |
|     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |
|     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
|    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |
|    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
|    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |
|    13 | Tian Boguang  |  33 | M      |       2 |      NULL |
|    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |
|    15 | Duan Yu       |  19 | M      |       4 |      NULL |
|    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
|    17 | Lin Chong     |  25 | M      |       4 |      NULL |
|    18 | Hua Rong      |  23 | M      |       7 |      NULL |
|    19 | Xue Baochai   |  18 | F      |       6 |      NULL |
|    20 | Diao Chan     |  19 | F      |       7 |      NULL |
|    21 | Huang Yueying |  22 | F      |       6 |      NULL |
|    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
|    23 | Ma Chao       |  23 | M      |       4 |      NULL |
+-------+---------------+-----+--------+---------+-----------+
23 rows in set (0.00 sec)

2.MySQL函数:FUNCTION

MySQL的函数分为内置函数和自定义函数。

内置函数查看:

https://dev.mysql.com/doc/refman/8.0/en/sql-function-reference.html
https://dev.mysql.com/doc/refman/5.7/en/sql-function-reference.html

自定义函数:

create function fun_name((parameter_name data_type,…,parameter_name data_type);

注意:
  • begin-end用于定义一组语句块

  • delimiter:mysql的分隔符,mysql客户端中默认是分号(;)。告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了

例如:

mysql> DELIMITER //
mysql> CREATE FUNCTION deleteById(id SMALLINT UNSIGNED) RETURNS VARCHAR(20) 
    -> BEGIN
    ->  DELETE FROM students WHERE stuid = id;
    ->  RETURN (SELECT COUNT(*) FROM students);
    -> END//
ERROR 1304 (42000): FUNCTION deleteById already exists
mysql> DELIMITER ;
mysql> select deleteById(23);
+----------------+
| deleteById(23) |
+----------------+
| 22             |
+----------------+
1 row in set (0.01 sec)

RETURNS VARCHAR(20) :定义返回值的,定义函数的输出数据的类型

3.PROCEDURE 存储过程

作用:和函数的功能差不多,但是函数不能单独作为一个命令来执行。存储过程可以单独作为一个命令来进行执行。

格式:call 需要调用的存储过程

例如:

mysql> delimiter //
mysql> CREATE PROCEDURE selectById(IN id SMALLINT UNSIGNED)
    -> BEGIN
    ->  SELECT * FROM students WHERE stuid = id;
    -> END//
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;
mysql> select * from students;
+-------+---------------+-----+--------+---------+-----------+
| StuID | Name          | Age | Gender | ClassID | TeacherID |
+-------+---------------+-----+--------+---------+-----------+
|     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
|     2 | Shi Potian    |  22 | M      |       1 |         7 |
|     3 | Xie Yanke     |  53 | M      |       2 |        16 |
|     4 | Ding Dian     |  32 | M      |       4 |         4 |
|     5 | Yu Yutong     |  26 | M      |       3 |         1 |
|     6 | Shi Qing      |  46 | M      |       5 |      NULL |
|     7 | Xi Ren        |  19 | F      |       3 |      NULL |
|     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |
|     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
|    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |
|    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
|    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |
|    13 | Tian Boguang  |  33 | M      |       2 |      NULL |
|    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |
|    15 | Duan Yu       |  19 | M      |       4 |      NULL |
|    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
|    17 | Lin Chong     |  25 | M      |       4 |      NULL |
|    18 | Hua Rong      |  23 | M      |       7 |      NULL |
|    19 | Xue Baochai   |  18 | F      |       6 |      NULL |
|    20 | Diao Chan     |  19 | F      |       7 |      NULL |
|    21 | Huang Yueying |  22 | F      |       6 |      NULL |
|    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
+-------+---------------+-----+--------+---------+-----------+
22 rows in set (0.00 sec)

mysql> call selectById(2);
+-------+------------+-----+--------+---------+-----------+
| StuID | Name       | Age | Gender | ClassID | TeacherID |
+-------+------------+-----+--------+---------+-----------+
|     2 | Shi Potian |  22 | M      |       1 |         7 |
+-------+------------+-----+--------+---------+-----------+
1 row in set (0.00 sec)
4.TRIGGER 触发器:监控某件事满足条件以后自动执行一些事情

主要是针对数据库据表里的增删改操作,当执行这些操作的时候就触发一个行为。

5.Event 事件

类似于linux里面的计划任务,再某个时间点或者周期执行对应的操作。

注意:事件默认没有开启

原文地址:https://www.cnblogs.com/heyongshen/archive/2022/09/10/16675837.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4793.html

(0)
上一篇 2023-06-04
下一篇 2023-06-04

相关推荐

  • 高性能MySQL(第4版) 第一章 MySQL架构 读书笔记[通俗易懂]

    高性能MySQL(第4版) 第一章 MySQL架构 读书笔记[通俗易懂]这本书去年11月出的,今年中文版也出了,并且直接上了微信读书,之后有空就读一读,分享下读书笔记~ 原文内容比较充实,建议有时间可以读一下原文. 第一章主要是个概览. MySQL的逻辑架构 默认情况下,

    2023-06-14
    152
  • Python中无法哈希化(unhashable)类型的解决方法

    Python中无法哈希化(unhashable)类型的解决方法a href=”https://beian.miit.gov.cn/”苏ICP备2023018380号-1/a Copyright www.python100.com .Some Rights Reserved.

    2023-12-24
    107
  • redis的_redis 6

    redis的_redis 6什么是主从复制 Redis的主从复制机制是指可以让从服务器(slave)能精确复制主服务器(master)的数据,如下图所示: 或者 主从复制的方式和工作原理 工作方式: Redis主从复制主要有两种

    2022-12-18
    144
  • oracle批量添加指定表前缀的索引SQL语句[通俗易懂]

    oracle批量添加指定表前缀的索引SQL语句[通俗易懂]oracle批量添加指定表前缀的索引SQL语句 需要输入用户名,表空间,索引个数,表名前缀,过滤的表名后缀 declare –用户名 userName varchar2(50) :='s…

    2023-02-27
    160
  • Python 查询变量类型的方法

    Python 查询变量类型的方法Python是一种动态类型语言,这就意味着在声明变量时不需要显式地指定其类型。Python会在运行时自动确定变量的类型。然而,当我们需要在程序中处理不同类型的数据时,我们需要知道变量的类型。在这篇文章中,我将介绍几种查询Python变量类型的常用方法。

    2024-05-22
    61
  • 重新更新python(重新更新一下)

    重新更新python(重新更新一下)Mac OS X10.9默认带了Python2.7,不过现在Python3.3.3出来了,如果想使用最新版本,赶紧升级下吧。基本步骤如下。

    2023-12-03
    105
  • 50个SQL语句(MySQL版) 问题十六

    50个SQL语句(MySQL版) 问题十六表结构 student(StuId,StuName,StuAge,StuSex) 学生表 teacher(TId,Tname) 教师表 course(CId,Cname,C_TId) 课程表 sc(S

    2023-03-07
    151
  • Python编程从入门到精通

    Python编程从入门到精通Python编程从入门到精通是针对Python编程入门者的一个教程。该教程将帮助大家全面学习Python编程基础,并且掌握各种高级技术,包括函数式编程,面向对象编程等。通过本教程,你将学会使用Python开发实用工具,并能够掌握以Python为基础的一些常见编程框架、库和工具。同时,本教程还提供了许多实用的示例和实践项目,以便开发者可以快速掌握Python编程。

    2024-05-26
    66

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注