9 6 MySQL中保留字的處理

2021-09-08 23:23:11 字數 793 閱讀 1620

嘗試使用乙個識別符,例如使用嵌入式mysql 資料型別或函式名作為表名或列名,例如timestamp 或group ,會造成乙個常見問題。允許你這樣操作( 例如,abs 可以作為乙個列名) 。但是,預設情況下,在數呼叫中在函式名和後面的『( 』字元之間不允許有空格。該要求使函式呼叫與列名引用不同。

該行為的不利結果是在某些上下文中省略乙個空格會使識別符解釋為函式名。例如,該語句合法:

mysql>create table abs (val int)

但省略abs 後面的空格會造成語法錯誤,因為省略後該語句好像要呼叫abs() 函式:

mysql>create table abs(val int);
如果sql 伺服器模式包括ignore_space 模式值,伺服器允許函式呼叫時在函式名和後面的『( 』字元之間有空格。這樣使函式名被視為保留字。結果是,與函式名相同的識別符必須按照9.2節,「資料庫、表、索引、列和別名」中所描述的引起來。sql 伺服器模式按照5.3.2節,「sql伺服器模式」中所描述的進行控制。

限定名中句點後面的字必須為乙個識別符,因此不需要將它引起來,即使它是乙個保留字。

在mysql 中,下表中的字顯式被保留。其中大多數字進製被標準sql 用作列名和/ 或表名( 例如,group ) 。少數被保留了,因為mysql 需要它們,( 目前) 使用yacc解析程式。保留字被引起來後可以用作識別符。

mysql 允許部分關鍵字用做未引起來的識別符,因為許多人以前曾使用過它們。下面列出了一些例子:

mysql中儲存過程

delimiter,簡單解釋下這個命令的用途,在mysql中每行命令都是用 結尾,回車後自動執行,在儲存過程中 往往不代表指令結束,馬上執行,而delimiter原本就是 的意思,因此用這個命令轉換一下 為 這樣只有收到 才認為指令結束可以執行 檢視myql中已經存在的儲存過程 show proce...

mysql中儲存過程

儲存過程,其本質還是函式 但其規定 不能有返回值 說明 1,in 用於設定該變數是用來 接收實參資料 的,即 傳入 預設不寫,就是in 2,out 用於設定該變數是用來 儲存儲存過程中的資料 的,即 傳出 即函式中必須對它賦值 3,inout 是in和out的結合,具有雙向作用 4,對於,out和i...

mysql中儲存過程學習

例項 獲取登入 登出 操作日誌 命令日誌 從系統日誌表查詢,命令日誌表查詢結過儲存到臨時表中,得到所有的日誌,然後按條件進行篩選 create function getlog uname varcharacter 200 starttime datetime,endtime datetime,log...