當前位置:首頁 » 存儲配置 » mysql導出存儲過程和函數

mysql導出存儲過程和函數

發布時間: 2022-11-04 04:41:05

『壹』 mysql 導入導出資料庫以及函數、存儲過程的介紹

本篇文章是對mysql中的導入導出資料庫命令以及函數、存儲過程進行了詳細的分析介紹,需要的朋友參考下

mysql常用導出數據命令:
1.mysql導出整個資料庫

mysqlmp
-hhostname
-uusername
-ppassword
databasename
>
backupfile.sql

mysqlmp
-hlocalhost
-uroot
hqgr>
hqgr.sql
(如果root用戶沒用密碼可以不寫-p,當然導出的sql文件你可以制定一個路徑,未指定則存放在mysql的bin目錄下)
2.mysql導出資料庫一個表
mysqlmp
-hhostname
-uusername
-ppassword
database
tablename>
導出的文件名
mysqlmp
-hlocalhost
-uroot
hqgr
t_ug_user>
user.sql
3.mysql導出一個資料庫結構
mysqlmp
-hhostname
-uusername
-ppassword
-d
--add-drop-table
databasename>d:hqgrstructure.sql
-d
沒有數據
--add-drop-table
在每個create語句之前增加一個drop
table
4.如果需要導出mysql裡面的函數或者存儲過程

mysqlmp
-hhostname
-uusername
-ppassword
-ntd
-R
databasename
>
backupflie.sql

mysqlmp
-hlocalhost
-uroot
-ntd
-R
hqgr
>
hqgr.sql

其中的
-ntd
是表示導出存儲過程;-R是表示導出函數
mysql常用導入數據的命令:
1.mysql命令

mysql
-hhostname
-uusername
-
ppassword
databasename
<
backupfile.sql
2.source命令

mysql>source
backupfile.sql

『貳』 xshell怎麼導出Mysql存儲過程

首先,導出存儲過程的命令如下,
mysqlmp -R -ndt dbname -u root -p > xxx.sql
另外,補充其他知識點,
查詢資料庫中的存儲過程
select * from mysql.proc where db = dbName and `type` = 'PROCEDURE'
show procere status;
查看存儲過程或函數的創建代碼
show create procere proc_name;
show create function func_name;

『叄』 Mysql 如何一次性將一台伺服器上的所有表結構、數據和存儲過程都導出到移動存儲介質(比如U盤)中

這種架構一般用在以下三類場景
1. 備份多台 Server 的數據到一台如果按照數據切分方向來講,那就是垂直切分。比如圖 2,業務 A、B、C、D 是之前拆分好的業務,現在需要把這些拆分好的業務匯總起來備份,那這種需求也很適用於多源復制架構。實現方法我大概描述下:業務 A、B、C、D 分別位於 4 台 Server,每台 Server 分別有一個資料庫來隔離前端的業務數據,那這樣,在從庫就能把四台業務的數據全部匯總起來,而不需要做額外的操作。那沒有多源復制之前,要實現這類需求,只能在匯總機器上搭建多個 MySQL 實例,那這樣勢必會涉及到跨庫關聯的問題,不但性能急劇下降,管理多個實例也沒有單台來的容易。

『肆』 mysql 存儲過程總結(一)

1、存儲過程定義:

存儲過程是事先經過編譯並存儲在資料庫中的一段 SQL 語句的集合,調用存儲過程可以簡化應用開發 人員的很多工作,減少數據在資料庫和應用伺服器之間的傳輸,對於提高數據處理的效率是有好處的。 存儲過程思想上很簡單,就是資料庫 SQL 語言層面的代碼封裝與重用。

2、特點:

封裝,復用 : 可以把某一業務SQL封裝在存儲過程中,需要用到 的時候直接調用即可。

可以接收參數,也可以返回數據 :再存儲過程中,可以傳遞參數,也可以接收返回 值。

減少網路交互,效率提升 : 如果涉及到多條SQL,每執行一次都是一次網路傳 輸。 而如果封裝在存儲過程中,我們只需要網路交互一次可能就可以了。

3、基本語法

(1)創建:

(2)調用:

(3)查看:

(4)刪除

注意: 在命令行中,執行創建存儲過程的SQL時,需要通過關鍵字 delimiter 指定SQL語句的 結束符。

『伍』 在mysql中如何導出指定的存儲過程

方法一:從mysql維護的存儲過程表(mysql.proc)出:

select body
from mysql.proc
where name = 'simpleproc'
;

