视图、函数、存储过程、触发器、权限管理
mariadb
视图
视图:VIEW,虚表(不占用磁盘空间),保存有实表的查询结果
1、视图主要用于查询,虚拟的表,不占用磁盘空间,真实的数据还是来自表,用于保存实表的查询结果
2、可以对视图插入数据,数据会自动插入到表中,只支持单表,对多表不支持,也不推荐对视图插入数据
3、视图可以这样调用,开发程序直接调用视图,当表名发生改变时,直接修改视图即可,一般建表时,表名一开始就定义好,尽量少改
创建视图
查看视图定义
删除视图:
视图中的数据事实上存储于“基表”中,因此,其修改操作也会针对基表实现;其修改操作受基表限制
为表中的字段加密
定义函数
函数:系统函数和自定义函数
系统函数:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html
- 自定义函数 (user-defined function UDF)
- 保存在mysql.proc表中
- 创建UDF
- 说明: 参数可以有多个,也可以没有参数 必须有且只有一个返回值
自定义函数
创建函数UDF
delimiter // 简单理解,结束符,可以自定义结束符号
delimiter ; 修改结束 符
示例:无参UDF
查看函数列表:
查看函数定义
删除UDF
示例:有参数UDF
自定义函数中定义局部变量语法
说明:局部变量的作用范围是在BEGIN…END程序中,而且定义局部变量语句必须在BEGIN…END的第一行定义
示例:
变量
为变量赋值语法
示例:
生产中网络和数据很重要
网络瘫痪是一批服务器无法访问
数据丢了,对企业和用户都不太好
存储过程
- 存储过程优势
- 存储过程把经常使用的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当需要时从数据库中直接调用,省去了编译的过程
- 提高了运行速度
- 同时降低网络数据传输量
- 存储过程与自定义函数的区别
- 存储过程实现的过程要复杂一些,而函数的针对性较强
- 存储过程可以有多个返回值,而自定义函数只有一个返回值
- 存储过程一般可独立执行,而函数往往是作为其他SQL语句的一部分来使用
- 存储过程:存储过程保存在mysql.proc表中
- 创建存储过程
- 查看存储过程列表
- 查看存储过程定义
- 调用存储过程
- 存储过程修改 ALTER语句修改存储过程只能修改存储过程的注释等无关紧要的东西,不能修改 存储过程体,所以要修改存储过程,方法就是删除重建
- 删除存储过程
示例
- 创建无参存储过程
创建含参存储过程:只有一个IN参数
示例
创建含参存储过程:包含IN参数和OUT参数
说明:创建存储过程deleteById,包含一个IN参数和一个OUT参数.调用时,传入删除的ID和保存被修改的行数值的用户变量@Line,select @Line;输出被影响行数
流程控制
- 存储过程和函数中可以使用流程控制来控制语句的执行
- 流程控制:
- IF:用来进行条件判断。根据是否满足条件,执行不同语句
- CASE:用来进行条件判断,可实现比IF语句更复杂的条件判断
- LOOP:重复执行特定的语句,实现一个简单的循环
- LEAVE:用于跳出循环控制 #相当于 break
- ITERATE:跳出本次循环,然后直接进入下一次循环 #相当于 continue
- REPEAT:有条件控制的循环语句。当满足特定条件时,就会跳出循环语句
- WHILE:有条件控制的循环语句
触发器
- 触发器的执行不是由程序调用,也不是由手工启动,而是由事件来触发、激活从而实现执行 与shell trap相似
- 创建触发器
示例:先准备表
示例:创建触发器,在向学生表INSERT数据时,学生数增加,DELETE学生时,学生数减少
查看触发器
删除触发器
触发器、存储、函数,这些简单了解下,现在开发不推荐使用这些,他们性能会影响服务器工作,灵活性也较差
mysql 用户和权限管理
- 元数据数据库:mysql 系统授权表: db, host, user columns\_priv, tables\_priv, procs\_priv, proxies\_priv
- 用户账号: ‘USERNAME‘@’HOST’ @’HOST’: 主机名 IP地址或Network 通配符: % \_ 示例:172.16.%.%
用户管理
创建用户:CREATE USER
默认权限:USAGE
用户重命名:RENAME USER
删除用户:
修改密码:
- 忘记管理员密码的解决办法: 启动mysqld进程时,为其使用如下选项: 关闭mysqld进程,移除上述两个选项,重启mysqld
MySQL权限管理
- 权限类别: 管理类 程序类 数据库级别 表级别 字段级别
MySQL用户和权限管理
- 管理类: CREATE TEMPORARY TABLES CREATE USER FILE SUPER SHOW DATABASES RELOAD SHUTDOWN REPLICATION SLAVE REPLICATION CLIENT LOCK TABLES PROCESS
- 程序类: FUNCTION、PROCEDURE、TRIGGER CREATE ALTER DROP EXCUTE
- 库和表级别:DATABASE、TABLE ALTER CREATE CREATE VIEW DROP INDEX SHOW VIEW GRANT OPTION:能将自己获得的权限转赠给其他用户
- 数据操作 SELECT INSERT DELETE UPDATE
字段级别
SELECT(col1,col2,…)
UPDATE(col1,col2,…)
INSERT(col1,col2,…)
所有权限
ALL PRIVILEGES 或 ALL
授权
回收授权
注意:MariaDB服务进程启动时会读取mysql库中所有授权表至内存
1、GRANT或REVOKE等执行权限操作会保存于系统表中,MariaDB的服务进程通常会自动重读授权表,使之生效
2、对于不能够或不能及时重读授权表的命令,可手动让MariaDB的服务进程重读授权表:mysql> FLUSH PRIVILEGES;
Loading...
keepalived