版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
MYSQL表達式與運算符課程介紹本課程主要介紹了MySQL數(shù)據(jù)庫的表達式運算符、MySQL函數(shù),索引的用法、存儲過程的使用,視圖和觸發(fā)器等方面的知識,以應用為目標,具有較強的實踐性。學習對象希望了解MySQL數(shù)據(jù)庫基本概念,常見使用方法的學生、專業(yè)人士等學習目標在完成本章的學習后,您將能夠:掌握MySQL表達式的撰寫掌握MySQL的各種運算符用法掌握MySQL運算符優(yōu)先級掌握MySQLNULL值的處理和類型轉換
目錄大綱撰寫表達式算術運算符邏輯運算符比較運算符運算符優(yōu)先級表達式中的NULL值類型轉換表達式可以只是一個簡單的常量,如數(shù)值常量0和字符串常量‘abc’。1撰寫表達式表達式可以進行函數(shù)調用。有的函數(shù)需要參數(shù)(圓括號中有值),而有的不需要。多個參數(shù)應該用逗號分隔。在調用一個函數(shù)時,參數(shù)旁邊可以有空格,但在函數(shù)名與圓括號間不能有空格。下面是一些函數(shù)例子:NOW()無參數(shù)函數(shù)STRCMP(“abc”,“def”)有兩個參數(shù)的函數(shù)STRCMP(“abc”,“def”)參數(shù)旁邊有空格是合法的STRCMP(“abc”,“def”)函數(shù)名后跟空格是不合法的1撰寫表達式如果函數(shù)名后有一個空格,MySQL
的分析程序可能會將函數(shù)名解釋為一個列名(函數(shù)名不是保留字,如果需要的話,可將它們用作列名)。其結果是出現(xiàn)一個語法錯誤。表達式中可使用表列。最簡單的情形是,當某個列所屬的表在上下文中是明確的,則可簡單地給出列名對該列進行引用。下面的每個SELECT語句中惟一地出了一個表名,因此,列的引用無歧義:SELECT*FROMCLASS;SELECT*FROMEMPLOYEE;如果使用哪個表的列不明確,可在列名前加上表名。如果使用哪個數(shù)據(jù)庫中的表也不明確的話,可在表名前加上數(shù)據(jù)庫名。如果只是希望意思更明顯,也可以在無歧義的上下文中利用這種更為具體的表示形式,如:SELECTE.NAME,C.NAMEFROMEMPLOYEEE,CLASSCWHEREE.DID=C.CLASSID;1撰寫表達式如果函數(shù)名后有一個空格,MySQL
的分析程序可能會將函數(shù)名解釋為一個列名(函數(shù)名不是保留字,如果需要的話,可將它們用作列名)。其結果是出現(xiàn)一個語法錯誤。表達式中可使用表列。最簡單的情形是,當某個列所屬的表在上下文中是明確的,則可簡單地給出列名對該列進行引用。下面的每個SELECT語句中惟一地出了一個表名,因此,列的引用無歧義:SELECT*FROMCLASS;SELECT*FROMEMPLOYEE;如果使用哪個表的列不明確,可在列名前加上表名。如果使用哪個數(shù)據(jù)庫中的表也不明確的話,可在表名前加上數(shù)據(jù)庫名。如果只是希望意思更明顯,也可以在無歧義的上下文中利用這種更為具體的表示形式,如:SELECTE.NAME,C.NAMEFROMEMPLOYEEE,CLASSCWHEREE.DID=C.CLASSID;1撰寫表達式MySQL
有幾種類型的運算符可用來連接表達式的項。MySQL
支持多種類型的運算符,來連接表達式的項。這些類型主要包括算術運算符、比較運算符、邏輯運算符和位運算符。算術運算符MySQL
支持的算術運算符包括加、減、乘、除和模運算。它們是最常使用、最簡單的一類運算符。2算術運算符如果除數(shù)為0,將是非法除數(shù),返回結果為NULL。2算術運算符取模的時候,%和MOD的功能是一樣的2算術運算符邏輯運算符對表達式進行估計以確定其為真(非零)或假(零)。3邏輯運算符MySQL
包含有C風格的“&&”、“||”和“!”運算符,可替換AND、OR和NOT。要特別注意“||”運算符,ANSISQL指定“||”作為串連接符,但在MySQL
中,它表示一個邏輯或運算。如果執(zhí)行下面的查詢,則返回數(shù)0:MySQL
為進行運算,將“abc”和“def”轉換為整數(shù),且兩者都轉換為0,0與0進行或運算,結果為0。在MySQL
中,必須用CONCAT(“abc”,“def”)來完成串的連接。3邏輯運算符4位運算符5比較運算符其中包括測試相對大小或數(shù)和串的順序的運算符,以及完成模式匹配和測試NULL值的運算符?!?lt;=>”運算符是MySQL
特有的。Like比較符通配符“%”與任何串匹配,其中包括與空字符序列匹配,但是,“%”不與NULL匹配。事實上,具有NULL操作數(shù)的任何模式匹配都將失敗。MySQL
的LIKE運算符是不區(qū)分大小寫的,除非它至少有一個操作數(shù)是二進制串。5比較運算符LIKE所允許的另一個通配符是“_”,它與單個字符匹配?!癬__”與三個字符的串匹配?!癱_t”與“cat”、“cut”甚至“c_t”匹配(因為“_”與自身匹配)。為了關掉“%”或“_”的特殊含義,與這些字符的直接實例相匹配,需要在它們前面放置一個斜杠(“%”或“_”)。5比較運算符MySQL
的另一種形式的模式匹配使用了正規(guī)表達式。運算符為REGEXP而不是LIKE(RLIKE為REGEXP的同義詞)。最常用的正規(guī)表達式模式字符如下:’.’與任意單個字符匹配:‘[...]’與方括號中任意字符匹配??闪谐鲇啥虅澗€‘-’分隔的范圍端點指定一個字符范圍。為了否定這種區(qū)間的意義(即與未列出的任何字符匹配),指定‘^’作為該區(qū)間的第一個字符即可。5比較運算符上面的語句就是說[A-Z]中有一個字符被“ABC”包含即為真?!?’表示“與其前面字符的任意數(shù)目的字符匹配”,因此,如‘x*’與任意數(shù)目的‘x’字符匹配,例如:執(zhí)行結果為1,1,0;5比較運算符‘^pat’和‘pat$’固定了一種模式匹配,從而模式pat只在它出現(xiàn)在串的前頭時匹配,而‘^pat$’只在pat匹配整個串時匹配,例如:執(zhí)行結果為1,0,0,1,0;(這里的^是表示從哪兒開始匹配的意思)REGEXP模式可從某個表列中取出,雖然如果該列包含幾個不同的值時,這樣做比常量模式慢。每當列值更改時,必須對模式進行檢查并轉換成內部形式。MySQL
的正則表達式匹配還有一些特殊的模式字符。要了解更詳細信息請參閱幫助文檔。5比較運算符在表達式中使用NULL值時,其結果有可能出現(xiàn)意外。下列準則將有助于避免出問題。如果將NULL作為算術運算或位運算符的一個操作數(shù),其結果為NULL,如果將NULL用于邏輯運算符,NULL被認為是假。6表達式中的NULL值NULL作為任意比較運算符的操作數(shù),除<=>、ISNULL和ISNOTNULL運算符(它們是專門擴展來處理NULL值的)外,將產生一個NULL結果。如:6表達式中的NULL值MySQL
根據(jù)所執(zhí)行的操作類型,自動地進行大量的類型轉換,任何時候,只要將一個類型的值用于需要另一類型值的場合,就會進行這種轉換。下面是需要進行類型轉換的原因:操作數(shù)轉換為適合于某種運算符求值的類型。函數(shù)參數(shù)轉換為函數(shù)所需的類型。轉換某個值以便賦給一個具有不同類型的表列。下列表達式涉及類型轉換。它由加運算符“+”和兩個操作數(shù)1和“2”組成:1+"2"其中操作數(shù)的類型不同,一個是數(shù),另一個是串,因此,MySQL
對其中之一進行轉換以便使它們兩個具有相同的類型。但是應該轉換哪一個呢?因為,“+”是一個數(shù)值運算符,所以MySQL
希望操作數(shù)為數(shù),因此,將串“2”轉換為數(shù)2。然后求此表達式的值得出3。7類型轉換CONCAT()函數(shù)連接串產生一個更長的串作為結果。為了完成此工作,它將參數(shù)解釋為串,而不管參數(shù)實際是何類型。如果傳遞給CONCAT()幾個數(shù),則它將把它們轉換成串,然后返回這些串的連接,如:7類型轉換某些運算符可將操作數(shù)強制轉換為它們所要的類型,而不管操作數(shù)是什么類型。例如,算術運算符需要數(shù),并按此對操作數(shù)進行轉換,參考如下運算:7類型轉換MySQL
不對整個串進行尋找一個數(shù)的查找;它只查看串的起始處。如果一個串不以數(shù)作為前導部分,其轉換結果為0。邏輯和位運算符比算術運算符要求更為嚴格。它們要求操作數(shù)都為數(shù),否則各操作數(shù)不被認為是真。7類型轉換模式匹配運算符要求對串進行處理。這表示可將MySQL
的模式匹配運算符用于數(shù),因為MySQL會在試圖進行的匹配中將它們轉換成串。例如:大小比較運算符(“<”、“<=”、“=”等等)是上下文相關的;即,它們根據(jù)操作數(shù)的類型求值。如果兩個操作數(shù)都是串,則按串進行字典順序的比較;如果兩個操作數(shù)都為整數(shù),則按整數(shù)進行數(shù)的比較。7類型轉換考慮以下執(zhí)行語句后的結果為什么會是這樣?原來是想查詢姓名為包含值“00”的那行。但實際作用卻是查詢了所有的行。之所以這樣是由于MySQL
的比較規(guī)則在起作用。name為一個串列,但00沒有用引號括起來,因此,它被作為數(shù)對待了。按MySQL
的比較規(guī)則,涉及一個串與一個數(shù)的比較按兩個數(shù)的比較來求值。隨著查詢的執(zhí)行,name的每個值被轉換為0,”00”也被轉換為0,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學階段科學課程設計
- 標本制作講解課程設計
- 幼兒園筷子手工課程設計
- 2024年知識產權許可使用合同(含技術引進與許可范圍)
- 建筑電氣課程設計教程
- 期末沖刺班課程設計
- 2024年企業(yè)間收購協(xié)議2篇
- 數(shù)據(jù)系統(tǒng)課程設計
- 代理記賬會計課程設計
- 2024年中介提供商業(yè)租賃合同3篇
- 外墻維修施工合同-標準
- 初中地理復習教案
- 《國家憲法日》班會教學課件
- TOC-DBR培訓課程完整版ppt課件
- 承插型盤扣式盤扣高支模施工方案(專家論證通過)
- 機械設計課程設計---榫槽成形半自動切削機
- 自動化立體庫貨架驗收報告
- 數(shù)學模型實驗報告5
- 屋頂分布式光伏項目施工安全管理方案
- 新人教版高中物理課本必修1復習與提高AB組解析
- 標準節(jié)流裝置計算
評論
0/150
提交評論