更詳細一點的:
select name , type , param_list ,returns , body , body_utf8
from mysql.proc
where name = 'simpleproc'
;

方法2:
select ROUTINE_DEFINITION , ROUTINE_TYPE , ROUTINE_NAME from information_schema.ROUTINES
where ROUTINE_NAME = 'simpleproc'
;

如果要導出,可以裝到一個表中導出:
create table mp_proc
as
select name, param_list ,returns, body
from mysql.proc
where name = 'simpleproc'
;

然後mp出來.或者 tee出到文件。

『陸』 怎麼導出mysql中已有的的表和存儲過程(不使用可視界面)

你好!你的意思是使用DOS命令導出來嗎?

不過現在基本上有可視化工具啊!很少有人使用命令導出:

這樣吧!我寫一

進入:cmdmysql安裝目錄C:ProgramFilesMySQLMySQLServer5.1in
命令:mysqlmp-uroot(用戶名)-ptest(資料庫名)-R>123.sql(導出數據的文件名)

下吧。歡迎採納!

『柒』 mysql只導出某個存儲過程怎麼導最好用mysqlmp命令。

單個的沒有 導出資料庫dbname下面全部的 mysqlmp -R -ndt dbname -u root -p > C:\xxx.sql;

『捌』 五、MYSQL存儲過程和函數

• create procere用來創建 存儲過程 ,create function用來創建 函數

Delimiter命令是改變語句的結束符 ,MySQL默認的結束符為;號,由於procere和function中的;號並不代表創建的結束,所以要替換成另外的結束符以便表示創建的結束
• rontine_body子句可以包含一個簡單的SQL語句,也可以包含多個SQL語句, 通過begin…end將這多個SQL語句 包含在一起
• MySQL存儲過程和函數中也可以包含類似create和drop等DDL語句
• comment子句用來寫入對存儲過程和函數的注釋
Language子句用來表示此存儲過程和函數的創建語言
存儲過程和函數被標注為deterministic表明當輸入相同的參數是會返回相同的結果,反之如果是not deterministic則表示相同參數不會是相同結果,默認是not deterministic

相關屬性短語只有咨詢含義,並不是強制性的約束

• Drop procere/function語句用來 刪除指定名稱的存儲過程或函數

• Begin…end語句通常出現在存儲過程、函數和觸發器中,其中 可以包含一個或多個語句 ,每個語句用;號隔開

• 標簽label可以加在begin…end語句以及loop, repeat和while語句
語句中通過iterate和leave來控制流程,iterate表示返回指定標簽位置,leave表示跳出標簽

Declare語句通常用來聲明本地變數、游標、條件或者handler
Declare語句只允許出現在begin … end語句中而且必須出現在第一行
Declare的順序也有要求,通常是先聲明本地變數,再是游標,然後是條件和handler

• 本地變數可以通過declare語句進行聲明
聲明後的變數可以通過select … into var_list進行賦值,或者通過set語句賦值,或者通過定義游標並使用fetch … into var_list賦值
• 通過declare聲明變數方法:

• MySQL支持if,case,iterate,leave,loop,while,repeat語句作為存儲過程和函數中的 流程式控制制語句 ,另外return語句也是函數中的特定流程式控制制語句

• Case語句在存儲過程或函數中表明了 復雜的條件選擇語句

• IF語句在存儲過程或函數中表明了 基礎的條件選擇語句

其中在 function 裡面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我們開啟了 bin-log, 我們就必須為我們的 function 指定一個參數。
在 MySQL 中創建函數時出現這種錯誤的解決方法:
set global log_bin_trust_function_creators=TRUE;

• Iterate語句 僅出現在loop,repeat,while循環語句中,其含義表示重新開始此循環

• Leave語句表明 退出指定標簽的流程式控制制語句塊
• 通常會用在begin…end,以及loop,repeat,while的循環語句中

• Loop語句是存儲過程或函數中表達 循環執行 的一種方式

• repeat語句是存儲過程或函數中表達 循環執行 的一種方式

• while語句是存儲過程或函數中表達 循環執行 的一種方式

• Return語句用在 函數中,用來終結函數的執行並將指定值返回給調用者

• Cursor游標用來 聲明一個數據集
• 游標的聲明必須在變數和條件聲明之後,在handler聲明之前

• Cursor close語句用來 關閉之前打開的游標

• Cursor declare語句用來聲明一個游標和指定游標對應的數據集合, 通常數據集合是一個select語句

• Cursor fetch語句用來獲取游標指定數據集的 下一行數據 並將各個欄位值賦予後面的變數

