第9章 MySQL數(shù)據(jù)庫語言_第1頁
第9章 MySQL數(shù)據(jù)庫語言_第2頁
第9章 MySQL數(shù)據(jù)庫語言_第3頁
第9章 MySQL數(shù)據(jù)庫語言_第4頁
第9章 MySQL數(shù)據(jù)庫語言_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1第9章MySQL語言9.1MySQL語言的組成9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)29.1MySQL語言的組成1.數(shù)據(jù)定義語言(DataDefinitionLanguage,DDL)數(shù)據(jù)定義語言用于對(duì)數(shù)據(jù)庫及數(shù)據(jù)庫中的各種對(duì)象進(jìn)行創(chuàng)建、刪除、修改等操作,其包括的主要SQL語句有:CREATE語句、ALTER語句、DROP語句。2.數(shù)據(jù)操縱語言(DataManipulationLanguage,DML)數(shù)據(jù)操縱語言用于操縱數(shù)據(jù)庫中各種對(duì)象,進(jìn)行檢索、插入、修改、刪除等操作,其包括的主要SQL語句有:SELECT語句、INSERT語句、UPDATE語句、DELETE語句。3.數(shù)據(jù)控制語言(DataControlLanguage,DCL)用于安全管理,確定哪些用戶可以查看或修改數(shù)據(jù)庫中的數(shù)據(jù),其包括的主要SQL語句有:GRANT語句、REVOKE語句。數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)34.MySQL擴(kuò)展增加的語言要素。這部分不是SQL標(biāo)準(zhǔn)所包含的內(nèi)容,而是為了用戶編程的方便增加的語言元素。這些語言元素包括常量、變量、運(yùn)算符、表達(dá)式、內(nèi)置函數(shù)等。(1)常量常量(Constant)的值在定義時(shí)被指定,在程序運(yùn)行過程中不能改變,常量的使用格式取決于值的數(shù)據(jù)類型。常量可分為字符串常量、數(shù)值常量、十六進(jìn)制常量、日期時(shí)間常量、位字段值、布爾值和NULL值?!褡址A浚鹤址A渴怯脝我?hào)或雙引號(hào)括起來的字符序列,分為ASCII字符串常量和Unicode字符串常量,Unicode字符中的每個(gè)字符用兩個(gè)字節(jié)存儲(chǔ),而每個(gè)ASCII字符用一個(gè)字節(jié)存儲(chǔ)。9.1MySQL語言的組成數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)4●數(shù)值常量:可以分為整數(shù)常量和浮點(diǎn)數(shù)常量,整數(shù)常量即不帶小數(shù)點(diǎn)的十進(jìn)制數(shù),浮點(diǎn)數(shù)常量是使用小數(shù)點(diǎn)的數(shù)值常量?!袷M(jìn)制常量:通常指定為一個(gè)字符串常量,每對(duì)16進(jìn)制數(shù)字被轉(zhuǎn)換成一個(gè)字符,其前綴為“X”或“x”?!袢掌跁r(shí)間常量:用單引號(hào)將表示日期時(shí)間的字符串括起來構(gòu)成?!裎蛔侄沃担嚎梢允褂胋’value’格式符號(hào)書寫位字段值,位字段符號(hào)用于指定分配給BIT列的值?!癫紶栔担褐话瑑蓚€(gè)可能的值,分別為TRUE和FALSE。FALSE的數(shù)字值為“0”,TRUE的數(shù)字值為“1”?!?/p>

NULL值:通常用來表示“沒有值”、“無數(shù)據(jù)”等意義,并且不同于數(shù)字類型的“0”或字符串類型的空字符串。9.1MySQL語言的組成數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)5(2)變量變量(Variable)和常量都用于存儲(chǔ)數(shù)據(jù),但變量的值可以根據(jù)程序運(yùn)行的需要隨時(shí)改變,而常量的值在程序運(yùn)行中是不能改變的。變量名用于標(biāo)識(shí)該變量,數(shù)據(jù)類型用于確定該變量存放值的格式和允許的運(yùn)算。MySQL的變量可分為用戶變量和系統(tǒng)變量。在使用時(shí),用戶變量前常添加一個(gè)@符號(hào),以與列名區(qū)分。大多數(shù)的系統(tǒng)變量應(yīng)用時(shí),必須在名稱前加兩個(gè)@符號(hào),而某些特定的系統(tǒng)變量是要省略這兩個(gè)@符號(hào)的。定義用戶變量可以使用SET語句。語法格式:

