當前位置:首頁 » 存儲配置 » mysql存儲過程命名

mysql存儲過程命名

發布時間: 2025-06-01 18:55:06

⑴ mysql存儲過程名區分大小寫嗎

MySQL存儲過程的名字區分大小寫,這一點非常重要。在調用存儲過程時,如果名字不匹配,系統將會報錯。這是因為MySQL解析器在識別存儲過程名稱時會根據系統的配置和設置來區分大小寫。在某些資料庫系統中,如Windows系統下默認情況下,MySQL的解析器並不區分大小寫,但在Linux或macOS系統中,默認情況下則會區分大小寫。

因此,為了確保存儲過程能夠正確調用,開發人員需要在定義和調用存儲過程時嚴格保持名稱的一致性,包括大小寫。例如,如果你定義了一個名為`GetUser`的存儲過程,那麼在調用時也必須使用`GetUser`,而不能誤寫為`getuser`或`GETUSER`。

此外,值得注意的是,不同的MySQL安裝和配置可能會有不同的大小寫敏感設置。為了適應這些差異,建議始終使用統一的命名規范,尤其是在團隊開發環境中。此外,使用全小寫或全大寫命名存儲過程,可以避免由於系統配置不同導致的大小寫不匹配問題。

總的來說,存儲過程名稱的大小寫一致性是保證資料庫系統穩定運行的關鍵因素之一。對於開發人員來說,了解這一點並正確應用,可以避免許多潛在的問題。

在實際操作中,如果遇到存儲過程調用失敗的情況,首先應該檢查存儲過程的定義名稱和調用名稱是否完全一致,包括大小寫。只有確保這一點,才能順利調用存儲過程。

⑵ mysql 存儲過程

.關於MySQL的存儲過程

存儲過程是資料庫存儲的一個重要的功能,但是MySQL在5.0以前並不支持存儲過程,這使得MySQL在應用上大打折扣。好在MySQL 5.0終於開始已經支持存儲過程,這樣即可以大大提高資料庫的處理速度,同時也可以提高資料庫編程的靈活性。

MySQL存儲過程的創建

(1).格式

MySQL存儲過程創建的格式:CREATE PROCEDURE過程名([過程參數[,...]])
[特性...]過程體

這里先舉個例子:

  • mysql>DELIMITER//

  • mysql>CREATEPROCEDUREproc1(OUTsint)

  • ->BEGIN

  • ->SELECTCOUNT(*)INTOsFROMuser;

  • ->END

  • ->//

  • mysql>DELIMITER;


  • 註:
  • (1)這里需要注意的是DELIMITER //和DELIMITER ;兩句,DELIMITER是分割符的意思,因為MySQL默認以";"為分隔符,如果我們沒有聲明分割符,那麼編譯器會把存儲過程當成SQL語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用DELIMITER關鍵字申明當前段分隔符,這樣MySQL才會將";"當做存儲過程中的代碼,不會執行這些代碼,用完了之後要把分隔符還原。

    (2)存儲過程根據需要可能會有輸入、輸出、輸入輸出參數,這里有一個輸出參數s,類型是int型,如果有多個參數用","分割開。

    (3)過程體的開始與結束使用BEGIN與END進行標識。

⑶ 詳解 MySQL 資料庫對象命名規范、對象設計規范、SQL 使用規范

資料庫對象命名規范

資料庫對象包括表、索引、視圖、圖表、默認值、規則、觸發器、存儲過程和用戶。命名規范要求使用具有意義的英文詞彙,詞彙間以下劃線分隔。命名只允許使用英文字母、數字和下劃線,且以英文字母開頭。應避免使用MySQL保留字,如"backup"、"call"、"group"等。所有資料庫對象應使用小寫字母。

資料庫命名規范

資料庫命名應盡量不超過30個字元,以項目名稱加代表庫含義的簡寫表示。創建資料庫時應添加默認字元集和校對規則子句,推薦使用UTF8或UTF8MB4。命名應保持統一性,使用小寫。

表命名規范

表名通常以"t_"開頭,表示table。命名規則為"t + 模塊簡寫 + 表簡寫",例如教育信息表命名為"t_user_einfo"。臨時表命名規則為"temp_模塊_表_日期",如"temp_user_einfo_20210719"。備份表命名規則為"bak_模塊_表_日期",如"bak_user_einfo_20210719"。同一模塊的表盡可能使用相同的前綴,表名稱應表達含義,並且以小寫字母表示,長度不宜超過30個字元。

欄位命名規范

欄位命名需要表示實際含義的英文單詞或簡寫,單詞間用下劃線分隔,例如"service_ip"、"service_port"。各表間相同意義的欄位必須同名,如"create_time"。應使用小寫,長度不超過30個字元。

索引命名規范