• Open cursor語句用來打開一個之前已經 聲明好的游標

• Declare condition語句命名 特定的錯誤條件 ,而該特定錯誤可以在declare…handler中指定 處理方法

• 比如在MySQL中1051error code表示的是unknown table的錯誤,如果要對這
個錯誤做特殊處理,可以用三種方法:

• Declare handler語句用來聲明一個handler來處理一個或多個特殊條件,當其中的某個條件滿足時則觸發其中的statement語句執行
• Statement可以是一個簡單SQL語句,也可以是begin…end組成的多個語句

• Handler_action子句聲明當執行完statement語句之後應該怎麼辦

Condition_value的值有以下幾種:

• 當condition發生但沒有聲明handler時,則存儲過程和函數依照如下規則處理

• create trigger語句用來創建一個觸發器,觸發器的作用是當表上有對應SQL語句發生時,則觸發執行
• 觸發器創建時需要 指定對應的表名 tbl_name

Definer關鍵詞用來指定trigger的安全環境
• Trigger_time指定觸發器的執行時間,BEFORE和AFTER指定觸發器在表中的 每行數據修改前或者後 執行
• Trigger_event指定觸發該觸發器的具體 事件
• INSERT當新的一行數據插入表中時觸發,比如通過執行insert,load data,replace語句插入新數據
• UPDATE當表的一行數據被修改時觸發,比如執行update語句時
• DELETE當表的一行數據被刪除時觸發,比如執行delete,replace語句時
• 當執行insert into … on plicate key update語句時,當碰到重復行執行update時,則觸發update下的觸發器
• 從5.7.2版本開始,可以創建具有相同trigger_time和trigger_event的同一個表上的多個觸發器,默認情況下按照創建的時間依次執行,通過 指定FOLLOWS/PRECEDES改變執行順序 ,即FOLLOWS時表示新創建的觸發器後執行,PRECEDES則表示新觸發器先執行
• Trigger_body表示觸發器觸發之後要執行的一個或多個語句,在內部可以引用涉及表的欄位, OLD.col_name表示行數據被修改或刪除之前的欄位數據,NEW.col_name表示行數據被插入或修改之後的欄位數據

• Drop trigger語句用來 刪除一個觸發器

• If exists短語用來避免刪除不存在的觸發器時引發報錯
當你執行drop table時,表上的觸發器也被drop掉了

『玖』 mysql 存儲過程和函數的區別

mysql 存儲過程和函數的區別

1、

存儲過程實現的功能要復雜一點,函數實現的功能針對性比較強。

存儲過程,功能強大,可以執行包括修改表等一系列資料庫操作;

用戶定義函數不能用於執行一組修改全局資料庫狀態的操作。


2、

對於存儲過程來說可以返回參數,如記錄集,函數只能返回值或者表對象。

函數只能返回一個變數;而存儲過程可以返回多個;

存儲過程的參數可以有IN,OUT,INOUT三種類型,而函數只能有IN類;

存儲過程聲明時不需要返回類型,而函數聲明時需要描述返回類型,且函數體中必須包含一個有效的RETURN語句。



3、

存儲過程,可以使用非確定函數,不允許在用戶定義函數主體中內置非確定函數。




4、

存儲過程一般是作為一個獨立的部分來執行( EXECUTE 語句執行),而函數可以作為查詢語句的一個部分來調用(SELECT調用)。

由於函數可以返回一個表對象,因此它可以在查詢語句中位於FROM關鍵字的後面。 SQL語句中不可用存儲過程,而可以使用函數。

熱點內容
安卓怎麼錄屏只錄一點 發布:2025-05-19 17:12:39 瀏覽:521
甘肅移動服務密碼在哪裡 發布:2025-05-19 17:11:15 瀏覽:541
java內部類訪問外部類方法 發布:2025-05-19 17:10:30 瀏覽:286
用解壓造句 發布:2025-05-19 17:01:55 瀏覽:341
openwrt編譯取消跑碼 發布:2025-05-19 16:50:28 瀏覽:125
知道了寬頻賬號密碼如何連接 發布:2025-05-19 16:49:49 瀏覽:656
時間輪資料庫 發布:2025-05-19 16:45:20 瀏覽:269
ipad緩存垃圾怎麼清理 發布:2025-05-19 16:44:46 瀏覽:536
視頻加解壓 發布:2025-05-19 16:35:28 瀏覽:7
c語言大學教程第六版 發布:2025-05-19 16:04:21 瀏覽:741