SET@user_variable1=expression1[,@user_variable2=expression2,…]

其中,@user_variable1為用戶變量的名稱,expression1為要給變量賦的值,可以是常量、變量或它們通過運(yùn)算符組成的式子。9.1MySQL語言的組成數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)6(3)運(yùn)算符運(yùn)算符是一種符號(hào),用來指定在一個(gè)或多個(gè)表達(dá)式中執(zhí)行的操作,在MySQL中常用的運(yùn)算符有:算術(shù)運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符和位運(yùn)算符?!?/p>

算術(shù)運(yùn)算符的運(yùn)算有:+(加)、-(減)、*(乘)、/(除)、%(求模)?!癖容^運(yùn)算符的運(yùn)算有:=(等于)、<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、<>(不等于)、!=(不等于)、<=>(相等或都等于空)?!襁壿嬤\(yùn)算符的運(yùn)算有:NOT或!(邏輯非)、AND或&&(邏輯與)、OR或||(邏輯或)、XOR(邏輯異或)。●位運(yùn)算符的運(yùn)算有:~(位取反)、&(位與)、|(位或)、^(位異或)、>>(位右移)、<<(位左移)。9.1MySQL語言的組成數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)7(4)表達(dá)式表達(dá)式是由數(shù)字、常量、變量和運(yùn)算符組成的式子,表達(dá)式的結(jié)果是一個(gè)值。根據(jù)表達(dá)式的值的數(shù)據(jù)類型可分為字符表達(dá)式、數(shù)值表達(dá)式、日期表達(dá)式。(5)內(nèi)置函數(shù)在設(shè)計(jì)MySQL程序時(shí),經(jīng)常要調(diào)用系統(tǒng)提供的內(nèi)置函數(shù),這些函數(shù)有100多個(gè),使用戶能夠容易地對(duì)表中數(shù)據(jù)進(jìn)行操作,這些函數(shù)可分為:數(shù)學(xué)函數(shù)、聚合函數(shù)、字符串函數(shù)、日期和時(shí)間函數(shù)、加密函數(shù)、控制流程函數(shù)、格式化函數(shù)、類型轉(zhuǎn)換函數(shù)、系統(tǒng)信息函數(shù)。9.1MySQL語言的組成數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)89.2MySQL函數(shù)1.數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù)用于對(duì)數(shù)字表達(dá)式進(jìn)行數(shù)學(xué)運(yùn)算并返回運(yùn)算結(jié)果,下面介紹幾個(gè)常用的數(shù)學(xué)函數(shù)。(1)RAND()函數(shù)RAND()函數(shù)用來返回0~1之間的隨機(jī)值。

【例9.1】使用RAND()函數(shù)求3個(gè)隨機(jī)值。mysql>SELECTRAND(),RAND(),RAND();

執(zhí)行結(jié)果:+--------------------------+----------------------------+-------------------------+|RAND()|RAND()|RAND()|+--------------------------+----------------------------+-------------------------+|0.8048311693638853|0.37057874293120463|0.438400237298012|+--------------------------+----------------------------+-------------------------+數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)9(2)SQRT()函數(shù)SQRT()函數(shù)用于返回一個(gè)數(shù)的平方根。

【例9.2】求3和4的平方根。mysql>SELECTSQRT(3),SQRT(4);

執(zhí)行結(jié)果:

+----------------------------+--------------+|SQRT(3)|SQRT(4)|+----------------------------+--------------+|1.7320508075688772|2|+----------------------------+--------------+1rowinset(0.03sec)

9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)10(3)ABS()函數(shù)ABS()函數(shù)用于獲取一個(gè)數(shù)的絕對(duì)值。

【例9.3】求7.2和-7.2的絕對(duì)值。

mysql>SELECTABS(7.2),ABS(-7.2);

執(zhí)行結(jié)果:

+-------------+----------------+|ABS(7.2)|ABS(-7.2)|+-------------+----------------+|7.2|7.2|+-------------+----------------+1rowinset(0.09sec)

