MySQL數(shù)據(jù)庫(kù)課件_第1頁(yè)
MySQL數(shù)據(jù)庫(kù)課件_第2頁(yè)
MySQL數(shù)據(jù)庫(kù)課件_第3頁(yè)
MySQL數(shù)據(jù)庫(kù)課件_第4頁(yè)
MySQL數(shù)據(jù)庫(kù)課件_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、v1.0可編輯可修改第一章數(shù)據(jù)庫(kù)簡(jiǎn)介1 .數(shù)據(jù)庫(kù)的概念數(shù)據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),每 個(gè)數(shù)據(jù)庫(kù)都有一個(gè)或多個(gè)不同的 API用于創(chuàng)建,訪問,管理,搜索和復(fù)制所保存 的數(shù)據(jù)。我們也可以將數(shù)據(jù)存儲(chǔ)在文件中,但是在文件中讀寫數(shù)據(jù)速度相對(duì)較慢。所以,現(xiàn)在我們使用關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng) (RDBMS來存儲(chǔ)和管理的大數(shù)據(jù)量。 所謂的關(guān)系型數(shù)據(jù)庫(kù),是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù) 學(xué)概念和方法來處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。RDBMS關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(Relational Database Management System) 的特 點(diǎn)' 八、1 .數(shù)

2、據(jù)以表格的形式出現(xiàn)2 .每行為各種記錄名稱3 .每列為記錄名稱所對(duì)應(yīng)的數(shù)據(jù)域4 .許多的行和列組成一張表單5 .若干的表單組成 databaseRDBMSS語(yǔ)在我們開始學(xué)習(xí)My SQL數(shù)據(jù)庫(kù)前,讓我們先了解下 RDBMS一些術(shù)語(yǔ):數(shù)據(jù)庫(kù):數(shù)據(jù)庫(kù)是一些關(guān)聯(lián)表的集合。.數(shù)據(jù)表:表是數(shù)據(jù)的矩陣。在一個(gè)數(shù)據(jù)庫(kù)中的表看起來像一個(gè)簡(jiǎn)單的電子表格。 歹U: 一列(數(shù)據(jù)元素)包含了相同的數(shù)據(jù),例如郵政編碼的數(shù)據(jù)。行:一行(二元組,或記錄)是一組相關(guān)的數(shù)據(jù),例如一條用戶訂閱的數(shù)據(jù)。冗余:存儲(chǔ)兩倍數(shù)據(jù),冗余可以使系統(tǒng)速度更快。主鍵:主鍵是唯一的。一個(gè)數(shù)據(jù)表中只能包含一個(gè)主鍵。你可以使用主鍵來查詢數(shù) 據(jù)。外鍵:外鍵

3、用于關(guān)聯(lián)兩個(gè)表。復(fù)合鍵:復(fù)合鍵(組合鍵)將多個(gè)列作為一個(gè)索引鍵,一般用于復(fù)合索引。索引:使用索引可快速訪問數(shù)據(jù)庫(kù)表中的特定信息。索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。類似于書籍的目錄。參照完整性:參照的完整性要求關(guān)系中不允許引用不存在的實(shí)體。與實(shí)體完整性是 關(guān)系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性。My SQL數(shù)據(jù)庫(kù)My SQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典 My SQL A吆司開發(fā),目前屬于 Oracle公司。My SQL是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不 同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。My SQ

4、L是開源的,所以你不需要支付額外的費(fèi)用。My SQL支持大型的數(shù)據(jù)庫(kù)??梢蕴幚?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù)。My SQL使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)語(yǔ)言形式。My SQL可以允許于多個(gè)系統(tǒng)上,并且支持多種語(yǔ)言。這些編程語(yǔ)言包括C、C+、Python、Java、Perl、PHP Eiffel 、Ruby和 TCL等。My SQL對(duì)PHP有很好的支持,PHP是目前最流行的 Web開發(fā)語(yǔ)言。My SQL支持大型數(shù)據(jù)庫(kù),支持 5000萬(wàn)條記錄的數(shù)據(jù)倉(cāng)庫(kù),32位系統(tǒng)表文件最大可 支持4GB 64位系統(tǒng)支持最大的表文件為 8TB。My SQL 系My SQL是可以定制的,采用了GPL協(xié)議,你可以修改源碼來開發(fā)自己

5、的統(tǒng)。49第二章My SQL數(shù)據(jù)庫(kù)的安裝與配置1 .所需My SQL安裝包EXE2 .安裝方法步驟圖解 1運(yùn)行安裝程序下一步3 .選才? "Customf自定義安裝,下一步4 .這里可以將不需要的安裝刪除,可以更改安裝目錄,下一步5 .單擊“Install ”按鈕,開始安裝6 .安裝中,耐心等一會(huì)兒7 .這里是詢問你是否要注冊(cè)一個(gè)My的賬號(hào),或是使用已有的賬號(hào)登陸My , 一般不需要了,點(diǎn)選“ SkipSign- Up ,按"Next”略過此步驟。8 .安裝完成出現(xiàn)如下界面現(xiàn)在軟件安裝完成了,出現(xiàn)上面的界面,這里有一個(gè)很好的功能,My SQL配置向?qū)В挥孟蛞郧耙粯?,自己?/p>

