第二章 MySQL表達(dá)式和運(yùn)算符_第1頁(yè)
第二章 MySQL表達(dá)式和運(yùn)算符_第2頁(yè)
第二章 MySQL表達(dá)式和運(yùn)算符_第3頁(yè)
第二章 MySQL表達(dá)式和運(yùn)算符_第4頁(yè)
第二章 MySQL表達(dá)式和運(yùn)算符_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

MYSQL表達(dá)式與運(yùn)算符課程介紹本課程主要介紹了MySQL數(shù)據(jù)庫(kù)的表達(dá)式運(yùn)算符、MySQL函數(shù),索引的用法、存儲(chǔ)過(guò)程的使用,視圖和觸發(fā)器等方面的知識(shí),以應(yīng)用為目標(biāo),具有較強(qiáng)的實(shí)踐性。學(xué)習(xí)對(duì)象希望了解MySQL數(shù)據(jù)庫(kù)基本概念,常見(jiàn)使用方法的學(xué)生、專(zhuān)業(yè)人士等學(xué)習(xí)目標(biāo)在完成本章的學(xué)習(xí)后,您將能夠:掌握MySQL表達(dá)式的撰寫(xiě)掌握MySQL的各種運(yùn)算符用法掌握MySQL運(yùn)算符優(yōu)先級(jí)掌握MySQLNULL值的處理和類(lèi)型轉(zhuǎn)換

目錄大綱撰寫(xiě)表達(dá)式算術(shù)運(yùn)算符邏輯運(yùn)算符比較運(yùn)算符運(yùn)算符優(yōu)先級(jí)表達(dá)式中的NULL值類(lèi)型轉(zhuǎn)換表達(dá)式可以只是一個(gè)簡(jiǎn)單的常量,如數(shù)值常量0和字符串常量‘a(chǎn)bc’。1撰寫(xiě)表達(dá)式表達(dá)式可以進(jìn)行函數(shù)調(diào)用。有的函數(shù)需要參數(shù)(圓括號(hào)中有值),而有的不需要。多個(gè)參數(shù)應(yīng)該用逗號(hào)分隔。在調(diào)用一個(gè)函數(shù)時(shí),參數(shù)旁邊可以有空格,但在函數(shù)名與圓括號(hào)間不能有空格。下面是一些函數(shù)例子:NOW()無(wú)參數(shù)函數(shù)STRCMP(“abc”,“def”)有兩個(gè)參數(shù)的函數(shù)STRCMP(“abc”,“def”)參數(shù)旁邊有空格是合法的STRCMP(“abc”,“def”)函數(shù)名后跟空格是不合法的1撰寫(xiě)表達(dá)式如果函數(shù)名后有一個(gè)空格,MySQL

的分析程序可能會(huì)將函數(shù)名解釋為一個(gè)列名(函數(shù)名不是保留字,如果需要的話,可將它們用作列名)。其結(jié)果是出現(xiàn)一個(gè)語(yǔ)法錯(cuò)誤。表達(dá)式中可使用表列。最簡(jiǎn)單的情形是,當(dāng)某個(gè)列所屬的表在上下文中是明確的,則可簡(jiǎn)單地給出列名對(duì)該列進(jìn)行引用。下面的每個(gè)SELECT語(yǔ)句中惟一地出了一個(gè)表名,因此,列的引用無(wú)歧義:SELECT*FROMCLASS;SELECT*FROMEMPLOYEE;如果使用哪個(gè)表的列不明確,可在列名前加上表名。如果使用哪個(gè)數(shù)據(jù)庫(kù)中的表也不明確的話,可在表名前加上數(shù)據(jù)庫(kù)名。如果只是希望意思更明顯,也可以在無(wú)歧義的上下文中利用這種更為具體的表示形式,如:SELECTE.NAME,C.NAMEFROMEMPLOYEEE,CLASSCWHEREE.DID=C.CLASSID;1撰寫(xiě)表達(dá)式如果函數(shù)名后有一個(gè)空格,MySQL

的分析程序可能會(huì)將函數(shù)名解釋為一個(gè)列名(函數(shù)名不是保留字,如果需要的話,可將它們用作列名)。其結(jié)果是出現(xiàn)一個(gè)語(yǔ)法錯(cuò)誤。表達(dá)式中可使用表列。最簡(jiǎn)單的情形是,當(dāng)某個(gè)列所屬的表在上下文中是明確的,則可簡(jiǎn)單地給出列名對(duì)該列進(jìn)行引用。下面的每個(gè)SELECT語(yǔ)句中惟一地出了一個(gè)表名,因此,列的引用無(wú)歧義:SELECT*FROMCLASS;SELECT*FROMEMPLOYEE;如果使用哪個(gè)表的列不明確,可在列名前加上表名。如果使用哪個(gè)數(shù)據(jù)庫(kù)中的表也不明確的話,可在表名前加上數(shù)據(jù)庫(kù)名。如果只是希望意思更明顯,也可以在無(wú)歧義的上下文中利用這種更為具體的表示形式,如:SELECTE.NAME,C.NAMEFROMEMPLOYEEE,CLASSCWHEREE.DID=C.CLASSID;1撰寫(xiě)表達(dá)式MySQL

