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

歡迎訪問 生活随笔!

生活随笔

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

数据库

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

發布時間:2025/3/12 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql视图存储_Mysql 视图、存储过程以及权限控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導讀:

該文章為視圖、存儲過程、用戶權限練習;

如果有不對的地方歡迎指出與補充;

該基礎練習基于MySQL5.0以上;

語句格式:

1. 視圖格式:

create view view_name[列名,列名.....] as select 子查詢 with check option

其中with check option 作用是:在視圖進行update\delete\insert操作時要保證更新、插入、刪除的行滿足視圖定義中的謂詞公式(既子查詢中的條件表達式);

視圖操作如正常表一樣可以增刪改查。

2.存儲過程格式:

create procedure pro_name(in 參數名 類型,out 參數名 類別)

begin

過程體

end

3.用戶權限格式:

create user 用戶名 indentified by '密碼'

--設置權限

grant 權限 on 數據庫名.表名 to 用戶@登錄主機 identified by "用戶密碼";

視圖:

(1)建立視圖IS_STUDENT,視圖中包含信息系全體學生的基本信息。(要求限制更新)

Create view IS_STUDENT as select * from student

Where sdept=’信息系’ with check option;

(2)建立視圖CJ_STUDENT,視圖中包含所有成績不及格的學生的學號,姓名,課程名,成績。

Create view CJ_STUDENT as select student.sno,sname,cname,grade from student,sc,course

Where student.sno=sc.sno and sc.cno=course.cno and (grade <60 or grade is null);

(3)建立視圖AVG_CJ,視圖包括學生的學號以及他們的平均成績,按成績降序排列。

Create view AVG_CJ as select sno ,avg(grade)

from sc where grade is null group by sno order by avg(grade) desc;

(4)根據視圖IS_STUDENT,修改該視圖中年齡都增加1。觀察基本表Student中相應的哪些數據發生了變化。

Update IS_STUDENT set sage=sage+1;

select * from IS_STUDENT;

(5)在視圖IS_STUDENT中插入新的記錄,學號為9531103,姓名為張玉,女,21歲,計算機系。(是否能執行?若不行,為什么?)

insert into IS_STUDENT values('9531103','張玉','女',21,'計算機系');

不能執行,因為,違反了視圖創建規則,計算機系不滿足sdept中的信息系要求;

(6)根據視圖CJ_STUDENT創建視圖CJ_TJ,包含課程名,不及格人數,不及格人姓名列表,按照不及格人數降序排列。

Create view CJ_TJ as select cname,count(*),GROUP_CONSCAT(sname SEPARATOR ',') from CJ_STUDENT group by cname order by count(*) desc;

存儲過程:

(1)建立存儲過程course_grade:根據課程名參數,查詢該課程的成績表,包括學號,姓名,成績,按學號升序排序。

CREATE PROCEDURE course_grade (in course_name varchar(20))

SELECT student.sno,sname,grade from student,sc,course WHERE student.sno=sc.sno and sc.cno =course.cno and cname=course_name ORDER BY sno;

DROP PROCEDURE course_grade;

CALL course_grade("計算機導論");

(2)建立存儲過程search_grade:根據姓名和課程名參數,查詢該學生相應的課程成績,若存在成績,則返回成績值,否則返回NULL。

create procedure search_grade(in student_name char(10), in course_name varchar(20), out re_grade smallint, out rname char(10))

Begin

If( not exists

(

select * from student, sc, course

where student.sno = sc.sno

and sc.cno = course.cno

and sname = student_name

and cname = course_name) )

then set re_grade = null;

else

select grade into re_grade from student, sc, course

where student.sno = sc.sno

and sc.cno = course.cno

and sname = student_name

and cname = course_name ;

end if;

end ;

#創建成功

-- 執行存儲過程

call search_grade('王大力','數據庫原理',@grade, @rname);

select @grade, @rname;

call search_grade('王大力','高等數學',@grade, @rname);

select @grade, @rname;

(3)創建存儲過程take_course:根據參數學號和課程號,完成選課功能(要求能夠根據選課人數加以限制)。

要求:

§ 檢查該學生選課門數是否超過3門,若超過,不插入記錄;

§ 檢查該課程選課人數是否已滿(在course表里添加一個屬性列,記錄課程人數限制);

ü 選課人數已滿:不插入記錄;

ü 選課人數未滿且未插入過:完成數據插入操作;

ü 選課人數未滿,已插入過:不插入記錄

§ 最后返回執行結果信息,例如:

ü 超過3門,返回-1;

ü 選課人數已滿。返回0;

ü 選課人數未滿且未插入過:返回1;

ü 選課人數未滿已插入過:返回2

create procedure take_course (in student_no char(7), in course_no char(3), out i tinyint )

begin

if(select count(*) from sc where sno= student_no) >= 3

then set i = 1;

else

if(select count(*) from sc where cno = course_no) >= 5

then set i= 0;

else

if exists (select * from sc where sno = student_no and cno = course_no)

then set i = 2;

else

insert into sc(sno, cno) values(student_no, course_no);

set i = 1;

end if ;

end if ;

end if ;

end ;

權限控制:

(1)創建超級用戶admin,具有對所有數據庫的所有訪問權限,僅限本機連接(密碼自行設置),并驗證用戶和權限設置是否正確。

CREATE user admin @localhost

IDENTIFIED by '123';

(2)創建管理員teacher_liu,具有對SC表、IS_STUDENT視圖(實驗5創建)的增刪改查權限,并且具有授權的權限,允許從任意位置連接(密碼自行設置),并驗證用戶和權限設置是否正確。

CREATE USER teacher_liu @'%' IDENTIFIED by '123456';

GRANT SELECT ,INSERT, UPDATE, DELETE on studentTable.sc TO teacher_liu @'%' WITH GRANT OPTION;

以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那里入手去提升,對此我整理了一些資料,包括但不限于:分布式架構、高可擴展、高性能、高并發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階干貨需要的可以免費分享給大家,官方群點擊此處進入。

總結

以上是生活随笔為你收集整理的mysql视图存储_Mysql 视图、存储过程以及权限控制的全部內容,希望文章能夠幫你解決所遇到的問題。

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