版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
件第一章簡介據(jù)的概念數(shù)庫是按數(shù)據(jù)構(gòu)來織、存與管數(shù)的倉庫每個數(shù)據(jù)都有個或多不同的用于創(chuàng)建,訪問,管理,搜索與復(fù)制保存的數(shù)據(jù)。我們也可以將據(jù)存在文件中但就在文中讀寫數(shù)速度相較慢所以,現(xiàn)在我使關(guān)系型數(shù)庫管理統(tǒng)RDBMS)來存儲與管理的大據(jù)量所謂的關(guān)型據(jù)庫是建立關(guān)系型基上數(shù)據(jù)庫借助于集代等數(shù)學(xué)概念與法處理據(jù)庫中數(shù)據(jù)。RDBMS即關(guān)系據(jù)庫管系統(tǒng)Managementstem)的特點(diǎn)
數(shù)以表格的形式出每為種錄名稱每為記錄名稱所對應(yīng)的數(shù)據(jù)域4、的列一單5、干的成databaseRDBMS術(shù)語在我開學(xué)習(xí)SQL數(shù)據(jù)前讓我們了解下RDBMS的些術(shù)語:
數(shù)據(jù):數(shù)據(jù)庫就是一些關(guān)聯(lián)表的集合。、數(shù)表表就數(shù)據(jù)的矩。在一個數(shù)據(jù)庫中的表瞧起像一個簡單的電表格。列一(據(jù)元包了同的據(jù)例郵政編碼的數(shù)據(jù)行行=元或錄就一組相的據(jù)例如一條戶閱數(shù)。余存兩據(jù)冗余以使系統(tǒng)速度快。主:主就唯一的。個據(jù)表中只含個主鍵。以用主鍵數(shù)據(jù)。鍵鍵于聯(lián)兩表。復(fù)鍵復(fù)合鍵組合將個列為一個索鍵用復(fù)合索。索:使索可速問數(shù)據(jù)表中的特索就對數(shù)據(jù)庫表一列或列的行的種結(jié)構(gòu)。于的錄?
件參照完整性參照的完整性要求關(guān)系中不允許引整性就是系型須足的整約條件的就是保數(shù)的性。MySQL數(shù)據(jù)庫MySQL就是個關(guān)型數(shù)庫管系統(tǒng)由瑞典SQLAB公司開發(fā),目前屬于Oracle公司。MySQL就一種聯(lián)數(shù)庫管系,關(guān)聯(lián)據(jù)庫數(shù)據(jù)存在不同的中而不就將所數(shù)據(jù)在一大倉內(nèi)這樣增加速度提高靈活性。
My就是開源的以您不需要支付額外的費(fèi)用。My支持型的數(shù)據(jù)庫??商幚碛猩先f條錄的型數(shù)庫。My使用標(biāo)準(zhǔn)的數(shù)語言形式。MySQL可以允于個統(tǒng)上并且支持種語言。這些編程言包括、、、、EiffelRuby與等。My對PHP有的持,PHP目前最流的開語言。My支持大型數(shù)庫持萬記錄的數(shù)據(jù)倉庫位系表最可支持位統(tǒng)持大表件為8TB。SQL就是定的了協(xié)議您可改來自的SQL系統(tǒng)。件第二章數(shù)據(jù)庫的安裝與配置所需SQL包mysql-5、0、41_Setup、安裝法步驟圖解1>運(yùn)行安裝程序一步2.選擇自定安裝下一步3.這里可將不要的裝刪除可以更安目錄下一步件4.單擊“Install”按鈕,開始安裝5.安裝中,耐心等一會兒、這里就是詢問您就是否要注冊一個MySQL、的號,或是用已的賬登MySQL一了點(diǎn)選“Sign-Up”,“Next略過此驟。件7、完現(xiàn)界
現(xiàn)在件安完成,出現(xiàn)上面的界面這里有一個很好的功,MySQL配置導(dǎo),不用以前樣,自己動亂八糟配置、了將“ConfiguretheMySQLServernow面的勾打上,點(diǎn)”結(jié)軟件安裝并啟My配向?qū)А?.進(jìn)入配過9.選擇配方
選擇置方式手精配)”、Configuration(標(biāo)準(zhǔn)配置)”,我選擇“”,方便熟配置過。件選型“DeveloperMachine(開發(fā)試類SQL占很少資源)”、服務(wù)器類型SQL占用較多資源)”、“DedicatedMySQLServerMachine(專門的服務(wù)器,SQL占用所有可用資源”,大家根據(jù)自己的型選擇,一選“ServerMachine”,不會太少也會占滿。11.選SQL數(shù)據(jù)的大致,“MULTI通型好)”、“TranSacDatabase服務(wù)器類,專注事務(wù)理,一)”、“Non-SacTIONAL非事務(wù)理型,較單,主要一些監(jiān)控、記數(shù),對MYL數(shù)據(jù)類的支僅限TranSacTIONAL),隨己的途而選了,我里選擇TranSacTIONALDatabaseOnly按“Next繼續(xù)。件12.對INNODB進(jìn)行配,就數(shù)據(jù)庫文件選擇一個存儲空,如果修改了要記住,重裝的時候擇一地,否能會成數(shù)庫損,當(dāng),據(jù)庫做份就沒題,這不詳述這里沒修,用接”續(xù)13.選擇您的般SQL問量,同時接數(shù),“Decision個右)”、“OnlineTransactionProcessing(OLTP)(500個左右)“ManualSetting(動設(shè)置自己輸一個數(shù)”,我這里選“OnlineTransaction”,自服務(wù)器,應(yīng)夠了,按”繼續(xù)14.就是否啟用TCP/IP連,定端口,如果不啟,只能在自己的機(jī)上訪問SQL數(shù)據(jù)庫,我這里啟用,把勾,Number:3306,在個頁上,您還以“啟用標(biāo)”StrictMode),這樣SQL就不允細(xì)的法誤。如果還是新,我建您消準(zhǔn)式減麻。熟悉MySQL以后盡量用標(biāo)準(zhǔn)模式,因?yàn)樗越档陀袛?shù)據(jù)進(jìn)數(shù)據(jù)庫可能性。按”續(xù)件15.這個比較要就SQL認(rèn)數(shù)據(jù)庫語言編碼行設(shè)置,第一就是西文編,第二個就是多字節(jié)的通用編碼都不就是我們用的編碼,這里擇第三,然后在Set那里擇或填入“GBK,當(dāng)然可以用“gb2312,區(qū)別就的字庫容,包括了gb2312的所有字,并加上了體字與其它亂八糟的字使用SQL時候在執(zhí)據(jù)操作命令之運(yùn)(運(yùn)行次了,GBK替,視而,正使?jié)h字(其字)了,否則能正常示字。按“Next繼續(xù)16.選擇就是否MySQL安裝為務(wù),還以指定Name(服標(biāo)識名稱),就是否將MySQL的目錄到PATH(加入后可直接用下件而不用指目名,比連接,“MySQLEXE-UUSERName-PPASSword;就可以,不指出MySQLEXE完整址,很方便),我里全打了,不變按件
這一步詢問是否要修改默認(rèn)戶(超級管理的碼(默為),果修,就在此填入新密碼(如就重裝,并且前已經(jīng)設(shè)置了密,在里改碼可能會錯請留空,并將“Modify”面的勾去,裝配成后修改),“Confirm(再)”次,?!癊nableremotemachines(就是否允許用戶其它的機(jī)器上登,果要安,不要勾上,如果方,就勾上它”。最后AnAnonymousAccount(新建一個匿名戶匿名用戶可以接數(shù)據(jù)庫能作,包括查詢)”,般不勾了置畢,按“Next”續(xù)。、
確無誤有誤按”返檢。按“Execute設(shè)置生效。件19.置完畢按“Finish結(jié)束SQL的安裝與配這里有一個比較常見的錯誤就service,般出現(xiàn)以前安裝SQL的務(wù)上,解的法,先證前裝的SQL服務(wù)徹卸載掉;不的,檢查是按面步說之前密就否修改照上的作;如果然行,將SQL安裝錄下的文件夾備份然后刪,在安裝成后,將裝生成的文件夾除,備的文件夾回,再啟SQL服就以,這情況下可能需要將數(shù)據(jù)庫檢查一下然后修復(fù)一,防止數(shù)據(jù)出錯。安裝路徑不要帶有中文!也不能有空格括號之類的則就會遇到下圖顯示的錯誤到我們的SQL安裝配置完,需測SQL就否真的裝配置成功。在我的命令行下輸start瞧就否啟服;件使用具NAVIfor瞧是否能夠鏈接到SQL數(shù)庫件第三章的作1.SQL語句分類DQL(DataQueryLanguage,數(shù)據(jù)查詢語言—查詢數(shù)據(jù)庫中的數(shù)據(jù)——SELECTDML(DataManipulationLanguage,數(shù)據(jù)作語言—插入、刪除與改數(shù)據(jù)庫中的數(shù);——INSERTUPDATE、等;DCL(DataControlLanguage,數(shù)據(jù)制語言—用來控制存取許可、存取限等——、REVOKE等;DDL(DataDefinition數(shù)據(jù)定義語言——用來建立數(shù)庫、數(shù)據(jù)庫對象定義其列——、
等事務(wù)控制語(anSacTIONALControlLanguage,TCL)——COMMIT語句書寫規(guī)則書寫SQL語句應(yīng)遵循以規(guī)則語不區(qū)大小字符日期區(qū)大小語可以成行多關(guān)鍵不簡或割于行子通常于獨(dú)這更可性便編件與縮進(jìn)的使可以提高程的可讀性關(guān)鍵字最好大,其她詞諸如名、列名使小寫3.SQL中的注釋:標(biāo)準(zhǔn):多注釋:/**/。單行注釋--My“#數(shù)對象命名規(guī)則必須母開頭可包括三個特符_不要用My的保留字(保留字與鍵字My數(shù)庫統(tǒng)的能用不能它來義表名稱字段名同一下的對象不能同名類My支持種列類型:數(shù)值型、型、串字符類型My中的數(shù)數(shù)據(jù)類型:數(shù)值據(jù)型整數(shù)件數(shù)值數(shù)類型浮數(shù)件日期時間類型字符串類型件數(shù)據(jù)庫操作瞧數(shù):showdatabases;建數(shù):databasenotexists]數(shù)庫;除數(shù):drop數(shù)據(jù)庫名用數(shù)庫名表的作顯當(dāng)數(shù)庫中已有數(shù)表信:tables;件查瞧數(shù)表中各列的信息表名查瞧的詳結(jié):create表名備注如加數(shù)顯示的結(jié)果可能非常混加上參數(shù)可以使果更加直觀易于查瞧創(chuàng)表表(列名列名刪除表DROPTABLE表名改表:加列名名;改列型名列名型改名表名舊列名名;件刪除列名列;更表名名新名RENAME表名新表名;支持一重命名多個表。RENAME_tableold_table,TO_table;表的約束約束約束用于確保數(shù)庫數(shù)據(jù)滿足特定商業(yè)規(guī)。約束就表級的強(qiáng)制規(guī)定約束可為列級、表約束兩:列約束就是字定義的一部分能應(yīng)用在個列上表級約束就是立于列定定義束的鍵。大部分?jǐn)?shù)庫支以五約:非空件如果列上義了那當(dāng)入數(shù)時必須列提供數(shù)據(jù)。notnull約只能定義在列級;唯):當(dāng)定了一束,該值不就重的但可為。被定的一約,會自動建立一個唯性的索;約可定在級也以義在級意如果字定義為約時允包多NULL值。主)用于唯的標(biāo)識表行的據(jù)當(dāng)鍵約束后該列不但不能重復(fù)為。需要明的就張表最多只能一個主鍵以有多個unique。My中自動產(chǎn)生主鍵索;主鍵約既可以定義在級,也義在表級KEY(外用于定主表從表之間的關(guān)系。外鍵約要義在從表上主則必須具有主鍵約束或就是約當(dāng)義鍵約后要求外鍵的主鍵列存在或就為。一表中可以定多個外鍵約束;My中自產(chǎn)生外鍵鍵索引;外鍵約既可以定義在級,也義在表級CHECK(檢查查性,查入每數(shù)據(jù)有符合條數(shù)允入表。check表達(dá)式的必是布值check約束既可義級以在。所的存儲引擎均對CHECK子句分析但就是忽略子句。添加束可增加束,但不直接修;約用用件只要就是可以使表級約束語法來義的約,都可以通過來該約束。語法constraint_name]type(column);非空束必使用子加ALTERtableMODIFYcolumnnotnull;添加約束示例給學(xué)表添約:1、將sid設(shè)主altertablestuaddconstraintprimarykey(sid);2、為添一束altertablestuaddconstraintunique(sname);3、性別默認(rèn)為男alterstu';意就是約束加默認(rèn)可以在建表時添加修改表構(gòu)。4、別為非空modifychar(2)5、給添加外鍵altertablestuforeign(classId)references刪除定的約束件刪除定義的約束刪除約束示例:束altertablekey;注意果主鍵列有自增長列必自增長再刪主tablechangetno除null約束tablestumodifysex刪除唯約束altertablestudrop刪除外約束altertableforeignkey表級約束與列級約束級義就在定列的時定約束件如在表義鍵約束tableclasses(classIdnumber(2)[constraintpk_cid]primary--給約束名字cnamevarchar2(12));表級定義:就是指在義了所列后,再定義束。注意:not約束只能列級上義。以建立stu表時定義主鍵約束與外鍵約束為例:stu(number(4),snameconstraintpk_sidprimaryconstraintuq_snameunique(sname));自動增長默認(rèn)值件作業(yè):創(chuàng)數(shù):school在中建,rse,sc添加相應(yīng)的約束信息。件第四章新操作1課程學(xué)習(xí)目標(biāo):據(jù)的加據(jù)的改據(jù)的除數(shù)據(jù)INSERT語用于完成各種向數(shù)據(jù)表中插入數(shù)據(jù)的功能可以對列賦值一次插入一條記錄也以根據(jù)查詢句獲得的結(jié)記錄集批量入指定數(shù)據(jù)。語法格:1、所有段:INSERTINTO2、插入分字段INSERTINTO
表名、、、表名(column1,column2,column3,、、、VALUES、、);注意1>插空值以用默用。2>可使用函數(shù)取一條命令生成的值。這就是一面向連接的函數(shù)只本次會話有效。、插入數(shù)據(jù)的注意事項(xiàng)注意項(xiàng)1:每行據(jù),不可能只插入半或者幾列數(shù)據(jù)因此插據(jù)就否有將照行的整性的要求來檢注意項(xiàng)2:件每個數(shù)據(jù)值的數(shù)據(jù)類型、精度與小數(shù)位數(shù)必須與相應(yīng)的列匹配注意項(xiàng)3:如果在設(shè)表的時候就指定了某列不允為,則必插入數(shù);注意項(xiàng)4:插入的數(shù)項(xiàng),要求符合檢查約束的求注意事項(xiàng)具有缺省的列,可以用DEFAULT(缺省關(guān)鍵字來代插入的數(shù)值允許空的列可以用NULL關(guān)鍵字插入空值。修改數(shù)據(jù)UPDATE語句用于修改表中一列或多列的值,使用子限制修改的行。語格表名
SETcolumn1=value1,column2=value2,、
條件];刪除數(shù)據(jù)語句向用戶提供了刪除數(shù)據(jù)的功能UPDATE語句一樣限定表中哪些將被刪除。語法格式:DELETEFROM
表名
[WHERE
條件];TRUNCATETABLE名;二者關(guān)系在功上與不帶WHERE子句的語句同,二者均刪表的部。但TRUNCATETABLE速快,但不可回滾;DELETE速度慢但可以回。件件第五章詢查詢基本語法(單表查詢<列名>FROM<表名>[WHERE<查詢條表達(dá)>][ORDERBY排序的>[ASC或查詢部的與列select*fromstu;查詢分的列:selectsid,sname,sex,agefromstu;查詢滿足條的行的部分:selectsid,sname,sexfromwhereage=20;SQL操符算術(shù)運(yùn)算:+-*/%如sal*12關(guān)系算:><>=<==<>between,like,isnull,注意:字類型區(qū)分小,binary類型分大小寫如果字符串后面有空白符,會自動略。邏輯運(yùn)符andor&&,||,!基本查詢件怎樣消除重復(fù)行:selectdistinctdeptno,jobfromemp;使用別名格式:列名名或名別名如empno,sal*12“年工資”
from或empno,sal*12as“年資”fromemp;注意:1、如果名中使用殊字符,或者就強(qiáng)制小寫敏感或有空格時,都以通為別名加加引號實(shí)現(xiàn)2、here子中能用別名。值:空、空或空格任包都字進(jìn)連接運(yùn)算到就、如查詢null值:使用null*fromempherecommisnull;*fromempherecommnotnull;通配符使用通符進(jìn)行糊查詢:件如:查詢名字以開頭的員:select*fromemphereenamelike基本查詢使用邏輯作指多個查詢件selectempno,ename,job,salfromemphereename='SMITH’在條件中使用如:查詢FORT,KING的員號、作薪水selectempno,ename,job,salfromemphereenamein('SMITH','FORD','KING');在件中使用een…:selectempno,ename,job,salfromempheresaleen1000and2000;注意:數(shù)據(jù)庫執(zhí)行語句就是從右到左的順,以盡可能把最優(yōu)化條件寫右邊?;静樵儭判蚣褂胋y子句行排序排序類型兩種序、降序。數(shù)字、日、字符串可以行排序。認(rèn)為就是排序中的最大值。排序方式:按單個列排序select*fromemporderbysaldesc;按多列排序select*fromemporderbysaldesc,empno;按別名排序selectename,sal*12“年薪fromemporderby“年”一次插入條語句select語句句:createtabletable2from要求:目標(biāo)table2不在,因?yàn)樵诓鍟r會自創(chuàng)建table2,并table1中指定字段據(jù)復(fù)制table2中?!璮rom語句形式為insertintotable2(column1,column2)select件from要求:目標(biāo)表已建,且從表查詢來的列類型應(yīng)與中的類型一。nsertinto…value…
unionselectvalue…語句形式:insertintotable2(column1,column2)selectvalue1_1,value1_2unionselectvalue2_1,value2_1union……;作:將行一次性插入到表中。要:目表已創(chuàng)好。常用聚合數(shù)分組查詢GROUPBY件SELECT(條件MAX(果列名AS要查詢的結(jié)果顯示列名FROM名GROUPBY(條件分組查詢—多分組SELECT名條),列名條件,AVG(結(jié)果列名AS要求詢的結(jié)果顯示列名FROM名GROUPBY名條件名條件分組查詢—的用通常是在GROUPBY的后面SELECT名條),列名條件AVG(結(jié)果列名AS平成績FROM名GROUPBY名條件名條件HAVINGavg(結(jié)果列條件分查詢子句從數(shù)據(jù)源中去不符合其搜索件的數(shù)據(jù)GROUPBY子句集數(shù)據(jù)行到各個組中統(tǒng)計(jì)函數(shù)為各個組計(jì)算統(tǒng)計(jì)值子句去不符合其組搜索條件的各數(shù)據(jù)行ORDERBY排序使用序
先
接著1
接著2
最后
withrollup如果子句里只有一個據(jù)加上with關(guān)字的效果就是在查詢結(jié)果的最后一行自動添加一條總數(shù)統(tǒng)計(jì)記錄如果多列分組會進(jìn)行階段性總與(相當(dāng)于“小計(jì)”),最后再為全體記錄統(tǒng)計(jì)一個最終的與相當(dāng)于“總計(jì)”。例件統(tǒng)計(jì)函數(shù)的使用SELECT字段名group_concat([DISTINCT]要段ASC/DESC段[Separator符'])詢聯(lián)聯(lián)—外接—外接—整聯(lián)接、0支持叉接聯(lián)詢叫等連接接語:件SELECTFROM表名INNERJOIN表名ON表名、與表名相的字段=表名、與表名相的字段多表聯(lián)接:SELECT*FROM表INNERJOIN表ON表字段=表字)INNER表表、字段號表、字段*FROM表JOIN表ON表、段號=表、字號INNERJOIN表ON表字段=表字段)INNERJOIN表ONMember、字段號表、字段號SELECTFROM(((表INNERJOIN表ON表字段號=表、字號)INNER表ON表號表號INNER表Member、字號表、號表ONMember、字號表、左接顯表中,并表中表中;右表中不件,就,并且NULL示SQL語法:*on、userid=T2右聯(lián)(join)。顯表中,并表中表中;左表中不符件,中,并且NULL表示SQL語句:*T1rightouterjoinT2on、userid第四:全聯(lián)(llterjoin)。顯示左表、右表兩的所行即左聯(lián)果表右聯(lián)結(jié)果組在一起,然后過濾掉復(fù)的語句:*T2on、serid=T2serid件更新關(guān)聯(lián)數(shù)據(jù)表里的數(shù)據(jù)記錄1.修改關(guān)聯(lián)數(shù)據(jù)表里據(jù)記錄使用pdata命令在一條語句對多個中記錄出修改語法:productpINNERppONp=pp、productIdSETpp、price=pp、price*0、8,p、dateUpdate=WHEREp、dateCreated2刪除關(guān)聯(lián)數(shù)據(jù)表里的數(shù)據(jù)記錄:從數(shù)表表沒有匹的查出來1t1FROMt1t2、idISNULL或t1T2ONt1、id=t2、idIS從兩表找相同錄數(shù)并把表的據(jù)都除掉1t1t2、id=t2、idt1、id=25注意處的中的不能是名件子查詢:單行子查詢指只返回一行列數(shù)據(jù)的子查詢語句。多行子查詢指返回多行數(shù)據(jù)的子查詢多列子查詢在句中使用子查詢子查詢本質(zhì)多個語的套在子詢中使用、all操作Any操符的用any則表示查詢語句就是以子查詢返回的值作為一個范,在此值范圍內(nèi)進(jìn)行查詢,比較操作符聯(lián)合使用表示與子查詢返回的任何值比較為TRUE,則返回TRUE。例子:SELECTs1FROMtable1WHERE>ANY(SELECTs2FROMtable2)在查中返的就的所有列結(jié)果5,12,20),然后中的的值之比較,只要于s2的任何值表為TRUE,符合查條件。件IN就是ANY的別名,二者相同,但I(xiàn)N的別名卻不就是而就是<>SOME。特
如table2為空表則ANY后的結(jié)果為FALSE;如果子查詢返回如(NULL,NULL,NULL)列為空的,則ANY后的果為UNKNOWN。ALL操作:ALL關(guān)字必須在一個較操作符的后面,示子詢返回的所有值較為,則返回例子:SELECTs1FROMtable1WHERE>ALL(SELECTs2FROMtable2)該查會返任結(jié)果因?yàn)閟1中沒比s2所值大值。當(dāng)然該子詢中返回s2的所值您可在子詢添任條以限制回查詢果無需部回NOTIN就是ALL的別名二者相同。特
如table2為空表則ALL的為如果子查詢返回如這種盡管比果都大有空行結(jié)果則ALL后結(jié)為。行子查詢:例:件FROM子查詢FROM查詢就是指的子句作子查詢語,查詢再到子查詢結(jié)果中獲取需要的數(shù)據(jù)語法SELECT、、、子查詢會生一個臨時表由于FROM子句中的每個表必須有一個名稱因此ASname就是必須的。FROM子查詢也稱為衍生數(shù)據(jù)表子查。件詢量子就是查詢的就一值量一個一個符,就是查詢最簡回形式個標(biāo)子查的例:uidORDERBYuidDESCLIMIT在例中子查詢語句SELECTuidFROMuserWHEREstatus=1ORDERBYuidDESCLIMIT1返的是一數(shù)字如際查語為SELECT*FROMarticleWHEREuid=2較用<>=<=<>這些操作對子查詢的標(biāo)量結(jié)果進(jìn)行比較通常子查詢的位置在比較式的右:SELECT*FROMt1WHEREcolumn1=(SELECTMAX(column2)FROMt2)提示對于采用這些操作符之一行的比,查詢必須返回一個標(biāo)量。唯一的例外就是=可與行子查詢同時使用。詢與接很多下效果與連接很類,些特情況下是必用子而不表連的如:SELECT*FROMt1WHEREcolumn1=(SELECTMAX(column2)FROMt2)SELECTarticleCOUNT(*)articlearticle、=t、件與詢與EXISTS子查詢語法如:SELECT、、該語法可以解為:將查詢的,放子詢中做條,根結(jié)果(TRUE或FALSE)來決定詢結(jié)果以保例子件從語句執(zhí)行結(jié)果可以瞧出,article表中第條錄沒有保留,原因就條記錄的據(jù)在子詢中返回的結(jié)果就是。當(dāng)上面的使用時,查詢結(jié)果就表中不在于表中的數(shù)據(jù)記錄。提示
(subquery)只回或因的也以就是SELECT1或其她官方法就際執(zhí)會忽略清因此有區(qū)別。比如果擔(dān)效率問,可進(jìn)行實(shí)際檢驗(yàn)以確定就是否有效率問題。子查往件達(dá)其子詢或者JOIN來替代何優(yōu)需要體問題具體分析。聯(lián)子:關(guān)聯(lián)查詢就指一個含對的引用子查詢該表也顯示在外部詢中。通俗一來講就用了主查的數(shù)據(jù)據(jù)。以一實(shí)際的子來理關(guān)聯(lián)子查詢件將該例與如下語句比較更能瞧出關(guān)聯(lián)子查詢與普通子查詢的區(qū):SELECT*FROMarticleWHEREuidIN(SELECTuidFROMuser)在實(shí)中雖然兩個執(zhí)行后返結(jié)都樣但們實(shí)過就完全一的。者(普通查詢際被行為SELECT*FROMarticleWHEREuidIN(1,2,3)但關(guān)子詢中是無單行查語的。際流大致:
先做部主查;將查詢的值傳子查詢并執(zhí);子詢再將查詢果返回主查,主詢根據(jù)返回結(jié)果完成最終的查詢。這執(zhí)行流程類似于EXISTS子查詢,實(shí)際上某些情況下就聯(lián)子查詢重寫為EXISTS子查詢來執(zhí)行的。子查效件很明顯,一般情況下關(guān)聯(lián)子查詢的效率就是比較低下,實(shí)際上本例中的關(guān)聯(lián)子查詢例子也僅就是為了演示關(guān)聯(lián)子查詢的原理及用法。如果可以的,關(guān)聯(lián)子查詢盡量使用或其她查詢來代替。如本例,使用JOIN來替換的為:SELECTarticle、FROMarticleINNERJOINarticle、=user、uid注意:此只就是了示用JOIN替換關(guān)聯(lián)子查詢的樣例并非表名這種處理就是最優(yōu)處理。件第六章視圖、事務(wù)索引的念就件InnoDB數(shù)就,它包含著對數(shù)據(jù)里所有記錄的引指針。更通俗的數(shù)據(jù)庫引好比就是一本書前面的目錄能加快數(shù)據(jù)庫的查速度。上述SQL語句,在沒有引的情況下數(shù)據(jù)庫會歷全部條數(shù)據(jù)后選擇符條件的而有了相應(yīng)索引之后,數(shù)庫會直接在索中查找符合條件選項(xiàng)果我們把SQL語句成“*FROMarticleWHEREid=2000000”,么您就是希望數(shù)據(jù)庫按照順序讀取完中的了答案注一般數(shù)據(jù)庫默認(rèn)都會為主鍵生成索。索引分為聚簇索引與非聚簇索引兩種聚簇索引就是按照數(shù)據(jù)存放的物理位為順序的而非聚簇索引就不一樣了聚簇索引能提高多行檢索的速度而非聚簇索引對于單行的檢索很快。索引的類型:、通引就是引它沒有,MyIASM中認(rèn)的類型的索引就是我們多數(shù)況下用的索引。件2、唯一引與普通類似不同的就就是索引的值唯一但允許值注意與主鍵不同。如果就是索則列值的組必須一創(chuàng)建方與普引類4、單列索引、多因?yàn)閳?zhí)時MySQL用引會從多件、合索最左前)平時用SQL詢語句一般都有比較多的限制條件所以為了進(jìn)步榨取的效率就要考慮建組合索引。例如上表中針對title與建立一個組合索引:articleADD。建立這樣的組索引其實(shí)就是當(dāng)于分別建立了下面兩組合索引為什么沒有這的組合索引?這就是因MySQL組合索引“最左前綴”的結(jié)果簡單的理解就就是只從最左的開始合并不是只要包含這兩列的查詢都會用到該組合索引如下面的幾個SQL所示:–使用到上面的索引WHREE測試WHREE測試;–不使用上面的索引WHREE索引的優(yōu)化上面在使索的處但過的用引會成用因索也有它的點(diǎn)雖然引大高查速度同時會低新的度如對進(jìn)行INSERT、UPDATE與。為新時不僅存據(jù),還要保存一索件。立引用盤間的引文件。一般情個題不太重但如在一大上建了組合引索引文件的會膨脹很引只是高率一因素如果My有大數(shù)據(jù)量的表,就要時間研建立優(yōu)的索引優(yōu)查語。面是以My索引與優(yōu)件2、索值列只要列中包含有NULL值都將不被含索中復(fù)合索引中只有列有,那么這一對此合引就無的以們數(shù)庫計(jì)不要讓段默值為3、使對如例如如果一CHAR(255)的列如果在個個字內(nèi)多數(shù)值就是惟一的那么就要對整個列進(jìn)行索引。索引不可以提高查詢速度且可以省磁盤空間與操作。4、索MySQL詢只使用一個索引因此如果where子句中經(jīng)使用了引的話那么中列就是不使用引的因此據(jù)庫默認(rèn)排序可以符合要求的情況下要使用排序操;盡不要包含多個列排,果需最好這些創(chuàng)建復(fù)索引。5、like語操作一般情況下不鼓勵使用作如果使用可,如使用就是個問”不會用索引而like”以用索引。6、不要在列上例如:*users將在個行上進(jìn)行運(yùn)算這將導(dǎo)索引失效而進(jìn)全表掃描因此我可以改成selectusers件where,MySQL:<,<=,=,>,>=,between,in,16,
:,,;:雜詢高全,查邏立助戶屏構(gòu)變來響:=||VIEWAS|例:v_empas0、00sec)刪:Dropviewview_name;查詢(跟普樣詢)*查:1、件查瞧視圖的字段定義、字段數(shù)據(jù)類型、就是否為空就是否為主/鍵、默認(rèn)值與額外信息。2、showtablestatuslike視圖名'\G查瞧視圖存儲引擎、創(chuàng)建時間等Comment的值為View表示視圖。3、showcreateview視圖名\G;查視的詳義包括名、建圖語句信。4、select*information_schema、在MySQL中,數(shù)據(jù)庫下的表中儲了所有視圖的定義,通過該詢可以查瞧數(shù)據(jù)庫中所有圖的詳信息。修改圖例子:mysql>alterviewv_empasselectfromemp;QueryOK,0rowsaffected、01sec)修改圖結(jié)構(gòu)即修改所使用的字段名稱(可以隱基表字段名稱:mysql>alterviewv_emp(v1,v2,v3,v4)asselectempno,ename,job,deptnofromQueryOK,rowsaffected、00sec)視圖縮減業(yè)務(wù)邏輯視圖用來隱藏復(fù)雜的業(yè)邏輯從join連接查詢產(chǎn)生一個完一邏輯再基邏通常,完邏邏執(zhí)法存法Merge:合并的行方式每執(zhí)行時候,先我們圖的語句與部詢視圖的語句,混合在一起最終執(zhí)行;臨時表式,每當(dāng)查詢的候,將視圖所用的語句生成一個結(jié)果的臨表,再在當(dāng)前的臨時表內(nèi)進(jìn)行查。指的就是個視圖就是在什么時候執(zhí)行依哪些方式執(zhí)行對于MERGE,會將引用視圖的句的文與視圖義合并起來使得圖定義的某一部取代語的對應(yīng)分。件對于,視圖的結(jié)將被置于臨時表中然后用它執(zhí)行句。對于UNDEFINED,My將選擇所要使用算法。如果可能它傾向于而不就是這是因?yàn)橥ǔ8?而且如果使用了臨時表視圖就是可更新當(dāng)用創(chuàng)建視圖時,mysql默認(rèn)使用一種的處理算,就合并與臨表內(nèi)進(jìn)選擇。注意:盡量使視圖完讀操作圖則需注意,對視圖的改,也就是對表的修改會時生;3、視時不會毀實(shí)體表內(nèi)的數(shù)據(jù)4、果大家做就是外接口,一個數(shù)據(jù)庫多個應(yīng)用針對每一個應(yīng),采用不同的視圖接口。對于ithcheckoption用法總?cè)缦?通過有選項(xiàng)的視圖操基表只是面單表對連表的視圖正尋答案,有以下結(jié)論插的數(shù)據(jù)通過圖夠查出符合否不符合首先圖只作可以詢來數(shù)據(jù)對于查詢不出數(shù)據(jù)即使基表有也不以過圖來作。對于有check要保證update后,數(shù)據(jù)要被視圖詢出來對于有無withcheckoption都一樣4、對于有check要保證后,數(shù)據(jù)要被視圖查詢出來對于沒有子句視圖,使用checkoption就是多的事務(wù)事就是用于保數(shù)據(jù)的一致由一組關(guān)的語成組的語要么全成,要么全部失。如上賬就事來處理用以數(shù)一。事有特通常稱為特性子atomicity一個務(wù)包的所有語是不割元要都做要么都不。一致性):事務(wù)始數(shù)據(jù)庫中的數(shù)據(jù)就是致,事束數(shù)就致的。隔性多并的務(wù)可以立行而不能互干擾。個務(wù)修改的據(jù)未提前,其務(wù)瞧它所更改。久():事務(wù)提后據(jù)庫的變化就會永久的保留下來。件1、事務(wù)的原子性一組事務(wù),要么成功;么撤回。2、穩(wěn)定性有非法數(shù)據(jù)(外鍵約束之類),事撤回。3、隔性事獨(dú)立運(yùn)行。一事務(wù)處理后的結(jié)果影響了其她事務(wù)那么其她務(wù)會撤回。事的100%隔離需要牲速4、可軟、硬潰后數(shù)據(jù)表驅(qū)會利日志文件重構(gòu)修改可靠性高速度不可兼得選項(xiàng)決定么時候吧事保存到志里。開啟務(wù)STARTTRANSACTION或BEGIN提交務(wù)(關(guān)閉事務(wù)COMMIT放棄事務(wù)(關(guān)閉事務(wù)ROLLBACK折SAVEPOINTadqoo_1ROLLBACKSAVEPOINTadqoo_1發(fā)之交之事設(shè)置“自交模SETAUTOCOMMIT=0每條都就是同一個事務(wù)的不同命,之或ROLLBACK隔掉后沒的事系認(rèn)不需等某務(wù)束可直接詢結(jié)果但不能再進(jìn)修刪除。缺點(diǎn):查到結(jié)果可能就是已過的優(yōu)點(diǎn):不要待事結(jié)束可直接查詢結(jié)。件需要用以下模式來設(shè)定鎖定模式1、SELECTLOCKINSHAREMODE(共享鎖查詢到的數(shù)據(jù)就就數(shù)據(jù)在這時刻數(shù)據(jù)其她已commit事務(wù)的結(jié)果,已經(jīng)反應(yīng)到這里了SELECT必須等待,某事結(jié)束后才能執(zhí)行2、SELECTFORUPDATE(排)例如SELECT*FROMtablenameWHEREid<200那么id<200的數(shù)據(jù),被查詢到數(shù)據(jù),都不能再進(jìn)行修改LOCKINSHAREMODE操作一直此事結(jié)束共享鎖它鎖別:在于就是阻斷她客發(fā)出的SELECTLOCKINSHAREMODE命令3、/UPDATE/DELETE所有關(guān)聯(lián)數(shù)據(jù)都會被鎖定加上排它鎖4、防插入鎖例如*FROMtablenameWHEREid>200那么id>200的記錄無法被入5、死鎖自動識死鎖先進(jìn)來進(jìn)程被行,后來的進(jìn)程收到出錯息,并按ROLLBACK方式回滾=n來設(shè)置最長等待時間默認(rèn)就是50秒事務(wù)隔式READ|READCOMMITTED|READ|1、不帶、GLOBAL的SET命令只對下個事務(wù)效2、SETSESSION為當(dāng)前話設(shè)置離模式3、SETGLOBAL為以后新建的所有MYSQL連接設(shè)置隔離模(當(dāng)連接不包括在內(nèi)隔模式件READ離其她事未完成修改未結(jié)果也慮在內(nèi)READ的內(nèi)中,一果READ(默認(rèn)不其她事務(wù)的修改考慮在,無論其她事務(wù)就是否用命令提過同一個事務(wù)中同一返回同一結(jié)果(前提就是本事務(wù)不修改)與READ類似所有的都上了鎖出錯處理根據(jù)出錯信息,執(zhí)行相應(yīng)的處理mysql例的務(wù)理要兩方法1、用來實(shí)現(xiàn)begin開始一事務(wù)rollback滾commit事務(wù)確認(rèn)2、直接用來改變的自動提交模式默認(rèn)是自動提交,也就個就直接行以通過setautocommit=0禁止自動提交setautocommit=1開啟自動提交來現(xiàn)事務(wù)的處理。但注用autocommit=0時候您后所的都將作務(wù)處理直到您用確認(rèn)或結(jié)束,注意當(dāng)您結(jié)束這個務(wù)的同時也開了新的事務(wù)!按第一種方法只將前的做為一個務(wù)只有與類型數(shù)據(jù)表才持事務(wù)處理,其她類型就是不支持的!保:通過保存點(diǎn)機(jī)制用戶可在事里用name命令設(shè)置一些保存點(diǎn),以后用戶在使用tosavepoint結(jié)束事時name之前數(shù)據(jù)保存,之后數(shù)據(jù)保存。件?mysql使用事務(wù)的關(guān)鍵字begin//打開一個事務(wù)commit//提交到數(shù)據(jù)庫rollback//取消操作savepoint//保存,部分取消,部分提交altertype=INNODB//修數(shù)引擎示例如?updatepersonsetname='efgh'whereid=10select*fromrollbackselect*from示例如下?**件deletefrompersonwhereid=21updatepersonsetname='efgh'whereid=10commit/rollback針對上面部分提交,必須用到保存點(diǎn)保存點(diǎn)注意只某點(diǎn)tosavepointp1不某存committoepointp2//錯誤寫法commit把去數(shù)事使例子?setset*to*件件第七章存儲程觸發(fā)器介言SQL語句在執(zhí)行時候需要執(zhí)行,而存儲過程(re)就是一組為了成特定功的,譯中數(shù)(如果該程數(shù))來調(diào)用執(zhí)行它。一個存過程就是一個編程的函數(shù),在據(jù)中建保可以有SQL語句與一些特的控制結(jié)構(gòu)組。當(dāng)希望在不同的用程序或平臺執(zhí)行相同的數(shù)或者封裝特定功時存儲過程就是非常有用的。數(shù)據(jù)庫中的存儲過程可以瞧就是對編程中面向?qū)ο蠓降哪M。它允許控制數(shù)據(jù)的訪問方式。存儲過程通常有以下優(yōu):(1)存儲過增強(qiáng)了SQL言的能與靈活存過程可用流控語句編寫,有很強(qiáng)靈活性,可以完成復(fù)雜的判斷較復(fù)雜運(yùn)算。、存儲程允標(biāo)準(zhǔn)組就是編。存儲程被創(chuàng)后可以在程序中被多次調(diào)用而不必新編寫存儲過的SQL語句且數(shù)據(jù)庫專業(yè)人員可以隨時對存過程進(jìn)修改對應(yīng)用序源代毫無影。、存儲過程能實(shí)較的執(zhí)行。如果一操作的Transaction-SQL代或多次執(zhí)行,儲過程執(zhí)行很多。為存儲過就是譯的。次運(yùn)一個存過程時,優(yōu)器對進(jìn)行優(yōu)并且給存儲在中的行而的語句在次運(yùn)行時要進(jìn)行譯與優(yōu)相對一些。存儲過程能過流。同一個數(shù)據(jù)對象的操(如、修改),如果一操的Transaction-SQL句被組程存儲過,當(dāng)在算調(diào)用該存儲過程時,中的就該調(diào)語句而增流了。存儲程可作為制用。員通執(zhí)行一存儲程的進(jìn)行制,能實(shí)對相應(yīng)的據(jù)的訪問制,了非用戶對數(shù)據(jù)的訪問保了數(shù)據(jù)的。點(diǎn):很一個數(shù)據(jù)庫個數(shù)庫。2、
MySQL程件存過程就是數(shù)據(jù)庫存儲的一個重要的功能,但是MySQL在、以前不持存儲過程使My應(yīng)用上打折扣。好在SQL5、0終開始已經(jīng)支持存儲過程這樣即可大大提高數(shù)據(jù)的處理速度同時也可以提高數(shù)據(jù)庫編程的靈活性。3、創(chuàng)、格存過程創(chuàng)的格CREATEPROCEDURE過程名([過程數(shù)[,、、]])[特性、、、]過程體這先舉個例子
//mysql>CREATEPROCEDUREproc1(OUTsint)->->SELECTCOUNT(*)s->->//mysql>DELIMITER;注:這里注意就是DELIMITER與;兩句DELIMITER就是分割的意思因?yàn)镸y默認(rèn)以";"為分隔符,如我們有聲割符那么編譯把過程當(dāng)SQL句行理則儲程編譯過程會報(bào),所以要事先用鍵申當(dāng)段隔符,這樣SQL才會"當(dāng)做存儲程中的代碼不會執(zhí)行這代碼用了之后要把隔符還原。存儲過根據(jù)需要可會有輸入、出、輸入輸出參數(shù),這里有一個輸出參數(shù),類型就是型,如果有多參數(shù)用","分割開。(3程體開與結(jié)使用與END進(jìn)標(biāo)識。這樣,我們一個MySQL存過就完,是不是很易呢瞧不懂也沒系接下來,我們細(xì)講解、聲件其實(shí),關(guān)于聲明分割符,上面的注解已經(jīng)寫得很清楚,不需要多說,只就是稍微要注意一點(diǎn)的就是:如果就是用SQL的Administrator管工具時,可以接創(chuàng)建,不再需要聲。、數(shù)My存儲過程的參數(shù)用存儲過程的,共有三種參類型,IN,OUT,INOUT,:CREATEPROCEDURE([[INOUT|INOUT]參數(shù)名形、IN入?yún)?shù):表示參數(shù)的值必須調(diào)用存儲過程時指定,在存儲過程中修改該參數(shù)的值不能被返回,為默值參數(shù):值可存儲內(nèi)部變并可回INOUT:調(diào)用時指定,并回意時,應(yīng)別來名。Ⅰ、參例創(chuàng)建
>//mysql>->BEGIN->SELECTp_in;->SETp_in=2;->SELECTp_in;->END;->//>DELIMITER執(zhí)結(jié):
mysql>SET@p_in=1;>+------+|p_in|+------+|1+------+件
+------+|p_in|+------+|2+------+mysql>SELECT@p_in;+-------+|@p_in+-------+|1+-------+以上可以出,雖然在儲程被修改但并不影響_id的值ⅡOUT參數(shù)例子創(chuàng)建:
>//mysql>CREATEPROCEDUREdemo_out_parameter(OUTp_outint)->->SELECT->SET->SELECT->->//>DELIMITER執(zhí)結(jié)果
mysqlSETmysql>CALLsp_demo_out_parameter(@p_out);+-------+|+-------+|NULL+-------+件
+-------+|+-------+|2+-------+mysql>SELECT@p_out;+-------+|+-------+|2|+-------+ⅢINOUT參創(chuàng)建:
>//PROCEDUREdemo_inout_parameter(INOUTp_inoutint)->->SELECT->SET->p_inout;->->>DELIMITER執(zhí)果
mysql>SETt=1;mysql>CALL+---------+|+---------+|1+---------+件
+---------+|p_inout+---------+|2+---------+>+----------+|@p_inout|+----------+|2+----------+、量Ⅰ、定義DECLAREariable_nameariable_name、alu其中,pe的數(shù)據(jù)型如:int,date,例如:
int4000000;DECLARE9、95;DECLAREdateDEFAULTDECLAREl_datetimedatetimeDEFAULT'1999-12-31DECLAREvarchar(255)DEFAULT'ThisnotⅡ、賦值SET變名=表達(dá)式值ariable_namepression、MySQL存儲過程調(diào)用用call與過以個號括需要,入?yún)?shù)參數(shù)括輸參數(shù)輸出數(shù)、輸入輸出參數(shù)。具體的調(diào)用方法可以參瞧上面的例子MySQL存儲件我們像知道一個數(shù)據(jù)庫下面有那些表,我們一般采用show行查瞧。那么我們要查瞧某個數(shù)據(jù)庫下面的存儲過,就是否也可以采用呢?答案就是,我們可以查瞧某個數(shù)據(jù)庫下面的存儲過程,但就是就是令一鐘方式。我們可以用fromsql、wheredb=數(shù)庫名’或者from、whereroutine_schema='數(shù)庫';或者wheredb='數(shù)';進(jìn)行查詢。如果我們想知,某個存儲過程的詳細(xì),那們又該怎么做呢?就是不就是也可以像操作表一樣用describe表名進(jìn)行查瞧?答案是我們以查存儲程的細(xì)但就需要另一方法CREATE數(shù)庫、儲過名就可查瞧前存過程詳細(xì)。6、改ALTERPROCEDURE更改用CREATEPROCEDURE建立的預(yù)先指定存儲過,其不會影響相關(guān)存儲過程或存儲功能。7、除單樣:PROCEDURE從SQL表格中刪除一個或多個存儲過程。條件分語句條件制用根條件執(zhí)行一列語句,包括語與句??梢郧短资褂?。1.IF語句1)IF…語法conditionTHEN件Statements1;ENDIF;2)IF…THEN、ELSE語:conditionTHENStatements1;Statements2;ENDIF;3)IF…THEN語:IFcondition1THENstatement1;ELSEIFcondition2THENstatement2;ELSEIFcondition3THENstatement3;statement4;ENDIF;CASE語句句用于根件個或式個行。行語句前該語句計(jì)算選擇器的值CASE語句使選器字中的表式匹配。語如:CASE選器WHEN達(dá)1THEN行語句1;WHEN達(dá)2THEN行語句2;…WHEN達(dá)NTHEN執(zhí)行句ELSE行語句N+1;ENDCASE;當(dāng)擇器的值子中的達(dá)式等時執(zhí)行對應(yīng)THEN子句部分的語句,可并列存相同的,但是會行情。語還另一形式,即用器而是計(jì)算WHEN子句的個較表達(dá)式找第一為TRUE的達(dá)式,然后應(yīng)的語。語法下WHEN表達(dá)式1THEN行句1;件WHEN表達(dá)式THEN行句…WHEN表達(dá)式THEN行語句ELSE執(zhí)語句ENDCASE;循環(huán)制循環(huán)控制用重執(zhí)行一系列句。循環(huán)結(jié)構(gòu)共有三種型,分別就基環(huán)WHILE循與FOR循環(huán)1.LOOP語句LOOP之間的語句將無限次地執(zhí)行直到循環(huán)被退出,出環(huán)用leave子句語:[loop_label:]LOOPstatement_list[IFconditionTHENLEAVEloop_label;]ENDLOOP[loop_label];其,loop_label表示loop語標(biāo)稱參可以略例使用loop語進(jìn)循值于等于10之前將重復(fù)行環(huán)declareidintdefault0;add_loop:loopsetid=id+1;id>=10thenleaveadd_loop;endif;endloop;件LEAVE語句標(biāo)注的流程控制結(jié)與、、end或一起使用。語法:LEAVElabel;ITERATE語:將執(zhí)行順序轉(zhuǎn)語句段開頭處。可以出現(xiàn)LOOP與句,意就是次環(huán)。語:ITERATE例createprocedureex_iterate()begindeclarep1intdefault0;my_loop:loopsetp1=p1+1;p1<10theniteratemy_loop;elseifp1>10leavemy_loop;endif;select'p1between10and20';endloopmy_loop;end;件REPEAT語句REPEAT語一個件判循環(huán)每次句行之對表式進(jìn)行斷果式真則循環(huán)束則。語:[repeat_label:]REPEATstatement_listUNTILconditionENDREPEAT[repeat_label]例:id值于之會重復(fù)declareidintdefault0;setid=id+1;untilid>=10;endrepeat;WHILE循環(huán)對于循結(jié),如條結(jié)果為TRUE,則執(zhí)行環(huán)內(nèi)語如條件果為FALSE,結(jié)環(huán)執(zhí)行LOOP后的語。語:[while_label:]WHILEconditionDOstatement1;statement2;…ENDWHILE[while_label:];例:id值于之會重復(fù)declareidintdefault0;件whilei<10dosetid=id+1;while;MySQL數(shù)、CHARSET(str)返CONCAT(string2[,、、、])//接字INSTR)//返回首次中出現(xiàn)的位不存在0)轉(zhuǎn)換成小,length)//從中左邊取length個字符LENGTH)//string長度LOAD_FILE()文件讀取內(nèi)(substring,[,start_position])但可指開始置(string2,length,pad)//重復(fù)用加在開頭直到字串長為lengthLTRIM(string2//去除前端空格,count)//重復(fù)次(str在str中用replace_str替換(string2,length在str后用pad補(bǔ)充直到長為RTRIM)除端格)//逐字比兩串小position[,length])//從str的position開始,取個字符注:中理字串時,默認(rèn)第一個字符下標(biāo)為1,即參數(shù)必須大于等于1TRIM([[BOTH|TRAILING]FROM]string2)去除的指UCASE)轉(zhuǎn)成寫//取string2最后length個字符//生成個空格、數(shù)學(xué)絕對值)//十進(jìn)CEILING)向件//進(jìn)轉(zhuǎn)換FLOOR)向取整FORMAT//留數(shù)數(shù)HEX(DecimalNumber)//轉(zhuǎn)十六進(jìn)制注:HEX()中傳字符,則返其碼如返回4142143也可以傳入十進(jìn)制整數(shù),返回其六進(jìn)制編,如返回19LEAST(number,number2、、])最值,denominator)//求余求數(shù)RAND([seed])隨數(shù)ROUND(number])//四舍五入為小數(shù)位]注:返回類型并非均為整數(shù))、期時間類)//time_interval加到date2(datetime2,toTZ)//轉(zhuǎn)時區(qū)()//當(dāng)期CURRENT_TIME()//當(dāng)時CURRENT_TIMESTAMP()//當(dāng)前時戳DATE(datetime)//返回datetime的日期部(date2,d_valued_type)//在中時間,FormatCodes//使用formatcodes格顯DATE_SUBd_type)//在date2上去時DATEDIFF(date1,date2)//兩個差DAY//返回期天DAYNAME(date)//文星期DAYOFWEEK)//期(為期)//中幾EXTRACTFROM)//從中取日期的指定部(year,day//給年及年中的第幾天成串MAKETIME,minute)//生間串MONTHNAME(date)//英文月份)//當(dāng)前間SEC_TO_TIME)//秒數(shù)轉(zhuǎn)成時間STR_TO_DATE,format)//字串成間以format格式顯示TIMEDIFF)//兩個時差TIME_TO_SEC)//時間秒]WEEK(date_time[,start_of_week])//第周件YEAR(datetime)//份DAYOFMONTH(datetime)//月的天//小時LAST_DAY(date)的月的后日期MICROSECOND(datetime)//微秒//月//分回符號負(fù)或平方字符函數(shù)使用例子返回符串第一個符的ASCII值str就是時返回->50->50->數(shù)學(xué)數(shù)例子:返回的絕對->2->32時間期函數(shù)例子返回期就是星期幾星期天星一,星期六ODBC件標(biāo)準(zhǔn))->3觸器觸器就是個殊存過。是事來發(fā)個作這些事件包括、UPDATE、語句。觸發(fā)器可以查詢其她表而且可包含復(fù)雜的語句它們主用滿足雜的業(yè)務(wù)規(guī)則或要求。與存儲過程的區(qū):存儲程需使用CALL語句來調(diào)用而觸發(fā)的執(zhí)行需要使用CALL語句調(diào)用也不要手工動只要當(dāng)個預(yù)定的事件生的時候就會被MySQL自動調(diào)。備注:對觸發(fā)器實(shí)現(xiàn)還很不完善與SP相比,觸發(fā)還遠(yuǎn)沒有熟到可以用于實(shí)際應(yīng)用程序地步。創(chuàng)建觸發(fā)器語法:timeonFOREACHROW其中:time表示發(fā)時間可選值before,after表示觸發(fā)件可選值insert,update,delete表示觸發(fā)器程序體可以使用begin與end作為開始與結(jié)束中間包含多條句。刪除發(fā):件DROPTRIGGER[schema_name]trig_name;舉例:創(chuàng)建一個在表插入記之后更myevent數(shù)據(jù)表的觸發(fā)器。createtrig_insertafterinsertonaccountforeachrowinsertintomyeventvalues(2,'afterinsert');在觸發(fā)代碼中,可通過以方式去訪問當(dāng)前記的各個字段OLD、返回一條現(xiàn)有記錄被改或刪除之前內(nèi)容(update,delete)NEW、columnname返回一條記錄或被修記錄的新內(nèi)容(insert,update)例:將刪除的學(xué)生姓名存入mydel表中。createtriggertr1beforedeleteonstuforeachrowinsertintomyvalues(11,old、sname);查瞧發(fā)器1、查瞧發(fā)信息查瞧前建所觸器息在觸發(fā)器較的況下使用該句很方便2、在triggers表中瞧觸發(fā)器信息觸發(fā)器的定義都存在information_schema數(shù)據(jù)庫的表中,通select語句可以查瞧。select*from、件heretrigger_name='tri_name'\G;件第八章權(quán)限權(quán)限就是指行特定型命令或就是訪問其它對象的權(quán)利。MySQL服務(wù)通過限表控制用數(shù)據(jù)庫訪問權(quán)限表放在mysql據(jù)庫中。存儲賬戶權(quán)限信息的表主有:表user
作是中最的一表允許連接到務(wù)器的賬號信息,面的權(quán)限就是全級的。存儲用戶對某個數(shù)庫的操作權(quán)限決定用能哪個機(jī)存取個數(shù)庫
存了某主機(jī)對數(shù)據(jù)的操權(quán)限配權(quán)表對主上數(shù)級操權(quán)做更細(xì)的控tables_p用對表設(shè)操作權(quán)限columns
用對表的某一設(shè)置權(quán)限件_privprocs_pr以對存過程函數(shù)設(shè)操作限。iv用戶管理MySQL據(jù)庫的安全性,要通過賬戶管理來保證中供許語句用來管理用賬號創(chuàng)普通:語:CREATEUSER用戶名@主名IDENTIFIEDBY
密如user'tom'@'identified't123';注意通過USER創(chuàng)建的用戶沒有任何權(quán)限還需要用GRANT進(jìn)授權(quán)使用語句創(chuàng)建戶:過語句不僅可以創(chuàng)新用戶,還可以創(chuàng)建同件時對用戶授權(quán)GRANT語句就是添加新用戶并權(quán)它們訪問數(shù)庫對的首方。使用語句建新用戶必須有權(quán)限。語法GRANTprivilegesONdbname、TO用@主機(jī)地址BY'][,、[WITHGRANTOPTION];其中GRANT表對建的用戶賦予AN權(quán)限即該用戶可對其她用戶賦予權(quán)限。使用語句創(chuàng)建用戶并授權(quán)示:創(chuàng)一個戶碼予所有權(quán)限,有權(quán)。grantallprivileges‘’totom1@localhostidentifiedby‘t123’withoption;2、戶名密碼對數(shù)據(jù)庫中的所有,有使用、查詢權(quán)。件grantus
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024標(biāo)準(zhǔn)版勞務(wù)外包合同
- 2024財(cái)產(chǎn)信托合同范本范文
- 2024人才培訓(xùn)人才培訓(xùn)合同
- 蘇州科技大學(xué)天平學(xué)院《文學(xué)概論二》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024工程項(xiàng)目代建合同范本
- 蘇州科技大學(xué)天平學(xué)院《水力學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024三方戰(zhàn)略合作合同范本
- 人工智能在城市規(guī)劃中的智能建模應(yīng)用案例考核試卷
- 《游戲策劃案》課件
- 智能醫(yī)療設(shè)備與遠(yuǎn)程診斷服務(wù)考核試卷
- 第一講人民幣匯率與人民幣國際化
- 中心幼兒園精細(xì)化管理
- 《世界的聚落》知識點(diǎn)解析
- 通達(dá)信系統(tǒng)指標(biāo)公式
- 2024中國罕見病行業(yè)趨勢觀察報(bào)告
- 葛洲壩畢業(yè)實(shí)習(xí)報(bào)告
- 《液壓油液》課件
- 男子漢的詩學(xué)
- 膏方課件培訓(xùn)
- 婦產(chǎn)科護(hù)理學(xué)課程教學(xué)大綱
- 創(chuàng)作屬于自己的戲劇舞臺美術(shù)設(shè)計(jì)
評論
0/150
提交評論