6、動(dòng)亂七八糟的配置了,將 "Configure the My SQL Server now"前 面的勾打上,點(diǎn)“Finish ”結(jié)束軟件的安裝并啟動(dòng)My SQL配置向?qū)А? .進(jìn)入配置過程9.選擇配置方式選擇配置方式,"Detailed Configuration(手動(dòng)精確配置)"、"Standard,方便熟悉配置過程Configuration(標(biāo)準(zhǔn)配置)”,我們選擇"Detailed Configuration10 .選擇服務(wù)器類型,"Developer Machine (開發(fā)測(cè)試類,My SQL占用很少資源)"、

7、"Server Machine (服務(wù)器類型,My SQL占用較多資源)"、“Dedicated My SQL Server Machine(專門的數(shù)據(jù)庫(kù)服務(wù)器,My SQL占用所有可用資源)”,大家根據(jù)自己的類型選擇了,一般選“ Server Machine ",不會(huì)太少,也 不會(huì)占滿。11 .選擇My SQL數(shù)據(jù)庫(kù)的大致用途,“M ULTI functional Database(通用多功能型,好)"、“ Tran SacTIONALDatabase Only (服務(wù)器類型,專注于事務(wù)處理,一般)"、" Non - Tran Sa

8、c TIONALDatabase Only (非事務(wù)處理型,較簡(jiǎn)單,主要做一些監(jiān)控、記數(shù)用,對(duì)MYL SAM據(jù)類型的支持僅限于 Non - Tran SacTIONAL),隨自己的用途而選擇了,我這里選擇“ Tran Sac TIONAL Database Only w ,按“ Next”繼續(xù)。12 .對(duì)INNODB Table space進(jìn)行配置,就是為INNODB數(shù)據(jù)庫(kù)文件選擇一個(gè)存儲(chǔ)空間,如果修改了,要記住位置,重裝的時(shí)候要選擇一樣的地方,否則可能會(huì)造成數(shù)據(jù)庫(kù)損壞,當(dāng)然,對(duì)數(shù)據(jù)庫(kù)做個(gè)備份就沒問題了,這里不詳述。我這里沒有修改,使用用默認(rèn)位置,直接按“Next”繼續(xù)fdert m Gy *

9、 Ife IrroOVm M g s tie defajll! stmxiServer kwfiancf Clrgunstioi W zarrfiwui >13.選擇您的網(wǎng)站的一般 MySQL訪問量,“Online Transaction Processing(OLTP)同時(shí)連接的數(shù)目,“Decision Support(DSS)/OLAP ( 20 個(gè)左右)”、5 500個(gè)左右)"、"Manual Setting (手動(dòng)設(shè)置,自己輸一個(gè) 數(shù))",我這里選"Online Transaction Processing(OLTP)”,自己的服務(wù)器,應(yīng)該

10、夠用了,按“Next繼續(xù)14 .是否啟用TCP/IP連接,設(shè)定端口,如果不啟用,就只能在自己的機(jī)器上訪問MySQL數(shù)據(jù)庫(kù)了,我這里啟用,把前面的勾打上,Port Number 3306,在這個(gè)頁(yè)面上,您還可以選擇"啟用標(biāo)準(zhǔn)模式"(Enable StrictMod® ,這樣MySQLB不會(huì)允許細(xì)小的語(yǔ)法錯(cuò)誤。如果您還是個(gè)新手,我建議您取消標(biāo)準(zhǔn)模式以減少麻煩。 但熟悉My SQL以后,盡量使用標(biāo)準(zhǔn)模式,因?yàn)樗梢越档陀泻?shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)的可能性。按“Next”繼續(xù)15 .這個(gè)比較重要,就是對(duì) My SQL默認(rèn)數(shù)據(jù)庫(kù)語(yǔ)言編碼進(jìn)行設(shè)置,第一個(gè)是西文編碼,第二個(gè)是多字節(jié)的 通

11、用utf8編碼,都不是我們通用的編碼,這里選擇第三個(gè),然后在Character Set那里選擇或填入“ GBK , 當(dāng)然也可以用“ gb2312',區(qū)別就是 GBK的字庫(kù)容量大,包括了 gb2312的所有漢字,并且加上了繁體字、 和其它亂七八糟的字一一使用My SQL的時(shí)候,在執(zhí)行數(shù)據(jù)操作命令之前運(yùn)行一次“ SET NAMES GBK;(運(yùn)行一次就行了, GBK以替換為其它值,視這里的設(shè)置而定),就可以正常的使用漢字(或其它文字)了, 否則不能正常顯示漢字。按“Next”繼續(xù)。16 .選擇是否將 My SQL安裝為windows服務(wù),還可以指定 Service Name (服務(wù)標(biāo)識(shí)名稱

