日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 视图用户_MySQL视图,存储过程,用户管理

發布時間:2023/12/15 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 數據類型

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视图,存储过程,用户管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。