唯一索引使用"uni + 欄位名"命名,例如"uni_uid"。非唯一索引使用"idx + 欄位名",如"idx_uname_mobile"。多個單詞間使用下劃線分隔。索引名應保持在50個字元以內,組合索引的欄位不宜太多。對於多單片語成的列名,應採用縮寫形式,如"test_contact表member_id和friend_id上的組合索引"命名為"idx_mid_fid"。

視圖命名規范

視圖名以"v"開頭,表示view,結構為"v + 視圖內容含義縮寫"。如果視圖僅來源於單個表,則為"v + 表名"。如果視圖由多個表關聯產生,則使用"v + 表名間用下劃線連接"。視圖名長度盡量不超過30個字元,超過則取簡寫。嚴格限制開發人員創建視圖,命名應保持小寫。

存儲過程命名規范

存儲過程名以"sp"開頭,多個單詞間使用下劃線連接,如"sp_add_user"。輸入參數以"i_"開頭,輸出參數以"o_"開頭。命名應保持小寫,長度不超過30個字元。

函數命名規范

函數名以"func"開始,多個單詞間使用下劃線連接,如"func_calculate_total"。函數命名中應體現其功能。函數名長度不超過30個字元,命名應保持小寫。

觸發器命名規范

觸發器以"trig"開頭,描述觸發器所加的表。觸發器名長度盡量不超過30個字元,後綴可表示觸發條件,如"_i"表示插入觸發,"_u"表示更新觸發,"_d"表示刪除觸發。命名應保持小寫。

約束命名規范

唯一約束使用"uk_表名稱_欄位名",例如"uk_user_name"。外鍵約束使用"fk_表名_表名",子表名和父表名間用下劃線分隔。非空約束默認非空且給出默認值。命名應保持小寫。

用戶命名規范

生產使用的用戶命名格式為"code_應用"。只讀用戶命名規則為"read_應用"。命名應保持小寫。

資料庫對象設計規范

存儲引擎選擇:無特殊需求時,必須使用innodb存儲引擎。字元集選擇:無特殊要求時,推薦使用utf8或utf8mb4。表設計規范:減少不同應用間的關聯,避免使用外鍵,確保組件獨立性。表設計應針對每個組件的業務進行,表必須有主鍵,欄位應表示單一含義,避免重復列,避免復雜數據類型,確保join欄位數據類型一致。文本存儲:使用獨立的表,通過主鍵關聯。定期刪除過期數據,通過分表解決,如使用2/8法則。單表欄位數限制在50個以內,物理大小控制在16GB,數據行數控制在2000W以內。

欄位設計規范:整型欄位使用UNSIGNED INT,動態長度字元串使用VARCHAR,TEXT類型用於大文本數據,長度超過20000個字元使用TEXT,精確浮點數使用DECIMAL,避免使用BLOB類型。欄位默認非空且提供默認值,自增欄位為整型且為UNSIGNED INT或BIGINT。

索引設計規范:索引創建在區分度較高的列上,選擇性計算方式為:count(distinct c_name)/count(*)。遵循最左前綴原則,避免使用外鍵,Text類型欄位使用前綴索引。單表索引數量控制在5個以內,ORDER BY、GROUP BY、DISTINCT欄位在索引後形成覆蓋索引。聯合索引應按照最左匹配原則,避免索引失效,合理使用聯合索引和前綴索引。

約束設計規范:主鍵為有序且無意義的自增序列,唯一性約束創建唯一約束索引。禁止更新主鍵欄位,避免創建外鍵約束,所有欄位非空,所有欄位有默認值。

SQL使用規范:避免使用SELECT *,使用明確的欄位列表進行查詢。禁止全表掃描,確保查詢具有明確的過濾條件。分頁查詢需帶有排序條件。使用IN/UNION替換OR,避免使用模糊前綴查詢,盡量避免子查詢,使用JOIN操作優化。

⑷ mysql存儲過程怎麼寫


MySQL 存儲過程是一些 SQL 語句的集合,比如有的時候我們可能需要一大串的 SQL 語句,或者說在編寫 SQL 語句的過程中還需要設置一些變數的值,這個時候我們就完全有必要編寫一個存儲過程。下面我們來介紹一下如何創建一個存儲過程。
語法格式:
可以使用 CREATE PROCEDURE 語句創建存儲過程。
語法格式如下:
CREATE PROCEDURE <過程名> ( [過程參數[,?] ] ) <過程體>
[過程參數[,?] ] 格式
[ IN | OUT | INOUT ] <參數名> <類型>語法說明如下:
1) 過程名
存儲過程的名稱,默認在當前資料庫中創建。若需要在特定資料庫中創建存儲過程,則要在名稱前面加上資料庫的名稱,即 db_name.sp_name。需要注意的是,名稱應當盡量避免選取與 MySQL 內置函數相同的名稱,否則會發生錯誤。
2) 過程參數
存儲過程的參數列表。其中,<參數名>為參數名,<類型>為參數的類型(可以是任何有效的 MySQL 數據類型)。當有多個參數時,參數列表中彼此間用逗號分隔。存儲過程可以沒有參數(此時存儲過程的名稱後仍需加上一對括弧),也可以有 1 個或多個參數。

