




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
PHP5.0程式設計
第11章SQL基本與法介紹講師:紀俊男cnchi@.twPHP5.0程式設計
第11章SQL基本與法介1本章大綱資料庫建立與刪除資料表規(guī)劃資料表建立與刪除資料列新增、修改、刪除正規(guī)化關聯(lián)性更改資料表結(jié)構(gòu)顯示多表格資料總整理本章大綱資料庫建立與刪除2資料庫建立與刪除起始MySQL資料庫查看MySQL服務是否啟動psaux|grepmysql啟動MySQL服務RedHat:/etc/rc.d/init.d/mysqldstart以用戶端登入MySQL伺服器有密碼:mysql–uroot–p無密碼:mysqlMySQL文字型用戶端提示號mysql>資料庫建立與刪除起始MySQL資料庫3資料庫建立與刪除建立資料庫指令CREATEDATABASE資料庫名稱;範例人事資料庫CREATEDATABASEHumanResource;資料庫建立與刪除建立資料庫4資料庫建立與刪除查看資料庫清單格式SHOWDATABASES;範例SHOWDATABASES;資料庫建立與刪除查看資料庫清單5資料庫建立與刪除刪除資料庫格式DROPDATABASE資料庫名稱;範例DROPDATABASEHumanResource;資料庫建立與刪除刪除資料庫6資料庫建立與刪除隨堂練習登入MySQL資料庫伺服器請用psaux檢查MySQL是否已經(jīng)啟動?若沒有,請啟動它。請用mysql登入MySQL伺服器。建立資料庫請用CREATEDATABASE建立HumanResource資料庫。請用SHOWDATABASES檢查HumanResource是否建立成功?刪除資料庫請用DROPDATABASE將HumanResource資料庫刪除看看。請用SHOWDATABASES確認HumanResource資料庫已經(jīng)刪除。還原資料庫請再用CREATEDATABASE將HumanResource資料庫建回來,結(jié)束這次的練習。資料庫建立與刪除隨堂練習7資料表規(guī)劃Employees資料表初步規(guī)劃如下IDNameAddressTelSexBirthdaySalaryMemo整數(shù)(INT)文字(VARCHAR)文字(VARCHAR)文字(VARCHAR)布林值(TINYINT)日期(DATE)浮點數(shù)(FLOAT)文字(TEXT)資料表規(guī)劃Employees資料表初步規(guī)劃如下IDName8資料表規(guī)劃MySQL允許的欄位資料型態(tài)如下整數(shù)
TINYINT 1byteSMALLINT 2bytesMEDIUMINT 3bytesINT/INTEGER 4bytes
BIGINT 8bytes浮點數(shù)
FLOAT 4bytes
DOUBLE/REAL 8bytesDECIMAL 視情況NUMERIC 視情況文字
CHAR(M) MbytesVARCHAR(M) L+1bytes
(L:實際長度M:最大長度<=255)
TEXT L+2bytes
(L:實際長度M:最大長度<216)日期時間
YEAR 1byte
DATE 3bytesTIME 3bytesDATETIME 8bytesTIMESTAMP 4bytes二進位資料
BLOB L+2bytes
(L:真實長度最大長度<=216)列舉與集合
ENUM(‘…’,…) 1or2bytesSET(‘…’,…) 1,2,4,8資料表規(guī)劃MySQL允許的欄位資料型態(tài)如下整數(shù)浮點數(shù)文字日9資料表規(guī)劃課堂討論一個資料表為什麼要有PrimaryKey?電話欄位(Tel)都是數(shù)字,為什麼不用INT要用CHAR?SQL92有為布林值定義專屬的資料型態(tài)嗎?什麼是TEXT型態(tài)?它跟CHAR/VARCHAR有何不同?什麼時候會用到它?如果我要把一張JPG照片直接塞入資料庫中,那我要用哪種欄位型態(tài)來存它?為什麼講師說不建議將二進位資料塞入資料庫中?有什麼替代方案嗎?資料表規(guī)劃課堂討論10資料表建立與刪除建立資料表格式CREATETABLE
資料表名稱(
欄位定義1,
欄位定義2,
…
);欄位定義欄位名稱欄位型態(tài)
[NOTNULL]
[DEFAULT預設值]
[AUTO_INCREMENT]
[PRIMARYKEY]PRIMARYKEY(欄位名稱1,欄位名稱2,…)FOREIGNKEY(欄位名稱1,欄位名稱2,…)UNIQUE(欄位名稱1,欄位名稱2,…)INDEX(欄位名稱1,欄位名稱2,…)CHECK(欄位條件)資料表建立與刪除建立資料表11資料表建立與刪除建立資料表範例欄位名稱欄位型態(tài)特殊要求IDINTPRIMARYKEY,AUTO_INCREMENT,NOTNULLNameVARCHAR(20)NOTNULLAddressVARCHAR(50)TelVARCHAR(20)SexTINYINT(1)NOTNULLBirthdayDATESalaryFLOAT(4)MemoTEXT資料表建立與刪除建立資料表範例欄位名稱欄位型態(tài)特殊要求IDI12資料表建立與刪除建立資料表範例CREATETABLEEmployees(empIDINTPRIMARYKEYAUTO_INCREMENTNOTNULL,empNameVARCHAR(20)NOTNULL,empAddressVARCHAR(50),empTelVARCHAR(20),empSexTINYINT(1)NOTNULL,empBirthdayDATE,empSalaryFLOAT(4),empMemoTEXT);資料表建立與刪除建立資料表範例CREATETABLE13資料表建立與刪除查看資料表清單格式SHOWTABLES;範例秀出剛剛建立的EmployeesSHOWTABLES;資料表建立與刪除查看資料表清單14資料表建立與刪除查看資料表結(jié)構(gòu)格式DESCRIBE資料表名稱;範例DESCRIBEEmployees;資料表建立與刪除查看資料表結(jié)構(gòu)15資料表建立與刪除變更資料表名稱格式RENAMETABLE舊名稱TO新名稱;範例RENAMETABLEEmployeesTOWorkers;資料表建立與刪除變更資料表名稱16資料表建立與刪除刪除資料表格式DROPTABLE資料表名稱;範例DROPTABLEWorkers;資料表建立與刪除刪除資料表17資料表建立與刪除隨堂練習建立資料表請依照講義的示範,造出Employees資料表來。顯示資料表清單請用SHOWTABLES指令看看Employees是否已經(jīng)成功地造出來了。顯示資料表結(jié)構(gòu)請用DESCRIBE指令看看Employees表格的結(jié)構(gòu)是否與我們設定的相同。更改資料表名稱請用RENAMETABLE將Employees資料表改名為Workers刪除資料表請用DROPTABLE指令將Workers資料表刪除。還原請將Employees資料表再度造回來,以結(jié)束這一次的練習。資料表建立與刪除隨堂練習18資料列新增、修改、刪除新增一筆資料列格式INSERTINTO資料表名稱(欄位1,欄位2,…)
VALUES(值1,值2,…);範例INSERTINTOEmployees( empName,empAddress,empTel, empSex,empBirthday,empSalary, empMemo)VALUES( ‘RobertChi’,‘1245ParkAve’,‘(02)23939889’, 1,‘1971-9-14’,35000.0,‘GoodPersonality’);資料列新增、修改、刪除新增一筆資料列INSERTINTO19資料列新增、修改、刪除觀看資料列格式SELECT欄位1,欄位2,…
FROM資料表名稱
[WHERE條件];範例SELECT*
FROMEmployees;資料列新增、修改、刪除觀看資料列20資料列新增、修改、刪除修改資料列格式UPDATE資料表名稱
SET欄位1=值1,欄位2=值2,…
WHERE條件;範例UPDATEEmployees
SETempAddress=‘137-14MainStreet’
WHEREempName=‘RobertChi’;資料列新增、修改、刪除修改資料列21資料列新增、修改、刪除刪除資料列格式DELETEFROM資料表名稱
WHERE條件;範例DELETEFROMEmployees
WHEREempName=‘RobertChi’;資料列新增、修改、刪除刪除資料列22資料列新增、修改、刪除隨堂練習新增資料列請依照講義內(nèi)容,將‘RobertChi’的資料新增到資料庫內(nèi)。觀察新增的資料列請用SELECT指令觀察新增的資料列。請問一下,為什麼我們沒有對empID新增任何資料,卻自動有值出現(xiàn)?修改資料列請用UPDATE指令將RobertChi的住址改為137-14MainStreet刪除資料列請用DELETEFROM指令將RobertChi這筆資料刪除。還原請將次頁資料新增至Employees資料表之內(nèi)為什麼新增的資料列編號不是從1開始?資料列新增、修改、刪除隨堂練習23資料列新增、修改、刪除隨堂練習empNameempAddressempTelempSexempBirthdayempSalaryempMemoRobertChi1245ParkAve(02)2393988911971-9-1435000.0GoodPersonalityGloriaChen34-33MapleAve(02)2766200001979-3-241000.0ManagerLeoWang145-77MainSt(02)2882525211970-5-1245000.0RichGuy資料列新增、修改、刪除隨堂練習empNameempAddre24正規(guī)化為何需要正規(guī)化empNameempAddressempTelempSexempBirthdayempSalaryempMemoRobertChi1245ParkAve(02)2393988911971-9-1435000.0GoodPersonalityGloriaChen34-33MapleAve(02)2766200001979-3-241000.0ManagerLeoWang145-77MainSt(02)2882525211970-5-1245000.0RichGuy(02)23838938無法加入第二個電話或地址正規(guī)化為何需要正規(guī)化empNameempAddressemp25正規(guī)化為何需要正規(guī)化EmployeesempIDempNameempAddr1empAddr2empTel1empTel21RobertChiXxxxxxxx2GloriaChenxxxxxxxx3LeoWangxxxxxxxxxxxxxxxx比較不好的作法缺點:為了少數(shù)人浪費大量空間
無法確定多開兩個欄位是否足夠正規(guī)化為何需要正規(guī)化EmployeesempIDempNam26正規(guī)化為何需要正規(guī)化比較好的作法EmployeesempIDempName1RobertChi2GloriaChen3LeoWangEmpAddraddrIDempIDAddress11XXXXX21XXXXX32XXXXX43XXXXXEmpTeltelIDempIDTel11XXXXX22XXXXX32XXXXX43XXXXX正規(guī)化為何需要正規(guī)化比較好的作法EmployeesempID27正規(guī)化何謂正規(guī)化(Normalization)將資料表依據(jù)一定的程序,分割成利於關聯(lián)式資料庫搜尋,比對,儲存的方法紀子定義:“切割表格”的“標準程序”正規(guī)化何謂正規(guī)化(Normalization)28正規(guī)化正規(guī)化五大步驟第一正規(guī)化(1NF,1stNormalForm)第二正規(guī)化(2NF,2ndNormalForm)第三正規(guī)化(3NF,3rdNormalForm)第四正規(guī)化(4NF,4thNormalForm)第五正規(guī)化(5NF,5thNormalForm)正規(guī)化正規(guī)化五大步驟29使用者編號姓名性別用戶種類地址1電話11魏安富男1公園路10號239398892岳京男1新生南路112號288252523魏笙綿女1濟南路4號,南昌街15號80076666,238389384曾桃燕女1華西街7號223344555駱宏男3瑞安街18號0806094496梅愛姿女6北宜路三段99號85211314正規(guī)化第一正規(guī)化(FirstNormalForm,1NF)定義:一個欄位只能放一種資料錯誤示範錯誤原因:不方便排序、搜尋…等針對欄位運作的動作。使用者編號姓名性別用戶種類地址1電話11魏安富男1公園路1030正規(guī)化第二正規(guī)化(SecondNormalForm,2NF)定義:同一個表格內(nèi)的所有欄位,要與主欄位有意義上的相關錯誤示範錯誤原因:真正需要“員工薪水”的表格,要參考這個值時可能不太方便。正規(guī)化第二正規(guī)化(SecondNormalForm,31正規(guī)化第三正規(guī)化(ThirdNormalForm,3NF)定義:若在同一個表格內(nèi),出現(xiàn)兩個主欄位,各自領導一群意義上相關的附屬欄位,則這種表格要切開。錯誤示範正規(guī)化第三正規(guī)化(ThirdNormalForm,332正規(guī)化第三正規(guī)化正確示範原因:自成一群的欄位,代表他們有自己所代表的意義。獨立出來,才可供其它表格參考之。正規(guī)化第三正規(guī)化正確示範原因:自成一群的欄位,代表他們有自己33正規(guī)化第四正規(guī)化(ForthNormalForm,4NF)定義:若表格中出現(xiàn)有可能“一對多”的情況,則要把表格切開。錯誤示範正規(guī)化第四正規(guī)化(ForthNormalForm,434正規(guī)化第四正規(guī)化正確示範原因:這種一對多的欄位,你永遠也不知道這個“多”到底是多少。留多了不好,留少了不夠。乾脆獨立出去,要多要少任君挑選。正規(guī)化第四正規(guī)化正確示範原因:這種一對多的欄位,你永遠也不知35正規(guī)化第五正規(guī)化(FifthNormalForm,5NF)規(guī)定:將欄位再細分成“常用”與“不常用”兩種,將它們割開。示範:原因:此舉是為了使表格越小越好,以利網(wǎng)路傳輸。如果您的系統(tǒng)沒有網(wǎng)路傳輸?shù)目剂?如:一切系統(tǒng)都在區(qū)域網(wǎng)路內(nèi)執(zhí)行),您可以將表格切到4NF即可。正規(guī)化第五正規(guī)化(FifthNormalForm,536正規(guī)化紀子要訣一人住一房,不得外人藏﹔若能成一家,自行走他方。屋內(nèi)不暇管,各自買一幢﹔莫居三合院,喜住小套房。不要擠有關係我獨大不多管小而美1NF2NF3NF4NF5NF正規(guī)化紀子要訣一人住一房,不要擠有關係我獨大不多管小而美1N37正規(guī)化課堂討論請敘述第一正規(guī)化到第五正規(guī)化的定義正規(guī)化的原因正規(guī)化課堂討論38關聯(lián)性何謂關聯(lián)性(Relationships)所謂關聯(lián)式資料庫,就是利用“正規(guī)化”將表格切開,再用“關聯(lián)性”將表格“黏”回原來的樣子。關聯(lián)性的種類一對一(OnetoOne,1-1)一對多(OnetoMany,1-∞)多對多(ManytoMany,∞-∞)關聯(lián)性何謂關聯(lián)性(Relationships)39關聯(lián)性一對一(OnetoOne,1-1)兩個表格之間的記錄,是一筆對一筆的每一筆“員工”的記錄,只會對應到一筆“員工細部資料”。關聯(lián)性一對一(OnetoOne,1-1)每一筆“員40關聯(lián)性一對多(OnetoMany,1-∞)兩個表格之間的記錄,是一筆對多筆的。每一筆“使用者”表格內(nèi)的資料,都會對應到一或多筆“電話”的資料。關聯(lián)性一對多(OnetoMany,1-∞)每一筆“41關聯(lián)性多對多
(ManytoMany,∞-∞)兩個表格之間的記錄,是多筆對多筆的。關聯(lián)式資料庫做不出來多對多的關係。如果遇到多對多的關係時,就在其中插入一個新表格,使之成為兩個一對多關係。關聯(lián)性多對多
(ManytoMany,∞-∞)42關聯(lián)性經(jīng)過正規(guī)化後的Employees資料表EmployeesempIDempNameempSexempBirthdayempSalaryempMemoEmpAddressaddrIDempIDAddressEmpTelTelIDempIDTel關聯(lián)性經(jīng)過正規(guī)化後的Employees資料表Employ43關聯(lián)性課堂討論請說明關聯(lián)式資料庫如何做多對多的連結(jié)關聯(lián)性課堂討論44更改資料表結(jié)構(gòu)資料表最終長相EmployeesempIDempNameempSexempBirthdayempSalaryempMemoEmpAddressaddrIDempIDAddressEmpTelTelIDempIDTelEmployeesempIDempNameempAddressempTelempSexempBirthdayempSalaryempMemo更改資料表結(jié)構(gòu)資料表最終長相EmployeesempIDem45更改資料表結(jié)構(gòu)資料表變更程序建造新表格CREATETABLEEmpAddressCREATETABLEEmpTel將舊資料轉(zhuǎn)換到新表格刪除舊資料表的兩個欄位更改資料表結(jié)構(gòu)資料表變更程序46更改資料表結(jié)構(gòu)建造新表格CREATETABLE
EmpAddress(addrIDINTPRIMARYKEYAUTO_INCREMENTNOTNULL,empIDINTNOTNULL,AddressVARCHAR(50));CREATETABLE
EmpTel(telIDINTPRIMARYKEYAUTO_INCREMENTNOTNULL,empIDINTNOTNULL,TelVARCHAR(20));更改資料表結(jié)構(gòu)建造新表格CREATETABLEEmpAd47更改資料表結(jié)構(gòu)將舊資料轉(zhuǎn)換到新表格格式INSERTINTO資料表名稱(欄位1,欄位2,…)
SELECT欄位1,欄位2,…
FROM資料表名稱
[WHERE條件];範例INSERTINTOEmpAddress(empID,Address)SELECTempID,empAddressFROMEmployees;INSERTINTOEmpTel(empID,Tel)SELECTempID,empTelFROMEmployees;更改資料表結(jié)構(gòu)將舊資料轉(zhuǎn)換到新表格INSERTINTOE48更改資料表結(jié)構(gòu)刪除舊資料表的欄位格式ALTERTABLE資料表名稱
[ADDCOLUMN欄位定義[FIRST|AFTER欄位]]
[DROPCOLUMN欄位名稱];範例ALTERTABLEEmployeesDROPCOLUMNempAddress;ALTERTABLEEmployeesDROPCOLUMNempTel;更改資料表結(jié)構(gòu)刪除舊資料表的欄位ALTERTABLEEm49更改資料表結(jié)構(gòu)隨堂練習建造新表格請依照講義的指示,造出EmpAddress以及EmpTel兩個表格出來。轉(zhuǎn)換資料請用INSERTINTO~SELECT指令,將原來屬於舊表格的資料轉(zhuǎn)到新表格來。刪除欄位請用ALTERTABLE指令,將兩個不要的empAddress以及empTel欄位刪除。更改資料表結(jié)構(gòu)隨堂練習50顯示多表格資料如何同時顯示多表格的資料利用“連結(jié)”(Join)何謂表格連結(jié)兩個表格間,利用“主鍵(PrimaryKey)”
與“外鍵(ForeignKey)”
將兩個表格黏在一起的方法。表格連結(jié)的種類INNERJOINOUTERJOINLEFTOUTERJOINRIGHTOUTERJOINFULLOUTERJOIN顯示多表格資料如何同時顯示多表格的資料51顯示多表格資料INNERJOIN顯示多表格資料INNERJOIN52顯示多表格資料LEFTOUTERJOIN顯示多表格資料LEFTOUTERJOIN53顯示多表格資料RIGHTOUTERJOIN顯示多表格資料RIGHTOUTERJOIN54顯示多表格資料FULLOUTERJOIN顯示多表格資料FULLOUTERJOIN55顯示多表格資料格式SELECT[表格化名.]欄位1,[表格化名.]欄位2…
FROM 表格名稱1表格化名1
{[INNER]JOIN|LEFTOUTERJOIN
|RIGHTOUTERJOIN|FULLOUTERJOIN}
表格名稱2表格化名2
WHERE表格黏合條件範例將Employees,EmpAddress,EmpTel資料表的內(nèi)容顯示在畫面上SELECTE.empName,A.Address,T.Tel,E.empSex,E.empBirthday,E.empSalaryFROMEmployeesEJOINEmpAddressAJOINEmpTelTWHEREE.empID=A.empIDANDE.empID=T.empID;顯示多表格資料格式SELECTE.empName,A.A56顯示多表格資料隨堂練習請依照前一頁的範例,將Employees,EmpAddress,EmpTel三個表格黏合起來後秀出。顯示多表格資料隨堂練習57總整理資料庫建造資料庫的指令格式為何?刪除資料庫的指令格式為何?資料表建造一個資料表的指令格式為何?用何種指令可以為已存在的資料表更名?如何新增或刪除資料表的某個欄位?格式為何?如何刪除某個資料表?資料如何新增一筆資料?如何將某個表格的資料移轉(zhuǎn)到另一個表格中?如何觀看某個資料表內(nèi)的資料?如何將多個表格黏合在一起?如何更新某一筆資料?如何刪除一筆資料?第一至第五正規(guī)化的作用為何?關聯(lián)式資料庫有哪三種關聯(lián)性?如果出現(xiàn)多對多的關聯(lián)如何解決?總整理資料庫58PHP5.0程式設計
第11章SQL基本與法介紹講師:紀俊男cnchi@.twPHP5.0程式設計
第11章SQL基本與法介59本章大綱資料庫建立與刪除資料表規(guī)劃資料表建立與刪除資料列新增、修改、刪除正規(guī)化關聯(lián)性更改資料表結(jié)構(gòu)顯示多表格資料總整理本章大綱資料庫建立與刪除60資料庫建立與刪除起始MySQL資料庫查看MySQL服務是否啟動psaux|grepmysql啟動MySQL服務RedHat:/etc/rc.d/init.d/mysqldstart以用戶端登入MySQL伺服器有密碼:mysql–uroot–p無密碼:mysqlMySQL文字型用戶端提示號mysql>資料庫建立與刪除起始MySQL資料庫61資料庫建立與刪除建立資料庫指令CREATEDATABASE資料庫名稱;範例人事資料庫CREATEDATABASEHumanResource;資料庫建立與刪除建立資料庫62資料庫建立與刪除查看資料庫清單格式SHOWDATABASES;範例SHOWDATABASES;資料庫建立與刪除查看資料庫清單63資料庫建立與刪除刪除資料庫格式DROPDATABASE資料庫名稱;範例DROPDATABASEHumanResource;資料庫建立與刪除刪除資料庫64資料庫建立與刪除隨堂練習登入MySQL資料庫伺服器請用psaux檢查MySQL是否已經(jīng)啟動?若沒有,請啟動它。請用mysql登入MySQL伺服器。建立資料庫請用CREATEDATABASE建立HumanResource資料庫。請用SHOWDATABASES檢查HumanResource是否建立成功?刪除資料庫請用DROPDATABASE將HumanResource資料庫刪除看看。請用SHOWDATABASES確認HumanResource資料庫已經(jīng)刪除。還原資料庫請再用CREATEDATABASE將HumanResource資料庫建回來,結(jié)束這次的練習。資料庫建立與刪除隨堂練習65資料表規(guī)劃Employees資料表初步規(guī)劃如下IDNameAddressTelSexBirthdaySalaryMemo整數(shù)(INT)文字(VARCHAR)文字(VARCHAR)文字(VARCHAR)布林值(TINYINT)日期(DATE)浮點數(shù)(FLOAT)文字(TEXT)資料表規(guī)劃Employees資料表初步規(guī)劃如下IDName66資料表規(guī)劃MySQL允許的欄位資料型態(tài)如下整數(shù)
TINYINT 1byteSMALLINT 2bytesMEDIUMINT 3bytesINT/INTEGER 4bytes
BIGINT 8bytes浮點數(shù)
FLOAT 4bytes
DOUBLE/REAL 8bytesDECIMAL 視情況NUMERIC 視情況文字
CHAR(M) MbytesVARCHAR(M) L+1bytes
(L:實際長度M:最大長度<=255)
TEXT L+2bytes
(L:實際長度M:最大長度<216)日期時間
YEAR 1byte
DATE 3bytesTIME 3bytesDATETIME 8bytesTIMESTAMP 4bytes二進位資料
BLOB L+2bytes
(L:真實長度最大長度<=216)列舉與集合
ENUM(‘…’,…) 1or2bytesSET(‘…’,…) 1,2,4,8資料表規(guī)劃MySQL允許的欄位資料型態(tài)如下整數(shù)浮點數(shù)文字日67資料表規(guī)劃課堂討論一個資料表為什麼要有PrimaryKey?電話欄位(Tel)都是數(shù)字,為什麼不用INT要用CHAR?SQL92有為布林值定義專屬的資料型態(tài)嗎?什麼是TEXT型態(tài)?它跟CHAR/VARCHAR有何不同?什麼時候會用到它?如果我要把一張JPG照片直接塞入資料庫中,那我要用哪種欄位型態(tài)來存它?為什麼講師說不建議將二進位資料塞入資料庫中?有什麼替代方案嗎?資料表規(guī)劃課堂討論68資料表建立與刪除建立資料表格式CREATETABLE
資料表名稱(
欄位定義1,
欄位定義2,
…
);欄位定義欄位名稱欄位型態(tài)
[NOTNULL]
[DEFAULT預設值]
[AUTO_INCREMENT]
[PRIMARYKEY]PRIMARYKEY(欄位名稱1,欄位名稱2,…)FOREIGNKEY(欄位名稱1,欄位名稱2,…)UNIQUE(欄位名稱1,欄位名稱2,…)INDEX(欄位名稱1,欄位名稱2,…)CHECK(欄位條件)資料表建立與刪除建立資料表69資料表建立與刪除建立資料表範例欄位名稱欄位型態(tài)特殊要求IDINTPRIMARYKEY,AUTO_INCREMENT,NOTNULLNameVARCHAR(20)NOTNULLAddressVARCHAR(50)TelVARCHAR(20)SexTINYINT(1)NOTNULLBirthdayDATESalaryFLOAT(4)MemoTEXT資料表建立與刪除建立資料表範例欄位名稱欄位型態(tài)特殊要求IDI70資料表建立與刪除建立資料表範例CREATETABLEEmployees(empIDINTPRIMARYKEYAUTO_INCREMENTNOTNULL,empNameVARCHAR(20)NOTNULL,empAddressVARCHAR(50),empTelVARCHAR(20),empSexTINYINT(1)NOTNULL,empBirthdayDATE,empSalaryFLOAT(4),empMemoTEXT);資料表建立與刪除建立資料表範例CREATETABLE71資料表建立與刪除查看資料表清單格式SHOWTABLES;範例秀出剛剛建立的EmployeesSHOWTABLES;資料表建立與刪除查看資料表清單72資料表建立與刪除查看資料表結(jié)構(gòu)格式DESCRIBE資料表名稱;範例DESCRIBEEmployees;資料表建立與刪除查看資料表結(jié)構(gòu)73資料表建立與刪除變更資料表名稱格式RENAMETABLE舊名稱TO新名稱;範例RENAMETABLEEmployeesTOWorkers;資料表建立與刪除變更資料表名稱74資料表建立與刪除刪除資料表格式DROPTABLE資料表名稱;範例DROPTABLEWorkers;資料表建立與刪除刪除資料表75資料表建立與刪除隨堂練習建立資料表請依照講義的示範,造出Employees資料表來。顯示資料表清單請用SHOWTABLES指令看看Employees是否已經(jīng)成功地造出來了。顯示資料表結(jié)構(gòu)請用DESCRIBE指令看看Employees表格的結(jié)構(gòu)是否與我們設定的相同。更改資料表名稱請用RENAMETABLE將Employees資料表改名為Workers刪除資料表請用DROPTABLE指令將Workers資料表刪除。還原請將Employees資料表再度造回來,以結(jié)束這一次的練習。資料表建立與刪除隨堂練習76資料列新增、修改、刪除新增一筆資料列格式INSERTINTO資料表名稱(欄位1,欄位2,…)
VALUES(值1,值2,…);範例INSERTINTOEmployees( empName,empAddress,empTel, empSex,empBirthday,empSalary, empMemo)VALUES( ‘RobertChi’,‘1245ParkAve’,‘(02)23939889’, 1,‘1971-9-14’,35000.0,‘GoodPersonality’);資料列新增、修改、刪除新增一筆資料列INSERTINTO77資料列新增、修改、刪除觀看資料列格式SELECT欄位1,欄位2,…
FROM資料表名稱
[WHERE條件];範例SELECT*
FROMEmployees;資料列新增、修改、刪除觀看資料列78資料列新增、修改、刪除修改資料列格式UPDATE資料表名稱
SET欄位1=值1,欄位2=值2,…
WHERE條件;範例UPDATEEmployees
SETempAddress=‘137-14MainStreet’
WHEREempName=‘RobertChi’;資料列新增、修改、刪除修改資料列79資料列新增、修改、刪除刪除資料列格式DELETEFROM資料表名稱
WHERE條件;範例DELETEFROMEmployees
WHEREempName=‘RobertChi’;資料列新增、修改、刪除刪除資料列80資料列新增、修改、刪除隨堂練習新增資料列請依照講義內(nèi)容,將‘RobertChi’的資料新增到資料庫內(nèi)。觀察新增的資料列請用SELECT指令觀察新增的資料列。請問一下,為什麼我們沒有對empID新增任何資料,卻自動有值出現(xiàn)?修改資料列請用UPDATE指令將RobertChi的住址改為137-14MainStreet刪除資料列請用DELETEFROM指令將RobertChi這筆資料刪除。還原請將次頁資料新增至Employees資料表之內(nèi)為什麼新增的資料列編號不是從1開始?資料列新增、修改、刪除隨堂練習81資料列新增、修改、刪除隨堂練習empNameempAddressempTelempSexempBirthdayempSalaryempMemoRobertChi1245ParkAve(02)2393988911971-9-1435000.0GoodPersonalityGloriaChen34-33MapleAve(02)2766200001979-3-241000.0ManagerLeoWang145-77MainSt(02)2882525211970-5-1245000.0RichGuy資料列新增、修改、刪除隨堂練習empNameempAddre82正規(guī)化為何需要正規(guī)化empNameempAddressempTelempSexempBirthdayempSalaryempMemoRobertChi1245ParkAve(02)2393988911971-9-1435000.0GoodPersonalityGloriaChen34-33MapleAve(02)2766200001979-3-241000.0ManagerLeoWang145-77MainSt(02)2882525211970-5-1245000.0RichGuy(02)23838938無法加入第二個電話或地址正規(guī)化為何需要正規(guī)化empNameempAddressemp83正規(guī)化為何需要正規(guī)化EmployeesempIDempNameempAddr1empAddr2empTel1empTel21RobertChiXxxxxxxx2GloriaChenxxxxxxxx3LeoWangxxxxxxxxxxxxxxxx比較不好的作法缺點:為了少數(shù)人浪費大量空間
無法確定多開兩個欄位是否足夠正規(guī)化為何需要正規(guī)化EmployeesempIDempNam84正規(guī)化為何需要正規(guī)化比較好的作法EmployeesempIDempName1RobertChi2GloriaChen3LeoWangEmpAddraddrIDempIDAddress11XXXXX21XXXXX32XXXXX43XXXXXEmpTeltelIDempIDTel11XXXXX22XXXXX32XXXXX43XXXXX正規(guī)化為何需要正規(guī)化比較好的作法EmployeesempID85正規(guī)化何謂正規(guī)化(Normalization)將資料表依據(jù)一定的程序,分割成利於關聯(lián)式資料庫搜尋,比對,儲存的方法紀子定義:“切割表格”的“標準程序”正規(guī)化何謂正規(guī)化(Normalization)86正規(guī)化正規(guī)化五大步驟第一正規(guī)化(1NF,1stNormalForm)第二正規(guī)化(2NF,2ndNormalForm)第三正規(guī)化(3NF,3rdNormalForm)第四正規(guī)化(4NF,4thNormalForm)第五正規(guī)化(5NF,5thNormalForm)正規(guī)化正規(guī)化五大步驟87使用者編號姓名性別用戶種類地址1電話11魏安富男1公園路10號239398892岳京男1新生南路112號288252523魏笙綿女1濟南路4號,南昌街15號80076666,238389384曾桃燕女1華西街7號223344555駱宏男3瑞安街18號0806094496梅愛姿女6北宜路三段99號85211314正規(guī)化第一正規(guī)化(FirstNormalForm,1NF)定義:一個欄位只能放一種資料錯誤示範錯誤原因:不方便排序、搜尋…等針對欄位運作的動作。使用者編號姓名性別用戶種類地址1電話11魏安富男1公園路1088正規(guī)化第二正規(guī)化(SecondNormalForm,2NF)定義:同一個表格內(nèi)的所有欄位,要與主欄位有意義上的相關錯誤示範錯誤原因:真正需要“員工薪水”的表格,要參考這個值時可能不太方便。正規(guī)化第二正規(guī)化(SecondNormalForm,89正規(guī)化第三正規(guī)化(ThirdNormalForm,3NF)定義:若在同一個表格內(nèi),出現(xiàn)兩個主欄位,各自領導一群意義上相關的附屬欄位,則這種表格要切開。錯誤示範正規(guī)化第三正規(guī)化(ThirdNormalForm,390正規(guī)化第三正規(guī)化正確示範原因:自成一群的欄位,代表他們有自己所代表的意義。獨立出來,才可供其它表格參考之。正規(guī)化第三正規(guī)化正確示範原因:自成一群的欄位,代表他們有自己91正規(guī)化第四正規(guī)化(ForthNormalForm,4NF)定義:若表格中出現(xiàn)有可能“一對多”的情況,則要把表格切開。錯誤示範正規(guī)化第四正規(guī)化(ForthNormalForm,492正規(guī)化第四正規(guī)化正確示範原因:這種一對多的欄位,你永遠也不知道這個“多”到底是多少。留多了不好,留少了不夠。乾脆獨立出去,要多要少任君挑選。正規(guī)化第四正規(guī)化正確示範原因:這種一對多的欄位,你永遠也不知93正規(guī)化第五正規(guī)化(FifthNormalForm,5NF)規(guī)定:將欄位再細分成“常用”與“不常用”兩種,將它們割開。示範:原因:此舉是為了使表格越小越好,以利網(wǎng)路傳輸。如果您的系統(tǒng)沒有網(wǎng)路傳輸?shù)目剂?如:一切系統(tǒng)都在區(qū)域網(wǎng)路內(nèi)執(zhí)行),您可以將表格切到4NF即可。正規(guī)化第五正規(guī)化(FifthNormalForm,594正規(guī)化紀子要訣一人住一房,不得外人藏﹔若能成一家,自行走他方。屋內(nèi)不暇管,各自買一幢﹔莫居三合院,喜住小套房。不要擠有關係我獨大不多管小而美1NF2NF3NF4NF5NF正規(guī)化紀子要訣一人住一房,不要擠有關係我獨大不多管小而美1N95正規(guī)化課堂討論請敘述第一正規(guī)化到第五正規(guī)化的定義正規(guī)化的原因正規(guī)化課堂討論96關聯(lián)性何謂關聯(lián)性(Relationships)所謂關聯(lián)式資料庫,就是利用“正規(guī)化”將表格切開,再用“關聯(lián)性”將表格“黏”回原來的樣子。關聯(lián)性的種類一對一(OnetoOne,1-1)一對多(OnetoMany,1-∞)多對多(ManytoMany,∞-∞)關聯(lián)性何謂關聯(lián)性(Relationships)97關聯(lián)性一對一(OnetoOne,1-1)兩個表格之間的記錄,是一筆對一筆的每一筆“員工”的記錄,只會對應到一筆“員工細部資料”。關聯(lián)性一對一(OnetoOne,1-1)每一筆“員98關聯(lián)性一對多(OnetoMany,1-∞)兩個表格之間的記錄,是一筆對多筆的。每一筆“使用者”表格內(nèi)的資料,都會對應到一或多筆“電話”的資料。關聯(lián)性一對多(OnetoMany,1-∞)每一筆“99關聯(lián)性多對多
(ManytoMany,∞-∞)兩個表格之間的記錄,是多筆對多筆的。關聯(lián)式資料庫做不出來多對多的關係。如果遇到多對多的關係時,就在其中插入一個新表格,使之成為兩個一對多關係。關聯(lián)性多對多
(ManytoMany,∞-∞)100關聯(lián)性經(jīng)過正規(guī)化後的Employees資料表EmployeesempIDempNameempSexempBirthdayempSalaryempMemoEmpAddressaddrIDempIDAddressEmpTelTelIDempIDTel關聯(lián)性經(jīng)過正規(guī)化後的Employees資料表Employ101關聯(lián)性課堂討論請說明關聯(lián)式資料庫如何做多對多的連結(jié)關聯(lián)性課堂討論102更改資料表結(jié)構(gòu)資料表最終長相EmployeesempIDempNameempSexempBirthdayempSalaryempMemoEmpAddressaddrIDempIDAddressEmpTelTelIDempIDTelEmployeesempIDempNameempAddressempTelempSexempBirthdayempSalaryempMemo更改資料表結(jié)構(gòu)資料表最終長相EmployeesempIDem103更改資料表結(jié)構(gòu)資料表變更程序建造新表格CREATETABLEEmpAddressCREATETABLEEmpTel將舊資料轉(zhuǎn)換到新表格刪除舊資料表的兩個欄位更改資料表結(jié)構(gòu)資料表變更程序104更改資料表結(jié)構(gòu)建造新表格CREATETABLE
EmpAddress(addrIDINTPRIMARYKEYAUTO_INCRE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 銀行承兌轉(zhuǎn)讓協(xié)議書
- 轉(zhuǎn)讓個人林地協(xié)議書
- 酒吧玩家股東協(xié)議書
- 采暖調(diào)試運行協(xié)議書
- 冷倉庫租賃合同協(xié)議書
- 高空拋物調(diào)解協(xié)議書
- 購買鏈條技術協(xié)議書
- 青年創(chuàng)作合作協(xié)議書
- 辦公室工位出租協(xié)議書
- 預售資金監(jiān)管協(xié)議書
- 全產(chǎn)業(yè)鏈運營模式
- 《煤礦安全規(guī)程》培訓考試題答案
- 建筑架子工(普通腳手架)操作技能考核標準
- 山推SD16結(jié)構(gòu)原理課件
- 病假醫(yī)療期申請單(新修訂)
- 鉆孔樁鉆孔記錄表(旋挖鉆)
- 660MW機組金屬監(jiān)督項目
- JBK-698CX淬火機數(shù)控系統(tǒng)
- 心理學在船舶安全管理中的應用
- JJF(鄂) 90-2021 電子輥道秤校準規(guī)范(高清版)
- 超星爾雅學習通《今天的日本》章節(jié)測試含答案
評論
0/150
提交評論