12、),是否將 My SQL的bin目錄加入到 Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目錄名,比如連接,“My -UUSER Name -PPASS word;”就可以了,不用指出 My的完整地址,很方便),我這里全部打上了勾,Service Name 不變。按"Next"弼一片 Se-i-iser In&EjMvtforton 陽(yáng)(HyEQl l*Lta*cd- Caniiqur&w已r睜um t0出/1 5_D r-EStancQ1 blS-LlIlAB npIHfow,iWTM.E至匚、Hifi. itif rrtts*

13、wdr- E 5 He 隔裙牛 j-r * EVMndn”.Hjrna:/ Laurzi Ht WtSQ_ Serib a-rUnrrsticB >- Jmkrfhs Hitt liwm riwTf hiTHChaoi th.斗匕5 ti irtddg 幽gmEe f C?史口匕/國(guó)仁打作處:I i" (hr/明 口IH+wx &r 片 El E KBnwxl f.-= =-*±?to£ >17這一步詢問是否要修改默認(rèn)root用戶(超級(jí)管理)的密碼(默認(rèn)為空),"New root password "如果要修改,就在此填入新

14、密碼(如果是重裝,并且之前已經(jīng)設(shè)置了密碼,在這里更改密碼可能會(huì)出錯(cuò),請(qǐng)留空,并將"Modify Security Settings "前面的勾去掉,安裝配置完成后另行修改密碼)," Confirm(再輸一遍)”內(nèi)再填一次,防止輸錯(cuò) 。"Enable root access from remote machines (是否允許 root用戶在其它的機(jī)器上登陸,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“Create An Anonymous Account (新建一個(gè)匿名用戶,匿名用戶可以連接數(shù)據(jù)庫(kù),不能操作數(shù)據(jù),包括查詢)”,一般就不用勾了,

15、設(shè)置完畢,按“ Next”繼續(xù)。vi'iiSQ-Lilance所帖扣間bn知心總18 .確認(rèn)設(shè)置無(wú)誤,如果有誤,按“ Back”返回檢查。按“ Execute”使設(shè)置生效。19 .設(shè)置完畢,按“ Finish ”結(jié)束 MySQL的安裝與配置一一這里有一個(gè)比較常見的錯(cuò)誤,就是不能“Startservice ",一般出現(xiàn)在以前有安裝My SQL的服務(wù)器上,解決的辦法,先保證以前安裝的My SQL服務(wù)器徹底卸載掉了;不行的話,檢查是否按上面一步所說,之前的密碼是否有修改,照上面的操作;如果依然不行,將My SQL安裝目錄下的data文件夾備份,然后刪除,在安裝完成后,將安裝生成的d

16、ata文件夾刪除,備份的data文件夾移回來,再重啟 MySQL服務(wù)就可以了,這種情況下,可能需要將數(shù)據(jù)庫(kù)檢查一下,然后修復(fù)一次,防止數(shù)據(jù)出錯(cuò)。安裝路徑不要帶有中文!也不能有空格括號(hào)之類的,否則就會(huì)遇到下圖顯示的錯(cuò)誤防區(qū)wonEll Emfu»U 修仲一1 F4b-&UHtM>LWnprr *4rmv 中rmfrtfll* e could no4 b» mr,wd arni 疆nt,E M SW>vfFEf (E*JgrMBEr*JL 3*rw Wi/ML trrw到此我們的My SQL安裝配置完成,我們需要測(cè)試My SQL是否真的安裝配置成功。在我們的

17、 CMD命令行下輸入 net start My SQL看是否能啟動(dòng)服務(wù);M£cra&oTtlJiridoui£版本 6-1.7匕阻版權(quán)所有 8> 2009 rtici'osroFt C&i*poi-at ion (> 保宙所有權(quán)利。C: Misersdministi*at&p> netmysql請(qǐng)求的服務(wù)已經(jīng)啟動(dòng)口請(qǐng)翩入HET HELPMSG 2182以獲得更多的幫助。C: MJersAdninistPfttnr?使用工具 NAVI cat Lite for My SQL看是否能夠鏈接到 My SQL數(shù)據(jù)庫(kù)第三章數(shù)據(jù)庫(kù)和表的

18、操作1.SQL語(yǔ)句分類DQL(Data Query Language ,數(shù)據(jù)查詢語(yǔ)言)查詢數(shù)據(jù)庫(kù)中的數(shù)據(jù)SELECTDML (Data Manipulation Language ,數(shù)據(jù)操作語(yǔ)言) 插入、刪除和修改數(shù)據(jù)庫(kù)中的數(shù)據(jù); INSERT UPDATE、DELET等DCL ( Data Control Language ,數(shù)據(jù)控制語(yǔ)言) 用來控制存取許可、存取權(quán)限等; GRANT REVOKED;DDL ( Data Definition Language ,數(shù)據(jù)定義語(yǔ)言) 用來建立數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)對(duì)象和定義其列 CREATE DROP 等事務(wù)控制語(yǔ)言(Tran Sac tional Co

19、ntrol Language, TCL )COMMIT ROLLBACK2.SQL語(yǔ)句書寫規(guī)則書寫SQL語(yǔ)句應(yīng)遵循以下規(guī)則:SQL語(yǔ)句不區(qū)分大小寫字符值和日期值區(qū)分大小寫SQL語(yǔ)句可以寫成一行或多行關(guān)鍵字不能簡(jiǎn)寫或分割于多行子句通常置于單獨(dú)行這樣更具可讀性并便于編輯Tab和縮進(jìn)的使用可以提高程序的可讀性關(guān)鍵字最好大寫,其他詞諸如表名、列名使用小寫3 . SQL中的注釋:SQL標(biāo)準(zhǔn):多行注釋:/* */。單行注釋:-My SQL :“#"4 .數(shù)據(jù)庫(kù)對(duì)象的命名規(guī)則必須以字母開頭可包括數(shù)字和三個(gè)特殊字符(# _ $ )不要使用My SQLB保留字(保留字與關(guān)鍵字My SQL數(shù)據(jù)庫(kù)系統(tǒng)的

20、用戶只 能使用,不能用它來定義表的名稱與字段名)同一 SchemaT的對(duì)象不能同名5 .列類型My SQL支持多種列類型:數(shù)值類型、日期/時(shí)間類型、 字符串(字符)類型My SQL中的數(shù)值數(shù)據(jù)類型:數(shù)值數(shù)據(jù)類型-整數(shù)in Ti m對(duì)或 INTEGERb g mm普通大小的整案.大整數(shù)14748364M21W483647尢符號(hào)的范用的44294騏729 5-922337203685477580B、9223372036884775807無(wú)符號(hào)的愈圍是 0 18446744073709551615(J/ . JtaJ : 1. 事 、工3也不足13- E*T I J jj 'j 'I

21、 J1HnmUU UNSIGNEDiSun有儲(chǔ)字節(jié)描述范圍BrTRgl位字段類型M表示寫中苴的堂歌,范圍為從1和8TINYINTim1很小的整蒙128727無(wú)符號(hào)的亳圍是惘之鉆BOOLc BOOLEANTINNMT囿義聞。值極視為假,非0值視為真.SMALXINT2小的整數(shù)-32760-32767工符號(hào)的范圍導(dǎo)6655 35MEDIUMIN7中筆大小的整數(shù)3-8388600-8383607無(wú)符號(hào)的范圍是076777216數(shù)值數(shù)據(jù)類型-浮點(diǎn)數(shù)類量一下指述范圉FLOW MQ單精度3402 驍 3468E*38 到-1.1754。435%-3gDOUBLE WQ)雙精度-1.767603134623

22、157E+3O85IJ2 225Q3a5£5072C(4E-308DECIMALKHO 或DEC變長(zhǎng) ,嚴(yán)格,整數(shù)晶大位數(shù)為65n小數(shù)最大位數(shù))為 的定點(diǎn)數(shù)3。DECIMAI i-f -i rn I * I JL在內(nèi)部以力日期/時(shí)間類型ES3DATE4日期京府的藥國(guó)力”10060卜。丁到9火牛12-3 VDATETIME8日期和時(shí)阿的堀合SSJc,1000-01-01 00:00:00''9999-12-31 23:59:5 守TIMESTAMP4,19701-01 00:00 001flj'203 8-01-09 03:14:07'TIME3時(shí)間范圍

23、是83出5卬5守到183B:5S嗎9,YEAR(2|4J1兩把或四位格式的 年.勒認(rèn)導(dǎo)匚位格在四位格式中1允許的值是1001到2155和 00CQ.式在兩位言式中,先說的值是7日到89,表示義伯70年到2069年T1/IESTAMP跟時(shí)區(qū)相關(guān),崎人口期時(shí),會(huì)先轉(zhuǎn)換為本地時(shí)區(qū)后存 而取出時(shí),也會(huì)需口期代換為木地扁區(qū)后顯示C字符串類型CHA明胡CHARVRRCHAR做EINARYMVARBNARYfMThYBLOBTIMYTEXTBLOBTEXTM個(gè)固定K度M表示列反魔旭區(qū)是0到255個(gè)字符CHAR(nLM個(gè)變長(zhǎng)對(duì)表示聶人列長(zhǎng)山 Wj!£L05ie5.535附中EIMARY類型柔似于CH

24、AR類夔,但保存二年捌字中字蠟用得不是甘一道嗣字向中L+1為4于VMCHAR類型,但保聲二迸制字欄亍符串而不是抬二步制字花豐L+1最大性度為25823尸看的ELOB?明L+1景大長(zhǎng)度為233型T)不符的TEKT列L+2二例1制大對(duì)象暈大長(zhǎng)度為陌制$住面一D字節(jié)云aLOB利,L+2長(zhǎng)文本幅大區(qū)隕為6工53畀不-1)字行的TEXT列MEDIUM BLOB MEDIUMTEXT LON GE LOB LONGTEXT ENUM(VSETCvr'vZ. jL+3余大長(zhǎng)度海137戶段佃逑一1件節(jié)的EL。即刃記大長(zhǎng)度為13777,215<2-*-1片符的TEXT列*L+3果大長(zhǎng)戔為4 294

25、,9612ss或4GB(?兜-1>字節(jié)的BL0口蚪+3后大k度為4 234,967,205或4G良”7字蔣的TEXT列1或2個(gè)植埋啜七只群有一個(gè)值的芋符車1-&個(gè)校玲,可以官苦或去個(gè)假數(shù)據(jù)庫(kù)的操作查看數(shù)據(jù)庫(kù):show databases;創(chuàng)建數(shù)據(jù)庫(kù):create database if not exists數(shù)據(jù)庫(kù)名;刪除數(shù)據(jù)庫(kù):drop database數(shù)據(jù)庫(kù)名;使用數(shù)據(jù)庫(kù) use數(shù)據(jù)庫(kù)名表的操作顯示當(dāng)前數(shù)據(jù)庫(kù)中已有的數(shù)據(jù)表的信息:show tables;查看數(shù)據(jù)表中各列的信息:DESCRIBE|DESC表名歹U名;查看表的詳細(xì)結(jié)構(gòu):show create table 表名 G;

26、備注:如果不加“ G”參數(shù),顯示的結(jié)果可能非常混亂;加上該參數(shù)可以使結(jié)果更加直觀,易于查看。創(chuàng)建表:CREATE TABLED名(列名列類型,列名列類型);刪除表:DROP TABLED修改表結(jié)構(gòu):增加列ALTER TABLE表名ADD歹U名 歹U類型;修改列類型ALTER TABLE表名MODIFY列名列類型;列改名ALTER TABLE表名CHANGE舊歹U名新列名列類型;刪除列ALTER TABLE表名 DROP 歹U名;更改表名ALTER TABLE 表名 RENAME 新表名;RENAME TABLE1名 TO 新表名;支持一次重命名多個(gè)表。RENAME TABLE old_tabl

27、e1 TO tmp_table,new_table TO old_table,tmp_table TO new_table;表的約束:約束約束用于確保數(shù)據(jù)庫(kù)數(shù)據(jù)滿足特定的商業(yè)規(guī)則。約束是表級(jí)的強(qiáng)制規(guī)定,約束可分為列級(jí)、表級(jí)約束兩種:列級(jí)約束是字段定義的一部分,只能應(yīng)用在一個(gè)列上表級(jí)約束是獨(dú)立于列的定義定義約束的關(guān)鍵字 constraint 。大部分?jǐn)?shù)據(jù)庫(kù)都支持以下五種約束:NOT NULL(非空)如果在列上定義了 not null ,那么當(dāng)插入數(shù)據(jù)時(shí),必須為列提供數(shù)據(jù)。not null約束只能定義在列級(jí);UNIQUE(唯一):當(dāng)定義了唯一約束后,該列值不能是重復(fù)的,但是可以為null。被定義的

28、唯一性約束,會(huì)自動(dòng)建立一個(gè)唯一性的索引;UNIQUE勺束既可以定義在列級(jí),也可以定義在表級(jí);注意:如果字段定義為 UNIQUE勺束時(shí),允許包含多個(gè) NULL值。null 。PRIMARY KEY(主鍵)用于唯一的標(biāo)識(shí)表行的數(shù)據(jù),當(dāng)定義主鍵約束后,該列不但不能重復(fù)而且不能為需要說明的是:一張表最多只能有一個(gè)主鍵,但是可以有多個(gè)unique約束。My SQL中會(huì)自動(dòng)產(chǎn)生主鍵索引;主鍵約束既可以定義在列級(jí),也可以定義在表級(jí);FOREIGN KEY(外鍵)用于定義主表和從表之間的關(guān)系。外鍵約束要定義在從表上,主表則必須具有主鍵約束或是unique約束,當(dāng)定義外鍵約束后,要求外鍵列數(shù)據(jù)必須在主表的主鍵列

29、存在或是為null。一個(gè)表中可以定義多個(gè)外鍵約束;My SQL中會(huì)自動(dòng)產(chǎn)生外鍵鍵索引;外鍵約束既可以定義在列級(jí),也可以定義在表級(jí);CHECK檢查)檢查性約束,檢查輸入的每一個(gè)數(shù)據(jù),只有符合條件的數(shù)據(jù)才允許插入到表中。check表達(dá)式的結(jié)果必須是一個(gè)布爾值check約束既可以定義在列級(jí)也可以定義在表級(jí)。所有的存儲(chǔ)引擎均對(duì) CHECK?句進(jìn)行分析,但是忽略CHECKF句。添加約束可增加或刪除約束,但不能直接修改;可使約束啟用和禁用只要是可以使用表級(jí)約束語(yǔ)法來定義的約束,都可以通過add constraint來增加該約束。語(yǔ)法:ALTER TABLE tableADD CONSTRAINT cons