9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)11(4)FLOOR()函數(shù)和CEILING()函數(shù)。FLOOR()函數(shù)用于獲取小于或等于一個(gè)數(shù)的最大整數(shù)值。CEILING()用于獲取大于或等于一個(gè)數(shù)的最小整數(shù)值。

【例9.4】求小于或等于-3.5或6.8的最大整數(shù),大于或等于-3.5或6.8的最小整數(shù)。

mysql>SELECTFLOOR(-3.5),FLOOR(6.8),CEILING(-3.5),CEILING(6.8);

執(zhí)行結(jié)果:

+-------------------+------------------+---------------------+---------------------+|FLOOR(-3.5)|FLOOR(6.8)|CEILING(-3.5)|CEILING(6.8)|+-------------------+------------------+----------------------+--------------------+|-4|6|-3|7|+-------------------+------------------+----------------------+--------------------+1rowinset(0.03sec)9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)12(5)TRUNCATE()函數(shù)和ROUND()函數(shù)TRUNCATE()函數(shù)用于截取一個(gè)指定小數(shù)位數(shù)的數(shù)字。ROUND()函數(shù)用獲得一個(gè)數(shù)的四舍五入的整數(shù)值。

【例9.5】求8.546小數(shù)點(diǎn)后2位的值和四舍五入的整數(shù)值。

mysql>SELECTTRUNCATE(8.546,2),ROUND(8.546);

執(zhí)行結(jié)果:

+------------------------------+----------------------+|TRUNCATE(8.546,2)|ROUND(8.546)|+------------------------------+----------------------+|8.54|9|+------------------------------+----------------------+1rowinset(0.00sec)9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)132.字符串函數(shù)字符串函數(shù)用于對(duì)字符串進(jìn)行處理,下面對(duì)一些常用的字符串函數(shù)進(jìn)行介紹。(1)ASCII()函數(shù)ASCII()函數(shù)用來返回字符表達(dá)式最左端字符的ASCII碼值。

【例9.6】求X的ASCII碼值。

mysql>SELECTASCII('X');

執(zhí)行結(jié)果:

+---------------+|ASCII('X')|+---------------+|88|+---------------+1rowinset(0.00sec)9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)14(2)CHAR()函數(shù)CHAR(x1,x2,x3)函數(shù)用來將x1,x2,x3的ASCII碼值轉(zhuǎn)換成ASCII碼字符。

【例9.7】將ASCII碼值88、89、90組合成字符串。

mysql>SELECTCHAR(88,89,90);

執(zhí)行結(jié)果:

+-------------------------+|CHAR(88,89,90)|+-------------------------+|XYZ|+-------------------------+1rowinset(0.00sec)

9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)15(3)LEFT()函數(shù)和RIGHT()函數(shù)LEFT(s,n)函數(shù)和RIGHT(s,n)函數(shù)分別返回字符串s左側(cè)和右側(cè)開始的n個(gè)字符。

【例9.8】求joyful左側(cè)和右側(cè)開始的3個(gè)字符。

mysql>SELECTLEFT('joyful',3),RIGHT('joyful',3);

執(zhí)行結(jié)果:

+----------------------+--------------------------+|LEFT('joyful',3)|RIGHT('joyful',3)|+----------------------+--------------------------+|joy|ful|+----------------------+--------------------------+1rowinset(0.00sec)9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)16(4)LENGTH()函數(shù)LENGTH()函數(shù)用于返回參數(shù)值的長(zhǎng)度,返回值為整數(shù)。參數(shù)值可以是字符串、數(shù)字或者表達(dá)式。

【例9.9】查詢字符串”計(jì)算機(jī)網(wǎng)絡(luò)”的長(zhǎng)度。

mysql>SELECTLENGTH('計(jì)算機(jī)網(wǎng)絡(luò)');

執(zhí)行結(jié)果:

+--------------------------------------+|LENGTH('計(jì)算機(jī)網(wǎng)絡(luò)')|+--------------------------------------+|15|+--------------------------------------+1rowinset(0.06sec)9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)17(5)REPLACE()函數(shù)REPLACE()函數(shù)用第三個(gè)字符串表達(dá)式替換第一個(gè)字符串表達(dá)式中包含的第二個(gè)字符串表達(dá)式,并返回替換后的表達(dá)式。

