傳智34期-php素材1、核心編程mysql數(shù)據(jù)庫_第1頁
傳智34期-php素材1、核心編程mysql數(shù)據(jù)庫_第2頁
傳智34期-php素材1、核心編程mysql數(shù)據(jù)庫_第3頁
傳智34期-php素材1、核心編程mysql數(shù)據(jù)庫_第4頁
傳智34期-php素材1、核心編程mysql數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

mysql進(jìn)階主講:傳智.吳六奇mysql介紹什么是數(shù)據(jù)庫?數(shù)據(jù)庫是按照一定的數(shù)據(jù)結(jié)構(gòu)來組織,存儲(chǔ)和管理數(shù)據(jù)的軟件系統(tǒng)。數(shù)據(jù)庫分類:層次結(jié)構(gòu)數(shù)據(jù)庫

網(wǎng)狀結(jié)構(gòu)數(shù)據(jù)庫關(guān)系結(jié)構(gòu)數(shù)據(jù)庫主流數(shù)據(jù)庫:mysql,mssql,oracle,infomix,db2,sybase等。mysql是一種關(guān)系數(shù)據(jù)庫SQL是“結(jié)構(gòu)化查詢語言”的標(biāo)準(zhǔn)關(guān)系數(shù)據(jù)庫的基本特征(表現(xiàn)):數(shù)據(jù)存儲(chǔ)的本質(zhì)和表現(xiàn):關(guān)系數(shù)據(jù)庫的常用基本術(shù)語數(shù)據(jù)data數(shù)據(jù)庫database數(shù)據(jù)庫管理系統(tǒng)dbms表(數(shù)據(jù)表)table字段field,列column行row,記錄recordmysql數(shù)據(jù)庫應(yīng)用系統(tǒng)的基本結(jié)構(gòu)mysql數(shù)據(jù)操作的基本模式(流程)啟動(dòng)/停止mysql數(shù)據(jù)庫服務(wù)命令行模式:netstart/stopmysql服務(wù)模式:控制面板〉管理工具〉服務(wù)〉mysql>啟動(dòng)/停止登錄/退出mysql數(shù)據(jù)庫系統(tǒng)登錄(形式1):mysql-h服務(wù)器地址-u登錄名-P端口號(hào)-p登錄(形式2):mysql--host=服務(wù)器地址--user=用戶名--port=端口--password退出:quit;或exit;mysql備份/恢復(fù)數(shù)據(jù)備份:mysqldump-h服務(wù)器地址-u登錄名-P端口號(hào)-p數(shù)據(jù)庫名>文件名恢復(fù):mysql-h服務(wù)器地址-u登錄名-P端口號(hào)-p數(shù)據(jù)庫名<文件名基礎(chǔ)語法規(guī)定注釋單行注釋:#注釋內(nèi)容單行注釋:--注釋內(nèi)容(注意,兩個(gè)“--”之后有一個(gè)空格)多行注釋:/*注釋內(nèi)容*/語句行:一條語句通常用一個(gè)分號(hào)(;)結(jié)束;也可以通過"delimiter新結(jié)束符"命令來設(shè)定新的結(jié)束符。大小寫:命名(標(biāo)識(shí)符)規(guī)則:數(shù)據(jù)庫定義語句創(chuàng)建數(shù)據(jù)庫create[ifnotexists]數(shù)據(jù)庫名[characterset=字符集][collate=校對(duì)集];修改數(shù)據(jù)庫alterdatabase數(shù)據(jù)庫名characterset=新字符集collate=新校對(duì)集;刪除數(shù)據(jù)庫dropdatabase[ifexists]數(shù)據(jù)庫其他:進(jìn)入(使用)某個(gè)數(shù)據(jù)庫;顯示所有數(shù)據(jù)庫;顯示某數(shù)據(jù)庫的創(chuàng)建語句數(shù)據(jù)類型數(shù)據(jù)類型-整數(shù)類型tinyint(1),smallint(2),mediumint(3),int(4),bigint(8)。括號(hào)中表示該類型所占空間的長度(字節(jié)數(shù))整數(shù)類型通用設(shè)定形式:類型名[(M)][unsigned][zerofill]。數(shù)據(jù)類型-小數(shù)類型單精度浮點(diǎn)型:float,范圍大約是-3.4E+38到-1.1E-38、0和1.1E-38到3.4E+38雙精度浮點(diǎn)型:double,范圍大約是-1.7E+308到-2.2E-308、0和2.2E-308到1.7E+308。real是double的別名。定點(diǎn)型:decimal,也可以寫成:dec,numeric,fixed(當(dāng)然后3者盡量不用)。decimal類型整數(shù)最大65位,小數(shù)最大30位(均以10進(jìn)制計(jì))數(shù)據(jù)類型-字符類型定長字符串char:不足設(shè)定值,則右側(cè)自動(dòng)填空格;最大255個(gè)字符,有編碼問題變長字符串varchar:最大65532個(gè)字節(jié),實(shí)際還得考慮一行的其他字段所占的長度,因?yàn)橐恍械淖畲箝L度是65534個(gè)字節(jié),有編碼問題定長二進(jìn)制字符串binary:類似char,只是按“字節(jié)”存字符數(shù)據(jù),最大255個(gè)字節(jié),無編碼問題變長二進(jìn)制字符串varbinary:類似varchar,只是按“字節(jié)”存字符數(shù)據(jù),最大65532個(gè)字節(jié),無編碼問題數(shù)據(jù)類型-字符類型文本列類型text:用于存儲(chǔ)普通文本,不受行的最大長度的限制,同類還有:tinytext,mediuntext,longtext二進(jìn)制列類型blob:用于存儲(chǔ)二進(jìn)制字節(jié)內(nèi)容,不受行的最大長度的限制,同類的還有:tinyblob,mediumblob,longblob枚舉類型enum:enum('value1','value2',...)set類型set('value1','value2',...)數(shù)據(jù)類型-時(shí)間日期類型date類型:支持的范圍為'1000-01-01'到'9999-12-31'time類型:支持的范圍是'-838:59:59'到'838:59:59'datetime類型:支持的范圍是'1000-01-0100:00:00'到'9999-12-3123:59:59'timestamp類型:時(shí)間戳,就是表示“當(dāng)前時(shí)刻”,用于INSERT或UPDATE操作時(shí)自動(dòng)獲得當(dāng)前時(shí)間year類型:四位字符串,范圍為'1901'到'2155'創(chuàng)建表基本形式:createtable[ifnotexists]表名(字段列表[,索引或約束列表])[表選項(xiàng)列表];字段列表:多個(gè)字段的定義項(xiàng),相互之間用逗號(hào)隔開;字段定義形式:字段名字段類型[字段屬性列表]索引列表:多個(gè)索引的定義項(xiàng),相互之間用逗號(hào)隔開,可選。約束列表:多個(gè)約束的定義項(xiàng),相互之間用逗號(hào)隔開,可選。表選項(xiàng)列表:多個(gè)表選項(xiàng)的設(shè)定項(xiàng),相互之間用逗號(hào)或空格隔開,可選。創(chuàng)建表字段定義形式:字段名字段類型[字段屬性列表]字段屬性如下:primarykey:設(shè)定為主鍵。主鍵的本質(zhì)是表示“該表中該字段值可以唯一確定某行數(shù)據(jù)”,并具有2個(gè)隱含含義:唯一性,不為空。uniquekey:設(shè)定為唯一(鍵),即表中所有行的的數(shù)據(jù)在該字段中的值不能有重復(fù)。notnull|null:設(shè)定該字段是否可空(可以放置空值null),默認(rèn)不設(shè)置就是表示可為空。auto_incement:設(shè)定自增長,表示一個(gè)整數(shù)類型的字段的值可以“自動(dòng)遞增取值”,設(shè)置后其必須同時(shí)設(shè)置為一個(gè)“key”。default默認(rèn)值:設(shè)定默認(rèn)值,表示當(dāng)插入新數(shù)據(jù)的時(shí)候如果該字段沒有給值,就會(huì)自動(dòng)使用該默認(rèn)值。創(chuàng)建表索引索引是什么?普通索引:key(字段名),或index(字段名)唯一索引:unique[key](字段名)主鍵索引:primarykey(字段名)全文索引:fulltext[index](字段名)創(chuàng)建表約束約束是什么?就是對(duì)數(shù)據(jù)的“限制”,也就是要求。要求數(shù)據(jù)符合什么樣一個(gè)條件,以保證其合理性。主鍵約束:[constraint]primarykey(字段名1[,字段名2,...])外鍵約束:[constraint]foreignkey(字段名1[,字段名2,...])references表名(字段名1[,字段名2,...])唯一約束:[constraint]unique[index](字段名1[,字段名2,...])非空約束:notnull;只能在字段上使用。默認(rèn)約束:defalut默認(rèn)值;只能在字段上使用。創(chuàng)建表表選項(xiàng)ENGINE=存儲(chǔ)引擎名CHARACTERSET=要使用的編碼名COLLATE=要使用的校對(duì)集名auto_increment=自增長字段的起始值comment='表的注釋說明文字'修改表添加字段:altertable表名add[column]新字段名字段類型[字段屬性列表];修改字段(并可改名):altertable表名change[column]舊字段名新字段名新字段類型[新字段屬性列表];修改字段(只改屬性):altertable表名modify[column]字段名新字段類型[新字段屬性列表];修改字段名:灰常灰常抱歉,沒有這個(gè)功能!刪除字段:altertable表名drop[column]字段名;添加普通索引:altertable表名addindex[索引名](字段名1[,字段名2,...]);添加主鍵索引:altertable表名addprimarykey(字段名1[,字段名2,...]);添加唯一索引:altertable表名addunique(字段名1[,字段名2,...]);添加字段默認(rèn)值:altertable表名alter[column]字段名setdefault默認(rèn)值;刪除字段默認(rèn)值:altertable表名alter[column]字段名dropdefault;其他表相關(guān)語句刪除表:droptable[ifexists]表名顯示所有表:showtables;顯示某表的結(jié)構(gòu):desc表名;或:describe表名;顯示某表的創(chuàng)建語句:showcreatetable表名;重命名表:renametable舊表名to新表名;從已有表復(fù)制表結(jié)構(gòu):createtable[ifnotexists]新表名like原表名;從已有表復(fù)制表結(jié)構(gòu):createtable[ifnotexists]新表名select*from原表名where1<>1數(shù)據(jù)庫設(shè)計(jì)3范式第一范式(1NF):原子性,數(shù)據(jù)不可再分一個(gè)表中的數(shù)據(jù)(字段值)不可再分第二范式(2NF):唯一性,消除部分依賴一個(gè)表中的每一行必須唯一可區(qū)分,且非主鍵字段值完全依賴主鍵字段值第三范式(3NF):獨(dú)立性,消除傳遞依賴使一個(gè)表中的任何一個(gè)非主鍵,完全獨(dú)立地依賴于主鍵,而不能又依賴于另外的非主鍵插入數(shù)據(jù)3種語法形式形式一:insert[into]表名[(字段名1,字段名2,....)]values(值表達(dá)式1,值表達(dá)式2,....),(.....),....;形式二:insert[into]表名set字段名1=值表達(dá)式1,字段名2=值表達(dá)式2,....;形式三:insert[into]表名[(字段名1,字段名2,....)]select字段名1,字段名2,....from其他表名;刪除數(shù)據(jù)基本語法形式:deletefrom表名[where條件][order排序][limit限定]說明:where條件可選,但通常都必須有,用來刪除滿足條件的數(shù)據(jù);如果沒有設(shè)定條件,則會(huì)刪除所有數(shù)據(jù)。order排序可選,通常不需要,用來指定按設(shè)定的數(shù)據(jù)順序刪除。limit限定可選,通常不需要,用來限定刪除哪些行的數(shù)據(jù)(指第幾行開始的多少條)。其他類似刪除數(shù)據(jù)語句truncate語句:truncate[table]表名;用于直接刪除整個(gè)表(結(jié)構(gòu))并重新創(chuàng)建該表修改數(shù)據(jù)基本語法形式:updatetable表名set字段名1=值表達(dá)式1,字段名2=值表達(dá)式2,....[where條件][order排序][limit限定]解釋說明修改是以“行”為單位的,一行數(shù)據(jù)要么修改成功,要么沒有修改。where條件可選,但通常都必須有,用來修改滿足條件的數(shù)據(jù);如果沒有設(shè)定條件,則會(huì)修改所有數(shù)據(jù)。order排序可選,通常不需要,用來指定按設(shè)定的數(shù)據(jù)順序修改。limit限定可選,通常不需要,用來限定修改哪些行的數(shù)據(jù)(指第幾行開始的多少條)?;静樵冋Z句語法形式:select[all|distinct]字段或表達(dá)式列表[from子句][where子句][groupby子句][having子句][orderby子句][limit子句];[all|distinct]:表示是否返回取得的數(shù)據(jù)中的“重復(fù)行”。all表示會(huì)返回重復(fù)行,distinct表示不返回重復(fù)行字段或表達(dá)式列表形式:字段或表達(dá)式1[as][別名1],字段或表達(dá)式2[as][別名2],....from子句:表示從哪個(gè)(或哪些)表中取得數(shù)據(jù)查詢語句-where子句算術(shù)運(yùn)算符:+,-,*,/,%。比較運(yùn)算符:>,>=,<,<=,=(等于),<>(不等于),!=(不等于)布爾值和空值(null)的判斷:XXistrue,XXisfalse,XXisnull,XXisnotnullbetween語法:字段名between小值and大值(表示該字段的值在給定的兩個(gè)值之間,含該倆值)邏輯運(yùn)算符:and(與)or(或)not(非)。含義和用法同其他編程語言(只是不用那幾個(gè)符號(hào),而是用單詞)。也可以用&&,||,!這3個(gè)符號(hào),但不推薦。查詢語句-where子句in語法:字段名in(值1,值2,...)。其表示的含義是,找出字段值等于所給定的那些值之一的數(shù)據(jù)行。查詢語句-where子句like語法:字段名like'字符'。含義是“像什么一樣”,用于從字符串中找出含有指定字符的數(shù)據(jù),即所謂的“模糊查找”特殊字符“%”:表示任意個(gè)數(shù)的任一字符。特殊字符“_”:表示一個(gè)任意字符。要想查詢?cè)撎厥庾址旧?,使用轉(zhuǎn)義形式:\%,\_查詢語句-groupby語句使用形式:groupby字段名1[ASC|DESC],字段名2[ASC|DESC],....什么分組:分組就是將一些數(shù)據(jù)以某種特征進(jìn)行“歸類”。分組后的結(jié)果是“組”,即結(jié)果數(shù)據(jù)中應(yīng)該只包含了各個(gè)“組”的總體信息,比如個(gè)數(shù),總和,最大最小值平均值等。常用聚合函數(shù)有:取平均值avg(),取個(gè)數(shù)count(),取總和sum(),取最大值max(),取最小值min()查詢語句-groupby語句分組舉例:selectpinpaifromproductgroupbypinpai;#找出產(chǎn)品中的所有品牌selectpinpai,sum(price)astotal,max(price)asmaxPricefromproductgroupbypinpaidesc;#找出每個(gè)品牌的價(jià)格和,以及最高價(jià)selectpinpai,count(pinpai)asshuliangfromproductgroupbypinpai;#找出每種品牌的產(chǎn)品數(shù)量查詢語句-having子句having的含義:其實(shí)having的含義跟where是一樣的,就是進(jìn)行“條件篩選”,但其只是針對(duì)分組查詢(groupby子句)而可用的條件篩選因?yàn)閔aving是對(duì)分組子句進(jìn)行的條件判斷,則其判斷的條件都應(yīng)該是“組”級(jí)別的數(shù)據(jù)舉例:selectpinpaifromproductgroupbypinpaihavingmax(price)>4000;#找出產(chǎn)品中的最高價(jià)大于4000的那些品牌selectpinpai,count(pinpai)asshuliangfromproductgroupbypinpaihavingshuliang>2;#找出產(chǎn)品數(shù)量超過2個(gè)的品牌查詢語句-orderby子句使用形式:orderby字段名1[ASC|DESC],字段名2[ASC|DESC],....含義說明:對(duì)前面取得的數(shù)據(jù)(可能有where條件并進(jìn)行了分組)來進(jìn)行排序操作升序(ASC)降序(DESC)舉例:orderbyproType;orderbyproTypedesc;orderbyproTypeasc,price查詢語句-limit子句使用形式:limit[起始行號(hào)s,]取得行數(shù)n含義說明:對(duì)前面取得的數(shù)據(jù)(可能有where條件并進(jìn)行了分組而且做過了排序)來限定取得其中的某部分(從第s行開始取n行)注意,數(shù)據(jù)的行號(hào)數(shù)是從0開始算起的第一個(gè)起始行號(hào)可以省略,則表示是從0行開始取得所指定的行數(shù)的連接查詢-join基本含義:將兩個(gè)表以“并排”的方式,連接起來,成為“更多字段”的一個(gè)新表。根據(jù)連接的不同方式和條件的不同,得到的新表的行數(shù)會(huì)有不同。如圖所示,兩個(gè)獨(dú)立表及連接示意圖:連接查詢-join連接之后:連接查詢-join基本形式:from表1[連接方式]join表2[on連接條件];連接的結(jié)果可以當(dāng)作一個(gè)“表”來使用。交叉連接:from表1[cross]join表2;連接的結(jié)果其實(shí)是兩個(gè)表中的所有數(shù)據(jù)“兩兩對(duì)接”。這種連接也叫做“笛卡爾積”內(nèi)連接:from表1[inner]join表2on連接條件。inner關(guān)鍵字可以省略,也可以用cross代替。on連接條件無非是設(shè)定在連接后所得到的數(shù)據(jù)表中,設(shè)定一個(gè)條件以取得所需要的數(shù)據(jù)。通常連接都是指兩個(gè)有關(guān)聯(lián)的表,則連接條件就是這兩個(gè)表的關(guān)聯(lián)字段的一個(gè)關(guān)系(通常都是相等關(guān)系)連接查詢-join內(nèi)連接典型情況連接查詢-join左[外]連接:from表1left[outer]join表2on連接條件;將左邊的表的數(shù)據(jù)跟右邊的表的數(shù)據(jù)以給定的條件連接,并將左邊的表中無法滿足條件的數(shù)據(jù)也一并取得——即左邊的表的數(shù)據(jù)肯定都取出來了右[外]連接:from表1right[outer]join表2on連接條件;將左邊的表的數(shù)據(jù)跟右邊的表的數(shù)據(jù)以給定的條件連接,并將右邊的表中無法滿足條件的數(shù)據(jù)也一并取得——即右邊的表的數(shù)據(jù)肯定都取出來了子查詢-基本含義什么是查詢:查詢就是一個(gè)select語句(不管其后面帶了哪些子句)。一個(gè)select查詢語句最終執(zhí)行的結(jié)果就是一個(gè)“數(shù)據(jù)集”(數(shù)據(jù)表)。什么子查詢:就是一個(gè)select語句中的某些位置(select部分,from部分,where部分)上,又出現(xiàn)了“內(nèi)部select語句”,此內(nèi)部select語句就是子查詢。相應(yīng)的,外部的select語句就是主查詢(也可以稱為外部查詢)基本形式:selelct字段或表達(dá)式或子查詢[as別名]from表名或子查詢where字段或表達(dá)式或子查詢的條件判斷子查詢-按返回結(jié)果分表子查詢:一個(gè)子查詢返回的結(jié)果理論上是“多行多列”的時(shí)候。此時(shí)可以當(dāng)做一個(gè)“表”來使用,通常是放在from后面,比如from(子查詢)行字查詢:一個(gè)子查詢返回的結(jié)果理論上是“一行多列”的時(shí)候。此時(shí)可以當(dāng)做一個(gè)“行”來使用,通常放在“行比較語法”中。列子查詢:一個(gè)子查詢返回的結(jié)果理論上是“多行一列”的時(shí)候。此時(shí)可以當(dāng)做“多個(gè)值”使用,類似這種:(5,17,8,22),通常放在where子句中,比如whereidin(select子查詢)。標(biāo)量子查詢:一個(gè)子查詢返回的結(jié)果理論上是“一行一列”的時(shí)候。此時(shí)可以當(dāng)做“一個(gè)值”使用,類似這種:select5asc1;或select...wherea=17,或select...whereb>8;#前面紅色的字都可以用子查詢代替子查詢-按使用場(chǎng)合分作為主查詢的結(jié)果數(shù)據(jù):selectc1,(selectf1fromtab2)asf11fromtab1;#這里子查詢應(yīng)該只有一個(gè)數(shù)據(jù)(一行一列)作為主查詢的條件數(shù)據(jù):selectc1fromtab1wherec1=(selectf1fromtab2);#這里子查詢應(yīng)該只有一個(gè)數(shù)據(jù)(一行一列)作為主查詢的來源數(shù)據(jù):selectc1from(selectf1asc1,f2fromtab2)ast2;#這里子查詢可以是任意查詢結(jié)果。子查詢-常見子查詢比較運(yùn)算符中使用子查詢:形式:操作數(shù)比較運(yùn)算符(子查詢)。此子查詢應(yīng)為一個(gè)值(標(biāo)量子查詢),例:where'abc'=(selectc1fromtab2limit1);whereage>(selectmax(age)fromtab2wherejiguan='北京');使用in的子查詢:形式:操作數(shù)in(子查詢)。此子查詢應(yīng)為多行一列值(列子查詢)wheretypeIDin(selectidfromproductwherepnamelike'%電%')使用any的子查詢:操作數(shù)比較運(yùn)算符any(子查詢)其含義是:如果子查詢返回的列中有其中任何一個(gè)值,該比較結(jié)果為TRUE,則最終結(jié)果是TRUE。子查詢-常見子查詢使用all的子查詢:形式:操作數(shù)比較運(yùn)算符all(子查詢)。含義:如果子查詢返回的列中的所有值,該比較結(jié)果都為TRUE,則最終結(jié)果是TRUE例:whereptype>all(selectidfromproductwherepnamelike'%電%')使用exists的子查詢:形式:whereexists(子查詢)含義:如果該子查詢有任何數(shù)據(jù)結(jié)果,則條件true,否則為false使用notexists的子查詢:形式:wherenotexists(子查詢)。#含義同exists子查詢相反聯(lián)合查詢-union含義:將兩個(gè)“字段一致”的查詢語句所查詢到的結(jié)果以“縱向堆疊”的方式合并到一起,成為一個(gè)新的結(jié)果集。如圖所示:聯(lián)合查詢-union形式:select語句1union[ALL|DISTINCT]select語句2:說明:兩個(gè)select語句的查詢結(jié)果的字段需要保持一致:個(gè)數(shù)必須相同,對(duì)應(yīng)順序上的字段類型也應(yīng)該相同ALL|DISTINCT表示兩表的數(shù)據(jù)聯(lián)合后是否需要消除相同行(數(shù)據(jù))。ALL表示不消除(全部取得),DISTINCT表示要消除。默認(rèn)不寫就會(huì)消除應(yīng)該將這個(gè)聯(lián)合查詢的結(jié)果理解為最終也是一個(gè)“表格數(shù)據(jù)”,且默認(rèn)使用第一個(gè)select語句中的字段名如果第一個(gè)select語句中的列有別名,則orderby子句中就必須使用該別名聯(lián)合查詢-union舉例:selectid,f1,f2fromjointable1unionselectid2,c1,c2fromjointable2;#這里會(huì)自動(dòng)“消除重復(fù)行”selectid,f1,f2fromjointable1unionallselectid2,c1,c2fromjointable2;#這里明確聲明不要消除重復(fù)行(selectid,f1,f2fromjointable1)union(selectid2,c1,c2fromjointable2)orderbyid;#使用排序,這里不能使用id2(selectidasnid,f1,f2fromjointable1)union(selectid2,c1,c2fromjointable2)orderbynid;#這里不能使用id了數(shù)據(jù)控制語言DCL數(shù)據(jù)控制語言DCL(DataControlLanguage)是用于控制數(shù)據(jù)的各個(gè)層面上的訪問權(quán)限的語法結(jié)構(gòu)。mysql的權(quán)限名稱有很多權(quán)限,每個(gè)權(quán)限使用一個(gè)名稱,比如:mysql的用戶:都記錄在系統(tǒng)數(shù)據(jù)庫mysql的user表中數(shù)據(jù)控制語言DCL創(chuàng)建用戶createuser'用戶名'[identifiedby'密碼'];刪除用戶dropuser'用戶名'修改用戶密碼:修改當(dāng)前用戶自己的密碼:setpassword=password('密碼');修改其他用戶的密碼:setpassworfor'用戶名'@'服務(wù)器名'=password('密碼');數(shù)據(jù)控制語言DCL授予用戶權(quán)限基本形式:grant權(quán)限列表on庫名.對(duì)象名to'用戶名'@'服務(wù)器名'[identifiedby'密碼'];權(quán)限列表:用逗號(hào)隔開的各選項(xiàng)名稱,其中“ALLprivileges”表示所選定對(duì)象上的所有可用權(quán)限庫名.對(duì)象名:表示權(quán)限在哪個(gè)庫的哪個(gè)對(duì)象上有效。對(duì)象有“表”,“視圖”,“存儲(chǔ)過程”,“存儲(chǔ)函數(shù)”等?!?.*”表示所有庫中的所有對(duì)象(全局權(quán)限),“db1.*”表示數(shù)據(jù)庫db1中的所有對(duì)象(庫級(jí)權(quán)限)用戶名:指將權(quán)限賦給的用戶。如果該用戶在系統(tǒng)中不存在,則就會(huì)新建該用戶,否則就是給該用戶增加權(quán)限服務(wù)器名:指權(quán)限應(yīng)用在哪臺(tái)mysql數(shù)據(jù)庫服務(wù)器,通常就是localhost,也可以是服務(wù)器名,或ip地址數(shù)據(jù)控制語言DCL取消用戶權(quán)限基本形式:revoke權(quán)限列表on庫名.對(duì)象名from'用戶名'@'服務(wù)器名'事務(wù)控制語言DTL什么是事務(wù):就是將一系列的sql語句當(dāng)作“一句”來執(zhí)行的一種機(jī)制——該系列語句要么全部執(zhí)行成功,要么一個(gè)都不執(zhí)行。為什么需要事務(wù):實(shí)際應(yīng)用中,我們經(jīng)驗(yàn)中的一個(gè)“操作”,其實(shí)常常對(duì)應(yīng)著數(shù)據(jù)庫(表)的2個(gè)或2個(gè)以上的操作,此時(shí)就應(yīng)該讓此2個(gè)操作具有“整體性”。比如網(wǎng)銀匯款,其實(shí)是將一個(gè)儲(chǔ)戶中的錢減少一個(gè)數(shù)目,再將另一個(gè)儲(chǔ)戶的錢增加一個(gè)數(shù)目。如果只做完了前者,后者因?yàn)槟撤N原因沒有做完就出錯(cuò)了,此時(shí)就悲劇了事務(wù)控制語言DTL-事務(wù)的特點(diǎn)原子性:一個(gè)事務(wù)中的所有語句,應(yīng)該做到:要么全做,要么一個(gè)都不做;一致性:讓數(shù)據(jù)保持邏輯上的“合理性”,比如:一個(gè)商品出庫時(shí),既要讓商品庫中的該商品數(shù)量減1,又要讓對(duì)應(yīng)用戶的購物車中的該商品加1;隔離性:如果多個(gè)事務(wù)同時(shí)并發(fā)執(zhí)行,但每個(gè)事務(wù)就像各自獨(dú)立執(zhí)行一樣。持久性:一個(gè)事務(wù)執(zhí)行成功,則對(duì)數(shù)據(jù)來說應(yīng)該是一個(gè)明確的硬盤數(shù)據(jù)更改(而不僅僅是內(nèi)存中的變化)。事務(wù)控制語言DTL事務(wù)模式:mysql的默認(rèn)模式:一條語句(以分號(hào)作為標(biāo)志)就當(dāng)作一個(gè)事務(wù)來執(zhí)行。查看模式:showvariableslike'mit%';將mit設(shè)置為0就關(guān)閉了該模式,則所有語句都必須使用commit之后才正式生效:setmit=0;事務(wù)的執(zhí)行基本流程:開始事務(wù):starttransaction;或:begin;執(zhí)行具體的sql語句1,語句2,.....判斷上述語句是否發(fā)生錯(cuò)誤(cmd中可以直接觀察,php中通過判斷返回結(jié)果進(jìn)行判斷)如果沒有錯(cuò)誤,執(zhí)行commit語句,否則執(zhí)行rollback語句mysql編程語句塊包含符:begin...end說明:相當(dāng)于通常語言中的大括號(hào){}的作用,但比之更靈活,主要是在非循環(huán)語句中也具有“退出”功能,如圖所示:mysql編程流程控制之if語句:mysql編程流程控制之case語句:mysql編程流程控制之while語句:mysql編程流程控制之leave語句:語法:leave標(biāo)識(shí)符;作用:用來退出各種begin...end結(jié)構(gòu)(循環(huán)和分支結(jié)構(gòu)都可以)mysql編程變量聲明:declare變量名變量類型[default初始值];#類似js中使用var定義變量(并賦值)。注意:其只能在begin...end這種復(fù)合語句結(jié)構(gòu)中。變量賦值:語法1:set變量名=表達(dá)式;語法2:set@變量名=表達(dá)式;#此方式可以無需declare語法聲明,而是直接賦值,類似php定義變量并賦值兩種變量形式的區(qū)別:“@變量名”形式(語法2)的變量可以在非程序語句中使用,而語法1的變量只能在程序語句中(比如begin...end范圍),且必須先聲明(declare語法)才能賦值mysql編程-存儲(chǔ)過程什么是存儲(chǔ)過程?存儲(chǔ)過程就是相當(dāng)于php或js中沒有返回值的函數(shù)。存儲(chǔ)過程只“做事”(包括增刪改查等),不返回?cái)?shù)據(jù)值。但其中的select的查詢結(jié)果會(huì)作為“結(jié)果集”返回。定義(創(chuàng)建)形式:mysql編程-存儲(chǔ)過程調(diào)用形式:call存儲(chǔ)過程名(實(shí)參1,實(shí)參2,...);刪除存儲(chǔ)過程:dropprocedure[ifexists]存儲(chǔ)過程名;mysql編程-存儲(chǔ)函數(shù)什么是存儲(chǔ)函數(shù)?存儲(chǔ)函數(shù)就是相當(dāng)于php或js中有返回值的函數(shù)!它必須在完成一定的“計(jì)算”后返回單個(gè)數(shù)據(jù)值(一個(gè)具體的數(shù)據(jù),而不是查詢結(jié)果)。定義(創(chuàng)建)形式:mysql編程-存儲(chǔ)函數(shù)調(diào)用:當(dāng)作普通函數(shù)的一樣調(diào)用,可用于select語句中或其他各種需要“一個(gè)數(shù)據(jù)”的場(chǎng)合。比如:selectnow()asshijian,func1(5)ascol;select*fromtabwhereid=function(6,7);刪除:dropfunction[ifexists]存儲(chǔ)函數(shù)名;mysql編程-內(nèi)置函數(shù)數(shù)值函數(shù):abs(x), //x代表一個(gè)數(shù)字,下同。ceiling(x),floor(x),pi(),pow(x,y),rand(),round(x),sqrt(x);mysql編程-內(nèi)置函數(shù)字符串函數(shù):(以下x表示一個(gè)數(shù)字,str表示一個(gè)字符串)ascii(str):返回str的ascii碼bin(x):返回?cái)?shù)字x的二進(jìn)制表示形式bin(x):獲取數(shù)字x的二進(jìn)制字符串形式cast(expaschar):將exp轉(zhuǎn)換為char類型char(x1,x2,...):返回若干個(gè)數(shù)字對(duì)應(yīng)的字符串char_length(str):返回字符數(shù),length(x)返回字節(jié)數(shù)concat(str1,str2,...):連接字符串format(x,d):將數(shù)字x格式化為“##,###,###.###”的字符形式,并保留d位。instr(str,substr):取得str中第一次出現(xiàn)substr的位置(位置從1開始算起)mysql編程-內(nèi)置函數(shù)字符串函數(shù):(以下x表示一個(gè)數(shù)字,str表示一個(gè)字符串)lcase(str),lower(str);ucase(str),upper(str)left(str,len):取得s左邊len個(gè)字符,right(str,len)取得右邊len個(gè)字符lpad(str,len,padstr):左填充,rpad(str,len,padstr)右填充ltrim(str):左截取,rtrim(str)右截取,trim(str)兩邊截取mid(str,pos,len):同義詞:substring(str,pos[,len])repeat(str,count):重復(fù)str字符count次。reverse(str):反轉(zhuǎn)字符strcmp(str1,str2):比較兩個(gè)字符大小,返回0,-1,

溫馨提示

  • 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)論