30、traint_name type (column);非空約束必須使用MODIFY?句增加ALTER TABLE table MODIFY column type not null;添加約束示例給學(xué)生表添加約束:1 .將sid設(shè)為主鍵alter table stu add constraint pk_sid primary key(sid);2 .為sname添加唯一約束alter table stu add constraint uq_sname unique(sname);3 .性別默認(rèn)為男alter table stu modify sex char(2) default '男&#

31、39;注意:默認(rèn)值不是約束,要加默認(rèn)值可以在建表時(shí)添加或修改表結(jié)構(gòu)。4 .性別為非空alter table stu modify sex char(2) not null;5 .給classId 添加外鍵alter table stu add constraint fk_classId foreign key (classId) references classes(classId);刪除定義的約束*:刪除NOT NULL約束> ALTER TABLEMO口IFY 列名 類型:* 刪除UNIQUE約束尸 ALTER TABLE DROP INDEX 悻一約束名:* >刪除PR工MA

32、R丫 KEY約束ALTER TAELE 表名 CROP PRIMARY KEY;* :* 刪除FOREIGN KEV約束> ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名;R (Sw,工刪除定義的約束刪除約束示例:刪除主鍵約束alter table stu drop primary key;注意:如果主鍵列有自增長(zhǎng)列, 必須先刪除自增長(zhǎng),再刪除主鍵:alter table stu changetno tno int(11);刪除not null 約束alter table stu modify sex char(2);刪除唯一約束alter table stu d

33、rop index uq_tname;刪除外鍵約束alter table stu drop foreign key fk_stu_sc;表級(jí)約束和列級(jí)約束列級(jí)定義:是在定義列的同時(shí)定義約束如在classes表定義主鍵約束:create table classes(給約束取名字classId number(2) constraint pk_cid primary key,-cname varchar2(12);表級(jí)定義:是指在定義了所有列后,再定義約束。注意:not null約束只能在列級(jí)上定義。以建立stu表時(shí)定義主鍵約束和外鍵約束為例:creat table stu(sid number(4

34、), sname varchar2(20), classid number(2),constraint pk_sid primary key(sid),constraint uq_sname unique(sname);自動(dòng)增長(zhǎng)和默認(rèn)值*:* AUTO INCREMENT:自動(dòng)增長(zhǎng)人為新的行產(chǎn)生唯一的標(biāo)識(shí)-一個(gè)表只能有一個(gè)AUTCJNCREMENT屬性.且該屬性必須為主鯉 的一部分 AUO_ INCREMENT屬性可以是任何整數(shù)受型*DEF具ULT默認(rèn)值:指定默認(rèn)值CREATE TAELEde|Lt Jd INT FRIMARV KEY AUTO_IWCREMENT.namF VAFCHHR

35、;7O) pdescription VARCHAR(255) DEFAULT '這痂伙很闌.什么也設(shè)留下 兄作業(yè): 創(chuàng)建數(shù)據(jù)庫(kù):school在其中創(chuàng)建表: stu, course, sc添加相應(yīng)的約束信息。第四章數(shù)據(jù)更新操作1課程學(xué)習(xí)目標(biāo):數(shù)據(jù)的增加數(shù)據(jù)的修改數(shù)據(jù)的刪除2.插入數(shù)據(jù)INSERTINSERT 語(yǔ)句用于完成各種向數(shù)據(jù)表中插入數(shù)據(jù)的功能,可以對(duì)列賦值一次 插入一條記錄,也可以根據(jù)select查詢子句獲得的結(jié)果記錄集批量插入指定數(shù) 據(jù)表。語(yǔ)法格式:1 .所有字段都插入:INSERT INTO 表名 VALUES(value1 , value2 , value3);2 .插入部分

36、字段:INSERT INTO 表名(column1,column2,column3,.)VALUES (value1, value2 , value3,.);注意:1>插入空值可以用null ,默認(rèn)值用default。2> 可以使用last_insert_id()函數(shù)獲取上一條insert命令生成的 auto_increment 值。這是一個(gè)面向連接的函數(shù),只對(duì)本次會(huì)話有效。、插入數(shù)據(jù)時(shí)的注意事項(xiàng):注意事項(xiàng)1:每次插入一行數(shù)據(jù),不可能只插入半行或者幾列數(shù)據(jù),因此,插入的數(shù)據(jù)是 否有效將按照整行的完整性的要求來檢驗(yàn);注意事項(xiàng)2:每個(gè)數(shù)據(jù)值的數(shù)據(jù)類型、精度和小數(shù)位數(shù)必須與相應(yīng)的列匹配;

37、注意事項(xiàng)3:如果在設(shè)計(jì)表的時(shí)候就指定了某列不允許為空,則必須插入數(shù)據(jù);注意事項(xiàng)4:插入的數(shù)據(jù)項(xiàng),要求符合檢查約束的要求注意事項(xiàng)5:具有缺省值的列,可以使用DEFAULT缺?。╆P(guān)鍵字來代替插入的數(shù)值;允許為空值的列,可以使用 NULL關(guān)鍵字來插入空值。修改數(shù)據(jù)UPDATEUPDATED句用于修改表中一列或多列的值,使用where子句限制修改的行。語(yǔ)法格式:UPDATE 表名 SET column1=value1,column2=value2,.WHERE 條件;刪除數(shù)據(jù)DELETEDELET曲句向用戶提供了刪除數(shù)據(jù)的功能,同UPDAT曲句一樣限定表中哪些行將被刪除。語(yǔ)法格式:DELETE FRO

38、M 表名WHERE 條件;TRUNCATE TABLE 表名;二者關(guān)系:TRUNCATE TABLED功能上與不帶 WHER打句的DELETE語(yǔ)句相同,二者均刪除表中的全部行。但TRUNCATE TABL速度快,但不可以回滾;DELETE速度慢,但可以回滾。第五章數(shù)據(jù)庫(kù)查詢查詢基本語(yǔ)法(單表查詢):SELECT < 歹|名>FROM <表名WHERE <查詢條件表達(dá)式>ORDER BY <非序的歹U名 >ASC或 DESC查詢?nèi)康男泻土衧elect * from stu;查詢部分的列:select sid, sname, sex, age from

39、stu;查詢滿足條件的行的部分列:select sid, sname ,sex from stu where age=20;SQL操作符算術(shù)運(yùn)算符:+-*/ %如:select sal*12 from emp;關(guān)系運(yùn)算符:><>=<=!=或 <> <=>between, in, like, is null,注意:字符類型不區(qū)分大小寫,binary類型區(qū)分大小寫;如果字符串的后面有空白符,則會(huì)自動(dòng)忽略邏輯運(yùn)算符:and or not, &&, |, !基本查詢?cè)鯓酉貜?fù)行:select distinct deptno , job