有幾種類(lèi)型的運(yùn)算符可用來(lái)連接表達(dá)式的項(xiàng)。MySQL

支持多種類(lèi)型的運(yùn)算符,來(lái)連接表達(dá)式的項(xiàng)。這些類(lèi)型主要包括算術(shù)運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符和位運(yùn)算符。算術(shù)運(yùn)算符MySQL

支持的算術(shù)運(yùn)算符包括加、減、乘、除和模運(yùn)算。它們是最常使用、最簡(jiǎn)單的一類(lèi)運(yùn)算符。2算術(shù)運(yùn)算符如果除數(shù)為0,將是非法除數(shù),返回結(jié)果為NULL。2算術(shù)運(yùn)算符取模的時(shí)候,%和MOD的功能是一樣的2算術(shù)運(yùn)算符邏輯運(yùn)算符對(duì)表達(dá)式進(jìn)行估計(jì)以確定其為真(非零)或假(零)。3邏輯運(yùn)算符MySQL

包含有C風(fēng)格的“&&”、“||”和“!”運(yùn)算符,可替換AND、OR和NOT。要特別注意“||”運(yùn)算符,ANSISQL指定“||”作為串連接符,但在MySQL

中,它表示一個(gè)邏輯或運(yùn)算。如果執(zhí)行下面的查詢(xún),則返回?cái)?shù)0:MySQL

為進(jìn)行運(yùn)算,將“abc”和“def”轉(zhuǎn)換為整數(shù),且兩者都轉(zhuǎn)換為0,0與0進(jìn)行或運(yùn)算,結(jié)果為0。在MySQL

中,必須用CONCAT(“abc”,“def”)來(lái)完成串的連接。3邏輯運(yùn)算符4位運(yùn)算符5比較運(yùn)算符其中包括測(cè)試相對(duì)大小或數(shù)和串的順序的運(yùn)算符,以及完成模式匹配和測(cè)試NULL值的運(yùn)算符。“<=>”運(yùn)算符是MySQL

特有的。Like比較符通配符“%”與任何串匹配,其中包括與空字符序列匹配,但是,“%”不與NULL匹配。事實(shí)上,具有NULL操作數(shù)的任何模式匹配都將失敗。MySQL

的LIKE運(yùn)算符是不區(qū)分大小寫(xiě)的,除非它至少有一個(gè)操作數(shù)是二進(jìn)制串。5比較運(yùn)算符LIKE所允許的另一個(gè)通配符是“_”,它與單個(gè)字符匹配?!癬__”與三個(gè)字符的串匹配?!癱_t”與“cat”、“cut”甚至“c_t”匹配(因?yàn)椤癬”與自身匹配)。為了關(guān)掉“%”或“_”的特殊含義,與這些字符的直接實(shí)例相匹配,需要在它們前面放置一個(gè)斜杠(“%”或“_”)。5比較運(yùn)算符MySQL

的另一種形式的模式匹配使用了正規(guī)表達(dá)式。運(yùn)算符為REGEXP而不是LIKE(RLIKE為REGEXP的同義詞)。最常用的正規(guī)表達(dá)式模式字符如下:’.’與任意單個(gè)字符匹配:‘[...]’與方括號(hào)中任意字符匹配??闪谐鲇啥虅澗€‘-’分隔的范圍端點(diǎn)指定一個(gè)字符范圍。為了否定這種區(qū)間的意義(即與未列出的任何字符匹配),指定‘^’作為該區(qū)間的第一個(gè)字符即可。5比較運(yùn)算符上面的語(yǔ)句就是說(shuō)[A-Z]中有一個(gè)字符被“ABC”包含即為真。‘*’表示“與其前面字符的任意數(shù)目的字符匹配”,因此,如‘x*’與任意數(shù)目的‘x’字符匹配,例如:執(zhí)行結(jié)果為1,1,0;5比較運(yùn)算符‘^pat’和‘pat$’固定了一種模式匹配,從而模式pat只在它出現(xiàn)在串的前頭時(shí)匹配,而‘^pat$’只在pat匹配整個(gè)串時(shí)匹配,例如:執(zhí)行結(jié)果為1,0,0,1,0;(這里的^是表示從哪兒開(kāi)始匹配的意思)REGEXP模式可從某個(gè)表列中取出,雖然如果該列包含幾個(gè)不同的值時(shí),這樣做比常量模式慢。每當(dāng)列值更改時(shí),必須對(duì)模式進(jìn)行檢查并轉(zhuǎn)換成內(nèi)部形式。MySQL

