Mysql(二)

來源:互聯網
上載者:User

標籤:declare   變數   display   刪除   執行預存程序   過程   視圖   com   size   

視圖

視圖是一個虛擬表(非真實存在),其本質是【根據SQL語句擷取動態資料集,並為其命名】,使用者使用時只需使用【名稱】即可擷取結果集,並可以將其當作表來使用。

每次調用時才運行相關語句

1.建立視圖

--格式:CREATE VIEW 視圖名稱 AS  SQL語句CREATE VIEW v1 AS SELET nid,     nameFROM    AWHERE    nid > 4

2.刪除視圖

--格式:DROP VIEW 視圖名稱DROP VIEW v1
View Code

3.修改視圖

-- 格式:ALTER VIEW 視圖名稱 AS SQL語句ALTER VIEW v1 ASSELET A.nid,    B. NAMEFROM    ALEFT JOIN B ON A.id = B.nidLEFT JOIN C ON A.id = C.nidWHERE    A.id > 2AND C.nid < 5
View Code

4.使用視圖

使用視圖時,將其當作表進行操作即可,由於視圖是虛擬表,所以無法使用其對真實表進行建立、更新和刪除操作,僅能做查詢用。

select * from v1
View Code

預存程序

預存程序是一個SQL語句集合,當主動去調用預存程序時,其中內部的SQL語句會按照邏輯執行

1.建立

-- 建立預存程序delimiter //          把運行符號由;修改為//create procedure p1()BEGIN    select * from t1;END//delimiter ;-- 執行預存程序call p1()無參數預存程序
View Code

對於預存程序,可以接收參數,其參數有三類:

  • in          僅用於傳入參數用
  • out        僅用於傳回值用
  • inout     既可以傳入又可以當作傳回值
-- 建立預存程序delimiter \create procedure p1(    in i1 int,    in i2 int,    inout i3 int,    out r1 int     -- 若傳入的r1有值,也無視這個值)BEGIN    DECLARE temp1 int;    DECLARE temp2 int default 0;        set temp1 = 1;    set r1 = i1 + i2 + temp1 + temp2;        set i3 = i3 + 100;end\delimiter ;-- 執行預存程序set @t1 =4;        -- 設定使用者變數用@set @t2 = 0;CALL p1 (1, 2 ,@t1, @t2);SELECT @t1,@t2;    有參數的預存程序
帶參數時

2.刪除

drop procedure proc_name;
View Code

3.執行

-- 無參數call proc_name()-- 有參數,全incall proc_name(1,2)-- 有參數,有in,out,inoutset @t1=0;set @t2=3;call proc_name(1,2,@t1,@t2)執行預存程序
執行預存程序
#!/usr/bin/env python# -*- coding:utf-8 -*-import pymysqlconn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, passwd=‘123‘, db=‘t1‘)cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 執行預存程序cursor.callproc(‘p1‘, args=(1, 22, 3, 4))# 擷取執行完儲存的參數cursor.execute("select @_p1_0,@_p1_1,@_p1_2,@_p1_3")# 固定用法 @_過程名_第幾個變數result = cursor.fetchall()conn.commit()cursor.close()conn.close()print(result)pymysql執行預存程序
pymysql執行預存程序

 

Mysql(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.