40、from emp;使用別名:格式:列名 別名 或列名as 別名如:select empno, sal*12"年工資" from emp;"年工資"from emp;或 select empno, sal*12 as注意:1 .如果別名中使用特殊字符,或者是強(qiáng)制大小寫敏感,或有空格時(shí),都可以通過為別名添加加雙引號(hào)實(shí)現(xiàn)。2 . where子句中不能使用別名。null 值:空值是指不可用、未分配的值空值不等于零或空格任意類型都可以支持空值包括空值的任何算術(shù)表達(dá)式都等于空字符串和null進(jìn)行連接運(yùn)算,得到也是null.如何查詢null值:使用is nullsel

41、ect * from emp where comm is null;select * from emp where comm is not null;通配符使用通配符進(jìn)行模糊查詢:如:查詢名字以S開頭的員工:select * from emp where ename like 'S%'基本查詢使用邏輯操作指定多個(gè)查詢條件select empno,ename,job,sal from empwhere ename ='SMITH ' or ename='FORD'在where條件中使用in :如:查詢SMITH, FORT, KING的員工號(hào)、工作

42、,薪水select empno,ename,job,sal from empwhere ename in('SMITH','FORD','KING');在 where 條件中使用 between and :select empno,ename,job,sal from empwhere sal between 1000 and 2000;注意:數(shù)據(jù)庫(kù)執(zhí)行sql語(yǔ)句時(shí)是從右到左的順序,所以盡可能把最優(yōu)化條件寫右邊?;静樵円慌判蚴褂胦rder by子句進(jìn)行排序:排序的類型為兩種升序 asc、降序desco數(shù)字、日期、字符串可以進(jìn)行排序。NULL認(rèn)為