【例9.10】將”數(shù)據(jù)庫原理與應(yīng)用”中的”原理與應(yīng)用”替換為”技術(shù)”。

mysql>SELECTREPLACE('數(shù)據(jù)庫原理與應(yīng)用','原理與應(yīng)用','技術(shù)');

執(zhí)行結(jié)果:

+-------------------------------------------------------------------------+|REPLACE('數(shù)據(jù)庫原理與應(yīng)用','原理與應(yīng)用','技術(shù)')|+-------------------------------------------------------------------------+|數(shù)據(jù)庫技術(shù)|+-------------------------------------------------------------------------+1rowinset(0.05sec)9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)18(6)SUBSTRING()函數(shù)SUBSTRING(s,n,len)函數(shù)用于從字符串s的第n個(gè)位置開始截取長(zhǎng)度為len的字符串。

【例9.11】返回字符串joyful的從第4個(gè)字符開始的3個(gè)字符。

mysql>SELECTSUBSTRING('joyful',4,3);

執(zhí)行結(jié)果:

+----------------------------------+|SUBSTRING('joyful',4,3)|+----------------------------------+|ful|+----------------------------------+1rowinset(0.03sec)9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)193.日期和時(shí)間函數(shù)日期和時(shí)間函數(shù)用于對(duì)表中的日期和時(shí)間數(shù)據(jù)進(jìn)行處理。(1)CURDATE()函數(shù)和CURRENT_DATE()函數(shù)CURDATE()函數(shù)和CURRENT_DATE()函數(shù)用于返回當(dāng)前日期。

【例9.12】獲取當(dāng)前日期。

mysql>SELECTCURDATE(),CURRENT_DATE();

執(zhí)行結(jié)果:

+------------------+----------------------------+|CURDATE()|CURRENT_DATE()|+------------------+----------------------------+|2020-03-28|2020-03-28|+------------------+----------------------------+1rowinset(0.05sec)9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)20(2)CURTIME()函數(shù)和CURRENT_TIME()函數(shù)CURTIME()函數(shù)和CURRENT_TIME()函數(shù)用于取得當(dāng)前時(shí)間。

【例9.13】獲取當(dāng)前時(shí)間。

mysql>SELECTCURTIME(),CURRENT_TIME();

執(zhí)行結(jié)果:

+-----------------+----------------------------+|CURTIME()|CURRENT_TIME()|+-----------------+----------------------------+|15:00:40|15:00:40|+-----------------+----------------------------+1rowinset(0.00sec)

9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)21(3)NOW()函數(shù)NOW()函數(shù)用于返回當(dāng)前日期和時(shí)間。

【例9.14】獲取當(dāng)前日期和時(shí)間。

mysql>SELECTNOW();

執(zhí)行結(jié)果:

+-------------------------------+|NOW()|+-------------------------------+|2020-03-2815:02:52|+-------------------------------+1rowinset(0.05sec)

9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)224.其它函數(shù)除上述函數(shù)外,MySQL函數(shù)還包含控制流程函數(shù)、系統(tǒng)信息函數(shù)等,下面舉例說明。(1)IF()函數(shù)IF(expr,v1,v2)函數(shù)用于條件判斷,如果表達(dá)式expr成立,則執(zhí)行v1,否則執(zhí)行v2。

【例9.15】查詢成績(jī)表score,如果分?jǐn)?shù)列的值大于或等于80分,則輸出”良好”,否則輸出”一般,不及格或空值”。

mysql>SELECTsno,cno,grade,IF(grade>=80,'良好','一般,不及格或空值')levelFROMscore;

9.2MySQL函數(shù)數(shù)據(jù)庫原理與應(yīng)用(基于MySQL)23執(zhí)行結(jié)果:+-----------+---------+------------+------------------------------------+|sno|cno|grade|level|+-----------+---------+------------+------------------------------------+|191001|1004|95|良好||191001|1201|92|良好||191001|8001|92|良好||191002|1004|87|良好||191002|1201|78|一般,不及格或空值||191002|8001|88|良好||191003|1004|93|良好||191003|1201|93|良好||191003|8001|84|良好||196001|1201|84|良好||196001|4002|90|良好||196001|8001|87|良好||196002|1201|76|一般,不及格或空值|

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論