mysql 创建函数_MySQL函数,存储过程,用户管理
1. 视图
一张虚拟表,就是将一个经常被使用的查询作为一个虚拟表,开发者查询的时候不需要再次书写SQL,而是直接调用对应的视图就可,调用视图以后MySQL会执行这个查询SQL。
# 创建视图
create view vi_select as select * from emps ;
# 创建或者代替已有视图
create or replace view vi_select as select * from emps inner join dept on dept.id=emps.id
#修改视图
alter view 视图名 as select 语句#显示视图的创建情况
show create view 视图名
#查看视图
show tables like 'vi_%' ;#和查询表的相同,所以在创建视图的时候最好有一个前缀,通过模糊查询查询结果#删除视图
drop view 视图名;#重命名
rename table 视图名 to 新视图名;
1.1 对视图不能进行DML操作的情况
select
子句中包含distinct
select
子句中包含组函数select
语句中包含group by
select
语句中包含order by
select
语句中包含union
或者union all
等集合运算符where
子句中包含子查询from
中包含多的个表- 视图列中包含计算列
- 基表中存在非空约束,则不能进行
insert
2. 函数
和其他语言的函数相同,存在一个返回值
语法:
# 创建函数
create function 函数名(参数列表) returns 数据类型
beginsql ;return ;
end ;#调用函数
select 函数名#查看函数的创建语句
show create function 函数名
#查看所有的函数
show function status like '' ;#删除函数
drop function 函数名
3. 存储过程
一组可编程的函数,为了完成一段特定功能的SQL语句集,经编译创建并保存在数据库中,用户可以通过存储过程的名字来调用。
通常会配合DELIMITER
来使用。DELIMITER
的作用是改变SQL语句的结束符号。默认为;
#创建存储过程,传入参数,IN代表输入参数,OUt代表输出参数。
DELIMITER $
create procedure 名字(IN a int , IN b int,out sum int)
begin#声明一个变量Cdeclare c int ;if a is null then set a = 0 ;end ifif b is null then set b = 0 ;end if ;set sum = a+b ;
END
$
DELIMITER ;
4. 触发器
表示某一个表发生一个事件(写操作),然后自动的执行预先编译好的SQL语句,执行相关的操作。触发器事件跟触发器中的SQL语句的操作是原子性的。
可以用来对数据预处理
create trigger 触发器名称
{after|before} #触发时间
{insert|update|delete}#触发事件
for each row #固定写法,无论哪一行数据发生变化均会触发该触发器
begin SQL
end ; #查看触发器
show triggers from databaseName;#删除触发器
drop trigger if exists
- 插入数据
#生成一个随机的字符串,n代表位数
create function rand_string(n int) returns varchar(255)
begin declare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; declare return_str varchar(255) default ''; declare i int default 0 ; while i< n do set return_str=concat(return_str,substring(chars_str,floor(1+rand()*52),1));set i = i +1 ; end while ; return return_str ;
end$$#生成一个随机的数字
create function rand_num() returns int(5)
begin declare i int default 0 ; set i = floor(100+rand()*10); return i ;
end$$#创建插入数据的存储过程
crate procedure insert_emp(IN start int(10),IN max_num int(10))
begin declare i int default 0 ; set autocommit = 0 ; repeat set i = i +1 ; insert into emp(name,age) values(rand_string(6),(start+i)); until i = max_num end repeat; commit;
end$$call insert_emp(100,5000000);
5.用户管理
#创建用户
create user 用户名 identified by 密码
# 查看MySQL中所有的用户
select host,user from mysql.user;
# 修改当前用户的密码
set password = password(密码)
# 修改其他用户的密码
update mysql.user set password=password(密码) where user="用户名"
# 修改用户名
update mysql.user set user = user where user = "用户名"
# 删除用户
drop user 用户名
- user表中的字段。可以直接通过修改这个表中的字段来为用户赋予权限
Select_priv。确定用户是否可以通过SELECT命令选择数据。Insert_priv。确定用户是否可以通过INSERT命令插入数据。Update_priv。确定用户是否可以通过UPDATE命令修改现有数据。Delete_priv。确定用户是否可以通过DELETE命令删除现有数据。Create_priv。确定用户是否可以创建新的数据库和表。Drop_priv。确定用户是否可以删除现有数据库和表。Reload_priv。确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表。Shutdown_priv。确定用户是否可以关闭MySQL服务器。在将此权限提供给root账户之外的任何用户时,都应当非常谨慎。Process_priv。确定用户是否可以通过SHOW PROCESSLIST命令查看其他用户的进程。File_priv。确定用户是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE命令。Grant_priv。确定用户是否可以将已经授予给该用户自己的权限再授予其他用户。例如,如果用户可以插入、选择和删除foo数据库中的信息,并且授予了GRANT权限,则该用户就可以将其任何或全部权限授予系统中的任何其他用户。References_priv。目前只是某些未来功能的占位符;现在没有作用。Index_priv。确定用户是否可以创建和删除表索引。Alter_priv。确定用户是否可以重命名和修改表结构。Show_db_priv。确定用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库。可以考虑对所有用户禁用这个权限,除非有特别不可抗拒的原因。Super_priv。确定用户是否可以执行某些强大的管理功能,例如通过KILL命令删除用户进程,使用SET
GLOBAL修改全局MySQL变量,执行关于复制和日志的各种命令。Create_tmp_table_priv。确定用户是否可以创建临时表。Lock_tables_priv。确定用户是否可以使用LOCK TABLES命令阻止对表的访问/修改。Execute_priv。确定用户是否可以执行存储过程。此权限只在MySQL 5.0及更高版本中有意义。Repl_slave_priv。确定用户是否可以读取用于维护复制数据库环境的二进制日志文件。此用户位于主系统中,有利于主机和客户机之间的通信。Repl_client_priv。确定用户是否可以确定复制从服务器和主服务器的位置。Create_view_priv。确定用户是否可以创建视图。此权限只在MySQL 5.0及更高版本中有意义。关于视图的更多信息,参见第34章。Show_view_priv。确定用户是否可以查看视图或了解视图如何执行。此权限只在MySQL 5.0及更高版本中有意义。关于视图的更多信息,参见第34章。Create_routine_priv。确定用户是否可以更改或放弃存储过程和函数。此权限是在MySQL 5.0中引入的。Alter_routine_priv。确定用户是否可以修改或删除存储函数及函数。此权限是在MySQL 5.0中引入的。Create_user_priv。确定用户是否可以执行CREATE USER命令,这个命令用于创建新的MySQL账户。Event_priv。确定用户能否创建、修改和删除事件。这个权限是MySQL 5.1.6新增的。Trigger_priv。确定用户能否创建和删除触发器,这个权限是MySQL 5.1.6新增的。
5.1 查看当前用户权限
show grants for root@'%'
%代表所有IP可访问select * from mysql.user where user='用户名'
5.2 赋予用户权限
- 直接修改
mysql.user
表。
#赋予权限
update mysql.user set Select_priv='Y' , Insert_priv = 'Y',Update_priv ='Y' ,Delete_priv='Y',Create_priv='Y' where user='stack';
update mysql.user set reload_priv='Y', process_priv='Y',index_priv='Y', alter_priv='Y',lock_tables_priv='Y',execute_priv='Y' where user='stack';
update mysql.user set create_view_priv='Y',show_view_priv='Y',create_routine_priv='Y',alter_routine_priv='Y' where user='stack';
#刷新权限
flush privileges;
mysql 创建函数_MySQL函数,存储过程,用户管理相关推荐
- MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据
[0]README 0.1)本文部分文字描述转自"MySQL 必知必会",旨在review"MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据" ...
- mysql用户函数_MySQL 函数、用户自定义函数
# 函数的意义 MySQL 自身提供大量功能强大.方便易用的函数.使用这些函数,可以极大地提高用户对数据库的管理效率. # 函数的分类 诸多分类方式 # 用户自定义函数 学习了 MySQL 的系统内置 ...
- mysql 过程和函数_MySQL:存储过程和函数
变量 系统变量 变量由系统提供,不是用户自定义的,属于服务器层面 全局变量 会话变量 # 如果是全局级别,则需要加global,如果是会话级别,则需要加session,如果不写,则默认是会话 # 查看 ...
- mysql exec函数_mysql exec 存储过程
MySql存储过程 create proc 名称 参数列表 as 代码段 exec 存储过程名称 参数列表 要点: 1.可以使用output修饰参数 2.可以使用默认值,注意需要将最后的参数设置成默认 ...
- mysql sysdate 格式化_MySQL函数汇总
前言 MySQL提供了众多功能强大.方便易用的函数,使用这些函数,可以极大地提高用户对于数据库的管理效率,从而更加灵活地满足不同用户的需求.本文将MySQL的函数分类并汇总,以便以后用到的时候可以随时 ...
- mysql function加速_MySQL - 函数(FUNCTION)
about MySQL提供了丰富的内置函数自定义函数. 而我们也对这些函数有所了解,比如聚合函数. 本篇再来了解一些内置函数和自定义函数的编写. 写在前面的话:默认情况下,函数名称和其后的括号之间必须 ...
- mysql 条件 函数_mysql 函数 时间函数,数学函数,字符串函数,条件判断函数
=========================================== mysql 相关函数 ============================================= ...
- MySQL为其他用户创建数据库_MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限...
1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...
- mysql 创建师徒_mysql基础整理
(一)几个数据库相关的概念 1.数据库 数据库: 保存有组织数据的容器. 数据的所有存储.检索.管理和处理实际上是有数据库软件DBMS完成的. 我们通过数据库软件DBMS来创建和操纵容器. 2.表 某 ...
最新文章
- 这就是华为速度:2.69分钟完成BERT训练!新发CANN 5.0加持,还公开了背后技术
- 详解Objective-C的meta-class
- 小米12 Ultra有望换装索尼传感器:牵手徕卡 搭载新一代影像旗舰
- C语言丨线性表(四):循环链表
- 实地集团和广州移动发布首个独立组网5G全场景智能社区
- HasMany() = (1..*) HasOptional() = (1..0,1) HasRequired() = (1..1)
- JavaScript案例精解(一)
- 青海省多种食品、农产品实现首次出口
- APP开发策划方案怎么写?
- Android 开发即时聊天工具 YQ 《更新》(源码下载)
- 微型计算机原理中MOD指令的含义,微机原理习题库含答案
- linux网络设备驱动之dm9000驱动源码框架解析
- 【Android 安装包优化】Android 中使用 SVG 图片 ( 批量转换 SVG 格式图片为 Vector Asset 矢量图资源 )
- 【Linux系统IO函数】read、write函数及实现文件拷贝
- 转: Github上关于iOS的各种开源项目集合
- 【OR】二次规划(1)
- 快速学会linux上的chrony服务
- C:/Inetpub/AdminsScripts的常用语法
- 2021-06-08实验室如何正确选择和确认检测方法?
- 电商小程序实战教程-商品详情页开发
热门文章
- ACL2021 | 把关键词生成看成集合预测问题
- 苹果怎么给软件加密码_用了2年苹果手机,才知道有这几个功能,钱没花冤枉,好用!!...
- 实战java虚拟机 百度云_《实战JAVA虚拟机 JVM故障诊断与性能优化》pdf百度云下载...
- 吴恩达深度学习之四《卷积神经网络》学习笔记
- 阶梯博弈(尼姆博奕进阶)
- Redis基础(十二)——缓存读写策略
- 排序(python)
- java.sql.SQLSyntaxErrorException: Unknown column ‘###‘ in ‘field list‘
- [Ext JS 4] Extjs 之 initComponent 和 constructor的区别
- js 中的switch