43、是排序中的最大值。排序方式:按單個(gè)列排序select * from emp order by sal desc;按多列排序select * from emp order by sal desc, empno ;按別名排序select ename,sal*12“年薪" from emp order by"年薪" asc;一次插入多條語(yǔ)句select into 語(yǔ)句語(yǔ)句形式為:create table table2select vale1, value2from table1;要求:目標(biāo)表table2不存在,因?yàn)樵诓迦霑r(shí)會(huì)自動(dòng)創(chuàng)建表table2 ,并將table1中指

44、定字段數(shù)據(jù)復(fù)制到 table2 中。insert into select from語(yǔ)句形式為:insert into table2(column1,column2)select col1,col2from table1;要求:目標(biāo)表table2已創(chuàng)建好,且從table1表查詢出來的列類型應(yīng)與table2中列的類型一致。nsert into select value union select value語(yǔ)句形式為:insert into table2(column1,column2)select value1_1,value1_2 unionselect value2_1,value2_1 un

45、ion作用:將多行值一次性插入到表中要求:目標(biāo)表table2已創(chuàng)建好。常用的聚合函數(shù):MAX (colLiim) MIN (c oluim) COUNT (求) COUNT (co lumn)列中最大值列中最小值 表中行的數(shù)量 列不為null的行數(shù)COUNT (distinct csolunin)SUM (column)AVG (cQlum)Siu皿指定列中相異值的數(shù)量 到申所有值的總和冽中所有值的平均數(shù)分組查詢:GROUP BYSELECT列名(條件),MAX(結(jié)果列名)AS要求查詢的結(jié)果顯示列名FROM表名GROUP BW名(條件)分組查詢一多列分組:SELECT列名1 (條件),列名2

