mysql的存儲程序包括哪些
在MySQL中每一個資料庫都會在定義好(或者默認)的數據目錄下存在一個以資料庫名字命名的文件夾,用來存放該資料庫中各種表數據文件。
1、「.frm」文件 與表相關的元數據(meta)信息都存放在「.frm」文件中,包括表結構的定義信息等。不論是什麼存儲引擎,每一個表都會有一個以表名命名的「.frm」文件。所有的「.frm」文件都存放在所屬資料庫的文件夾下面。
2、「.MYD」文件「 .MYD」文件是MyISAM存儲引擎專用,存放MyISAM表的數據。每一個MyISAM表都會有一個「.MYD」文件與之對應,同樣存放於所屬資料庫的文件夾下,和「.frm」文件在一起。
3、「.MYI」文件 「.MYI」文件也是專屬於MyISAM存儲引擎的,主要存放MyISAM表的索引相關信息。對於MyISAM存儲來說,可以被cache的內容主要就是來源於「.MYI」文件中。每一個MyISAM表對應一個「.MYI」文件,存放於位置和「.frm」以及「.MYD」一樣。
管理工具:
可以使用命令行工具管理 MySQL 資料庫(命令 mysql 和 mysqladmin),也可以從 MySQL 的網站下載圖形管理工具 MySQL Administrator, MySQL Query Browser 和 MySQL Workbench。
phpMyAdmin是由 php 寫成的 MySQ L資料庫系統管理程程序,讓管理者可用 Web 界面管理 MySQL 資料庫。
phpMyBackupPro也是由 PHP 寫成的,可以透過 Web 界面創建和管理資料庫。它可以創建偽 cronjobs,可以用來自動在某個時間或周期備份 MySQL 資料庫。另外,還有其他的 GUI 管理工具,例如 mysql-front 以及 ems mysql manager,navicat等等。
以上內容參考:網路-mySQL
2. mysql中存儲過程是什麼意思
存儲過程(stored
procere)是一組為了完成特定功能的sql語句集,經編譯後存儲在資料庫中,用戶通過指定存儲過程的名字並給定參數(如果該存儲過程帶有參數)來調用執行它。
一個存儲過程是一個可編程的函數,它在資料庫中創建並保存。
3. mysql中的存儲過程是什麼意思啊
直白的講就是把SQL語句進行封裝,然後留個介面,使用的時候直接調用介面。
4. mysql有存儲過程嗎
MySQL是有存儲過程的。
例子如下:
DELIMITER//
CREATEPROCEDUREmyproc(OUTsint)
BEGIN
SELECTCOUNT(*)INTOsFROMTABLE;
END
//
DELIMITER;
以上!
5. mysql存儲過程的基本用法有哪些
mysql存儲過程的基本用法有哪些
在外部程序訪問資料庫時(例如 PHP),要組織很多 SQL 語句。
特別是業務邏輯復雜的時候,一大堆的 SQL 和條件夾雜在 PHP 代碼中,讓人不寒而慄。現在有了 MySQL 存儲過程,業務邏輯可以封裝存儲過程中,這樣不僅容易維護,而且執行效率也高。
一、MySQL 創建存儲過程
"pr_add" 是個簡單的 MySQL 存儲過程,這個MySQL 存儲過程有兩個 int 類型的輸入參數 "a"、"b",返回這兩個參數的和。
復制代碼 代碼如下:
drop procere if exists pr_add;
計算兩個數之和
復制代碼 代碼如下:
create procere pr_add
(
a int,
b int
)
begin
declare c int;
if a is null then
set a = 0;
end if;
if b is null then
set b = 0;
end if;
set c = a + b;
select c as sum;
/*
return c;
不能在 MySQL 存儲過程中使用。return 只能出現在函數中。
*/
end;
二、調用 MySQL 存儲過程
復制代碼 代碼如下:
call pr_add(10, 20);
執行 MySQL 存儲過程,存儲過程參數為 MySQL 用戶變數。
復制代碼 代碼如下:
set @a = 10;
set @b = 20;
call pr_add(@a, @b);
三、MySQL 存儲過程特點
創建 MySQL 存儲過程的簡單語法為:
復制代碼 代碼如下:
create procere 存儲過程名字()
(
[in|out|inout] 參數 datatype
)
begin
MySQL 語句;
end;
MySQL 存儲過程參數如果不顯式指定"in"、"out"、"inout",則默認為"in"。習慣上,對於是"in" 的參數,我們都不會顯式指定。
1. MySQL 存儲過程名字後面的"()"是必須的,即使沒有一個參數,也需要"()"
2. MySQL 存儲過程參數,不能在參數名稱前加"@",如:"@a int"。下面的創建存儲過程語法在 MySQL 中是錯誤的(在 SQL Server 中是正確的)。 MySQL 存儲過程中的變數,不需要在變數名字前加"@",雖然 MySQL 客戶端用戶變數要加個"@"。
復制代碼 代碼如下:
create procere pr_add
(
@a int, -- 錯誤
b int -- 正確
)
3. MySQL 存儲過程的參數不能指定默認值。
4. MySQL 存儲過程不需要在 procere body 前面加 "as"。而 SQL Server 存儲過程必須加 "as" 關鍵字。
復制代碼 代碼如下:
create procere pr_add
(
a int,
b int
)
as -- 錯誤,MySQL 不需要 "as"
begin
mysql statement ...;
end;
5. 如果 MySQL 存儲過程中包含多條 MySQL 語句,則需要 begin end 關鍵字。
復制代碼 代碼如下:
create procere pr_add
(
a int,
b int
)
begin
mysql statement 1 ...;
mysql statement 2 ...;
end;
6. MySQL 存儲過程中的每條語句的末尾,都要加上分號 ";"
復制代碼 代碼如下:
...
declare c int;
if a is null then
set a = 0;
end if;
...
end;
7. MySQL 存儲過程中的注釋。
復制代碼 代碼如下:
/*
這是個
多行 MySQL 注釋。
*/
declare c int; -- 這是單行 MySQL 注釋 (注意 -- 後至少要有一個空格)
if a is null then # 這也是個單行 MySQL 注釋
set a = 0;
end if;
6. mysql存儲過程是什麼意思什麼時候會用到,主要用來做什麼
存儲過程簡單來說,就是為以後的使用而保存的一條或多條MySQL語句的集合。可將其視為批件,雖然它們的作用不僅限於批處理。
存儲過程就是有業務邏輯和流程的集合,
可以在存儲過程中創建表,更新數據,
刪除等等。
你可以理解為用sql語句開發的一個
類和函數。
為什麼要使用存儲過程
通過把處理封裝在容易使用的單元中,簡化復雜的操作(正如前面例子所述)。
由於不要求反復建立一系列處理步驟,這保證了數據的完整性。如果所有開發人員和應用程序都使用同一(試驗和測試)存儲過程,則所使用的代碼都是相同的。這一點的延伸就是防止錯誤。需要執行的步驟越多,出錯的可能性就越大。防止錯誤保證了數據的一致性。
簡化對變動的管理。如果表名、列名或業務邏輯(或別的內容)有變化,只需要更改存儲過程的代碼。使用它的人員甚至不需要知道這些變化。
7. mysql 有存儲過程嗎
1、存儲過程是一種資料庫對象,在伺服器端編寫和運行,在客戶端調用
2、存儲過程可以提高數據的讀取效率
3、MySQL中有存儲過程,其原理與在sqlserver,oracle中差不多
8. MySQL存儲過程二
上一節存儲過程封裝的都是簡單的select語句,直接使用被封裝的語句就能完成。所以存儲過程往往應用於更復雜的業務規則處理時更有效
看一個例子
這個例子使用元素比較多,解釋一下:
COMMENT為表添加了一句注釋;
-- 單行注釋,注釋跟在後面的內容,需要注意-- 後需要加一個空格才能生效;
(#注釋內容 /*注釋內容*/ 這兩種方法也能進行注釋)
Declare用來聲明變數,一句declare只能聲明一個變數,變數必須先聲明後使用
If...Then是進行條件判斷的,基本語句如下:
If ... Then ... Else ... End If;
這個存儲過程完成了訂單合計,並判斷該訂單是否需要增加營業稅。taxable是一個布爾值(如果要增稅為真,否則為假)。在存儲體中定義了兩個局部變數。並將結果存儲到局部變數total中。if語句檢查taxable是否為真,如果為真,則用另一條select語句增加營業稅。最後將total結果保存到ototal中。
調用結果如下:
檢查存儲過程
SHOW CREATE PROCEDURE 過程名;
為了獲得包括何時、由誰創建等詳細信息的存儲過程列表,使用
Show procere status; -- 會列出所有存儲過程
可以添加過濾,比如
存儲過程循環語句
1. while
WHILE (表達式) DO
...
END WHILE;
看一個例子
創建了一個循環存儲過程,重復向human插入5條記錄。下面調用看一下結果
2.repeat
基本語句:
Repeat ...until 條件...END Repeat;
同樣操作,使用repeat執行如下