MySQL 存儲過程支持三種類型的參數,即輸入參數、輸出參數和輸入/輸出參數,分別用 IN、OUT 和 INOUT 三個關鍵字標識。其中,輸入參數可以傳遞給一個存儲過程,輸出參數用於存儲過程需要返回一個操作結果的情形,而輸入/輸出參數既可以充當輸入參數也可以充當輸出參數。需要注意的是,參數的取名不要與數據表的列名相同,否則盡管不會返回出錯信息,但是存儲過程的 SQL 語句會將參數名看作列名,從而引發不可預知的結果。
3) 過程體
存儲過程的主體部分,也稱為存儲過程體,包含在過程調用的時候必須執行的 SQL 語句。這個部分以關鍵字 BEGIN 開始,以關鍵字 END 結束。若存儲過程體中只有一條 SQL 語句,則可以省略 BEGIN-END 標志。

在存儲過程的創建中,經常會用到一個十分重要的 MySQL 命令,即 DELIMITER 命令,特別是對於通過命令行的方式來操作 MySQL 資料庫的使用者,更是要學會使用該命令。

在 MySQL 中,伺服器處理 SQL 語句默認是以分號作為語句結束標志的。然而,在創建存儲過程時,存儲過程體可能包含有多條 SQL 語句,這些 SQL 語句如果仍以分號作為語句結束符,那麼 MySQL 伺服器在處理時會以遇到的第一條 SQL 語句結尾處的分號作為整個程序的結束符,而不再去處理存儲過程體中後面的 SQL 語句,這樣顯然不行。為解決這個問題,通常可使用 DELIMITER 命令將結束命令修改為其他字元。

語法格式如下:
DELIMITER $$語法說明如下:$$ 是用戶定義的結束符,通常這個符號可以是一些特殊的符號,如兩個「?」或兩個「¥」等。當使用 DELIMITER 命令時,應該避免使用反斜杠「」字元,因為它是 MySQL 的轉義字元。
在 MySQL 命令行客戶端輸入如下SQL語句。
mysql > DELIMITER ??成功執行這條 SQL 語句後,任何命令、語句或程序的結束標志就換為兩個問號「??」了。

若希望換回默認的分號「;」作為結束標志,則在 MySQL 命令行客戶端輸入下列語句即可:
mysql > DELIMITER ;注意:DELIMITER 和分號「;」之間一定要有一個空格。在創建存儲過程時,必須具有 CREATE ROUTINE 許可權。可以使用 SHOW PROCEDURE STATUS 命令查看資料庫中存在哪些存儲過程,若要查看某個存儲過程的具體信息,則可以使用 SHOW CREATE PROCEDURE <存儲過程名>。
創建不帶參數的存儲過程
存儲過程的作用是從學生成績信息表中查詢學生的成績信息,輸入的 SQL 語句和執行過程如下所示。
mysql> DELIMITER //
mysql> CREATE PROCEDURE ShowStuScore()
-> BEGIN
-> SELECT * FROM tb_students_score;
-> END //
Query OK, 0 rows affected (0.09 sec)

php執行mysql的存儲過程後如何獲取返回值

mysqli_query($db,"SET NAMES utf8"); $result=$db->query("call gxtj($year,$jd)"); // gxtj是mysql的存儲過程名稱 while( $row = $result->滾茄fetch_array(MYSQLI_ASSOC)) //完亂茄成從返回結果集中取出一行{while ($key=key($row)){ //依次取得欄位名$value=current($row); //依次取得字嘩備察段值}}

⑹ mysql創建存儲過程出錯,怎麼解決

Warning: Procere created with compilation errors創建存儲過程出現錯誤,是設置錯誤造成的,解決方法如下:

1、打開mysql的客戶端管理軟體,找到想要創建存儲過程的資料庫,在【Stored Proceres】菜單上點擊滑鼠右鍵,選擇【Create Stored Procere】菜單項。

熱點內容
寶馬x4什麼配置劃算 發布:2025-06-03 07:40:44 瀏覽:508
騰訊雲備份伺服器 發布:2025-06-03 07:30:35 瀏覽:829
手機小米路由存儲 發布:2025-06-03 07:22:25 瀏覽:794
android使用方法 發布:2025-06-03 07:16:39 瀏覽:461
浙江伺服器託管雲主機 發布:2025-06-03 07:05:41 瀏覽:927
社保卡開通存儲業務 發布:2025-06-03 07:04:06 瀏覽:428
創造與魔法如何快速擠進伺服器 發布:2025-06-03 06:42:57 瀏覽:955
訪問伺服器很慢 發布:2025-06-03 06:31:27 瀏覽:851
更改桌面緩存位置 發布:2025-06-03 06:30:58 瀏覽:240
168傳奇版226解壓密碼 發布:2025-06-03 06:29:33 瀏覽:527