版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
招聘面試面試資料查詢數(shù)據(jù)是否存在用count(*)效率最快,不用其他方法查詢語(yǔ)句where后面順序影響效率范式第一范式(1NF):數(shù)據(jù)庫(kù)表中的字段都是單一屬性的,不可再分。謝謝閱讀例如,如下的數(shù)據(jù)庫(kù)表是符合第一范式的:字段1字段2字段3字段4而這樣的數(shù)據(jù)庫(kù)表是不符合第一范式的:字段1字段2字段3字段4字段3.1字段3.2DBMS精品文檔放心下載的數(shù)據(jù)庫(kù)。第二范式(2NF):數(shù)據(jù)庫(kù)表中不存在非關(guān)鍵字段對(duì)任一候選關(guān)鍵字段的部分函數(shù)依賴(部感謝閱讀謝謝閱讀字段都完全依賴于任意一組候選關(guān)鍵字。(學(xué)號(hào),課程名稱)→(姓名,年齡,成績(jī),學(xué)分)精品文檔放心下載這個(gè)數(shù)據(jù)庫(kù)表不滿足第二范式,因?yàn)榇嬖谌缦聸Q定關(guān)系:(課程名稱)→(學(xué)分)(學(xué)號(hào))→(姓名,年齡)即存在組合關(guān)鍵字中的字段決定非關(guān)鍵字的情況。由于不符合2NF,這個(gè)選課關(guān)系表會(huì)存在如下問(wèn)題:(1)數(shù)據(jù)冗余:同一門課程由n個(gè)學(xué)生選修,"學(xué)分"就重復(fù)n-1m門課程,姓名感謝閱讀和年齡就重復(fù)了m-1次。(2)更新異常:"學(xué)分"精品文檔放心下載程學(xué)分不同的情況。(3)插入異常:"學(xué)號(hào)"感謝閱讀名稱和學(xué)分也無(wú)法記錄入數(shù)據(jù)庫(kù)。(4)刪除異常:精品文檔放心下載此同時(shí),課程名稱和學(xué)分信息也被刪除了。很顯然,這也會(huì)導(dǎo)致插入異常。精品文檔放心下載把選課關(guān)系表SelectCourse改為如下三個(gè)表:感謝閱讀學(xué)生:Student(學(xué)號(hào),姓名,年齡);課程:Course(課程名稱,學(xué)分);選課關(guān)系:SelectCourse(學(xué)號(hào),課程名稱,成績(jī))。精品文檔放心下載謝謝閱讀另外,所有單關(guān)鍵字的數(shù)據(jù)庫(kù)表都符合第二范式,因?yàn)椴豢赡艽嬖诮M合關(guān)鍵字。感謝閱讀第三范式(3NF):在第二范式的基礎(chǔ)上,數(shù)據(jù)表中如果不存在非關(guān)鍵字段對(duì)任一候選關(guān)鍵精品文檔放心下載字段的傳遞函數(shù)依賴則符合第三范式。所謂傳遞函數(shù)依賴,指的是如果存在"A→B→謝謝閱讀C"C傳遞函數(shù)依賴于A精品文檔放心下載賴關(guān)系:關(guān)鍵字段→非關(guān)鍵字段x→非關(guān)鍵字段y假定學(xué)生關(guān)系表為Student(學(xué)號(hào),姓名,年齡,所在學(xué)院,學(xué)院地點(diǎn),學(xué)院電話)感謝閱讀鍵字為單一關(guān)鍵字"學(xué)號(hào)",因?yàn)榇嬖谌缦聸Q定關(guān)系:(學(xué)號(hào))→(姓名,年齡,所在學(xué)院,學(xué)院地點(diǎn),學(xué)院電話)精品文檔放心下載這個(gè)數(shù)據(jù)庫(kù)是符合2NF的,但是不符合3NF,因?yàn)榇嬖谌缦聸Q定關(guān)系:精品文檔放心下載(學(xué)號(hào))→(所在學(xué)院)→(學(xué)院地點(diǎn),學(xué)院電話)感謝閱讀即存在非關(guān)鍵字段"學(xué)院地點(diǎn)"、"學(xué)院電話"對(duì)關(guān)鍵字段"學(xué)號(hào)"的傳遞函數(shù)依賴。謝謝閱讀它也會(huì)存在數(shù)據(jù)冗余、更新異常、插入異常和刪除異常的情況,讀者可自行分析得知。謝謝閱讀把學(xué)生關(guān)系表分為如下兩個(gè)表:學(xué)生:(學(xué)號(hào),姓名,年齡,所在學(xué)院);學(xué)院:(學(xué)院,地點(diǎn),電話)。精品文檔放心下載鮑依斯-科得范式(BCNF):在第三范式的基礎(chǔ)上,數(shù)據(jù)庫(kù)表中如果不存在任何字段對(duì)任一感謝閱讀候選關(guān)鍵字段的傳遞函數(shù)依賴則符合第三范式。假設(shè)倉(cāng)庫(kù)管理關(guān)系表為StorehouseManage(倉(cāng)庫(kù)ID,存儲(chǔ)物品ID,管理員ID,數(shù)量),謝謝閱讀感謝閱讀決定關(guān)系:(倉(cāng)庫(kù)ID,存儲(chǔ)物品ID)→(管理員ID,數(shù)量)精品文檔放心下載(管理員ID,存儲(chǔ)物品ID)→(倉(cāng)庫(kù)ID,數(shù)量)精品文檔放心下載所以,(倉(cāng)庫(kù)ID,存儲(chǔ)物品ID)和(管理員ID,存儲(chǔ)物品ID)都是StorehouseManage的精品文檔放心下載精品文檔放心下載下決定關(guān)系:(倉(cāng)庫(kù)ID)→(管理員ID)(管理員ID)→(倉(cāng)庫(kù)ID)即存在關(guān)鍵字段決定關(guān)鍵字段的情況,所以其不符合BCNF范式。它會(huì)出現(xiàn)如下異常情謝謝閱讀況:(1)刪除異常:"存儲(chǔ)物品ID"和"數(shù)量"信息被刪除的同時(shí),"倉(cāng)庫(kù)ID"和"管理員精品文檔放心下載ID"信息也被刪除了。(2)插入異常:當(dāng)倉(cāng)庫(kù)沒(méi)有存儲(chǔ)任何物品時(shí),無(wú)法給倉(cāng)庫(kù)分配管理員。(3)更新異常:如果倉(cāng)庫(kù)換了管理員,則表中所有行的管理員ID都要修改。精品文檔放心下載把倉(cāng)庫(kù)管理關(guān)系表分解為二個(gè)關(guān)系表:倉(cāng)庫(kù)管理:StorehouseManage(倉(cāng)庫(kù)ID,管理員ID);
倉(cāng)庫(kù):Storehouse(倉(cāng)庫(kù)ID,存儲(chǔ)物品ID,數(shù)量)。感謝閱讀這樣的數(shù)據(jù)庫(kù)表是符合BCNF范式的,消除了刪除異常、插入異常和更新異常。謝謝閱讀mysql日志MySQL有幾個(gè)不同的日志文件,可以幫助你找出mysqld內(nèi)部發(fā)生的事情:精品文檔放心下載日志文件記入文件中的信息類型錯(cuò)誤日志記錄啟動(dòng)、運(yùn)行或停止mysqld時(shí)出現(xiàn)的問(wèn)題。感謝閱讀查詢?nèi)罩居涗浗⒌目蛻舳诉B接和執(zhí)行的語(yǔ)句。更新日志記錄更改數(shù)據(jù)的語(yǔ)句。不贊成使用該日志。二進(jìn)制日志記錄所有更改數(shù)據(jù)的語(yǔ)句。還用于復(fù)制。慢查詢?nèi)罩居涗浰袌?zhí)行時(shí)間超過(guò)long_query_time秒的所有查詢或不使用索引的查詢。謝謝閱讀錯(cuò)誤日志log-error=d:/mysql/log/log-error.log感謝閱讀二進(jìn)制日志log-bin=d:/wamp/logs/binbinlog_format=Statement#d:/wamp/logs/bin.000001(包括所有增刪改查的記錄)general_log=ONgeneral_log_file=d:/wamp/logs/mysql2.log感謝閱讀Mysqlbinlog日志有三種格式,分別為Statement,MiXED,以及ROW!精品文檔放心下載1.Statement:每一條會(huì)修改數(shù)據(jù)的sql都會(huì)記錄在binlog中。感謝閱讀2.Row:不記錄sql語(yǔ)句上下文相關(guān)信息,僅保存哪條記錄被修改。精品文檔放心下載3.Mixedlevel:是以上兩種level的混合使用,一般的語(yǔ)句修改使用statment格式保存謝謝閱讀binlog,如一些函數(shù),statement無(wú)法完成主從復(fù)制的操作,則采用row格式保存精品文檔放心下載binlog,MySQL會(huì)根據(jù)執(zhí)行的每一條具體的sql語(yǔ)句來(lái)區(qū)分對(duì)待記錄的日志形式,也就是在精品文檔放心下載Statement和Row之間選擇一種.新版本的MySQL中隊(duì)rowlevel感謝閱讀是所有的修改都會(huì)以rowlevelstatement模式來(lái)謝謝閱讀記錄。至于update或者delete等修改數(shù)據(jù)的語(yǔ)句,還是會(huì)記錄所有行的變更。謝謝閱讀1.RowLevel:5.1.5開(kāi)始支持。mater記錄每行數(shù)據(jù)的更改日志,slave根據(jù)謝謝閱讀日志逐行應(yīng)用。優(yōu)點(diǎn):數(shù)據(jù)一致性更有保障。缺點(diǎn):可能造成日志文件比較大謝謝閱讀2.StatementLevelmaster記錄每個(gè)執(zhí)行的query語(yǔ)句以及一些上下文信息,感謝閱讀slave節(jié)點(diǎn)根據(jù)這些信息重新在slavebinarylog精品文檔放心下載某些情況下數(shù)據(jù)一致性難以保障3.MixedLevel:MySQL根據(jù)情況選擇哪種復(fù)制方式。5.1.8開(kāi)始支持謝謝閱讀mysql配置參數(shù)key_buffer_sizeMyISAM表起作用,key_buffer_size指定索引緩沖區(qū)的大小,它決精品文檔放心下載定索引處理的速度,尤其是索引讀的速度。---鍵高速緩存區(qū)大小感謝閱讀我分配給mysql的key_buffer_size為1G內(nèi)存。感謝閱讀mysql>setglobalkey_buffer_size=1024*1024*1024;精品文檔放心下載key_buffer_size(關(guān)鍵參數(shù)),索引塊用的緩沖區(qū)大小,所有的連接程序線程共用精品文檔放心下載key_cache_block_size每一個(gè)索引block的大小,默認(rèn)1024字節(jié)---鍵高速緩存塊大小精品文檔放心下載table_cache:指示表高速緩存的大小。當(dāng)Mysql訪問(wèn)一個(gè)表時(shí),如果在Mysql表緩沖區(qū)中謝謝閱讀謝謝閱讀mysql默認(rèn)安裝情況下,table_cache的值在2G內(nèi)存以下的機(jī)器中的值默認(rèn)時(shí)256精品文檔放心下載到512,如果機(jī)器有4G內(nèi)存,則默認(rèn)這個(gè)值是2048謝謝閱讀query_cache_sizeMySQL服務(wù)器可以使用查詢緩存來(lái)提高那些重復(fù)執(zhí)行的SELECT感謝閱讀語(yǔ)句的處理速度。MySQL查詢高速緩沖查詢緩存存儲(chǔ)SELECT查詢的文本以及發(fā)送給客戶端的相應(yīng)結(jié)果。如果隨后收到一個(gè)相同的精品文檔放心下載查詢,服務(wù)器從查詢緩存中重新得到查詢結(jié)果,而不再需要解析和執(zhí)行查詢。精品文檔放心下載設(shè)置query_cache_size系統(tǒng)變量。設(shè)置為0表示禁用查詢緩存。默認(rèn)緩存大小設(shè)置為0;精品文檔放心下載也就是禁用查詢緩存。當(dāng)設(shè)置query_cache_size40KB來(lái)分配其數(shù)精品文檔放心下載據(jù)結(jié)構(gòu)。(具體大小取決于系統(tǒng)結(jié)構(gòu))。如果你把該值設(shè)置的太小,將會(huì)得到一個(gè)警告,如感謝閱讀本例所示:mysql>SETGLOBALquery_cache_size=40000;感謝閱讀QueryOK,0rowsaffected,1warning(0.00sec)精品文檔放心下載優(yōu)化優(yōu)化SELECT語(yǔ)句和其它查詢Where條件語(yǔ)句的執(zhí)行順序會(huì)影響效率Mysql中從左至右執(zhí)行條件語(yǔ)句,所以要先把結(jié)果范圍小的放在where后第一個(gè)地方謝謝閱讀數(shù)據(jù)庫(kù)查詢的結(jié)果會(huì)放在result中,然后會(huì)在內(nèi)存中保留,所以最好感謝閱讀mysql_free_result($result);比較好感謝閱讀Char和varchar的區(qū)別CHAR:CHAR存儲(chǔ)定長(zhǎng)數(shù)據(jù)很方便,CHAR字段上的索引效率級(jí)高感謝閱讀VARCHAR:存儲(chǔ)變長(zhǎng)數(shù)據(jù),但存儲(chǔ)效率沒(méi)有CHAR高感謝閱讀EXPLAIN和DESCINSERT語(yǔ)句的速度加快插入的一些方法:(1)如果同時(shí)從同一個(gè)客戶端插入很多行,使用含多個(gè)VALUE的INSERT語(yǔ)句同時(shí)插入幾行。精品文檔放心下載這比使用單行INSERT語(yǔ)句快(在某些情況下快幾倍)。謝謝閱讀(2)如果你正向一個(gè)非空表添加數(shù)據(jù),可以調(diào)節(jié)bulk_insert_buffer_size變量,使數(shù)據(jù)插精品文檔放心下載入更快。這個(gè)參數(shù)設(shè)置的是bulkinsert的緩存大小,默認(rèn)是8M。感謝閱讀(3)如果你從不同的客戶端插入很多行,能通過(guò)INSERTDELAYED語(yǔ)句加快速度。感謝閱讀(4)用MyISAM,如果在表中沒(méi)有刪除的行,能在SELECT語(yǔ)句正在運(yùn)行的同時(shí)插入行。精品文檔放心下載(5)當(dāng)從一個(gè)文本文件裝載一個(gè)表時(shí),使用LOADDATAINFILE。這通常比使用很多INSERT謝謝閱讀語(yǔ)句快20倍。UPDATE語(yǔ)句的速度更新查詢的優(yōu)化同SELECT查詢一樣,需要額外的寫開(kāi)銷。寫速度依賴于更新的數(shù)據(jù)大小和謝謝閱讀更新的索引的數(shù)量。沒(méi)有更改的索引不被更新。精品文檔放心下載更新比一次做一個(gè)快得多。請(qǐng)注意對(duì)使用動(dòng)態(tài)記錄格式的MyISAM表,更新一個(gè)較長(zhǎng)總長(zhǎng)的記錄可能會(huì)切分記錄。如果精品文檔放心下載經(jīng)常這樣該,偶爾使用OPTIMIZETABLE很重要。感謝閱讀DELETE語(yǔ)句的速度謝謝閱讀的大小。可以使用key_cache_block_size變量為具體的鍵高速緩沖指定塊緩存區(qū)的大小。這樣允許精品文檔放心下載為索引文件調(diào)節(jié)I/O操作的性能。優(yōu)化數(shù)據(jù)庫(kù)結(jié)構(gòu)使你的數(shù)據(jù)盡可能小列索引多列索引MyISAM鍵高速緩沖,可以使用key_buffer_size系統(tǒng)變量控制鍵高速緩沖的大小。精品文檔放心下載語(yǔ)言結(jié)構(gòu)用戶變量設(shè)置用戶變量的一個(gè)途徑是執(zhí)行SET語(yǔ)句:SET@var_name=expr[,@var_name=expr]...精品文檔放心下載對(duì)于SET可以使用=或:=作為分配符expr精品文檔放心下載或者NULL值。也可以用語(yǔ)句代替SET:=而不能用謝謝閱讀=,因?yàn)樵诜荢ET語(yǔ)句中=被視為一個(gè)比較操作符:mysql>SET@t1=0,@t2=0,@t3=0;謝謝閱讀mysql>SELECT@t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;謝謝閱讀注釋:在SELECT語(yǔ)句中,表達(dá)式發(fā)送到客戶端后才進(jìn)行計(jì)算。這說(shuō)明在HAVING、GROUP感謝閱讀BY或者ORDERBY子句中,不能使用包含SELECT列表中所設(shè)的變量的表達(dá)式。謝謝閱讀mysql>SET@a='test';mysql>SELECT@a,(@a:=20)FROMtbl_name;感謝閱讀系統(tǒng)變量mysqld服務(wù)器維護(hù)兩種變量。全局變量影響服務(wù)器整體操作。會(huì)話變量影響具體客戶端連感謝閱讀接的操作。要想設(shè)置一個(gè)GLOBAL變量的值,使用下面的語(yǔ)法:謝謝閱讀mysql>SETGLOBALsort_buffer_size=value;精品文檔放心下載mysql>SET@@global.sort_buffer_size=value;感謝閱讀要想設(shè)置一個(gè)SESSION變量的值,使用下面的語(yǔ)法:謝謝閱讀mysql>SETSESSIONsort_buffer_size=value;感謝閱讀mysql>SET@@session.sort_buffer_size=value;精品文檔放心下載mysql>SETsort_buffer_size=value;精品文檔放心下載要想檢索一個(gè)GLOBAL變量的值,使用下面的語(yǔ)法:精品文檔放心下載mysql>SELECT@@global.sort_buffer_size;精品文檔放心下載mysql>SHOWGLOBALVARIABLESlike'sort_buffer_size';精品文檔放心下載要想檢索一個(gè)SESSION變量的值,使用下面的語(yǔ)法:精品文檔放心下載mysql>SELECT@@sort_buffer_size;感謝閱讀mysql>SELECT@@session.sort_buffer_size;謝謝閱讀mysql>SHOWSESSIONVARIABLESlike'sort_buffer_size';感謝閱讀列類型數(shù)值類型·BIT:位字段類型。M表示每個(gè)值的位數(shù),范圍為從1到64。精品文檔放心下載·TINYINT:很小的整數(shù)。帶符號(hào)的范圍是-128到127。無(wú)符號(hào)的范圍是0到255。感謝閱讀·SMALLINT:小的整數(shù)。帶符號(hào)的范圍是-32768到32767。無(wú)符號(hào)的范圍是0到65535。感謝閱讀·MEDIUMINT:中等大小的整數(shù)。帶符號(hào)的范圍是-8388608到8388607。感謝閱讀·INT:普通大小的整數(shù)。帶符號(hào)的范圍是-2147483648到2147483647。謝謝閱讀·INTEGER:這是INT的同義詞?!IGINT:大整數(shù)。帶符號(hào)的范圍是-9223372036854775808到9223372036854775807。謝謝閱讀·BOOL,BOOLEAN:是TINYINT(1)的同義詞。謝謝閱讀·FLOAT:浮點(diǎn)數(shù)。·DOUBLE:普通大小(雙精度)浮點(diǎn)數(shù)?!ECIMAL[(M[,D])]定點(diǎn)數(shù)。M是小數(shù)位數(shù)(精度)的總數(shù),D是小數(shù)點(diǎn)(標(biāo)度)D感謝閱讀是0,則值沒(méi)有小數(shù)點(diǎn)或分?jǐn)?shù)部分。FLOAT(7,4)的一個(gè)列可以顯示為-999.9999。感謝閱讀DECIMAL和NUMERIC類型在MySQL中視為相同的類型。感謝閱讀DECIMAL(5,2):從-999.99到999.99感謝閱讀日期和時(shí)間類型·DATE:日期。MySQL以'YYYY-MM-DD'格式顯示DATE值,但允許使用字符串或數(shù)字為DATE感謝閱讀列分配值。·DATETIME'YYYY-MM-DDHH:MM:SS'格式顯示DATETIME謝謝閱讀使用字符串或數(shù)字為DATETIME列分配值。·TIMESTAMP:時(shí)間戳。·TIME'HH:MM:SS'格式顯示TIMETIME列分配值。謝謝閱讀·YEAR[(2|4)]:兩位或四位格式的年。字符串類型·CHAR:固定長(zhǎng)度字符串。列長(zhǎng)度0到255個(gè)字符精品文檔放心下載·VARCHAR:可變長(zhǎng)度字符串?!INARY:BINARY類型類似于CHAR類型,但保存二進(jìn)制字節(jié)字符串而不是非二進(jìn)制字符感謝閱讀串?!ARBINARYVARBINARY類型類似于VARCHAR類型,但保存二進(jìn)制字節(jié)字符串而不是非二精品文檔放心下載進(jìn)制字符串?!INYBLOB:最大長(zhǎng)度為255(28–1)字節(jié)的BLOB列。精品文檔放心下載·BLOB:最大長(zhǎng)度為65,535(216–1)字節(jié)的BLOB列。精品文檔放心下載·MEDIUMBLOB:最大長(zhǎng)度為16,777,215(224–1)字節(jié)的BLOB列。精品文檔放心下載·LONGBLOB:最大長(zhǎng)度為4,294,967,295或4GB(232–1)字節(jié)的BLOB列。LONGBLOB列的感謝閱讀最大有效(允許的)長(zhǎng)度取決于客戶端/服務(wù)器協(xié)議中配置最大包大小和可用的內(nèi)存。精品文檔放心下載·TINYTEXT:最大長(zhǎng)度為255(28–1)字符的TEXT列。謝謝閱讀·TEXT[(M)]:最大長(zhǎng)度為65,535(216–1)字符的TEXT列。感謝閱讀·MEDIUMTEXT:最大長(zhǎng)度為16,777,215(224–1)字符的TEXT列。精品文檔放心下載·LONGTEXT4,294,967,295或4GB(232–1)字符的TEXT列。LONGTEXT列的最精品文檔放心下載大有效(允許的)長(zhǎng)度取決于客戶端/服務(wù)器協(xié)議中配置最大包大小和可用的內(nèi)存。謝謝閱讀·ENUM:枚舉類型。對(duì)于BLOB和TEXT列的索引,必須指定索引前綴的長(zhǎng)度。BLOB和TEXT列不能有默認(rèn)值。感謝閱讀函數(shù)和操作符以下列表顯示了操作符優(yōu)先級(jí)的由低到高謝謝閱讀:=||,OR,XOR&&,ANDNOTBETWEEN,CASE,WHEN,THEN,ELSE精品文檔放心下載=,<=>,>=,>,<=,<,<>,!=,IS,LIKE,REGEXP,IN謝謝閱讀|&<<,>>-,+*,/,DIV,%,MOD^-(一元減號(hào)),~(一元比特反轉(zhuǎn))!BINARY,COLLATE字符串函數(shù)(7)CONCAT(str1,str2,...):返回結(jié)果為連接參數(shù)產(chǎn)生的字符串。精品文檔放心下載(10)FIND_IN_SET(str,strlist)精品文檔放心下載假如字符串str在由N子鏈組成的字符串列表strlist中,則返回值的范圍在1到N精品文檔放心下載之間。如果str不在strlist或strlist為空字符串,則返回值為0。精品文檔放心下載mysql>SELECTFIND_IN_SET('b','a,b,c,d');感謝閱讀->2(12)INSERT(str,pos,len,newstr)謝謝閱讀返回字符串str,其子字符串起始于pos位置被字符串newstr取代的len字符。如果謝謝閱讀pos超過(guò)字符串長(zhǎng)度,則返回值為原始字符串。假如len的長(zhǎng)度大于其它字符串的長(zhǎng)度,精品文檔放心下載則從位置pos開(kāi)始替換。若任何一個(gè)參數(shù)為null,則返回值為NULL。謝謝閱讀mysql>SELECTINSERT('Quadratic',3,4,'What');精品文檔放心下載->'QuWhattic'(13)LCASE(str):LCASE()是LOWER()的同義詞。謝謝閱讀(14)LEFT(str,len):返回從字符串str開(kāi)始的len最左字符。謝謝閱讀(15)LENGTH(str):返回值為字符串str的長(zhǎng)度,單位為字節(jié)。感謝閱讀(16)LOAD_FILE(file_name)讀取文件并將這一文件按照字符串的格式返回。文件的位置必須在服務(wù)器上,你必須為文件精品文檔放心下載制定路徑全名,而且你還必須擁有FILE特許權(quán)。文件必須可讀取,文件容量必須小于精品文檔放心下載max_allowed_packet字節(jié)。若文件不存在,或因不滿足上述條件而不能被讀取,則函數(shù)返回值為NULL。精品文檔放心下載mysql>UPDATEtbl_nameSETblob_column=LOAD_FILE('/tmp/picture')感謝閱讀WHEREid=1;(17)LOCATE(substr,str),LOCATE(substr,str,pos)精品文檔放心下載第一個(gè)語(yǔ)法返回字符串str中子字符串substr精品文檔放心下載str中子字符串substr的第一個(gè)出現(xiàn)位置,起始位置在possubstr不在str謝謝閱讀返回值為0。(18)LOWER(str):變?yōu)樾懽帜傅淖址?9)LPAD(str,len,padstr):返回字符串str,其左邊由字符串padstr填補(bǔ)到len字謝謝閱讀符長(zhǎng)度。(20)LTRIM(str):返回字符串str,其開(kāi)頭空格字符被刪除。精品文檔放心下載(22)MID(str,pos,len):MID(str,pos,len)是SUBSTRING(str,pos,len)的同義詞。精品文檔放心下載(25POSITION(substrINstr)POSITION(substrINstr)是LOCATE(substr,str)同義感謝閱讀詞。(26)REPEAT(str,count):返回一個(gè)由重復(fù)的字符串str組成的字符串,字符串str的精品文檔放心下載數(shù)目等于count。(27)REPLACE(str,from_str,to_str):返回字符串str以及所有被字符串to_str替代精品文檔放心下載的字符串from_str。(28)REVERSE(str):返回字符串str,順序和字符順序相反。謝謝閱讀(29)RIGHT(str,len):從字符串str開(kāi)始,返回最右len字符。謝謝閱讀(30)RPAD(str,len,padstr):返回字符串str,其右邊被字符串padstr填補(bǔ)至len字感謝閱讀符長(zhǎng)度。(31)RTRIM(str):返回字符串str,結(jié)尾空格字符被刪去。感謝閱讀(32)SPACE(N):返回一個(gè)由N間隔符號(hào)組成的字符串。精品文檔放心下載mysql>SELECTSPACE(6);->''(34)SUBSTRING(str,pos),SUBSTRING(strFROMpos)SUBSTRING(str,pos,len),感謝閱讀SUBSTRING(strFROMposFORlen)精品文檔放心下載不帶有l(wèi)en參數(shù)的格式從字符串str返回一個(gè)子字符串,起始于位置pos。帶有l(wèi)en參數(shù)謝謝閱讀的格式從字符串str返回一個(gè)長(zhǎng)度同len字符相同的子字符串,起始于位置pos。使用感謝閱讀FROM的格式為標(biāo)準(zhǔn)SQLpos精品文檔放心下載起始于字符串結(jié)尾的pospos精品文檔放心下載使用一個(gè)負(fù)值。(36)TRIM(37)UCASE(str):UCASE()是UPPER()的同義詞。謝謝閱讀(40)UPPER(str):轉(zhuǎn)化為大寫字母的字符感謝閱讀模式匹配(1)like(2)REGEXPmysql>SELECT'a'REGEXP'A','a'REGEXPBINARY'A';精品文檔放心下載->10數(shù)值函數(shù)(3)RAND()RAND(N)返回一個(gè)隨機(jī)浮點(diǎn)值v0到1之間(即,其范圍為0≤v≤1.0)若已指定感謝閱讀一個(gè)整數(shù)參數(shù)N,則它被用作種子值,用來(lái)產(chǎn)生重復(fù)序列。謝謝閱讀mysql>SELECTRAND();->0.9233482386203mysql>SELECTRAND(20);->0.15888261251047mysql>SELECTRAND(20);->0.15888261251047全文搜索功能MATCH(col1,col2,...)AGAINST(expr[INBOOLEANMODE|WITHQUERYEXPANSION])精品文檔放心下載mysql>CREATETABLEarticles(感謝閱讀->idINTUNSIGNEDAUTO_INCREMENTNOTNULLPRIMARYKEY,謝謝閱讀->titleVARCHAR(200),->bodyTEXT,->FULLTEXT(title,body)->);QueryOK,0rowsaffected(0.00sec)感謝閱讀mysql>SELECT*FROMarticles精品文檔放心下載->WHEREMATCH(title,body)AGAINST('database');謝謝閱讀布爾全文搜索利用INBOOLEANMODE修改程序,MySQL也可以執(zhí)行布爾全文搜索:謝謝閱讀mysql>SELECT*FROMarticlesWHEREMATCH(title,body)感謝閱讀->AGAINST('+MySQL-YourSQL'INBOOLEANMODE);精品文檔放心下載+:一個(gè)前導(dǎo)的加號(hào)表示該單詞必須出現(xiàn)在返回的每一行的開(kāi)頭位置。感謝閱讀-:一個(gè)前導(dǎo)的減號(hào)表示該單詞一定不能出現(xiàn)在任何返回的行中。精品文檔放心下載無(wú)操作符(當(dāng)沒(méi)有指定+或–的情況下)感謝閱讀MATCH()...AGAINST()不使用INBOOLEANMODE修改程序時(shí)的運(yùn)作很感謝閱讀類似。以下例子展示了一些使用布爾全文符號(hào)的搜索字符串:'applebanana':尋找包含至少兩個(gè)單詞中的一個(gè)的行。謝謝閱讀'+apple+juice':尋找兩個(gè)單詞都包含的行。謝謝閱讀'+applemacintosh'apple”的行,若這些行也包含單詞“macintosh”,感謝閱讀則列為更高等級(jí)。'+apple-macintosh':尋找包含單詞“apple”但不包含單詞“macintosh”的行。謝謝閱讀'+apple+(>turnover<strudel)':尋找包含單詞“apple”和“turnover”的行,或包謝謝閱讀“apple”的行(無(wú)先后順序),然而包含“apple的行較包含謝謝閱讀“applestrudel”的行排列等級(jí)更為高。'apple*':尋找包含“apple”、“apples”、“applesauce”或“applet”的行。謝謝閱讀'"somewords"':尋找包含原短語(yǔ)“somewords”的行(例如,包含“somewordsof感謝閱讀wisdom”的行,而非包含“somenoisewords”的行)。感謝閱讀全文搜索只適用于MyISAM表??刂屏鞒毯瘮?shù)mysql>SELECTCASE1WHEN1THEN'one'謝謝閱讀->WHEN2THEN'two'ELSE'more'END;精品文檔放心下載->'one'2)IF(expr1,expr2,expr3)mysql>SELECTIF(1>2,2,3);謝謝閱讀->3(3)IFNULL(expr1,expr2)假如expr1不為NULL,則IFNULL()的返回值為expr1;否則其返回值為expr2。精品文檔放心下載(4)NULLIF(expr1,expr2)如果expr1=expr2成立,那么返回值為NULL,否則返回值為expr1。感謝閱讀信息函數(shù)(1)BENCHMARK(count,expr)BENCHMARK()函數(shù)重復(fù)count次執(zhí)行表達(dá)式expr。它可以被用于計(jì)算MySQL處理表感謝閱讀結(jié)果值通常為0mysql客戶端內(nèi)部,能夠報(bào)告問(wèn)詢執(zhí)行的次謝謝閱讀數(shù):mysql>SELECTBENCHMARK(1000000,ENCODE('hello','goodbye'));精品文檔放心下載+----------------------------------------------+謝謝閱讀|BENCHMARK(1000000,ENCODE('hello','goodbye'))|精品文檔放心下載+----------------------------------------------+感謝閱讀|0|+----------------------------------------------+感謝閱讀1rowinset(4.74sec)(2)FOUND_ROWS()ASELECT語(yǔ)句可能包括一個(gè)LIMIT精品文檔放心下載下,需要不用再次運(yùn)行該語(yǔ)句而得知在沒(méi)有LIMIT時(shí)到底該語(yǔ)句返回了多少行。為了知道感謝閱讀這個(gè)行數(shù),包括在SELECT語(yǔ)句中選擇SQL_CALC_FOUND_ROWS,隨后調(diào)用謝謝閱讀FOUND_ROWS():mysql>SELECTSQL_CALC_FOUND_ROWS*FROMtbl_name精品文檔放心下載->WHEREid>100LIMIT10;精品文檔放心下載mysql>SELECTFOUND_ROWS();謝謝閱讀(3)LAST_INSERT_ID()LAST_INSERT_ID(expr)謝謝閱讀自動(dòng)返回最后一個(gè)INSERT或UPDATE問(wèn)詢?yōu)锳UTO_INCREMENT列設(shè)置的第一個(gè)發(fā)生的值。感謝閱讀mysql>SELECTLAST_INSERT_ID();感謝閱讀->195假如你使用單INSERT語(yǔ)句插入多個(gè)行,LAST_INSERT_ID()只返回插入的第一行產(chǎn)生的謝謝閱讀值。若給出作為到LAST_INSERT_ID()的參數(shù)expr,則參數(shù)的值被函數(shù)返回,并作為被精品文檔放心下載LAST_INSERT_ID()返回的下一個(gè)值而被記憶。這可用于模擬序列:精品文檔放心下載創(chuàng)建一個(gè)表,用來(lái)控制順序計(jì)數(shù)器并使其初始化:omysql>CREATETABLEsequence(idINTNOTNULL);精品文檔放心下載omysql>INSERTINTOsequenceVALUES(0);精品文檔放心下載使用該表產(chǎn)生這樣的序列數(shù):omysql>UPDATEsequenceSETid=LAST_INSERT_ID(id+1);精品文檔放心下載omysql>SELECTLAST_INSERT_ID();謝謝閱讀(4)ROW_COUNT()ROW_COUNT()返回被前面語(yǔ)句升級(jí)的、插入的或刪除的行數(shù)。謝謝閱讀GROUPBY(聚合)函數(shù)(1)AVG([DISTINCT]expr)返回expr的平均值。DISTINCT選項(xiàng)可用于返回expr的不同值的平均值。精品文檔放心下載(2)COUNT(expr)返回SELECT語(yǔ)句檢索到的行中非NULL值的數(shù)目。精品文檔放心下載(3)MIN([DISTINCT]expr),MAX([DISTINCT]expr)感謝閱讀返回expr的最小值和最大值。(4)SUM([DISTINCT]expr)返回expr的總數(shù)。GROUPBY修改程序GROUPBY子句允許一個(gè)將額外行添加到簡(jiǎn)略輸出端WITHROLLUP修飾符。感謝閱讀mysql>SELECTyear,SUM(profit)FROMsalesGROUPBYyearWITHROLLUP;精品文檔放心下載+------+-------------+|year|SUM(profit)|+------+-------------+|2000|4525||2001|3010||NULL|7535|+------+-------------+當(dāng)你使用ROLLUP時(shí),你不能同時(shí)使用ORDERBY子句進(jìn)行結(jié)果排序。謝謝閱讀SQL語(yǔ)句語(yǔ)法數(shù)據(jù)定義語(yǔ)句ALTERTABLE語(yǔ)法mysql>ALTERTABLEt2DROPCOLUMNc,DROPCOLUMNd;//刪除列謝謝閱讀mysql>ALTERTABLEt1CHANGEbbBIGINTNOTNULL;//變更列類型謝謝閱讀mysql>ALTERTABLEt1CHANGEabINTEGER;//重命名,并變更類型感謝閱讀mysql>ALTERTABLEt1MODIFYbBIGINTNOTNULL;//改變列的類型謝謝閱讀InnoDB支持使用ALTERTABLE來(lái)取消外鍵:精品文檔放心下載ALTERTABLEyourtablenameDROPFOREIGNKEYfk_symbol;精品文檔放心下載ALTERTABLEDROPPARTITIONp0,p1;//取消分區(qū)精品文檔放心下載mysql>ALTERTABLEt1RENAMEt2;//把表t1重新命名為t2感謝閱讀mysql>ALTERTABLEt2ADDdTIMESTAMP;//添加一個(gè)新的TIMESTAMP列,名稱為d謝謝閱讀mysql>ALTERTABLEt2ADDINDEX(d),ADDINDEX(a);//在列d和列a中添加索引精品文檔放心下載CREATETABLE語(yǔ)法mysql>CREATETABLEtest(aINTNOTNULLAUTO_INCREMENT,謝謝閱讀->PRIMARYKEY(a),KEY(b))謝謝閱讀->TYPE=MyISAMSELECTb,cFROMtest2;謝謝閱讀本語(yǔ)句用于創(chuàng)建含三個(gè)列(a,b,c)的MyISAM表。注意,用SELECT語(yǔ)句創(chuàng)建的列附在表謝謝閱讀的右側(cè),而不是覆蓋在表上。DROPINDEX語(yǔ)法DROPINDEXindex_nameONtbl_name感謝閱讀DROPTABLE語(yǔ)法DROP[TEMPORARY]TABLE[IFEXISTS]精品文檔放心下載tbl_name[,tbl_name]...[RESTRICT|CASCADE]RENAMETABLE語(yǔ)法RENAMETABLEtbl_nameTOnew_tbl_name感謝閱讀[,tbl_name2TOnew_tbl_name2]...謝謝閱讀數(shù)據(jù)操作語(yǔ)句delete語(yǔ)句單表語(yǔ)法:DELETE[LOW_PRIORITY][QUICK][IGNORE]FROMtbl_name感謝閱讀[WHEREwhere_definition][ORDERBY...][LIMITrow_count]·如果您指定LOW_PRIORITYDELETE精品文檔放心下載執(zhí)行。·對(duì)于MyISAM表,如果您使用QUICK關(guān)鍵詞,則在刪除過(guò)程中,存儲(chǔ)引擎不會(huì)合并索引端感謝閱讀結(jié)點(diǎn),這樣可以加快部分種類的刪除操作的速度?!ぴ趧h除行的過(guò)程中,IGNORE關(guān)鍵詞會(huì)使MySQL忽略所有的錯(cuò)誤。感謝閱讀INSERT語(yǔ)法INSERT[LOW_PRIORITY|DELAYED|HIGH_PRIORITY][IGNORE]感謝閱讀[INTO]tbl_name[(col_name,...)]謝謝閱讀VALUES({expr|DEFAULT},...),(...),...感謝閱讀[ONDUPLICATEKEYUPDATEcol_name=expr,...]精品文檔放心下載或:INSERT[LOW_PRIORITY|DELAYED|HIGH_PRIORITY][IGNORE]感謝閱讀[INTO]tbl_nameSETcol_name={expr|DEFAULT},...謝謝閱讀[ONDUPLICATEKEYUPDATEcol_name=expr,...]精品文檔放心下載或:INSERT[LOW_PRIORITY|HIGH_PRIORITY][IGNORE]精品文檔放心下載[INTO]tbl_name[(col_name,...)]謝謝閱讀SELECT...[ONDUPLICATEKEYUPDATEcol_name=expr,...]感謝閱讀(1)如果您使用DELAYED關(guān)鍵字,則服務(wù)器會(huì)把待插入的行放到一個(gè)緩沖器中,而發(fā)送感謝閱讀INSERTDELAYED語(yǔ)句的客戶端會(huì)繼續(xù)運(yùn)行。如果表正在被使用,則服務(wù)器會(huì)保留這些行。感謝閱讀當(dāng)表空閑時(shí),服務(wù)器開(kāi)始插入行,并定期檢查是否有新的讀取請(qǐng)求。如果有新的讀取請(qǐng)求,謝謝閱讀則被延遲的行被延緩執(zhí)行,直到表再次空閑時(shí)為止。(2)如果您使用LOW_PRIORITY關(guān)鍵詞,則INSERT的執(zhí)行被延遲,直到?jīng)]有其它客戶端從精品文檔放心下載表中讀取為止。(3)如果您指定了HIGH_PRIORITY,這么做會(huì)導(dǎo)致同時(shí)進(jìn)行的插入被取消。謝謝閱讀(4)使用mysql_affected_rows()可以獲得用于INSERT的受影響行的值。精品文檔放心下載(5)如果您在一個(gè)INSERT語(yǔ)句中使用IGNORE關(guān)鍵詞,在執(zhí)行語(yǔ)句時(shí)出現(xiàn)的錯(cuò)誤被當(dāng)作警精品文檔放心下載告處理。INSERT...SELECT語(yǔ)法示例:INSERTINTOtbl_temp2(fld_id)精品文檔放心下載SELECTtbl_temp1.fld_order_id精品文檔放心下載FROMtbl_temp1WHEREtbl_temp1.fld_order_id>100;感謝閱讀LOADDATAINFILE語(yǔ)法LOADDATAINFILE語(yǔ)句用于高速地從一個(gè)文本文件中讀取行,并裝入一個(gè)表中。文件名稱感謝閱讀必須為一個(gè)文字字符串。mysql>LOADDATAINFILE'data.txt'INTOTABLEdb2.my_table;謝謝閱讀SELECT...INTOOUTFILE謝謝閱讀到表中,應(yīng)使用LOADDATAINFILE。要讀取由逗號(hào)分隔的文件并返回,則正確的語(yǔ)句應(yīng)該是:mysql>LOADDATAINFILE'data.txt'INTOTABLEtable2精品文檔放心下載->FIELDSTERMINATEDBY',';謝謝閱讀REPLACE語(yǔ)法REPLACE的運(yùn)行與INSERTPRIMARY感謝閱讀KEY或一個(gè)UNIQUE索引的新記錄具有相同的值,則在新記錄被插入之前,舊記錄被刪除。精品文檔放心下載SELECT語(yǔ)法SELECT[ALL|DISTINCT|DISTINCTROW]感謝閱讀[HIGH_PRIORITY][STRAIGHT_JOIN][SQL_SMALL_RESULT][SQL_BIG_RESULT][SQL_BUFFER_RESULT]精品文檔放心下載[SQL_CACHE|SQL_NO_CACHE][SQL_CALC_FOUND_ROWS]謝謝閱讀select_expr,...[INTOOUTFILE'file_name'export_options精品文檔放心下載|INTODUMPFILE'file_name']謝謝閱讀[FROMtable_references[WHEREwhere_definition][GROUPBY{col_name|expr|position}感謝閱讀[ASC|DESC],...[WITHROLLUP]]謝謝閱讀[HAVINGwhere_definition][ORDERBY{col_name|expr|position}精品文檔放心下載[ASC|DESC],...][LIMIT{[offset,]row_count|row_countOFFSEToffset}]感謝閱讀[PROCEDUREprocedure_name(argument_list)]精品文檔放心下載[FORUPDATE|LOCKINSHAREMODE]]謝謝閱讀mysql>SET@skip=1;SET@numrows=5;謝謝閱讀mysql>PREPARESTMTFROM"SELECT*FROMtblLIMIT?,?";謝謝閱讀mysql>EXECUTESTMTUSING@skip,@numrows;感謝閱讀JOIN語(yǔ)法----聯(lián)合查詢USING(column_list)精品文檔放心下載果表a和表b都包含列c1,c2和c3,則以下聯(lián)合會(huì)對(duì)比來(lái)自兩個(gè)表的對(duì)應(yīng)的列:謝謝閱讀·aLEFTJOINbUSING(c1,c2,c3)感謝閱讀mysql>SELECT*FROMtable1,table2WHEREtable1.id=table2.id;精品文檔放心下載mysql>SELECT*FROMtable1LEFTJOINtable2ONtable1.id=table2.id;謝謝閱讀mysql>SELECT*FROMtable1LEFTJOINtable2USING(id);謝謝閱讀mysql>SELECT*FROMtable1LEFTJOINtable2ONtable1.id=table2.id精品文檔放心下載->LEFTJOINtable3ONtable2.id=table3.id;精品文檔放心下載on和where的差別ON與where的使用一定要注意場(chǎng)所:(1ON后面的篩選條件主要是針對(duì)的是【而對(duì)于主表刷選條件不適用】。精品文檔放心下載(2):對(duì)于主表的篩選條件應(yīng)放在where后面,不應(yīng)該放在ON后面謝謝閱讀(3):對(duì)于關(guān)聯(lián)表我們要區(qū)分對(duì)待。如果是要條件查詢后才連接應(yīng)該把查詢件放置于ON謝謝閱讀后。如果是想連接完畢后才篩選就應(yīng)把條件放置于where后面感謝閱讀UNION語(yǔ)法使用要求:列于每個(gè)SELECT語(yǔ)句的對(duì)應(yīng)位置的被選擇的列應(yīng)具有相同的類型。不需要有相精品文檔放心下載同字段名表中數(shù)據(jù):union:去除重復(fù)的數(shù)據(jù)(selectid,namefromtestwhereidin(1,2))謝謝閱讀union(selectid,namefromtestwhereid=2)感謝閱讀查詢結(jié)果unionall:不去除重復(fù)的數(shù)據(jù)(selectid,namefromtestwhereidin(1,2))精品文檔放心下載unionall(selectid,namefromtestwhereid=2)謝謝閱讀查詢結(jié)果union不同表不同字段查詢mysql>selectdistinctemailsfromtestunionselectdistinctemailtfromtest;感謝閱讀+----------------------+|emails|+----------------------+|yiranwang@||zy@||zy@||zyli@|+----------------------+子查詢SELECT*FROMt1WHEREcolumn1=(SELECTcolumn1FROMt2);感謝閱讀//一條記錄,in為多條記錄ANY關(guān)鍵詞SELECTs1FROMt1WHEREs1>ANY(SELECTs1FROMt2);謝謝閱讀//假設(shè)表t1中有一行包含(10)。如果表t2包含(21,14,7),則表達(dá)式為TRUE感謝閱讀詞語(yǔ)IN是=ANY的別名。因此,這兩個(gè)語(yǔ)句是一樣的:謝謝閱讀SELECTs1FROMt1WHEREs1=ANY(SELECTs1FROMt2);謝謝閱讀SELECTs1FROMt1WHEREs1IN(SELECTs1FROMt2);精品文檔放心下載不過(guò),NOTIN不是<>ANY的別名,但是是<>ALL的別名。感謝閱讀some關(guān)鍵詞詞語(yǔ)SOME是ANY的別名。all關(guān)鍵詞SELECTs1FROMt1WHEREs1>ALL(SELECTs1FROMt2);感謝閱讀假設(shè)表110t2-505TRUE10謝謝閱讀比t2中的所有三個(gè)值都大。如果表t2包含(12,6,NULL,-100),則表達(dá)式為FALSE,精品文檔放心下載因?yàn)楸韙2中有一個(gè)值12大于10。如果表t2包含(0,NULL,1),則表達(dá)式為unknown。精品文檔放心下載行子查詢SELECT*FROMt1WHERE(1,2)=(SELECTcolumn1,column2FROMt2);謝謝閱讀SELECT*FROMt1WHEREROW(1,2)=(SELECTcolumn1,column2FROMt2);感謝閱讀SELECT*FROMarticleWHERE(title,content,uid)=(SELECT謝謝閱讀title,content,uidFROMblogWHEREbid=2)感謝閱讀EXISTS和NOTEXISTS哪些種類的商店出現(xiàn)在一個(gè)或多個(gè)城市里?·SELECTDISTINCTstore_typeFROMstores精品文檔放心下載·WHEREEXISTS(SELECT*FROMcities_stores精品文檔放心下載·WHEREcities_stores.store_type=精品文檔放心下載stores.store_type);·哪些種類的商店沒(méi)有出現(xiàn)在任何城市里?·SELECTDISTINCTstore_typeFROMstores謝謝閱讀·WHERENOTEXISTS(SELECT*FROMcities_stores感謝閱讀·WHEREcities_stores.store_type=謝謝閱讀stores.store_type);·哪些種類的商店出現(xiàn)在所有城市里?·SELECTDISTINCTstore_typeFROMstoress1謝謝閱讀·WHERENOTEXISTS(·SELECT*FROMcitiesWHERENOTEXISTS(謝謝閱讀·SELECT*FROMcities_stores感謝閱讀·WHEREcities_stores.city=cities.city謝謝閱讀·ANDcities_stores.store_type=stores.store_type));感謝閱讀最后一個(gè)例子是一個(gè)雙嵌套NOTEXISTS查詢。該查詢正式地回答了這個(gè)問(wèn)題,“是否有某精品文檔放心下載個(gè)城市擁有沒(méi)有列在Stores中的商店?”。關(guān)聯(lián)子查詢SELECT*FROMt1WHEREcolumn1=ANY精品文檔放心下載(SELECTcolumn1FROMt2WHEREt2.column2=t1.column2);精品文檔放心下載假設(shè)表t1包含一行,在此行中column1=5并且column2=6t2包含一行,在此行感謝閱讀中column1=5并且column2=7。簡(jiǎn)單的表達(dá)式...WHEREcolumn1=ANY(SELECTcolumn1精品文檔放心下載FROMt2)會(huì)為TRUEWHERE子句為FALSE56謝謝閱讀于(5,7)),所以子查詢總體上為FALSE。FROM子句中的子查詢SELECTAVG(sum_column1)FROM(SELECTSUM(column1)ASsum_column1感謝閱讀FROMt1GROUPBYcolumn1)ASt1;謝謝閱讀TRUNCATE語(yǔ)法TRUNCATE[TABLE]tbl_nameUPDATE語(yǔ)法Single-table語(yǔ)法:UPDATE[LOW_PRIORITY][IGNORE]tbl_name謝謝閱讀SETcol_name1=expr1[,col_name2=expr2...]謝謝閱讀[WHEREwhere_definition][ORDERBY...][LIMITrow_count]Multiple-table語(yǔ)法:UPDATE[LOW_PRIORITY][IGNORE]table_references謝謝閱讀SETcol_name1=expr1[,col_name2=expr2...]謝謝閱讀[WHEREwhere_definition]UPDATEitems,monthSETitems.price=month.price精品文檔放心下載WHEREitems.id=month.id;MySQL實(shí)用工具語(yǔ)句DESCRIBE語(yǔ)法(獲取有關(guān)列的信息){DESCRIBE|DESC}tbl_name[col_name|wild]謝謝閱讀USE語(yǔ)法mysql>USEdb1;MySQL事務(wù)處理和鎖定語(yǔ)句事務(wù)的4個(gè)特性①原子性(Atomicity):事務(wù)中的所有元素作為一個(gè)整體提交或回滾,是不可折分的,事感謝閱讀務(wù)是一個(gè)完整的操作。②一致性(Consistemcy)感謝閱讀數(shù)據(jù)存儲(chǔ)中的數(shù)據(jù)處于一致?tīng)顟B(tài)。保證數(shù)據(jù)的無(wú)損。③隔離性(Isolation):對(duì)數(shù)據(jù)進(jìn)行修改的多個(gè)事務(wù)是彼此隔離的。這表明事務(wù)必須是獨(dú)感謝閱讀立的,不應(yīng)該以任何方式來(lái)影響其他事務(wù)。④持久性(Durability)謝謝閱讀統(tǒng)故障也將一直保留,真實(shí)的修改了數(shù)據(jù)庫(kù)STARTTRANSACTION,COMMIT和ROLLBACK語(yǔ)法感謝閱讀STARTTRANSACTION|BEGIN[WORK]謝謝閱讀COMMIT[WORK][AND[NO]CHAIN][[NO]RELEASE]感謝閱讀ROLLBACK[WORK][AND[NO]CHAIN][[NO]RELEASE]感謝閱讀SETAUTOCOMMIT={0|1}starttransaction;或者begin;作用是開(kāi)啟事務(wù)精品文檔放心下載AUTOCOMMIT語(yǔ)句可以禁用或啟用默認(rèn)的autocommit模式,用于當(dāng)前連接。感謝閱讀設(shè)置autocommit10精品文檔放心下載必須使用COMMIT來(lái)接受一個(gè)事務(wù),或使用ROLLBACK來(lái)取消它。感謝閱讀例子STARTTRANSACTION;SELECT@A:=SUM(salary)FROMtable1WHEREtype=1;謝謝閱讀UPDATEtable2SETsummary=@AWHEREtype=1;感謝閱讀COMMIT;SAVEPOINT和ROLLBACKTOSAVEPOINT語(yǔ)法感謝閱讀SAVEPOINTidentifierROLLBACK[WORK]TOSAVEPOINTidentifier謝謝閱讀RELEASESAVEPOINTidentifier精品文檔放心下載mysql>updatebookssetfree=1,new=1;感謝閱讀mysql>commit;mysql>SETAUTOCOMMIT=1;mysql>begin;//或者starttransaction;感謝閱讀mysql>selectfree,newfrombookslimit1;謝謝閱讀+------+-----+|free|new|+------+-----+|1|1|+------+-----+mysql>updatebookssetfree=0;感謝閱讀mysql>selectfree,newfrombookslimit1;感謝閱讀+------+-----+|free|new|+------+-----+|0|1|+------+-----+mysql>SAVEPOINTbook1;mysql>updatebookssetnew=0;謝謝閱讀mysql>selectfree,newfrombookslimit1;謝謝閱讀+------+-----+|free|new|+------+-----+|0|0|+------+-----+mysql>rollbacktobook1;mysql>selectfree,newfrombookslimit1;謝謝閱讀+------+-----+|free|new|+------+-----+|0|1|+------+-----+mysql>rollback;mysql>selectfree,newfrombookslimit1;謝謝閱讀+------+-----+|free|new|+------+-----+|1|1|+------+-----+1rowinset(0.00sec)LOCKTABLES和UNLOCKTABLES語(yǔ)法精品文檔放心下載LOCKTABLEStbl_name[ASalias]{READ[LOCAL]|[LOW_PRIORITY]WRITE}感謝閱讀[,tbl_name[ASalias]{READ[LOCAL]|[LOW_PRIORITY]WRITE}]...謝謝閱讀UNLOCKTABLES讀鎖和寫鎖共享鎖(S鎖)又稱讀鎖若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上S鎖則事務(wù)T可以讀A但不能修改A,謝謝閱讀其他事務(wù)只能再對(duì)A加S鎖,而不能加X(jué)鎖,直到T釋放A上的S鎖。這保證了其他事務(wù)精品文檔放心下載可以讀A,但在T釋放A上的S鎖之前不能對(duì)A做任何修改。感謝閱讀你可以讀取但不可以修改,其他事務(wù)可以讀取不能修改,其他事務(wù)只能再加讀鎖謝謝閱讀排他鎖(X鎖)又稱寫鎖。若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上X鎖,事務(wù)T可以讀A也可以修改A,感謝閱讀其他事務(wù)不能再對(duì)AT釋放A上的鎖。這保證了其他事務(wù)在T釋放A上的鎖謝謝閱讀之前不能再讀取和修改A。你可以讀取和修改,其他事物不能讀取和修改。其他事務(wù)不能加鎖精品文檔放心下載數(shù)據(jù)庫(kù)管理語(yǔ)句CREATEUSER語(yǔ)法CREATEUSERuser[IDENTIFIEDBY[PASSWORD]'password']謝謝閱讀[,user[IDENTIFIEDBY[PASSWORD]'password']]...謝謝閱讀使用自選的IDENTIFIEDBY子句,可以為賬戶給定一個(gè)密碼。感謝閱讀DROPUSER語(yǔ)法DROPUSERuser[,user]...謝謝閱讀GRANT和REVOKE語(yǔ)法GRANT和REVOKE語(yǔ)句允許系統(tǒng)管理員創(chuàng)建MySQL用戶賬戶,授予權(quán)限和撤銷權(quán)限。感謝閱讀grantallprivilegeson*.*toadmin@localhostidentifiedby‘123’withgrant精品文檔放心下載option;//創(chuàng)建本地的完全超級(jí)用戶”admin,口令’123’”精品文檔放心下載RENAMEUSER語(yǔ)法RENAMEUSER語(yǔ)句用于對(duì)原有MySQL賬戶進(jìn)行重命名。要使用RENAMEUSER,您必須擁有全精品文檔放心下載局CREATEUSER權(quán)限或mysql數(shù)據(jù)庫(kù)UPDATE權(quán)限。感謝閱讀RENAMEUSERold_userTOnew_user感謝閱讀SETPASSWORD語(yǔ)法SETPASSWORD=PASSWORD('somepassword')謝謝閱讀SETPASSWORDFORuser=PASSWORD('somepassword')謝謝閱讀mysql>SETPASSWORDFOR'bob'@'%.'=PASSWORD('newpass');感謝閱讀這相當(dāng)于以下語(yǔ)句:mysql>UPDATEmysql.userSETPassword=PASSWORD('newpass')感謝閱讀->WHEREUser='bob'ANDHost='%.';謝謝閱讀mysql>FLUSHPRIVILEGES;ANALYZETABLE語(yǔ)法ANALYZE[LOCAL|NO_WRITE_TO_BINLOG]TABLEtbl_name[,tbl_name]...謝謝閱讀本語(yǔ)句用于分析和存儲(chǔ)表的關(guān)鍵字分布。在分析期間,使用一個(gè)讀取鎖定對(duì)表進(jìn)行鎖定。謝謝閱讀BACKUPTABLE語(yǔ)法BACKUPTABLEtbl_name[,tbl_name]...TO'/path/to/backup/directory'精品文檔放心下載感謝閱讀同時(shí),也可以使用mysqlhotcopy原本替代。感謝閱讀OPTIMIZETABLE語(yǔ)法OPTIMIZE[LOCAL|NO_WRITE_TO_BINLOG]TABLEtbl_name[,tbl_name]...謝謝閱讀如果您已經(jīng)刪除了表的一大部分,或者如果您已經(jīng)對(duì)含有可變長(zhǎng)度行的表(含有VARCHAR,感謝閱讀BLOB或TEXTOPTIMIZETABLE精品文檔放心下載INSERTOPTIMIZETABLE來(lái)謝謝閱讀重新利用未使用的空間,并整理數(shù)據(jù)文件的碎片。REPAIRTABLE語(yǔ)法REPAIR[LOCAL|NO_WRITE_TO_BINLOG]TABLE精品文檔放心下載tbl_name[,tbl_name]...[QUICK][EXTENDED][USE_FRM]感謝閱讀REPAIRTABLE用于修復(fù)被破壞的表。RESTORETABLE語(yǔ)法RESTORETABLEtbl_name[,tbl_name]...FROM'/path/to/backup/directory'謝謝閱讀用于恢復(fù)來(lái)自用BACKUPTABLE制作的備份的表。謝謝閱讀SHOWCREATEDATABASE語(yǔ)法SHOWCREATE{DATABASE|SCHEMA}db_name謝謝閱讀顯示用于創(chuàng)建給定數(shù)據(jù)庫(kù)CREATEDATABASE語(yǔ)句。精品文檔放心下載SHOWINDEX語(yǔ)法SHOWINDEXFROMtbl_name[FROMdb_name]感謝閱讀SHOWINDEX會(huì)返回表索引信息。SHOWVARIABLES語(yǔ)法SHOW[GLOBAL|SESSION]VARIABLES[LIKE'pattern']精品文檔放心下載SHOWVARIABLES顯示了部門MySQL系統(tǒng)變量的值。本信息也可以使用mysqladmin精品文檔放心下載variables命令獲得。其他管理語(yǔ)句預(yù)處理語(yǔ)句PREPAREstmt_nameFROMpreparable_stmt;感謝閱讀EXECUTEstmt_name[USING@var_name[,@var_name]...];精品文檔放心下載要對(duì)一個(gè)預(yù)制語(yǔ)句解除分配,需使用DEALLOCATEPREPARE語(yǔ)句。精品文檔放心下載{DEALLOCATE|DROP}PREPAREstmt_name;感謝閱讀mysql>PREPAREstmt1FROM'SELECTSQRT(POW(?,2)+POW(?,2))AShypotenuse';精品文檔放心下載mysql>SET@a=3;mysql>SET@b=4;mysql>EXECUTEstmt1USING@a,@b;謝謝閱讀+------------+|hypotenuse|+------------+|5|+------------+mysql>DEALLOCATEPREPAREstmt1;謝謝閱讀Mysql實(shí)踐語(yǔ)句1.不規(guī)則排序解決方案:(1)find_in_setselect*fromtablewhereidin('783','769','814','1577','1769')謝謝閱讀orderbyfind_in_set(id,'783,769,814,1577,1769')謝謝閱讀(2)Casewhenthen$sqlWhen="CASE";$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(startdate+day*24*3600,'%Y-%m-%d'))=".感謝閱讀strtotime(date("Y-m-d",strtotime('+2day',$enddate)))."THEN10";精品文檔放心下載$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(startdate+day*24*3600,'%Y-%m-%d'))=".感謝閱讀strtotime(date("Y-m-d",strtotime('+1day',$enddate)))."THEN9";精品文檔放心下載$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(startdate+day*24*3600,'%Y-%m-%d'))=".感謝閱讀strtotime(date("Y-m-d",strtotime('-2day',$enddate)))."THEN8";謝謝閱讀$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(startdate+day*24*3600,'%Y-%m-%d'))=".感謝閱讀strtotime(date("Y-m-d",strtotime('-1day',$enddate)))."THEN7";謝謝閱讀$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(mate_travel.startdate,'%Y-%m-%d'))=".謝謝閱讀strtotime(date("Y-m-d",strtotime('+2day',$startdate)))."THEN6";謝謝閱讀$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(mate_travel.startdate,'%Y-%m-%d'))=".感謝閱讀strtotime(date("Y-m-d",strtotime('+1day',$startdate)))."THEN5";感謝閱讀$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(mate_travel.startdate,'%Y-%m-%d'))=".精品文檔放心下載strtotime(date("Y-m-d",strtotime('-2day',$startdate)))."THEN4";感謝閱讀$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(mate_travel.startdate,'%Y-%m-%d'))=".感謝閱讀strtotime(date("Y-m-d",strtotime('-1day',$startdate)))."THEN3";精品文檔放心下
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)樓宇電工施工合同樣本
- 美食節(jié)美食模特合作協(xié)議
- 房屋擴(kuò)建工程私人施工合同
- 水上樂(lè)園建設(shè)招投標(biāo)合同安排
- 城市污水處理設(shè)施建設(shè)拆遷合同
- 食品銷售合同
- 建筑工程總監(jiān)聘用合同范文
- 家裝低價(jià)改造合同范例
- 鐵路軌道維修工程合同三篇
- 藥品捐贈(zèng)合同(2篇)
- 《機(jī)電控制系統(tǒng)分析與設(shè)計(jì)》課程大作業(yè)之一――基于MATLAB
- 《瓦楞紙箱基礎(chǔ)知識(shí)》PPT課件.ppt
- 模具(塑膠件)成本估算表
- 5S的開(kāi)展進(jìn)程——現(xiàn)代企業(yè)現(xiàn)場(chǎng)的5S管理
- 分部分項(xiàng)工程劃分表模板
- XXXX年SGS供應(yīng)商質(zhì)量管理培訓(xùn)專用教材
- CAXA考試試題庫(kù)
- 中央級(jí)水利單位國(guó)有資產(chǎn)管理暫行辦法
- 相親相愛(ài)一家人簡(jiǎn)譜
- 農(nóng)村祠堂上梁說(shuō)辭
- 電氣控制課程設(shè)計(jì) 消防水泵plc電氣控制系統(tǒng)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論