的正則表達(dá)式匹配還有一些特殊的模式字符。要了解更詳細(xì)信息請(qǐng)參閱幫助文檔。5比較運(yùn)算符在表達(dá)式中使用NULL值時(shí),其結(jié)果有可能出現(xiàn)意外。下列準(zhǔn)則將有助于避免出問(wèn)題。如果將NULL作為算術(shù)運(yùn)算或位運(yùn)算符的一個(gè)操作數(shù),其結(jié)果為NULL,如果將NULL用于邏輯運(yùn)算符,NULL被認(rèn)為是假。6表達(dá)式中的NULL值NULL作為任意比較運(yùn)算符的操作數(shù),除<=>、ISNULL和ISNOTNULL運(yùn)算符(它們是專(zhuān)門(mén)擴(kuò)展來(lái)處理NULL值的)外,將產(chǎn)生一個(gè)NULL結(jié)果。如:6表達(dá)式中的NULL值MySQL

根據(jù)所執(zhí)行的操作類(lèi)型,自動(dòng)地進(jìn)行大量的類(lèi)型轉(zhuǎn)換,任何時(shí)候,只要將一個(gè)類(lèi)型的值用于需要另一類(lèi)型值的場(chǎng)合,就會(huì)進(jìn)行這種轉(zhuǎn)換。下面是需要進(jìn)行類(lèi)型轉(zhuǎn)換的原因:操作數(shù)轉(zhuǎn)換為適合于某種運(yùn)算符求值的類(lèi)型。函數(shù)參數(shù)轉(zhuǎn)換為函數(shù)所需的類(lèi)型。轉(zhuǎn)換某個(gè)值以便賦給一個(gè)具有不同類(lèi)型的表列。下列表達(dá)式涉及類(lèi)型轉(zhuǎn)換。它由加運(yùn)算符“+”和兩個(gè)操作數(shù)1和“2”組成:1+"2"其中操作數(shù)的類(lèi)型不同,一個(gè)是數(shù),另一個(gè)是串,因此,MySQL

對(duì)其中之一進(jìn)行轉(zhuǎn)換以便使它們兩個(gè)具有相同的類(lèi)型。但是應(yīng)該轉(zhuǎn)換哪一個(gè)呢?因?yàn)椋?”是一個(gè)數(shù)值運(yùn)算符,所以MySQL

希望操作數(shù)為數(shù),因此,將串“2”轉(zhuǎn)換為數(shù)2。然后求此表達(dá)式的值得出3。7類(lèi)型轉(zhuǎn)換CONCAT()函數(shù)連接串產(chǎn)生一個(gè)更長(zhǎng)的串作為結(jié)果。為了完成此工作,它將參數(shù)解釋為串,而不管參數(shù)實(shí)際是何類(lèi)型。如果傳遞給CONCAT()幾個(gè)數(shù),則它將把它們轉(zhuǎn)換成串,然后返回這些串的連接,如:7類(lèi)型轉(zhuǎn)換某些運(yùn)算符可將操作數(shù)強(qiáng)制轉(zhuǎn)換為它們所要的類(lèi)型,而不管操作數(shù)是什么類(lèi)型。例如,算術(shù)運(yùn)算符需要數(shù),并按此對(duì)操作數(shù)進(jìn)行轉(zhuǎn)換,參考如下運(yùn)算:7類(lèi)型轉(zhuǎn)換MySQL

不對(duì)整個(gè)串進(jìn)行尋找一個(gè)數(shù)的查找;它只查看串的起始處。如果一個(gè)串不以數(shù)作為前導(dǎo)部分,其轉(zhuǎn)換結(jié)果為0。邏輯和位運(yùn)算符比算術(shù)運(yùn)算符要求更為嚴(yán)格。它們要求操作數(shù)都為數(shù),否則各操作數(shù)不被認(rèn)為是真。7類(lèi)型轉(zhuǎn)換模式匹配運(yùn)算符要求對(duì)串進(jìn)行處理。這表示可將MySQL

的模式匹配運(yùn)算符用于數(shù),因?yàn)镸ySQL會(huì)在試圖進(jìn)行的匹配中將它們轉(zhuǎn)換成串。例如:大小比較運(yùn)算符(“<”、“<=”、“=”等等)是上下文相關(guān)的;即,它們根據(jù)操作數(shù)的類(lèi)型求值。如果兩個(gè)操作數(shù)都是串,則按串進(jìn)行字典順序的比較;如果兩個(gè)操作數(shù)都為整數(shù),則按整數(shù)進(jìn)行數(shù)的比較。7類(lèi)型轉(zhuǎn)換考慮以下執(zhí)行語(yǔ)句后的結(jié)果為什么會(huì)是這樣?原來(lái)是想查詢(xún)姓名為包含值“00”的那行。但實(shí)際作用卻是查詢(xún)了所有的行。之所以這樣是由于MySQL

的比較規(guī)則在起作用。name為一個(gè)串列,但00沒(méi)有用引號(hào)括起來(lái),因此,它被作為數(shù)對(duì)待了。按MySQL

的比較規(guī)則,涉及一個(gè)串與一個(gè)數(shù)的比較按兩個(gè)數(shù)的比較來(lái)求值。隨著查詢(xún)的執(zhí)行,name的每個(gè)值被轉(zhuǎn)換為0,”00”也被轉(zhuǎn)換為0,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論