46、(條件),AVG(結(jié)果列名)AS要求查詢的結(jié)果顯示列名FROM表名GROUP BYiJ名1 (條件),列名2 (條件)分組查詢一HAVINGHAVING的使用 HAVING通常是在 GROUP BY勺后面SELECT列名1 (條件),列名2 (條件),AVG(結(jié)果列名)AS平均成績(jī)FROM表名GROUP BYiJ名1 (條件),列名2 (條件)HAVING avg(結(jié)果列名)10條件分組查詢:WHER子句從數(shù)據(jù)源中去掉不符合其搜索條件的數(shù)據(jù)GROUP B什句搜集數(shù)據(jù)行到各個(gè)組中,統(tǒng)計(jì)函數(shù)為各個(gè)組計(jì)算統(tǒng)計(jì)值HAVING子句去掉不符合其組搜索條件的各組數(shù)據(jù)行ORDER BY排序使用順序先 WHER

47、E接著1 GROUP BY 接著2 HAVING 最后 ORDER BYwith rollup如果group by子句里只有一個(gè)數(shù)據(jù)列,加上 with rollup關(guān)鍵字的效果是將在查詢結(jié)果的最后一行將自動(dòng)添加一條總數(shù)統(tǒng)計(jì)記錄。如果按多列分組,將會(huì)進(jìn)行階段性總和(相當(dāng)于“小計(jì)”),最后再為全體記錄統(tǒng)計(jì)一個(gè)最終的總和(相當(dāng)于“總計(jì)”)。例:select sno, count(*),avg(score)from scgroup by sno with rollup;統(tǒng)計(jì)函數(shù)的使用:SELECT字段名,group_concat(DISTINCT要連接的字段Order BY ASC/DESC排序字段S

48、eparator ' 分隔符')多表聯(lián)接查詢內(nèi)聯(lián):INNER JOIN外聯(lián):左外聯(lián)接 (LEFT JOIN)右外聯(lián)接 (RIGHT JOIN)完整外聯(lián)接(FULL JOIN) -My SQL 暫不支持交叉聯(lián)接(CROSS JOIN)內(nèi)聯(lián)查詢:NNER JOINPU做等值連接(2個(gè)表聯(lián)接)SQL語(yǔ)法:SELECT * FROM點(diǎn)名1 INNER JOIN表名2 ON表名1.與表名2相同的 字段二表名2.與表名1相同的字段多表聯(lián)接:SELECT * FROM豉1 INNER JOIN表2 ON表1.字段號(hào)=表2.字段號(hào)) INNER JOIN表3 ON表1.字段號(hào)=表3.字段號(hào)SE

