MySQL 高階物件

2022-09-06 03:36:11 字數 2890 閱讀 9405

本章目標:

1.檢視:

檢視就是一條select語句執行後返回的結果集。

建立檢視:

create  view  檢視名稱

asselect  語句

2.修改檢視:

alter  view  檢視名稱

asselect  語句

3.刪除檢視:

show  tables  顯示檢視

drop view 檢視名

drop  view  if  exists  檢視名

檢視檢視 : select  *   from  檢視表名

2.儲存過程:

定義:顯示所有的儲存過程: show  procedure  staus 

2.1建立儲存過程:

修改sql語句結束的識別符號:  delimiter + 型別

create procedure  儲存過程名稱(引數列表)

begin

儲存操作的語句塊;

end呼叫:  call   儲存過程名稱

2.2儲存過程引數分為兩種

in  給引數傳入值,定義的引數就得到了值。

建立乙個無參無返的儲存過程:

#儲存過程實現能夠查詢所有的借閱記錄。

select * from info;

#修改sql語句結束的識別符號

delimiter //

create procedure pro_info()

begin

select * from info;

end//

建立乙個無參有返的儲存過程:

1.out :返回值

#實現的功能是查詢出所有圖書的平均**。

select **g(price) as 平均** from books;

-- out 引數的名稱 資料型別

delimiter //

create procedure pro_info2(out price**g float)

begin

select **g(price) into price**g from books;  into   相當於賦值

end//

call pro_info2(@price**g); 引數@+名稱

select @price**g;

建立乙個有參無返的儲存過程:

#這個儲存過程要實現的功能是,查詢某個**範圍內(20-200)的圖書資訊

select * from books where price between 20 and 200; 10 1000

-- 有引數 第乙個** 第二個**

-- in 名字 資料型別

-- out

delimiter //

create procedure pro_info1(in price1 float,in price2 float)

begin

select * from books where price between price1 and price2;

end//

-- 有引數 call 儲存過程的名字(傳入的引數)

call pro_info1(10,200); 

2.2刪除儲存過程:

3.觸發器:

定義:語法:

修改sql語句結束的識別符號:  delimiter + 型別

create  trigger  觸發器名稱  on 表名

for  each  row 

begin

觸發器執行的語句塊

end案例1:

例1:建立insert觸發器。當在card表中新增加乙個借閱用

-- 戶的時候,顯示「新增使用者成功」。

delimiter //

create trigger tri_ins_card after insert on card

for each row

begin

select "新增使用者成功" into @result;

endselect * from card;

insert into card (name,class)values("王渝凱","大資料1班");

select @result;

select @resu;

案例2:

#例2:建立insert觸發器。借閱人借閱一本書會在info表中

-- 產生一條記錄,此時被借閱的書籍的總數量應該減1。觸發

-- 在info表中。

-- 對圖書表的裡面圖書數量進行減1,對哪本書進行減1呢

-- update books set quanitity=quanitity-1 where 哪本書

-- --如果我們能夠拿到新插入的那條借閱記錄的bno

select * from info;

delimiter //

create trigger tri_insert_info after insert on info

for each row

begin

select new.bno into @bnovalue;-- 拿到插入的那條借閱記錄的bno

update books set quanitity=quanitity-1 where bno=@bnovalue;-- 進行數量的更新

endselect * from books;

select * from info;

select * from card;

insert into info(cno,bno,rdate)value(106,1006,now());

定定義士大夫撒發史蒂芬 

MySQL高階高階

1 mysql的開窗函式 row number 從 1 開始,按照順序生成組內的記錄編號 rank 從 1 開始,按照順序,相同會重複,名次會留下空的位置,生成組內的記錄編號 dense rank 從 1 開始,按照順序生成組內的記錄編號,相同會重複,名次不會留下空的位置 開窗函式區別如下圖所示 f...

mysql 高階 mysql高階知識

一.儲存引擎 引擎 指的是乙個系統的核心部分 引擎有不同分類是為了適應不同的使用場景 檢視mysql支援所有引擎 show engines mrg myisam 是一堆myisam表的集合 用於做水平分表,如果乙個表中資料量太大 將導致效率降低 水平分表就是把整個大表拆成不同的小表,每一次查詢 會判...

mysql高階3 MYSQL高階

檢視 create view v employee asselect a.empid,a.empname,a.gender,b.deptname from employee a left join dept b on a.deptid b.deptid select from v employee ...