版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目5制作員工檔案管理系統(tǒng)項(xiàng)目導(dǎo)入云林科技為了更好地管理員工,將開(kāi)發(fā)一個(gè)員工檔案管理系統(tǒng),唐經(jīng)理把任務(wù)交給技術(shù)部周工程師(以下簡(jiǎn)稱(chēng)周工)來(lái)完成,并提出如下需求:第一,只有管理員用戶(hù)才可以登錄系統(tǒng)后臺(tái)進(jìn)行管理;第二,員工檔案管理系統(tǒng)能實(shí)現(xiàn)員工信息的查看、添加、刪除和修改等功能。員工檔案管理系統(tǒng)界面設(shè)計(jì)如圖5-1所示。圖5-1員工檔案管理系統(tǒng)界面設(shè)計(jì)【項(xiàng)目分析】本項(xiàng)目主要通過(guò)PHP對(duì)MySQL數(shù)據(jù)庫(kù)的操作來(lái)實(shí)現(xiàn)員工檔案管理系統(tǒng)。本項(xiàng)目將學(xué)習(xí)MySQL數(shù)據(jù)庫(kù)基礎(chǔ)、MySQL數(shù)據(jù)庫(kù)的操作和操作MySQL數(shù)據(jù)庫(kù)的常用函數(shù)等內(nèi)容。再綜合運(yùn)用這些知識(shí)來(lái)完成員工檔案管理系統(tǒng)的制作,全面提高綜合編程能力?!局R(shí)目標(biāo)】了解MySQL的特點(diǎn)。熟悉MySQL的操作方式。熟悉使用PHP操作MySQL數(shù)據(jù)庫(kù)的方法?!灸芰δ繕?biāo)】能夠通過(guò)命令操作MySQL數(shù)據(jù)庫(kù)。能夠熟練使用phpMyAdmin圖形化管理工具。能夠使用PHP函數(shù)來(lái)操作MySQL數(shù)據(jù)庫(kù)?!舅刭|(zhì)目標(biāo)】培養(yǎng)愛(ài)國(guó)情懷,增強(qiáng)文化自信。5.1MySQL概述
數(shù)據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)或多個(gè)不同的應(yīng)用程序接口(Application
Program
Interface,API)用于創(chuàng)建、訪問(wèn)、管理、搜索和復(fù)制所保存的數(shù)據(jù),也可以將數(shù)據(jù)存儲(chǔ)在文件中,但是在文件中讀寫(xiě)數(shù)據(jù)的速度相對(duì)較慢。所以,通常使用關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RelationalDatabaseManagementSystem,RDBMS)來(lái)存儲(chǔ)和管理數(shù)據(jù)。所謂的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的特點(diǎn)如下。(1)數(shù)據(jù)以表格的形式出現(xiàn)。(2)每行為各種記錄名稱(chēng)。(3)每列為記錄名稱(chēng)所對(duì)應(yīng)的數(shù)據(jù)域。(4)許多的行和列組成一張表單。(5)若干的表單組成數(shù)據(jù)庫(kù)。MySQL是一個(gè)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典的MySQLAB公司開(kāi)發(fā),目前屬于Oracle公司旗下產(chǎn)品。
MySQL是最流行的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在Web應(yīng)用方面,MySQL是最好的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)之一。MySQL所使用的結(jié)構(gòu)查詢(xún)語(yǔ)言(StructureQueryLanguage,SQL)是用于訪問(wèn)數(shù)據(jù)庫(kù)的常用標(biāo)準(zhǔn)化語(yǔ)言。由于MySQL具有體積小、速度快、總體成本低,尤其是開(kāi)放源代碼等特點(diǎn),一般中小型網(wǎng)站都選擇MySQL作為數(shù)據(jù)庫(kù)。5.1.1MySQL的特點(diǎn)
總的來(lái)說(shuō),MySQL有如下特點(diǎn)。(1)MySQL是開(kāi)源的,不需要支付額外的費(fèi)用。(2)MySQL使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)語(yǔ)言形式。(3)MySQL允許存在于多個(gè)系統(tǒng)上,并且支持多種編程語(yǔ)言。這些編程語(yǔ)言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和TCL等。(4)MySQL對(duì)PHP有很好的支持,PHP是目前流行的Web開(kāi)發(fā)語(yǔ)言。(5)MySQL支持大型數(shù)據(jù)庫(kù),支持擁有5
000萬(wàn)條記錄的數(shù)據(jù)倉(cāng)庫(kù),32位系統(tǒng)表文件最大可支持4GB,64位系統(tǒng)表文件最大可支持8TB。(6)MySQL是可以定制的,采用了通用公共許可證(GeneralPublicLicense,GPL)協(xié)議,可以修改源代碼來(lái)開(kāi)發(fā)自己的MySQL系統(tǒng)。數(shù)據(jù)類(lèi)型定義了可以對(duì)數(shù)據(jù)執(zhí)行的操作、數(shù)據(jù)的含義以及存儲(chǔ)該類(lèi)型值的方式,在MySQL數(shù)據(jù)庫(kù)中,數(shù)據(jù)類(lèi)型也稱(chēng)為字段類(lèi)型或列類(lèi)型。數(shù)據(jù)表中的每個(gè)字段都可以設(shè)置數(shù)據(jù)類(lèi)型。MySQL支持多種數(shù)據(jù)類(lèi)型,大致可以分為3類(lèi):數(shù)值類(lèi)型、日期/時(shí)間類(lèi)型和字符串(字符)類(lèi)型等。5.1.2MySQL數(shù)據(jù)類(lèi)型
1.?dāng)?shù)值類(lèi)型MySQL支持所有標(biāo)準(zhǔn)SQL數(shù)值類(lèi)型。這些類(lèi)型包括嚴(yán)格數(shù)值類(lèi)型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似數(shù)值類(lèi)型(FLOAT、REAL和DOUBLEPRECISION)。關(guān)鍵字INT是INTEGER的同義詞,關(guān)鍵字DEC是DECIMAL的同義詞。
作為標(biāo)準(zhǔn)SQL的擴(kuò)展,MySQL也支持?jǐn)?shù)值類(lèi)型TINYINT、MEDIUMINT和BIGINT。部分?jǐn)?shù)值類(lèi)型的存儲(chǔ)空間和取值范圍如表5-1所示。類(lèi)型存儲(chǔ)空間取值范圍(有符號(hào))取值范圍(無(wú)符號(hào))TINYINT1字節(jié)-128~1270~255SMALLINT2字節(jié)-32
768~32
7670~65
535MEDIUMINT3字節(jié)-8
388
608~8
388
6070~16
777
215INT4字節(jié)-2
147
483
648~2
147
483
6470~4
294
967
295BIGINT8字節(jié)-9
223
372
036
854
775
808~9
223
372
036
854
775
8070~18
446
744
073
709
551
615表5-1
部分?jǐn)?shù)值類(lèi)型的存儲(chǔ)空間和取值范圍2.日期/時(shí)間類(lèi)型日期/時(shí)間類(lèi)型包括DATETIME、DATE、TIMESTAMP、TIME和YEAR等。每個(gè)日期/時(shí)間類(lèi)型都有一個(gè)有效值范圍和一個(gè)“零”值,當(dāng)指定MySQL不能表示的值時(shí)使用“零”值。TIMESTAMP類(lèi)型有專(zhuān)有的自動(dòng)更新特性。日期/時(shí)間類(lèi)型的存儲(chǔ)空間、取值范圍和格式如表5-2所示。類(lèi)型存儲(chǔ)空間取值范圍格式DATE3字節(jié)1000-01-01—9999-12-31YYYY-MM-DDTIME3字節(jié)'-838:59:59'—'838:59:59'HH:MM:SSYEAR1字節(jié)1901—2155YYYYDATETIME8字節(jié)1000-01-0100:00:00—9999-12-3123:59:59YYYY-MM-DDHH:MM:SSTIMESTAMP4字節(jié)1970-01-0100:00:00—2037年某時(shí)YYYYMMDDHHMMSS表5-2
日期/時(shí)間類(lèi)型的存儲(chǔ)空間、取值范圍和格式3.字符串類(lèi)型字符串類(lèi)型包括CHAR、VARCHAR、TINYBLOB、TINYTEXT、BLOB、TEXT和MEDIUMBLOB等。字符串類(lèi)型的大小和用途如表5-3所示。類(lèi)型大小/字節(jié)用途CHAR0~255定長(zhǎng)字符串VARCHAR0~65
535變長(zhǎng)字符串TINYBLOB0~255不超過(guò)255個(gè)字符的二進(jìn)制字符串TINYTEXT0~255短文本字符串BLOB0~65
535二進(jìn)制形式的長(zhǎng)文本數(shù)據(jù)TEXT0~65
535長(zhǎng)文本數(shù)據(jù)MEDIUMBLOB0~16
777
215二進(jìn)制形式的中等長(zhǎng)度文本數(shù)據(jù)MEDIUMTEXT0~16
777
215中等長(zhǎng)度文本數(shù)據(jù)LONGBLOB0~4
294
967
295二進(jìn)制形式的極大文本數(shù)據(jù)LONGTEXT0~4
294
967
295極大文本數(shù)據(jù)表5-3
字符串類(lèi)型的大小和用途BLOB是一個(gè)二進(jìn)制類(lèi)型的大對(duì)象,可以容納可變數(shù)量的數(shù)據(jù)。MySQL有4種BLOB類(lèi)型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它們只是可容納值的最大長(zhǎng)度不同。有4種TEXT類(lèi)型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT,分別對(duì)應(yīng)4種BLOB類(lèi)型,有相同的最大長(zhǎng)度和存儲(chǔ)需求。5.2.1啟動(dòng)和關(guān)閉MySQL服務(wù)器
進(jìn)行MySQL數(shù)據(jù)庫(kù)操作之前需要啟動(dòng)MySQL服務(wù)器,完成MySQL數(shù)據(jù)庫(kù)操作之后需要關(guān)閉MySQL服務(wù)器,以節(jié)約系統(tǒng)資源。1.啟動(dòng)MySQL服務(wù)器進(jìn)行MySQL數(shù)據(jù)庫(kù)操作之前需要啟動(dòng)MySQL服務(wù)器。5.2
使用命令行操作MySQL(1)從Windows命令行啟動(dòng)MySQL服務(wù)器
可以從命令行手動(dòng)啟動(dòng)MySQL服務(wù)器,這可以在任何版本的Windows中實(shí)現(xiàn)。具體操作是:依次單擊“開(kāi)始”→“附件”,右擊“命令提示符”,在彈出的快捷菜單中選擇“以管理員身份運(yùn)行”命令,在彈出的窗口中輸入“netstartmysql57”命令,按“Enter”鍵后會(huì)看到MySQL服務(wù)器的啟動(dòng)信息,如圖5-2所示。(2)以Windows服務(wù)方式啟動(dòng)MySQL服務(wù)器
在Windows系列版本中,一般都將MySQL服務(wù)器安裝為Windows服務(wù),當(dāng)Windows啟動(dòng)、停止時(shí),MySQL也自動(dòng)啟動(dòng)、停止。2.關(guān)閉MySQL服務(wù)器
完成MySQL數(shù)據(jù)庫(kù)操作之后需要關(guān)閉MySQL服務(wù)器,以節(jié)約系統(tǒng)資源。(1)從Windows命令行關(guān)閉MySQL服務(wù)器
可以從命令行手動(dòng)關(guān)閉MySQL服務(wù)器,這可以在任何版本的Windows中實(shí)現(xiàn)。
具體操作是:依次單擊“開(kāi)始”→“附件”,右擊“命令提示符”,從彈出的快捷菜單中選擇“以管理員身份運(yùn)行”命令,在彈出的窗口中輸入“netstopmysql57”,按“Enter”鍵后會(huì)看到MySQL服務(wù)器的關(guān)閉信息,如圖5-3所示。圖5-2
啟動(dòng)MySQL服務(wù)器
圖5-3關(guān)閉MySQL服務(wù)器(2)從Windows服務(wù)中關(guān)閉MySQL服務(wù)器單擊“開(kāi)始”→“控制面板”→“管理工具”,雙擊“服務(wù)”,選中“MySQL57”,再單擊左側(cè)的“停止”按鈕即可關(guān)閉MySQL服務(wù)器。
對(duì)MySQL數(shù)據(jù)庫(kù)的常用操作有連接MySQL服務(wù)器、創(chuàng)建數(shù)據(jù)庫(kù)、查看數(shù)據(jù)庫(kù)、選擇數(shù)據(jù)庫(kù)和刪除數(shù)據(jù)庫(kù)等。5.2.2操作MySQL數(shù)據(jù)庫(kù)
1.連接MySQL服務(wù)器
可用命令行方式連接MySQL服務(wù)器,命令的具體格式如下。mysql-u用戶(hù)名-p密碼-h服務(wù)器IP地址-PMySQL服務(wù)器端口號(hào)-D數(shù)據(jù)庫(kù)名
若MySQL服務(wù)器就是本機(jī),而且默認(rèn)端口為“3306”,那么命令可以簡(jiǎn)化為:mysql-u用戶(hù)名-p密碼要連接項(xiàng)目1中安裝好的MySQL服務(wù)器,具體方法是:依次單擊“開(kāi)始”→“附件”→“命令提示符”,從彈出的窗口中輸入“mysql-uroot-p”,按“Enter”鍵后會(huì)提示輸入密碼,輸入前面自己設(shè)置的密碼,即可連接MySQL服務(wù)器,如圖5-4所示。圖5-4
連接MySQL服務(wù)器2.創(chuàng)建數(shù)據(jù)庫(kù)在創(chuàng)建表之前,需要先創(chuàng)建數(shù)據(jù)庫(kù)。創(chuàng)建數(shù)據(jù)庫(kù)的語(yǔ)法格式如下。CREATEDATABASE數(shù)據(jù)庫(kù)名[[DEFAULT]CHARACTERSETcharset_name|[DEFAULT]COLLATEcollation_name];數(shù)據(jù)庫(kù)只需要?jiǎng)?chuàng)建一次,但是必須在每次啟動(dòng)MySQL會(huì)話時(shí)在使用前先選擇它。還可以在調(diào)用MySQL時(shí)通過(guò)命令行選擇數(shù)據(jù)庫(kù),只需要在提供連接參數(shù)之后指定數(shù)據(jù)庫(kù)名稱(chēng)。3.查看數(shù)據(jù)庫(kù)可以使用SHOWDATABASE命令查看服務(wù)器當(dāng)前存在什么數(shù)據(jù)庫(kù),不同MySQL服務(wù)器上的數(shù)據(jù)庫(kù)列表是不同的,但是很可能有mysql和test數(shù)據(jù)庫(kù)。mysql數(shù)據(jù)庫(kù)是必需的,因?yàn)樗枋隽擞脩?hù)訪問(wèn)權(quán)限,而test是安裝時(shí)創(chuàng)建的一個(gè)測(cè)試數(shù)據(jù)庫(kù),是空數(shù)據(jù)庫(kù),沒(méi)有任何表,也沒(méi)有實(shí)際用途,可將其刪除。請(qǐng)注意,如果沒(méi)有查看數(shù)據(jù)庫(kù)SHOWDATABASES權(quán)限,則不能看見(jiàn)所有數(shù)據(jù)庫(kù)。4.選擇數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)并不表示選定并使用它,所以你必須明確地操作連接它。為了使student成為當(dāng)前的數(shù)據(jù)庫(kù),使用“USE數(shù)據(jù)庫(kù)名”命令就可以切換不同的數(shù)據(jù)庫(kù)了。5.刪除數(shù)據(jù)庫(kù)刪除數(shù)據(jù)庫(kù)可以使用DROP語(yǔ)句,其語(yǔ)法格式如下。DROP{DATABASE|SCHEMA}[IFEXISTS]數(shù)據(jù)庫(kù)名;DROPDATABASE用于取消數(shù)據(jù)庫(kù)中的所用表和取消數(shù)據(jù)庫(kù)。使用此語(yǔ)句時(shí)要非常小心!如果要使用DROPDATABASE,則需要獲得數(shù)據(jù)庫(kù)DROP權(quán)限。IFEXISTS用于防止當(dāng)數(shù)據(jù)庫(kù)不存在時(shí)發(fā)生錯(cuò)誤。對(duì)MySQL數(shù)據(jù)表的常用操作有創(chuàng)建數(shù)據(jù)表、查看數(shù)據(jù)表、查看數(shù)據(jù)表結(jié)構(gòu)、修改數(shù)據(jù)表結(jié)構(gòu)和刪除數(shù)據(jù)表等。1.創(chuàng)建數(shù)據(jù)表數(shù)據(jù)表是存儲(chǔ)信息的容器,信息以二維表的形式存儲(chǔ)于數(shù)據(jù)表中。數(shù)據(jù)表由列和行組成,列也稱(chēng)為字段,每個(gè)字段用于存儲(chǔ)某種數(shù)據(jù)類(lèi)型的信息;行也稱(chēng)為記錄,每條記錄為數(shù)據(jù)表中的一條完整的信息。5.2.3操作MySQL數(shù)據(jù)表
創(chuàng)建并選定數(shù)據(jù)庫(kù)后就可以創(chuàng)建數(shù)據(jù)表,創(chuàng)建數(shù)據(jù)表的語(yǔ)法格式如下。CREATE[TEMPORARY]TABLE[IFNOTEXISTS]tbl_name[(create_definition,...)][table_options][select_statement]CREATETABLE用于創(chuàng)建帶給定名稱(chēng)的表,前提是必須擁有表的CREATE權(quán)限。默認(rèn)的情況是,表被創(chuàng)建到當(dāng)前的數(shù)據(jù)庫(kù)中。如果表已存在,或者如果沒(méi)有當(dāng)前數(shù)據(jù)庫(kù),則會(huì)出現(xiàn)錯(cuò)誤。表名稱(chēng)被指定為db_name.tbl_name,以便在特定的數(shù)據(jù)庫(kù)中創(chuàng)建表。不論是否有當(dāng)前數(shù)據(jù)庫(kù),都可以通過(guò)這種方式創(chuàng)建表。如果使用加引號(hào)的識(shí)別名,則應(yīng)對(duì)數(shù)據(jù)庫(kù)和表名稱(chēng)分別加引號(hào)。例如,'mydb'.'mytbl'是合法的,但'mydb.mytbl'是不合法的。2.查看數(shù)據(jù)表每個(gè)數(shù)據(jù)庫(kù)都可以有多個(gè)數(shù)據(jù)表,查看數(shù)據(jù)表的語(yǔ)法格式如下。SHOW[FULL]TABLES[FROMdb_name][LIKE'pattern']SHOWTABLES列舉了給定數(shù)據(jù)庫(kù)中的非TEMPORARY表。SHOW命令也支持FULL修飾符,這樣SHOWFULLTABLES就可以顯示第二個(gè)輸出列。對(duì)于一個(gè)表,第二列的值為BASETABLE;對(duì)于一個(gè)視圖,第二列的值為VIEW。如果對(duì)一個(gè)表沒(méi)有權(quán)限,則該表不會(huì)在來(lái)自SHOWTABLES的輸出中顯示。3.查看數(shù)據(jù)表結(jié)構(gòu)查看數(shù)據(jù)表結(jié)構(gòu)有兩種方法:DESCRIBE表名;SHOWFIELDSFROM表名;4.修改數(shù)據(jù)表結(jié)構(gòu)若用戶(hù)對(duì)數(shù)據(jù)表的結(jié)構(gòu)不滿意,則可以使用ALTERTABLE命令進(jìn)行修改,ALTERTABLE命令用于修改原有表的結(jié)構(gòu)。例如,可以增加或刪除列、創(chuàng)建或取消索引、修改原有列的類(lèi)型、重新命名列或表,還可以修改表的備注和表的類(lèi)型。修改數(shù)據(jù)表結(jié)構(gòu)的常用用法如下。(1)刪除列ALTERTABLE表名DROP列名稱(chēng)(2)增加列ALTERTABLE表名ADD列名稱(chēng)INTNOTNULL
COMMENT'注釋說(shuō)明'(3)修改列的類(lèi)型信息ALTERTABLE表名CHANGE列名稱(chēng)
新列名稱(chēng)BIGINTNOTNULL
COMMENT'注釋說(shuō)明'(4)重命名列ALTERTABLE表名CHANGE列名稱(chēng)
新列名稱(chēng)BIGINTNOTNULL
COMMENT'注釋說(shuō)明'(5)重命名表ALTERTABLE表名RENAME新表名
(6)刪除表中的主鍵ALTERTABLE表名DROPprimarykey(7)添加主鍵ALTERTABLEsj_resource_chargesADDCONSTRAINTPK_SJ_RESOURCE_CHARGESPRIMARYKEY(resid,resfromid)(8)添加索引ALTERTABLE
sj_resource_chargesaddindexINDEX_NAME(name);(9)添加唯一限制條件索引ALTERTABLEsj_resource_chargesadduniqueemp_name(cardnumber);(10)刪除索引altertabletablenamedropindexemp_name;5.刪除數(shù)據(jù)表刪除數(shù)據(jù)表的語(yǔ)法格式如下。DROP[TEMPORARY]TABLE[IFEXISTS]tbl_name[,tbl_name]...[RESTRICT|CASCADE]DROPTABLE用于取消一個(gè)或多個(gè)表,但必須有每個(gè)表的DROP權(quán)限才可以實(shí)現(xiàn)。使用此語(yǔ)句后,所有的表數(shù)據(jù)和表定義都會(huì)被取消,所以要小心!對(duì)于不存在的表,使用IFEXISTS可防止發(fā)生錯(cuò)誤。當(dāng)使用IFEXISTS時(shí),對(duì)于每個(gè)不存在的表,會(huì)生成一個(gè)警告信息。對(duì)MySQL數(shù)據(jù)表中數(shù)據(jù)常用的操作有添加表數(shù)據(jù)、更新表數(shù)據(jù)、查詢(xún)表數(shù)據(jù)和刪除表數(shù)據(jù)。1.添加表數(shù)據(jù)INSERT語(yǔ)句用于向一個(gè)已有的表中添加新行,其語(yǔ)法格式如下。INSERT[LOW_PRIORITY|DELAYED|HIGH_PRIORITY][IGNORE][INTO]tbl_name[(col_name,...)]VALUES({expr|DEFAULT},...),(...),...[ONDUPLICATEKEYUPDATEcol_name=expr,...]5.2.4操作MySQL數(shù)據(jù)
2.更新表數(shù)據(jù)UPDATE語(yǔ)句用于對(duì)數(shù)據(jù)庫(kù)中單個(gè)表的數(shù)據(jù)進(jìn)行修改,其語(yǔ)法格式如下。UPDATE[LOW_PRIORITY][IGNORE]tbl_nameSETcol_name1=expr1[,col_name2=expr2,...][WHEREwhere_definition][ORDERBY...][LIMITrow_count]3.查詢(xún)表數(shù)據(jù)SELECT語(yǔ)句用來(lái)從數(shù)據(jù)表中檢索信息,其語(yǔ)法格式如下。SELECTwhat_to_selectFROMwhich_tableWHEREconditions_to_satisfy;what_to_select表示想要看到的內(nèi)容,可以是列的列表,或用*表示所有列”。which_table指定想要從中檢索數(shù)據(jù)的表。WHERE子句是可選項(xiàng),如果選擇該項(xiàng),則conditions_to_satisfy指定行必須滿足的檢索條件。(1)選擇所有數(shù)據(jù)SELECT最簡(jiǎn)單的形式是從一個(gè)表中檢索所有數(shù)據(jù),其語(yǔ)法格式如下。SELECT*FROM表名;(2)選擇特殊行檢索整個(gè)表是容易的,只需要從SELECT語(yǔ)句中刪掉WHERE子句。但是一般不想看到整個(gè)表,特別是當(dāng)表變得很大時(shí)。相反,通常對(duì)回答一個(gè)具體的問(wèn)題更感興趣,在這種情況下在想要的信息上進(jìn)行一些限制,可以從表中只選擇特定的行,語(yǔ)法格式如下。SELECT*FROM表名WHERE字段名='要查詢(xún)的值';(3)選擇特殊列如果不想看到表中的所有列,就選擇感興趣的列,用逗號(hào)分開(kāi),語(yǔ)法格式如下。SELECT字段1,字段2FROM表名;(4)排序行可以使用ORDERBY子句將行按某種方式排序,使檢查查詢(xún)輸出更容易,其語(yǔ)法格式如下。SELECT字段1,字段2FROM表名ORDERBY字段;默認(rèn)排序是升序,最小的值在第一位。想要以降序排列,在排序的列名上增加DESC(降序)關(guān)鍵字即可??梢詫?duì)多列進(jìn)行排序,并且可以按不同的方向?qū)Σ煌牧羞M(jìn)行排序。(5)日期計(jì)算MySQL提供了幾個(gè)用來(lái)計(jì)算日期的函數(shù),如計(jì)算年齡或提取日期部分。想要確定每個(gè)人的年齡,可以計(jì)算當(dāng)前日期和出生日期之間的差。如果當(dāng)前日期的日歷年比出生日期的早,則減去一年。以下查詢(xún)顯示了每個(gè)人的出生日期、當(dāng)前日期和年齡,按age排序輸出。SELECTname,birth,CURDATE(),(YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(),5)<RIGHT(birth,5))ASageFROMstu_tableORDERBYage;(6)NULL值操作NULL值是一種不屬于任何類(lèi)型的值。它通常用來(lái)表示“沒(méi)有數(shù)據(jù)”“數(shù)據(jù)未知”“數(shù)據(jù)缺失”“數(shù)據(jù)超出取值范圍”“與本數(shù)據(jù)列無(wú)關(guān)”“與本數(shù)據(jù)列的其他值不同”等多種含義。在許多情況下,NULL值是非常有用的。可以使用ISNULL和ISNOTNULL運(yùn)算符來(lái)判斷列是否為NULL值。SELECT1ISNULL,1ISNOTNULL;(7)模式匹配在有些情況下,模糊查詢(xún)是很有必要的,MySQL提供標(biāo)準(zhǔn)的SQL模式匹配,以及一種基于類(lèi)UNIX的實(shí)用程序如vi、grep和sed的擴(kuò)展正則表達(dá)式模式匹配的格式。SQL模式匹配使用“_”匹配任何單個(gè)字符,使用“%”匹配任意數(shù)目字符。在MySQL中,SQL的模式默認(rèn)是忽略大小寫(xiě)的,使用LIKE或NOTLIKE運(yùn)算符來(lái)實(shí)現(xiàn)是否忽略大小寫(xiě)地區(qū)匹配字符串。(8)計(jì)算行數(shù)在有些情況下,需要計(jì)算有多少符合條件的行。COUNT(*)函數(shù)用于計(jì)算行數(shù)。其語(yǔ)法格式如下。SELECTCOUNT(*)FROM表名;4.刪除表數(shù)據(jù)DELETE語(yǔ)句用于對(duì)數(shù)據(jù)庫(kù)中單個(gè)表的數(shù)據(jù)進(jìn)行刪除,其語(yǔ)法格式如下。DELETE[LOW_PRIORITY][QUICK][IGNORE]FROMtbl_name[WHEREwhere_definition][ORDERBY...][LIMITrow_count]若編寫(xiě)的DELETE語(yǔ)句中沒(méi)有WHERE子句,則所有行都被刪除。若不想知道被刪除的行的數(shù)目,有一個(gè)更快的方法,即使用TRUNCATETABLE。使用MySQL命令行的方式操作數(shù)據(jù)庫(kù)需要對(duì)MySQL和SQL知識(shí)非常熟悉,對(duì)使用者的要求較高,而且如果數(shù)據(jù)庫(kù)的訪問(wèn)量很大,列表中的數(shù)據(jù)讀取就會(huì)相當(dāng)困難。如果使用合適的圖形化工具,MySQL數(shù)據(jù)庫(kù)的管理就會(huì)變得相當(dāng)簡(jiǎn)單。幾乎每個(gè)開(kāi)發(fā)人員都有自己鐘愛(ài)的MySQL管理工具?,F(xiàn)在也有很多圖形化的MySQL管理工具,常用的有MyDBStudio、DBToolsManager、SQLwave和MyWebSQL等,其中最為常用的就是基于Web的phpMyAdmin圖形化管理工具。5.3
phpMyAdmin圖形化管理工具phpMyAdmin是一款使用PHP語(yǔ)言開(kāi)發(fā)的MySQL管理工具,該工具是基于Web跨平臺(tái)的管理程序,并且支持簡(jiǎn)體中文,用戶(hù)可以在官網(wǎng)下載最新版本。phpMyAdmin必須安裝在Web服務(wù)器上才可以使用。在項(xiàng)目1中搭建PHP運(yùn)行環(huán)境時(shí)已經(jīng)安裝好了phpMyAdmin,現(xiàn)在就可以直接使用了。PHP支持與大部分?jǐn)?shù)據(jù)庫(kù)(如SQLServer、Oracle、MySQL等)的交互操作,但與MySQL結(jié)合最好。使用PHP操作MySQL數(shù)據(jù)庫(kù)一般有以下4個(gè)步驟。(1)連接MySQL數(shù)據(jù)庫(kù)。(2)執(zhí)行SQL語(yǔ)句。(3)關(guān)閉結(jié)果集。(4)斷開(kāi)與MySQL數(shù)據(jù)庫(kù)的連接。5.4
使用PHP操作MySQL數(shù)據(jù)庫(kù)要訪問(wèn)并處理數(shù)據(jù)庫(kù),必須先創(chuàng)建到達(dá)數(shù)據(jù)庫(kù)的連接。在PHP中可以使用MySQLI或PDO_MySQL擴(kuò)展兩種方式,使用MySQLI可以很方便地連接并操作MySQL數(shù)據(jù)庫(kù),MySQLI是一種連接和操作數(shù)據(jù)庫(kù)的函數(shù)集合。mysqli_connect()函數(shù)用于打開(kāi)一個(gè)到MySQL數(shù)據(jù)庫(kù)的新連接,返回一個(gè)代表到MySQL數(shù)據(jù)庫(kù)的連接的對(duì)象。語(yǔ)法格式如下。mysqli_connect(host,username,password,dbname,port,socket);參數(shù)說(shuō)明如表5-6所示。5.4.1連接數(shù)據(jù)庫(kù)
參數(shù)說(shuō)明host可選。規(guī)定主機(jī)名或IP地址username可選。規(guī)定MySQL用戶(hù)名password可選。規(guī)定MySQL密碼dbname可選。規(guī)定默認(rèn)使用的數(shù)據(jù)庫(kù)port可選。規(guī)定嘗試連接到MySQL服務(wù)器的端口號(hào)socket可選。規(guī)定Socket或要使用的已命名Pipe表5-6
mysqli_connect()函數(shù)的參數(shù)說(shuō)明PHP連接上MySQL數(shù)據(jù)庫(kù)后就可以進(jìn)行各種操作了,包括添加記錄、修改記錄、刪除記錄、查詢(xún)記錄等,相關(guān)的函數(shù)如下。1.對(duì)數(shù)據(jù)庫(kù)執(zhí)行一次查詢(xún)mysqli_query()函數(shù)執(zhí)行某個(gè)針對(duì)數(shù)據(jù)庫(kù)的查詢(xún),如果執(zhí)行的是查詢(xún)語(yǔ)句,則成功返回資源類(lèi)型(結(jié)果集),失敗返回false;如果執(zhí)行的是操作語(yǔ)句,則成功返回true,失敗返回false。5.4.2數(shù)據(jù)庫(kù)基本操作
語(yǔ)法格式如下。mysqli_query(connection,query,resultmode);參數(shù)說(shuō)明如表5-7所示。參數(shù)說(shuō)明connection必需。規(guī)定要使用的MySQL連接query必需。規(guī)定查詢(xún)字符串resultmode可選。一個(gè)常量,可以是下列值中的任意一個(gè):MYSQLI_USE_RESULT(如果需要檢索大量數(shù)據(jù));MYSQLI_STORE_RESULT(默認(rèn))表5-7
mysqli_query()函數(shù)的參數(shù)說(shuō)明2.以數(shù)組方式返回一行查詢(xún)結(jié)果mysqli_fetch_array()函數(shù)從結(jié)果集中取得一行,并作為關(guān)聯(lián)數(shù)組或索引數(shù)組返回,或二者兼有。該函數(shù)返回的字段名是區(qū)分大小寫(xiě)的。語(yǔ)法格式如下。mysqli_fetch_array(result,resulttype);參數(shù)說(shuō)明如表5-8所示。參數(shù)說(shuō)明result必需。規(guī)定由
mysqli_query()、mysqli_store_result()或
mysqli_use_result()返回的結(jié)果集標(biāo)識(shí)符resulttype可選。resulttype為結(jié)果類(lèi)型,一般為“MYSQLI_ASSOC”“MYSQLI_NUM”“MYSQLI_BOTH”表5-8
mysqli_fetch_array()函數(shù)的參數(shù)說(shuō)明mysqli_fetch_assoc()函數(shù)返回一個(gè)字符串關(guān)聯(lián)數(shù)組,該字符串表示結(jié)果集中提取的行,其中數(shù)組中的每個(gè)鍵代表結(jié)果集某一列的名稱(chēng);如果結(jié)果集中沒(méi)有更多的行,則返回NULL。語(yǔ)法格式如下。mysqli_fetch_assoc(result);參數(shù)說(shuō)明如表5-8中的參數(shù)result所示。mysqli_fetch_row()函數(shù)從結(jié)果集中取得一行,并作為索引數(shù)組返回;如果結(jié)果集中沒(méi)有更多的行,則返回NULL。語(yǔ)法格式如下。mysqli_fetch_row(result);參數(shù)說(shuō)明也如表5-8中的參數(shù)result所示。3.獲取結(jié)果集中行的數(shù)量mysqli_num_rows()函數(shù)用于返回結(jié)果集中行的數(shù)量,語(yǔ)法格式如下。mysqli_num_rows(result);參數(shù)說(shuō)明也如表5-8中的參數(shù)result所示。4.設(shè)置默認(rèn)字符集mysqli_set_charset()函數(shù)規(guī)定當(dāng)與數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)傳送時(shí)要使用的默認(rèn)字符集,如果成功,則返回true,失敗則返回false。mysqli_set_charset()函數(shù)針對(duì)中文字符非常有用,很多數(shù)據(jù)庫(kù)查詢(xún)亂碼的情況都是字符集的問(wèn)題。語(yǔ)法格式如下。mysqli_set_charset(connection,charset);參數(shù)說(shuō)明如表5-9所示。參數(shù)說(shuō)明connection必需。規(guī)定要使用的
MySQL連接charset必需。規(guī)定默認(rèn)字符集表5-9
mysqli_set_charset()函數(shù)的參數(shù)說(shuō)明5.關(guān)閉數(shù)據(jù)庫(kù)連接每一次的數(shù)據(jù)庫(kù)操作都會(huì)占用服務(wù)器的系統(tǒng)資源,因此數(shù)據(jù)庫(kù)操作完成后應(yīng)該及時(shí)關(guān)閉數(shù)據(jù)庫(kù)連接。使用mysqli_close()函數(shù)可以關(guān)閉數(shù)據(jù)庫(kù)連接,語(yǔ)法格式如下。mysqli_close(connection);參數(shù)說(shuō)明如表5-10所示。參數(shù)說(shuō)明connection必需。規(guī)定要關(guān)閉的MySQL連接表5-10
mysqli_close()函數(shù)的參數(shù)說(shuō)明接到項(xiàng)目后,周工分析了員工檔案管理系統(tǒng)的要求,按照一般項(xiàng)目的開(kāi)發(fā)流程把此項(xiàng)目分成以下4個(gè)任務(wù)來(lái)實(shí)現(xiàn):數(shù)據(jù)庫(kù)設(shè)計(jì)、主界面設(shè)計(jì)、添加員工檔案功能和刪除員工檔案功能?!卷?xiàng)目實(shí)現(xiàn)】制作員工檔案管理系統(tǒng)1.任務(wù)分析數(shù)據(jù)庫(kù)的設(shè)計(jì)對(duì)員工檔案管理系統(tǒng)的實(shí)現(xiàn)起著至關(guān)重要的作用,設(shè)計(jì)合理的數(shù)據(jù)表結(jié)構(gòu)不僅有利于員工檔案管理系統(tǒng)的開(kāi)發(fā),而且有利于提高員工檔案管理系統(tǒng)的性能。根據(jù)員工檔案管理系統(tǒng)的要求,創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)employedb,然后設(shè)計(jì)如下兩個(gè)數(shù)據(jù)表。(1)員工信息表employe員工信息表用于保存員工的基本檔案信息,其結(jié)構(gòu)如表5-11所示。任務(wù)一數(shù)據(jù)庫(kù)設(shè)計(jì)
字段名數(shù)據(jù)類(lèi)型描述idint(4)主鍵ID,自動(dòng)增長(zhǎng)namevarchar(20)員工姓名sexenum('男','女')員工性別entrydate(3)員工入職時(shí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 土壤防水層施工方案
- 雨水排放口設(shè)置標(biāo)準(zhǔn)方案
- 2025-2030新加坡金融科技應(yīng)用創(chuàng)新實(shí)踐及金融監(jiān)管改革分析報(bào)告
- 2025-2030新加坡金融服務(wù)業(yè)市場(chǎng)發(fā)展深度觀察及產(chǎn)業(yè)鏈整合策略與產(chǎn)業(yè)投資方案分析報(bào)告
- 2025-2030文化遺產(chǎn)保護(hù)行業(yè)市場(chǎng)深度調(diào)研及發(fā)展趨勢(shì)和投資前景預(yù)測(cè)研究報(bào)告
- 2025-2030文化藝術(shù)產(chǎn)業(yè)行業(yè)市場(chǎng)供需情況分析及資金投放評(píng)估未來(lái)規(guī)劃研究方案報(bào)告書(shū)
- 2025-2030文化活動(dòng)贊助對(duì)接平臺(tái)市場(chǎng)需平衡機(jī)制行業(yè)投資心理分析研究方案
- 2025-2030文化旅游行業(yè)市場(chǎng)競(jìng)爭(zhēng)供需發(fā)展研究及產(chǎn)業(yè)投資建議規(guī)劃報(bào)告
- 問(wèn)題導(dǎo)向教學(xué)在企業(yè)培訓(xùn)中的應(yīng)用
- 會(huì)所場(chǎng)地租用收費(fèi)標(biāo)準(zhǔn)及管理方案
- 北京市公路工程標(biāo)準(zhǔn)施工電子招標(biāo)文件(2020版)
- 《2025年CSCO腎癌診療指南》解讀課件
- 鄉(xiāng)土中國(guó)第14章課件
- 車(chē)輛使用協(xié)議書(shū)模板
- 《2025年CSCO前列腺癌診療指南》更新要點(diǎn)解讀 2
- 熱源廠鍋爐設(shè)備更新改造項(xiàng)目可行性研究報(bào)告模板-立項(xiàng)備案
- 新疆維吾爾自治區(qū)2024年中考數(shù)學(xué)試卷含真題解析
- 一元一次方程中的動(dòng)點(diǎn)壓軸題專(zhuān)項(xiàng)訓(xùn)練(60題)(蘇科版)原卷版
- 2024-2025學(xué)年湖南省懷化市高二上學(xué)期期末質(zhì)量檢測(cè)英語(yǔ)試卷
- 2020輸變電工程典型設(shè)計(jì)35kV鐵塔型錄
- 黔南州2024-2025學(xué)年度第一學(xué)期期末質(zhì)量監(jiān)測(cè)八年級(jí)數(shù)學(xué)
評(píng)論
0/150
提交評(píng)論