49、LECT * FROM (俵 1 INNER JOIN 表 2 ON 表 1.字段號(hào)=表 2.字段號(hào)) INNER JOIN 表 3 ON 表 1.字段號(hào)=表 3.字段號(hào))INNER JOIN 表 4 ON Member. 字段號(hào)=表4.字段號(hào)SELECT * FROM (俵 1 INNER JOIN 表 2 ON 表 1.字段號(hào)=表 2.字段號(hào)) INNER JOIN 表 3 ON 表 1.字段號(hào)=表 3.字段號(hào))INNER JOIN 表 4 ON Member.字段號(hào)=表4.字段號(hào))INNER JOIN 表5 ON Member.字段號(hào)=表5.字段號(hào)左外聯(lián)接:顯示左表T1中的所有行,并把右

50、表T2中符合條件加到左表T1中;右表T2中不符合條件,就不用加入結(jié)果表中,并且NULLS示。SQL語(yǔ)法:select * from T1 left outer join T2 on =右聯(lián)(right outer join) 。顯示右表T2中的所有行,并把左表T1中符合條件加到右表T2中;左表T1中 不符合條件,就不用加入結(jié)果表中,并且NULLS示SQL®句:select * from T1 right outer join T2 on =第四:全聯(lián)(full outer join) 。顯示左表T1、右表T2兩邊中的所有行,即把左聯(lián)結(jié)果表+右聯(lián)結(jié)果表組合 在一起,然后過濾掉重復(fù)的。S

51、QL®句:select * from T1 full outer join T2 on =更新關(guān)聯(lián)數(shù)據(jù)表里的數(shù)據(jù)記錄1 .修改關(guān)聯(lián)數(shù)據(jù)表里的數(shù)據(jù)記錄使用updata命令在一條SQLf句中對(duì)多個(gè)表中的數(shù)據(jù)記錄做出修改語(yǔ)法:UPDATE product pINNER JOIN productPrice ppON =SET = * ,=CURDATE()WHERE < '2004-01-01'2刪除關(guān)聯(lián)數(shù)據(jù)表里的數(shù)據(jù)記錄:從數(shù)據(jù)表t1里在數(shù)據(jù)表t2里沒有匹配的記錄查找出來并刪除掉 1DELETE t1 FROM t1 LEFT JOIN T2 ON = WHERE I

52、S NULL 或DELETE FROM t1,USING t1 LEFT JOIN T2 ON = WHERE IS NULL從兩個(gè)表中找出相同記錄的數(shù)據(jù)并把兩個(gè)表中的數(shù)據(jù)都刪除掉1DELETE t1,t2 from t1 LEFT JOIN t2 ON = WHERE =25注意此處的delete t1,t2 from 中的t1,t2 不能是別名子查詢:?jiǎn)涡凶硬樵冎钢环祷匾恍蠳列數(shù)據(jù)的子查詢語(yǔ)句。多行子查詢指返回多行數(shù)據(jù)的子查詢多列子查詢?cè)趂rom子句中使用子查詢子查詢的本質(zhì):多個(gè) select語(yǔ)句的嵌套在子查詢中使用any、all操作符Any操作符的使用:any則表示,查詢語(yǔ)句是以子查詢返

53、回的值作為一個(gè)范圍,在此值范圍內(nèi)進(jìn)行查詢,與比較操作符聯(lián)合使用,表示與子查詢返回的任何值比較為 TRUE,則返回 TRUE。例子:SELECT si FROM tablei WHERE si > ANY (SELECT s2 FROM table2)在子查詢中,返回的是table2 的所有s2歹結(jié)果(5,12,20 ),然后將tablei 中的si的值與之進(jìn)行比較,只要大于s2的任何值即表示為TRUE符合查詢 條件。直倒返回結(jié)果如下所示:IN是=ANY的別名,二者相同,但NOTIN的別名卻不是<> ANY而是<> SOME特殊情況如果table2 為空表,則ANY

54、后的結(jié)果為FALSE;如果子查詢返回如(NULL,NULL,NULL)列為空的結(jié)果,則 ANY后的結(jié)果為 UNKNOWNALL操作符:ALL關(guān)鍵字必須接在一個(gè)比較操作符的后面,表示與子查詢返回的所有值比較為TRUE,則返回TRUE例子:SELECT si FROM tablel WHERE si > ALL (SELECT s2 FROM table2)該查詢不會(huì)返回任何結(jié)果,因?yàn)?si中沒有比s2所有值都大的值。當(dāng)然在該例子查詢中,返回了 s2的所有值,您可以在該子查詢中添加任何條件以限制返回的查詢結(jié)果而無(wú)需全部返回。NOT IN是<> ALL的別名,二者相同特殊情況如果table2 為空表,則ALL后的結(jié)果為TRUE;如果子查詢返回如(0,NULL,1) 這種盡管si比返回結(jié)果都大,但有空行的結(jié)果,貝U ALL后的結(jié)果為UNKNOWN行子查詢:例子:artde 夷:aidtitleHQDlt巳ntuid1文章1交章1正交內(nèi)容17文審了正文內(nèi)憲13文章?文章3正文內(nèi)容

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論