版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 踩高蹺幼兒園教案
- 保護(hù)牙齒教案反思小班
- 漢真有趣說(shuō)課稿
- 航空航天履約管理辦法
- 塑料大棚建設(shè)安裝協(xié)議
- 臨時(shí)醫(yī)療電源租賃合同
- 電信業(yè)不合格服務(wù)管理
- 航空航天設(shè)施保溫施工協(xié)議
- 脊椎病診斷與治療
- 研發(fā)項(xiàng)目保密規(guī)則
- 走開(kāi)大黑兔“十校聯(lián)賽”一等獎(jiǎng)
- 教養(yǎng):曾仕強(qiáng)給中國(guó)父母的教子忠告
- 拆船業(yè)安全隱患及防范措施
- 腫瘤科運(yùn)用PDCA降低癌痛患者爆發(fā)性疼痛發(fā)生率品管圈成果匯報(bào)
- 動(dòng)脈血?dú)夥治霾杉n件
- 重癥醫(yī)學(xué)科運(yùn)用PDCA降低CVC置管患者堵管率品管圈成果匯報(bào)書(shū)
- 10KV供配電工程施工組織設(shè)計(jì)
- 中國(guó)癲癇臨床診療指南完整課件
- 安徽金星鈦白(集團(tuán))有限公司20萬(wàn)噸-年鈦白粉后處理項(xiàng)目環(huán)境影響報(bào)告書(shū)
- 石油工程英語(yǔ)
- 西方經(jīng)濟(jì)學(xué)(上下冊(cè))PPT全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論