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 数据类型

begin

sql ;

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

#声明一个变量C

declare c int ;

if a is null then set a = 0 ;

end if

if 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;

复制代码

本文使用 mdnice 排版

mysql 视图用户_MySQL视图,存储过程,用户管理相关推荐

  1. mysql视图存储_Mysql 视图、存储过程以及权限控制

    导读: 该文章为视图.存储过程.用户权限练习: 如果有不对的地方欢迎指出与补充: 该基础练习基于MySQL5.0以上: 语句格式: 1. 视图格式: create view view_name[列名, ...

  2. mysql 存储过程改用户_Mysql修改存储过程相关权限问题

    在使用mysql数据库经常都会遇到这么一个问题,其它用户定义的存储过程,现在使用另一个用户却无法修改或者删除等:正常情况下存储过程的定义者对它有修改.删除的权限:但是其它的用户就要相于的授权,不然无法 ...

  3. mysql权限表_MySQL 数据库赋予用户权限操作表

    MySQL清空数据库的操作:truncate table tablename; MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据 ...

  4. mysql 视图 教程_MySQL视图简介及基本操作教程

    前言 视图是数据库系统中一种非常有用的数据库对象.MySQL 5.0 之后的版本添加了对视图的支持. 认识视图 视图是一个虚拟表,其内容由查询定义.同真实表一样,视图包含一系列带有名称的列和行数据,但 ...

  5. mysql 视图 中文_Mysql视图-WEB资讯专栏-DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录....

    1.初识视图 1.视图的概念和作用 什么是视图:是从一个或多个表中导出来的表,它是一种虚拟存在的表,表的结构和数据都依赖于基本表. 作用: 简化查询语句:简化用户的查询操作,使 1.初识视图 1.视图 ...

  6. mysql视图登录_mysql视图

    mysql视图机制 什么是视图 视图是一张虚拟的表,为什么是虚拟呢?因为视图与数据库中存在的表不太一样,前面我们创建的4张表都是包含数据的, 如用户信息,订单信息等,而视图则是不包含数据的,下面通过一 ...

  7. mysql怎么新增_mysql怎么新增用户

    匿名用户 1级 2018-01-27 回答 展开全部 首先以root身份登录到MySQL服务器中. $ mysql -u root -p 当验证提示出现的时候,输入MySQL的root帐号的密码. 创 ...

  8. mysql视图应用_MySQL视图的概念与实际应用

    以下的文章主要是对MySQL视图的描述,其中包括MySQ视图L概述,以及创建MySQL视图-create view与修改MySQL视图--alter view等相关内容的具体描述,以下就是文章的具体内 ...

  9. mysql 视图 排序_MySQL 视图

    视图(view): 什么是视图: 视图就是将查询的结果集展示出来,视图就是一张表 为什么需要视图: 首先,视图并不能加快查询速度,因为视图中本身不存储数据 视图仅仅是村粗再数据字典中的一个定义,同时视 ...

最新文章

  1. 免费技术直播:唐宇迪带你一节课了解机器学习经典算法
  2. hibernate -- 分页模糊查询中setParameter 和setParameterList
  3. 伏威谈淘宝网的高并发处理与压力测试(转)
  4. 4.4 为什么使用深层表示-深度学习-Stanford吴恩达教授
  5. java实战项目_我靠这份Java知识体系和6个大厂实战项目,拿到阿里年薪50W+offer
  6. lecture 5:Policy Optimization 1
  7. LeetCode 11盛水最多的容器
  8. SpringDataJpa 概述
  9. 汇编语言 王爽 【第四版】 第一章 检测点1.1
  10. html字体样式(有中文兼英文实例)
  11. 高通平台,MSM8937/MSM8953 RF配置流程
  12. Golang | flag pflag介绍
  13. matlab l 汉字字符串,Matlab中汉字编码的操作
  14. Map Coloring
  15. rails 杂记 - erb 中的 form_helper
  16. 这10道基础Java面试题,虐哭了多少人
  17. mybatis 查询忽略字段
  18. iOS- 网络访问JSON数据类型与XML数据类型的实现思路及它们之间的区别
  19. 软件验收测试怎么做?
  20. 淘宝开放平台订单接口

热门文章

  1. 客户端的socket是否需要bind?
  2. 配置文件configSections节点使用实例      。
  3. IOS开发基础之使用AFNetworking框架实现xml文件的解析
  4. php获取下载地址,php获取当前页面完整URL地址函数
  5. 原生微信小程序父组件调用子组件中的方法
  6. bootstrap 数据加载中提示_解决Quartz定时器中查询懒加载数据no session的问题
  7. c语言作业题五六章答案,C语言程序设计五六章习题和课堂测试答案.doc
  8. mysql在线搭建从库_Mysql主从库搭建
  9. 浅谈关于nil和 null区别及相关问题
  10. iOS重绘机制drawRect