MySQL數(shù)據(jù)庫PPT完整全套教學(xué)課件_第1頁
MySQL數(shù)據(jù)庫PPT完整全套教學(xué)課件_第2頁
MySQL數(shù)據(jù)庫PPT完整全套教學(xué)課件_第3頁
MySQL數(shù)據(jù)庫PPT完整全套教學(xué)課件_第4頁
MySQL數(shù)據(jù)庫PPT完整全套教學(xué)課件_第5頁
已閱讀5頁,還剩497頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

MySQL數(shù)據(jù)庫(全套課件)第一章數(shù)據(jù)庫入門數(shù)據(jù)庫基本知識MySQL的目錄結(jié)構(gòu)MySQL的安裝與配置MySQL的啟動和登錄?學(xué)習(xí)目標(biāo)掌握MySQL的啟動、登錄及配置13了解數(shù)據(jù)庫的基本知識2熟悉MySQL的安裝與配置掌握了解熟悉數(shù)據(jù)庫基本知識1.1?點(diǎn)擊查看本小節(jié)知識架構(gòu)MySQL安裝與配置1.2?點(diǎn)擊查看本小節(jié)知識架構(gòu)MySQL目錄結(jié)構(gòu)1.3MySQL的使用1.4?點(diǎn)擊查看本小節(jié)知識架構(gòu)1.1數(shù)據(jù)庫基礎(chǔ)知識返回目錄1.1.11.1.2數(shù)據(jù)庫概述數(shù)據(jù)庫存儲結(jié)構(gòu)1.1.3SQL語言知識架構(gòu)1.1.4常見的數(shù)據(jù)庫產(chǎn)品1.2MySQL安裝與配置返回目錄1.2.11.2.2Windows平臺下安裝與配置MySQLLinux平臺下安裝MySQL知識架構(gòu)1.4高級查詢返回目錄1.4.11.4.2啟動MySQL服務(wù)登錄MySQL數(shù)據(jù)庫1.4.3MySQL的相關(guān)命令1.4.4重新配置MySQL知識架構(gòu)1.1數(shù)據(jù)庫基礎(chǔ)知識1.1.1數(shù)據(jù)庫概述數(shù)據(jù)庫(Database,DB)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫,其本身可看作電子化的文件柜,用戶可以對文件中的數(shù)據(jù)進(jìn)行增加、刪除、修改、查找等操作。1.1數(shù)據(jù)庫基礎(chǔ)知識1.1.1數(shù)據(jù)庫概述數(shù)據(jù)庫系統(tǒng)由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫應(yīng)用程序等組成。1.1數(shù)據(jù)庫基礎(chǔ)知識1.1.2數(shù)據(jù)庫存儲結(jié)構(gòu)數(shù)據(jù)庫是存儲和管理數(shù)據(jù)的倉庫,但數(shù)據(jù)庫并不能直接存儲數(shù)據(jù),數(shù)據(jù)是存儲在表中的,在存儲數(shù)據(jù)的過程中一定會用到數(shù)據(jù)庫服務(wù)器,所謂的數(shù)據(jù)庫服務(wù)器就是指在計算機(jī)上安裝一個數(shù)據(jù)庫管理程序。1.1數(shù)據(jù)庫基礎(chǔ)知識1.1.3SQL語言SQL(StructuredQueryLanaguage即結(jié)構(gòu)化查詢語言)語言是一種數(shù)據(jù)庫查詢語言和程序設(shè)計語言。它是一種關(guān)系型數(shù)據(jù)庫語言,主要用于管理數(shù)據(jù)庫中的數(shù)據(jù),如存取數(shù)據(jù)、查詢數(shù)據(jù)、更新數(shù)據(jù)等。1.1數(shù)據(jù)庫基礎(chǔ)知識1.1.3SQL語言關(guān)系型數(shù)據(jù)庫語言由4部分組成,具體如下:(1)數(shù)據(jù)定義語言(DDL)(2)數(shù)據(jù)操作語言(DML)(3)數(shù)據(jù)查詢語言(DQL)(4)數(shù)據(jù)控制語言(DCL)1.1數(shù)據(jù)庫基礎(chǔ)知識1.1.4常見的數(shù)據(jù)庫產(chǎn)品1.2MySQL安裝與配置1.2.1Windows平臺下安裝和配置MySQL1、安裝MySQL1.2MySQL安裝與配置1.2.1Windows平臺下安裝和配置MySQL2、配置MySQL1.2.2Linux平臺下安裝MySQLLinux操作系統(tǒng)有很多版本,比如Ubuntu、CentOS、RedHat等1.2MySQL安裝與配置適合個人使用,類似Windows系統(tǒng)用于服務(wù)器1.2.2Linux平臺下安裝MySQL基于Linux平臺的MySql安裝文件有三個版本,具體介紹如下:1、RPM軟件包2、GenericBinariesr軟件包3、源碼包1.2MySQL安裝與配置RPM軟件包是一種Linux平臺下的安裝文件,通過相關(guān)命令可以很方便的安裝與卸載。該軟件包分為兩個:服務(wù)器端和客戶端,需要分別下載和安裝。在安裝時首先需要安裝服務(wù)器端,然后再安裝客戶端。GenericBinariesr軟件包是一個二進(jìn)制軟件包,經(jīng)過編譯生成二進(jìn)制文件的軟件包。源碼包是MySQL數(shù)據(jù)庫的源代碼,用戶需要自己編譯生成二進(jìn)制文件后才能安裝。1.2.2Linux平臺下安裝MySQLMySQL官方推薦在Linux平臺下使用RPM軟件包安裝MySQL,接下來就演示一下如何使用RPM軟件包來安裝MySQL:1、下載RPM安裝包首先官網(wǎng)/downloads/mysql/5.5.html#downloads,下載RPM安裝包,RPM安裝包分為MySQL服務(wù)端和客戶端。本教材使用的RPM軟件包的版本為:1.2MySQL安裝與配置MySQL-server-5.5.31-2.el6.i686.rpmMySQL-client-5.5.31-2.el6.i686.rpm1.2.2Linux平臺下安裝MySQL2、檢查是否安裝過MySQL在安裝之前,首先要檢查當(dāng)前系統(tǒng)是否已經(jīng)安裝了MySQL,否則在安裝時可能產(chǎn)生沖突。具體的查看命令如下所示:執(zhí)行完上述命令后,如果出現(xiàn)MySQL的相關(guān)信息,例如mysql-libs-5.1.66-2.el6_3.i686就說明當(dāng)前系統(tǒng)已經(jīng)安裝了MySQL,此時,如果希望卸載該版本的MySQL,可以使用以下命令:1.2MySQL安裝與配置rpm

-qa

|

grep

mysqlrpm

-e

mysql-libs-5.1.66-2.el6_3.i686

--nodeps1.2.2Linux平臺下安裝MySQL3、安裝MySQL服務(wù)端和客戶端接下來將MySQL安裝包放在Linux系統(tǒng)的Downloads目錄下,然后進(jìn)入Downloads目錄,在該目錄中安裝MySQL服務(wù)端,具體命令如下:1.2MySQL安裝與配置rpm-ivhMySQL-server-5.5.31-2.el6.i686.rpm1.2.2Linux平臺下安裝MySQL3、安裝MySQL服務(wù)端和客戶端MySQL的服務(wù)端安裝成功后,接下來還需安裝MySQL的客戶端。在安裝客戶端時需要輸入如下命令:1.2MySQL安裝與配置rpm-ivhMySQL-client-5.5.31-2.el6.i686.rpm1.2.2Linux平臺下安裝MySQL4、啟動MySQL服務(wù)MySQL安裝完成后,要想使用MySQL服務(wù)端,還需要啟動MySQL服務(wù),具體命令如下:上述命令用于開啟mysql服務(wù),值得一提的是,MySQL的服務(wù)命令實(shí)際上有4個參數(shù),這四個參數(shù)分別代表不同的意義,具體如下:start:啟動服務(wù)stop:停止服務(wù)restart:重啟服務(wù)status:查看服務(wù)狀態(tài)1.2MySQL安裝與配置servicemysqlstart1.2.2Linux平臺下安裝MySQL5、操作MySQL

(1)設(shè)置MySQL登錄密碼(2)登錄MySQL1.2MySQL安裝與配置mysql_secure_installationmysql-uroot-pitcastMySQL安裝完成后,會在磁盤上生成一個目錄,該目錄被稱為MySQL的安裝目錄。在MySQL的安裝目錄中包含了啟動文件、配置文件、數(shù)據(jù)庫文件和命令文件等。1.3MySQL目錄結(jié)構(gòu)1.4.1啟動MySQL服務(wù)

1、通過Windows服務(wù)管理器啟動MySQL服務(wù)通過Windows的服務(wù)管理器可以查看MySQL服務(wù)是否開啟,首先點(diǎn)擊【開始】菜單,在彈出的菜單中選擇【運(yùn)行】命令,打開【運(yùn)行】對話框輸入“services.msc”命令,單擊【確定】按鈕,此時就會打開Windows的服務(wù)管理器。1.4MySQL的使用1.4.1啟動MySQL服務(wù)

2、通過DOS命令啟動MySQL服務(wù)啟動MySQL服務(wù)不僅可以通過Windows服務(wù)管理器啟動,還可以通過DOS命令來啟動,命令如下:

DOS命令行不僅可以啟動MySQL服務(wù),還可以停止MySQL服務(wù)1.4MySQL的使用netstartmysqlnetstopmysql1.4.2登陸MySQL數(shù)據(jù)庫1、使用相關(guān)命令登錄登錄MySQL數(shù)據(jù)庫可以通過DOS命令完成,具體命令如下:在上述命令中,mysql為登錄命令,-h后面的參數(shù)是服務(wù)器的主機(jī)地址,-u后面的參數(shù)是登錄數(shù)據(jù)庫的用戶名,-p后面是登錄密碼1.4MySQL的使用mysql–hhostname–uusername–p1.4.2登陸MySQL數(shù)據(jù)庫2、使用MySQLCommandLineClient登錄在開始菜單中依次選擇【程序】【MySQL】【MySQLServer5.5】【MySQL5.5CommandLineClient】打開MySQL命令行客戶端窗口,此時就會提示輸入密碼,密碼輸入正確后便可以登錄到MySQL數(shù)據(jù)庫。1.4MySQL的使用1.4.3MySQL的相關(guān)命令要想查看MySQL的幫助信息,首先登錄到MySQL數(shù)據(jù)庫,然后在命令行窗口中輸入“help;”或者“\h”命令,此時就會顯示MySQL的幫助信息。1.4MySQL的使用1.4.3MySQL的相關(guān)命令1.4MySQL的使用命令簡寫具體含義?(\?)顯示幫助信息clear(\c)明確當(dāng)前輸入語句connect(\r)連接到服務(wù)器,可選參數(shù)數(shù)據(jù)庫和主機(jī)。delimiter(\d)設(shè)置語句分隔符。ego(\G)發(fā)送命令到mysql服務(wù)器,并顯示結(jié)果。exit(\q)退出MySQLgo(\g)發(fā)送命令到mysql服務(wù)器。help(\h)顯示幫助信息notee(\t)不寫輸出文件。print(\p)打印當(dāng)前命令prompt(\R)改變mysql提示信息。quit(\q)退出MySQLrehash(\#)重建完成散列。source(\.)執(zhí)行一個SQL腳本文件,以一個文件名作為參數(shù)。status(\s)從服務(wù)器獲取MySQL的狀態(tài)信息。tee(\T)設(shè)置輸出文件(輸出文件),并將信息添加所有給定的輸出文件。use(\u)用另一個數(shù)據(jù)庫,數(shù)據(jù)庫名稱作為參數(shù)。charset(\C)切換到另一個字符集warnings(\W)每一個語句之后顯示警告。nowarning(\w)每一個語句之后不顯示警告。MySQL相關(guān)命令1.4.3MySQL的相關(guān)命令為了讓初學(xué)者更好的使用MySQL命令,接下來以“\s”、“\u”命令為例進(jìn)行演示,具體如下:(1)使用“\s”命令查看數(shù)據(jù)庫信息。(2)使用“\u”命令切換數(shù)據(jù)庫。1.4MySQL的使用1.4.3MySQL的相關(guān)命令(1)使用“\s”命令查看數(shù)據(jù)庫信息,結(jié)果如下:1.4MySQL的使用1.4.3MySQL的相關(guān)命令(2)使用“\u”命令切換數(shù)據(jù)庫,如下所示:MySQL5.5自帶了四個數(shù)據(jù)庫,如果要操作其中某一個數(shù)據(jù)庫test,首先需要使用“\u”命令切換到當(dāng)前數(shù)據(jù)庫,執(zhí)行結(jié)果如下所示:從上述命令的執(zhí)行結(jié)果“Databasechanged”可以看出,當(dāng)前操作的數(shù)據(jù)庫被切換為test。1.4MySQL的使用1.4.4重新配置MySQL1、通過DOS命令重新配置MySQL在命令行窗口中配置MySQL是很簡單的,接下來就演示如何修改MySQL客戶端的字符集編碼,首先登錄到MySQL數(shù)據(jù)庫,在該窗口中使用如下命令:執(zhí)行完上述命令后,以使用“\s”命令進(jìn)行查看,發(fā)現(xiàn)MySQL客戶端的編碼已經(jīng)修改為gbk。1.4MySQL的使用setcharacter_set_client=gbk1.4.4重新配置MySQL2、通過my.ini文件重新配置MySQL如果想讓修改的編碼長期有效,就需要在my.ini配置文件中進(jìn)行配置。1.4MySQL的使用utf8替換為gbk課堂實(shí)訓(xùn)一1、學(xué)生下載Windows安裝包,在虛擬機(jī)Windows操作系統(tǒng)環(huán)境下安裝并配置最新版本的MySQL;并在命令行模式下啟動、停止數(shù)據(jù)庫服務(wù),以root用戶連接數(shù)據(jù)庫,并觀察數(shù)據(jù)庫安裝配置信息;2、安裝可視化管理工具,并在可視化管理工具中啟動、停止數(shù)據(jù)庫,連接數(shù)據(jù)庫;3、在my.ini文件中改變端口號為3366,然后在分別在命令行模式和可視化模式下停止、啟動、連接數(shù)據(jù)庫服務(wù)器4、有能力的同學(xué)參照教材,在Centos虛擬機(jī)下安裝、配置MySQL數(shù)據(jù)庫服務(wù)器;5、做以上訓(xùn)練時,反復(fù)體會各個提示項(xiàng)不同選擇的含義,務(wù)求徹底理解、熟練掌握。本章小結(jié)本章主要講解了數(shù)據(jù)庫的基礎(chǔ)知識、MySQL的安裝與配置以及MySQL的使用。通過本章的學(xué)習(xí),希望初學(xué)者真正掌握MySQL數(shù)據(jù)庫的基礎(chǔ)知識,并且學(xué)會在Windows和Linux平臺安裝與配置MySQL,為后面章節(jié)的學(xué)習(xí)奠定扎實(shí)的基礎(chǔ)。

第二章數(shù)據(jù)庫和表的基本操作表的約束設(shè)置表的字段值自動增加索引數(shù)據(jù)庫基礎(chǔ)知識數(shù)據(jù)類型數(shù)據(jù)表的基本操作?學(xué)習(xí)目標(biāo)3了解數(shù)據(jù)類型2熟悉索引的作用,會創(chuàng)建和刪除索引掌握了解熟悉掌握數(shù)據(jù)庫的基本操作、數(shù)據(jù)表的基本操作、表的約束1數(shù)據(jù)庫基礎(chǔ)知識2.1?點(diǎn)擊查看本小節(jié)知識架構(gòu)數(shù)據(jù)類型2.2?點(diǎn)擊查看本小節(jié)知識架構(gòu)數(shù)據(jù)表的基本操作2.3?點(diǎn)擊查看本小節(jié)知識架構(gòu)表的約束2.4?點(diǎn)擊查看本小節(jié)知識架構(gòu)設(shè)置表的字段值自動增加2.5索引2.6?點(diǎn)擊查看本小節(jié)知識架構(gòu)知識架構(gòu)2.1數(shù)據(jù)庫基礎(chǔ)知識返回目錄2.1.12.1.2創(chuàng)建和查看數(shù)據(jù)庫修改數(shù)據(jù)庫2.1.3刪除數(shù)據(jù)庫2.2數(shù)據(jù)類型返回目錄知識架構(gòu)2.2.12.2.2整數(shù)類型浮點(diǎn)數(shù)類型和定點(diǎn)數(shù)類型2.2.3日期與時間類型2.2.4字符串和二進(jìn)制類型2.3數(shù)據(jù)表的基本操作返回目錄知識架構(gòu)2.3.12.3.2創(chuàng)建數(shù)據(jù)表查看數(shù)據(jù)表2.3.3修改數(shù)據(jù)表2.3.4刪除數(shù)據(jù)表2.4表的約束返回目錄知識架構(gòu)2.4.12.4.2主鍵約束非空約束2.4.3唯一約束2.4.4默認(rèn)約束知識架構(gòu)返回目錄2.6.12.6.2索引的概念創(chuàng)建索引2.6.3刪除索引2.6索引2.1數(shù)據(jù)庫基礎(chǔ)知識2.1.1創(chuàng)建和查看數(shù)據(jù)庫

創(chuàng)建數(shù)據(jù)庫就是在數(shù)據(jù)庫系統(tǒng)中劃分一塊存儲數(shù)據(jù)的空間,MySQL中,創(chuàng)建數(shù)據(jù)庫的基本語法格式如下所示:【例2-1】創(chuàng)建一個名稱為itcast的數(shù)據(jù)庫,SQL語句如下所示:執(zhí)行結(jié)果如下所示:CREATEDATABASE數(shù)據(jù)庫名稱;CREATEDATABASEitcast;2.1數(shù)據(jù)庫基礎(chǔ)知識2.1.1創(chuàng)建和查看數(shù)據(jù)庫

為了驗(yàn)證數(shù)據(jù)庫系統(tǒng)中是否創(chuàng)建了名稱為itcast的數(shù)據(jù)庫,需要查看數(shù)據(jù)庫,在MySQL中,查看數(shù)據(jù)庫的SQL語句如下所示:【例2-2】使用SHOW語句查看已經(jīng)存在的數(shù)據(jù)庫,執(zhí)行結(jié)果如下所示:SHOWDATABASES;2.1數(shù)據(jù)庫基礎(chǔ)知識2.1.1創(chuàng)建和查看數(shù)據(jù)庫

創(chuàng)建好數(shù)據(jù)庫之后,要想查看某個已經(jīng)創(chuàng)建的數(shù)據(jù)庫信息,可以通過SHOWCREATEDATABASE語句查看,具體語法格式如下所示:SHOWCREATEDATABASE數(shù)據(jù)庫名稱;2.1數(shù)據(jù)庫基礎(chǔ)知識2.1.1創(chuàng)建和查看數(shù)據(jù)庫

【例2-3】查看創(chuàng)建好的數(shù)據(jù)庫itcast的信息,SQL語句如下所示:執(zhí)行結(jié)果如下所示:SHOWCREATEDATABASEitcast;2.1數(shù)據(jù)庫基礎(chǔ)知識2.1.2修改數(shù)據(jù)庫

MySQL數(shù)據(jù)庫一旦安裝成功,創(chuàng)建的數(shù)據(jù)庫編碼也就確定了。但如果想修改數(shù)據(jù)庫的編碼,可以使用ALTERDATABASE語句實(shí)現(xiàn)。修改數(shù)據(jù)庫編碼的基本語法格式如下所示:在上述格式中,“數(shù)據(jù)庫名稱”指的是要修改的數(shù)據(jù)庫,“編碼方式”指的是修改后的數(shù)據(jù)庫編碼。ALTERDATABASE數(shù)據(jù)庫名稱DEFAULTCHARACTERSET

編碼方式COLLATE編碼方式_bin2.1數(shù)據(jù)庫基礎(chǔ)知識2.1.2修改數(shù)據(jù)庫

【例2-4】將數(shù)據(jù)庫itcast的編碼修改為gbk,SQL語句如下所示:為了驗(yàn)證數(shù)據(jù)庫的編碼是否修改成功,接下來,使用SHOWCREATEDATABASE語句查看修改后的數(shù)據(jù)庫,執(zhí)行結(jié)果如下:ALTERDATABASEitcastDEFAULTCHARACTERSET

gbkCOLLATEgbk_bin;說明itcast數(shù)據(jù)庫的編碼信息修改成功了2.1數(shù)據(jù)庫基礎(chǔ)知識2.1.3刪除數(shù)據(jù)庫

刪除數(shù)據(jù)庫是將數(shù)據(jù)庫系統(tǒng)中已經(jīng)存在的數(shù)據(jù)庫刪除。成功刪除數(shù)據(jù)庫后,數(shù)據(jù)庫中的所有數(shù)據(jù)都將被清除,原來分配的空間也將被回收。在MySQL中,刪除數(shù)據(jù)庫的基本語法格式如下所示:需要注意的是,如果要刪除的數(shù)據(jù)庫不存在,則刪除會失敗。DROPDATABASE數(shù)據(jù)庫名稱;2.1數(shù)據(jù)庫基礎(chǔ)知識2.1.3刪除數(shù)據(jù)庫

【例2-5】刪除名稱為itcast的數(shù)據(jù)庫,SQL語句如下所示:為了驗(yàn)證刪除數(shù)據(jù)庫的操作是否成功,接下來,使用SHOWDATABASES語句查看已經(jīng)存在的數(shù)據(jù)庫,執(zhí)行結(jié)果如下所示:DROPDATABASEitcast;2.2數(shù)據(jù)類型2.2.1整數(shù)類型根據(jù)數(shù)值取值范圍的不同,MySQL中的整數(shù)類型可分為5種,分別是TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT,表2-1列舉了MySQL不同整數(shù)類型所對應(yīng)的字節(jié)大小和取值范圍。從表2-1中可以看出,不同整數(shù)類型所占用的字節(jié)數(shù)和取值范圍都是不同的。數(shù)據(jù)類型字節(jié)數(shù)無符號數(shù)的取值范圍有符號數(shù)的取值范圍TINYINT10~255-128~127SMALLINT20~65535-32768~32768MEDIUMINT30~16777215-8388608~8388608INT40~4294967295-2147483648~2147483648BIGINT80~18446744073709551615-9223372036854775808~9223372036854775808表2-1MySQL整數(shù)類型2.2數(shù)據(jù)類型2.2.2浮點(diǎn)數(shù)類型和定點(diǎn)數(shù)類型在MySQL數(shù)據(jù)庫中,存儲的小數(shù)都是使用浮點(diǎn)數(shù)和定點(diǎn)數(shù)來表示的。浮點(diǎn)數(shù)的類型有兩種,分別是單精度浮點(diǎn)數(shù)類型(FLOAT)和雙精度浮點(diǎn)類型(DOUBLE)。而定點(diǎn)數(shù)類型只有DECIMAL類型。表2-2列舉了MySQL中浮點(diǎn)數(shù)和定點(diǎn)數(shù)類型所對應(yīng)的字節(jié)大小及其取值范圍。表2-2MySQL浮點(diǎn)數(shù)和定點(diǎn)數(shù)類型2.2數(shù)據(jù)類型2.2.3日期與時間類型為了方便在數(shù)據(jù)庫中存儲日期和時間,MySQL提供了表示日期和時間的數(shù)據(jù)類型,分別是YEAR、DATE、TIME、DATETIME和TIMESTAMP,表2-3列舉了這些MySQL中日期和時間數(shù)據(jù)類型所對應(yīng)的字節(jié)數(shù)、取值范圍、日期格式以及零值。表2-3MySQL日期和時間類型2.2數(shù)據(jù)類型2.2.3日期與時間類型需要注意的是,如果插入的數(shù)值不合法,系統(tǒng)會自動將對應(yīng)的零值插入數(shù)據(jù)庫中。為了大家更好地學(xué)習(xí)日期和時間類型,接下來,將表2-3中的類型進(jìn)行詳細(xì)講解,具體如下:1、YEAR類型YEAR類型用于表示年份,在MySQL中,可以使用以下三種格式指定YEAR類型的值:(1)使用4位字符串或數(shù)字表示,范圍為‘1901’~‘2155’或1901~2155。2.2數(shù)據(jù)類型2.2.3日期與時間類型(2)使用2位字符串表示,范圍為‘00’~‘99’(3)使用2位數(shù)字表示,范圍為1~99需要注意的是,當(dāng)使用YEAR類型時,一定要區(qū)分'0'和0。因?yàn)樽址袷降?0'表示的是YEAR值是2000,而數(shù)字格式的0表示的YEAR值是0000。2.2數(shù)據(jù)類型2.2.3日期與時間類型2、DATE類型DATE類型用于表示日期值,不包含時間部分。在MySQL中,可以使用以下四種格式指定DATE類型的值:(1)以‘YYYY-MM-DD’或者‘YYYYMMDD’字符串格式表示。(2)以‘YY-MM-DD’或者‘YYMMDD’字符串格式表示。(3)以YY-MM-DD或者YYMMDD數(shù)字格式表示。(4)使用CURRENT_DATE或者NOW()表示當(dāng)前系統(tǒng)日期。2.2數(shù)據(jù)類型2.2.3日期與時間類型3、TIME類型TIME類型用于表示時間值,它的顯示形式一般為HH:MM:SS,其中,HH表示小時,MM表示分,SS表示秒。在MySQL中,可以使用以下三種格式指定TIME類型的值:(1)以‘DHH:MM:SS’字符串格式表示。(2)以‘HHMMSS’字符串格式或者HHMMSS數(shù)字格式表示。(3)使用CURRENT_TIME或NOW()輸入當(dāng)前系統(tǒng)時間。2.2數(shù)據(jù)類型2.2.3日期與時間類型4、DATETIME類型DATETIME類型用于表示日期和時間,它的顯示形式為‘YYYY-MM-DDHH:MM:SS’,其中,YYYY表示年,MM表示月,DD表示日,HH表示小時,MM表示分,SS表示秒。在MySQL中,可以使用以下四種格式指定DATETIME類型的值:(1)以‘YYYY-MM-DDHH:MM:SS’或者‘YYYYMMDDHHMMSS’字符串格式表示的日期和時間,取值范圍為‘1000-01-0100:00:00’~‘9999-12-323:59:59’。2.2數(shù)據(jù)類型2.2.3日期與時間類型(2)以‘YY-MM-DDHH:MM:SS’或者‘YYMMDDHHMMSS’字符串格式表示的日期和時間,其中YY表示年,取值范圍為‘00’~‘99’。(3)以YYYYMMDDHHMMSS或者YYMMDDHHMMSS數(shù)字格式表示的日期和時間。(4)使用NOW來輸入當(dāng)前系統(tǒng)的日期和時間。2.2數(shù)據(jù)類型2.2.3日期與時間類型5、TIMESTAMP類型TIMESTAMP類型用于表示日期和時間,它的顯示形式同DATETIME相同,但取值范圍比DATETIME小。下面介紹幾種TIMESTAMP類型與DATATIME類型不同的形式,具體如下:(1)使用CURRENT_TIMESTAMP來輸入系統(tǒng)當(dāng)前日期和時間。(2)輸入NULL時,系統(tǒng)會輸入系統(tǒng)當(dāng)前日期和時間。(3)無任何輸入時,系統(tǒng)會輸入系統(tǒng)當(dāng)前日期和時間。2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型為了存儲字符串、圖片和聲音等數(shù)據(jù),MySQL提供了字符串和二進(jìn)制類型,表2-4列舉了MySQL中的字符串和二進(jìn)制類型。表2-4MySQL字符串和二進(jìn)制類型數(shù)據(jù)類型類型說明CHAR用于表示固定長度的字符串

VARCHAR用于表示可變長度的字符串BINARY用于表示固定長度的二進(jìn)制數(shù)據(jù)VARBINARY用于表示可變長度的二進(jìn)制數(shù)據(jù)BOLB用于表示二進(jìn)制大數(shù)據(jù)TEXT用于表示大文本數(shù)據(jù)ENUM表示枚舉類型,只能存儲一個枚舉字符串值SET表示字符串對象,可以有零或多個值BIT表示位字段類型2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型表2-4列舉的字符串和二進(jìn)制類型中,不同數(shù)據(jù)類型具有不同的特點(diǎn),接下來,針對這些數(shù)據(jù)類型進(jìn)行詳細(xì)地講解,具體如下:1、CHAR和VARCHAR類型CHAR和VARCHAR類型都用來表示字符串?dāng)?shù)據(jù),不同的是,VARCHAR可以存儲可變長度的字符串。在MySQL中,定義CHAR和VARCHAR類型的方式如下所示:在上述定義方式中,M指的是字符串的最大長度。CHAR(M)或VARCHAR(M)2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型為了幫助大家更好地理解CHAR和VARCHAR之間的區(qū)別,接下來,以CHAR(4)和VARCHAR(4)為例進(jìn)行說明,具體如表2-5所示。從表2-5中可以看出,當(dāng)數(shù)據(jù)為CHAR(4)類型時,不管插入值的長度是多少,所占用的存儲空間都是4個字節(jié),而VARCHAR(4)所對應(yīng)的數(shù)據(jù)所占用的字節(jié)數(shù)為實(shí)際長度加1。表2-5CHAR(4)和VARCHAR(4)對比插入值CHAR(4)存儲需求VARCHAR(4)存儲需求‘’‘’4個字節(jié)‘’1個字節(jié)‘a(chǎn)b’‘a(chǎn)b’4個字節(jié)‘a(chǎn)b’3個字節(jié)‘a(chǎn)bc’‘a(chǎn)bc’4個字節(jié)‘a(chǎn)bc’4個字節(jié)‘a(chǎn)bcd’‘a(chǎn)bcd’4個字節(jié)‘a(chǎn)bcd’5個字節(jié)‘a(chǎn)bcdef’‘a(chǎn)bcd’4個字節(jié)‘a(chǎn)bcd’5個字節(jié)2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型2、BINARY和VARBINARY類型BINARY和VARBINARY類型類似于CHAR和VARCHAR,不同的是,它們所表示的是二進(jìn)制數(shù)據(jù)。定義BINARY和VARBINARY類型的方式如下所示:需要注意的是,BINARY類型的長度是固定的,如果數(shù)據(jù)的長度不足最大長度,將在數(shù)據(jù)的后面用“\0”補(bǔ)齊,最終達(dá)到指定長度。BINARY(M)或VARBINARY(M)2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型3、TEXT類型TEXT類型用于表示大文本數(shù)據(jù),例如,文章內(nèi)容、評論等,它的類型分為四種,具體如表2-6所示。表2-6TEXT類型數(shù)據(jù)類型存儲范圍TINYTEXT0~255字節(jié)TEXT0~65535字節(jié)MEDIUMTEXT0~16777215字節(jié)LONGTEXT0~4294967295字節(jié)2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型4、BLOB類型BLOB類型是一種特殊的二進(jìn)制類型,它用于表示數(shù)據(jù)量很大的二進(jìn)制數(shù)據(jù),例如圖片、PDF文檔等。BLOB類型分為四種,具體如表2-7所示。需要注意的是,BLOB類型與TEXT類型很相似,但BLOB類型數(shù)據(jù)是根據(jù)二進(jìn)制編碼進(jìn)行比較和排序,而TEXT類型數(shù)據(jù)是根據(jù)文本模式進(jìn)行比較和排序。表2-7BLOB類型數(shù)據(jù)類型存儲范圍TINYBLOB0~255字節(jié)BLOB0~65535字節(jié)MEDIUMBLOB0~16777215字節(jié)LONGBLOB0~4294967295字節(jié)2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型5、ENUM類型ENUM類型又稱為枚舉類型。定義ENUM類型的數(shù)據(jù)格式如下所示:在上述格式中,('值1','值2','值3'……'值n')稱為枚舉列表,ENUM類型的數(shù)據(jù)只能從枚舉列表中取,并且只能取一個。需要注意的是,枚舉列舉中的每個值都有一個順序編號,MySQL中存入的就是這個順序編號,而不是列表中的值。ENUM('值1','值2','值3'……'值n')2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型6、SET類型SET類型用于表示字符串對象,它的值可以有零個或多個,SET類型數(shù)據(jù)的定義格式與ENUM類型類似,具體語法格式如下所示:

與ENUM類型相同,('值1','值2','值3'……'值n')列表中的每個值都有一個順序編號,MySQL中存入的也是這個順序編號,而不是列表中的值。SET('值1','值2','值3'……'值n')2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型7、BIT類型BIT類型用于表示二進(jìn)制數(shù)據(jù)。定義BIT類型的基本語法格式如下所示:在上述格式中,M用于表示每個值的位數(shù),范圍為1~64。需要注意的是,如果分配的BIT(M)類型的數(shù)據(jù)長度小于M,將在數(shù)據(jù)的左邊用0補(bǔ)齊。BIT(M)2.3數(shù)據(jù)表的基本操作2.3.1創(chuàng)建數(shù)據(jù)表需要注意的是,在操作數(shù)據(jù)表之前,應(yīng)該使用“USE數(shù)據(jù)庫名”指定操作是在哪個數(shù)據(jù)庫中進(jìn)行,否則會拋出“Nodatabaseselected”錯誤。創(chuàng)建數(shù)據(jù)表的基本語法格式如下所示:CREATETABLE表名(

字段名1,數(shù)據(jù)類型[完整性約束條件],字段名2,數(shù)據(jù)類型[完整性約束條件],......字段名n,數(shù)據(jù)類型[完整性約束條件],)2.3數(shù)據(jù)表的基本操作2.3.1創(chuàng)建數(shù)據(jù)表【例2-6】創(chuàng)建一個用于存儲學(xué)生成績的表tb_grade,如表2-8所示。tb_grade表的數(shù)據(jù)如表2-8所示。要想創(chuàng)建表2-8所示的數(shù)據(jù)表,需要首先創(chuàng)建一個數(shù)據(jù)庫,SQL語句如下:選擇創(chuàng)建表的數(shù)據(jù)庫,SQL語句如下:字段名稱數(shù)據(jù)類型備注說明idINT(11)學(xué)生的編號nameVARCHAR(20)學(xué)生的姓名gradeFLOAT學(xué)生的成績表2-8tb_grade表CREATEDATABASEitcast;USEitcast;2.3數(shù)據(jù)表的基本操作2.3.1創(chuàng)建數(shù)據(jù)表創(chuàng)建數(shù)據(jù)表的SQL語句如下所示:為了驗(yàn)證數(shù)據(jù)表是否創(chuàng)建成功,需要使用SHOWTABLES語句進(jìn)行查看,具體執(zhí)行結(jié)果如下所示:2.3數(shù)據(jù)表的基本操作2.3.2查看數(shù)據(jù)表在MySQL中,查看數(shù)據(jù)表的方式有兩種,具體如下:1、使用SHOWCREATETABLE查看數(shù)據(jù)表在MySQL中,SHOWCREATETABLE語句不僅可以查看創(chuàng)建表時的定義語句,還可以查看表的字符編碼。SHOWCREATETABLE語句的基本語法格式如下所示:在上述格式中,“表名”指的是要查詢數(shù)據(jù)表的名稱。SHOWCREATETABLE表名;2.3數(shù)據(jù)表的基本操作2.3.2查看數(shù)據(jù)表【例2-7】使用SHOWCREATETABLE語句查看tb_grade表,SQL語句如下所示:執(zhí)行結(jié)果如下所示:SHOWCREATETABLEtb_grade;2.3數(shù)據(jù)表的基本操作2.3.2查看數(shù)據(jù)表可以在SHOWCREATETABLE語句的表名之后加上參數(shù)“\G”,使顯示結(jié)果整齊美觀,具體執(zhí)行結(jié)果如下所示:2.3數(shù)據(jù)表的基本操作2.3.2查看數(shù)據(jù)表2、使用DESCRIBE語句查看數(shù)據(jù)表在MySQL中,使用DESCRIBE語句可以查看表的字段信息,其中包括字段名、字段類型等信息。DESCRIBE語句的基本語法格式如下所示:或簡寫為:DESCRIBE表名;DESC表名;2.3數(shù)據(jù)表的基本操作2.3.2查看數(shù)據(jù)表2、使用DESCRIBE語句查看數(shù)據(jù)表【例2-8】使用DESCRIBE語句查看tb_grade表,SQL語句如下所示:執(zhí)行結(jié)果如下所示:DESCRIBEtb_grade;2.3數(shù)據(jù)表的基本操作2.3.2查看數(shù)據(jù)表2、使用DESCRIBE語句查看數(shù)據(jù)表接下來,針對執(zhí)行結(jié)果中的不同字段進(jìn)行詳細(xì)講解,具體如下:NULL:表示該列是否可以存儲NULL值。Key:表示該列是否已經(jīng)編制索引。Default:表示該列是否有默認(rèn)值。Extra:表示獲取到的與給定列相關(guān)的附加信息。2.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表1、修改表名在數(shù)據(jù)庫中,不同的數(shù)據(jù)表是通過表名來區(qū)分的。在MySQL中,修改表名的基本語法格式如下所示:在上述格式中,“舊表名”指的是修改前的表名,“新表名”指的是修改后的表名,關(guān)鍵字TO是可選的,其在SQL語句中是否出現(xiàn)不會影響語句的執(zhí)行。ALTERTABLE舊表名RENAME[TO]新表名;2.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表【例2-9】將數(shù)據(jù)庫itcast中的tb_grade表名改為grade表。在修改數(shù)據(jù)庫表名之前,首先使用SHOWTABLES語句查看數(shù)據(jù)庫中的所有表,執(zhí)行結(jié)果如下:上述語句執(zhí)行完畢后,使用ALTERTABLE將表名tb_grade修改為grade,SQL語句如下:ALTERTABLEtb_gradeRENAMETOgrade;2.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表為了檢測表名是否修改正確,再次使用SHOWTABLES語句查看數(shù)據(jù)庫中的所有表,執(zhí)行結(jié)果如下所示:從上述執(zhí)行結(jié)果可以看出,數(shù)據(jù)庫中的tb_grade表名成功被修改為grade了。2.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表2、修改字段名數(shù)據(jù)表中的字段是通過字段名來區(qū)分的。在MySQL中,修改字段名的基本語法格式如下所示:在上述格式中,“舊字段名”指的是修改前的字段名,“新字段名”指的是修改后的字段名,“新數(shù)據(jù)類型”指的是修改后的數(shù)據(jù)類型。需要注意的是,新數(shù)據(jù)類型不能為空,即使新字段與舊字段的數(shù)據(jù)類型相同,也必須將新數(shù)據(jù)類型設(shè)置為與原來一樣的數(shù)據(jù)類型。ALTERTABLE表名CHANGE舊字段名

新字段名新數(shù)據(jù)類型;2.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表2、修改字段名【例2-10】將數(shù)據(jù)表grade中的name字段改為username,數(shù)據(jù)類型保持不變,SQL語句如下所示:為了驗(yàn)證字段名是否修改成功,通過DECS語句查看grade表的結(jié)構(gòu),執(zhí)行結(jié)果如下所示:ALTERTABLEgradeCHANGEnameusernameVARCHAR(20);2.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表3、修改字段的數(shù)據(jù)類型修改字段的數(shù)據(jù)類型,就是將字段的數(shù)據(jù)類型轉(zhuǎn)為另外一種數(shù)據(jù)類型。在MySQL中修改字段數(shù)據(jù)類型的基本語法格式如下所示:在上述格式中,“表名”指的是要修改字段所在的表名,“字段名”指的是要修改的字段,“數(shù)據(jù)類型”指的是修改后的字段的數(shù)據(jù)類型。ALTERTABLE表名MODIFY字段名

數(shù)據(jù)類型;2.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表3、修改字段的數(shù)據(jù)類型【例2-11】將數(shù)據(jù)表grade中的id字段的數(shù)據(jù)類型由INT(11)修改為INT(20)。在執(zhí)行修改字段的數(shù)據(jù)類型之前,首先使用DESC查看grade表的結(jié)構(gòu),如下所示:2.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表3、修改字段的數(shù)據(jù)類型從上述執(zhí)行結(jié)果可以看出,id字段的數(shù)據(jù)類型為INT(11)。接下來,使用ALTER語句修改id字段的數(shù)據(jù)類型,SQL語句如下所示:為了驗(yàn)證id字段的數(shù)據(jù)類型是否修改成功,再次使用DECS查看grade數(shù)據(jù)表,執(zhí)行結(jié)果如下:ALTERTABLEgradeMODIFYidINT(20);被修改成了INT(20)2.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表4、添加字段在MySQL中,添加字段的基本語法格式如下所示:在上述格式中,“新字段名”為添加字段的名稱,“FIRST”為可選參數(shù),用于將新添加的字段設(shè)置為表的第一個字段,“AFTER”也為可選參數(shù),用于將新添加的字段添加到指定的“已存在字段名”的后面。ALTERTABLE表名ADD新字段名

數(shù)據(jù)類型[約束條件][FIRST|AFTER已存在字段名]2.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表4、添加字段【例2-12】在數(shù)據(jù)表grade中添加一個沒有約束條件的INT類型的字段age,SQL語句如下:為了驗(yàn)證字段age是否添加成功,接下來,使用DESC語句查看數(shù)據(jù)表grade,執(zhí)行結(jié)果如下:ALTERTABLEgradeADDageINT(10);2.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表5、刪除字段所謂刪除字段指的是將某個字段從表中刪除。在MySQL中,刪除字段的基本語法格式如下所示:在上述格式中,“字段名”指的是要刪除的字段的名稱。ALTERTABLE表名DROP字段名;2.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表5、刪除字段【例2-13】刪除grade表中的age字段,SQL語句如下:為了驗(yàn)證age字段是否刪除,接下來,使用DESC語句查看grade表,執(zhí)行結(jié)果如下:從上述執(zhí)行結(jié)果可以看出,grade表中已經(jīng)不存在age字段,說明age字段被成功刪除了。ALTERTABLEgradeDROPage;2.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表6、修改字段的排列位置在MySQL中,修改字段排列位置的基本語法格式如下:在上述格式中,“字段名1”指的是修改位置的字段,“數(shù)據(jù)類型”指的是字段1的數(shù)據(jù)類型,“FIRST”為可選參數(shù),指的是將字段1修改為表的第一個字段,“AFTER字段名2”是將字段1插入到字段2的后面。ALTERTABLE表名MODIFY字段名1數(shù)據(jù)類型FIRST|AFTER字段名22.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表6、修改字段的排列位置【例2-14】將數(shù)據(jù)表grade的username字段修改為表的第一個字段,執(zhí)行的SQL語句如下:為了驗(yàn)證username字段是否修改為表的第一個字段,接下來,使用DESC語句查看數(shù)據(jù)表,執(zhí)行結(jié)果如下:ALTERTABLEgradeMODIFYusernameVARCHAR(20)FIRST;username字段為表的第一個字段,說明username字段的排列位置被成功修改了。2.3數(shù)據(jù)表的基本操作2.3.3修改數(shù)據(jù)表6、修改字段的排列位置【例2-15】將數(shù)據(jù)表grade的id字段插入grade字段后面,執(zhí)行的SQL語句如下:為了驗(yàn)證id字段是否插入到grade字段后面,接下來,使用DESC語句查看數(shù)據(jù)表,執(zhí)行結(jié)果如下:ALTERTABLEgradeMODIFYidINT(20)AFTERgrade;id字段位于grade字段后面,說明id字段的排列位置被成功修改了。2.3數(shù)據(jù)表的基本操作2.3.4刪除數(shù)據(jù)表刪除數(shù)據(jù)表是指刪除數(shù)據(jù)庫中已存在的表,在刪除數(shù)據(jù)表的同時,數(shù)據(jù)表中存儲的數(shù)據(jù)都將被刪除。在MySQL中,直接使用DROPTABLE語句就可以刪除沒有被其它表關(guān)聯(lián)的數(shù)據(jù)表,其基本的語法格式如下所示:

在上述格式中,“表名”指的是要刪除的數(shù)據(jù)表。DROPTABLE表名;2.3數(shù)據(jù)表的基本操作2.3.4刪除數(shù)據(jù)表【例2-16】刪除數(shù)據(jù)表grade,SQL語句如下:為了驗(yàn)證數(shù)據(jù)表grade是否被刪除成功,使用DESC語句查看數(shù)據(jù)表,執(zhí)行結(jié)果如下:從上述結(jié)果可以看出,grade表已經(jīng)不存在了,說明數(shù)據(jù)表grade被成功刪除了。DROPTABLEgrade;2.4表的約束為了防止數(shù)據(jù)表中插入錯誤的數(shù)據(jù),在MySQL中,定義了一些維護(hù)數(shù)據(jù)庫完整性的規(guī)則,即表的約束。表2-9列舉了常見的表的約束。表2-9列舉的約束條件都是針對表中字段進(jìn)行限制,從而保證數(shù)據(jù)表中數(shù)據(jù)的正確性和唯一性。約束條件說明PRIMARYKEY主鍵約束,用于唯一標(biāo)識對應(yīng)的記錄FOREIGNKEY外鍵約束NOTNULL非空約束UNIQUE唯一性約束

DEFAULT默認(rèn)值約束,用于設(shè)置字段的默認(rèn)值表2-9表的約束2.4表的約束2.4.1

主鍵約束在MySQL中,為了快速查找表中的某條信息,可以通過設(shè)置主鍵來實(shí)現(xiàn)。主鍵約束是通過PRIMARYKEY定義的,它可以唯一標(biāo)識表中的記錄,這就好比身份證可以用來標(biāo)識人的身份一樣。在MySQL中,主鍵約束分為兩種,具體如下:1、單字段主鍵2、多字段主鍵2.4表的約束2.4.1

主鍵約束1、單字段主鍵單字段主鍵指的是由一個字段構(gòu)成的主鍵,其基本的語法格式如下所示:

【例2-17】創(chuàng)建一個數(shù)據(jù)表example01,并設(shè)置id作為主鍵,SQL語句如下:上述SQL語句執(zhí)行后,example01表中創(chuàng)建了id、name和grade三個字段,其中,id字段是主鍵。字段名數(shù)據(jù)類型PRIMARYKEY2.4表的約束2.4.1主鍵約束2、多字段主鍵多字段主鍵指的是多個字段組合而成的主鍵,其基本的語法格式如下所示:【例2-18】創(chuàng)建一個數(shù)據(jù)表example02,在表中將stu_id和course_id兩個字段共同作為主鍵,SQL語句如下:PRIMARYKEY(字段名1,字段名2,……字段名n)需要注意的是:每個數(shù)據(jù)表中最多只能有一個主鍵約束,定義為PRIMARYKEY的字段不能有重復(fù)值且不能為NULL值。stu_id和course_id兩個字段組合可以唯一確定一條記錄2.4表的約束2.4.2非空約束非空約束指的是字段的值不能為NULL,在MySQL中,非空約束是通過NOTNULL定義的,其基本的語法格式如下所示:【例2-19】創(chuàng)建一個數(shù)據(jù)表example04,將表中的name字段設(shè)置為非空約束,SQL語句如下:需要注意的是,在同一個數(shù)據(jù)表中可以定義多個非空字段。字段名數(shù)據(jù)類型NOTNULL;2.4表的約束2.4.3唯一約束唯一約束用于保證數(shù)據(jù)表中字段的唯一性,即表中字段的值不能重復(fù)出現(xiàn)。唯一約束是通過UNIQUE定義的,其基本的語法格式如下所示:【例2-20】創(chuàng)建一個數(shù)據(jù)表example05,將表中的stu_id設(shè)置為唯一約束,SQL語句如下:字段名數(shù)據(jù)類型UNIQUE;2.4表的約束2.4.4默認(rèn)約束默認(rèn)約束用于給數(shù)據(jù)表中的字段指定默認(rèn)值,即當(dāng)在表中插入一條新記錄時,如果沒有給這個字段賦值,那么,數(shù)據(jù)庫系統(tǒng)會自動為這個字段插入默認(rèn)值。默認(rèn)值是通過DEFAULT關(guān)鍵字定義的。默認(rèn)約束基本的語法格式如下所示:【例2-21】創(chuàng)建一個數(shù)據(jù)表example06,將表中的grade字段的默認(rèn)值設(shè)置為0,SQL語句如下:字段名數(shù)據(jù)類型DEFAULT默認(rèn)值;2.5設(shè)置表的字段值

自動增加在數(shù)據(jù)表中,若想為表中插入的新記錄自動生成唯一的ID,可以使用AUTO_INCREMENT約束來實(shí)現(xiàn)。AUTO_INCREMENT約束的字段可以是任何整數(shù)類型。默認(rèn)情況下,該字段的值是從1開始自增的。使用AUTO_INCREMENT設(shè)置表字段值自動增加的基本語法格式如下所示:【例2-22】創(chuàng)建一個數(shù)據(jù)表example05,將表中的id字段設(shè)置為自動增加,SQL語句如下:字段名數(shù)據(jù)類型AUTO_INCREMENT;2.6索引2.6.1索引的概念數(shù)據(jù)庫的索引好比新華字典的音序表,它是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序后的一種結(jié)構(gòu),其作用就是提高表中數(shù)據(jù)的查詢速度。MySQL中的索引分為很多種,具體如下:1、普通索引2、唯一性索引3、全文索引4、單列索引5、多列索引6、空間索引2.6索引2.6.2創(chuàng)建索引創(chuàng)建索引的方式有三種,具體如下:一、創(chuàng)建表的時候創(chuàng)建索引二、使用CREATEINDEX語句在已經(jīng)存在的表上創(chuàng)建索引三、使用ALTERTABLE語句在已經(jīng)存在表上創(chuàng)建索引2.6索引2.6.2創(chuàng)建索引一、創(chuàng)建表的時候創(chuàng)建索引關(guān)于上述語法的相關(guān)解釋具體如下:UNIQUE:可選參數(shù),表示唯一性約束FULLTEXT:可選參數(shù),表示全文約束SPATIAL:可選參數(shù),表示空間約束INDEX和KEY:用來表示字段的索引,二者選一即可別名:可選參數(shù),表示創(chuàng)建的索引的名稱字段名1:指定索引對應(yīng)字段的名稱長度:可選參數(shù),用于表示索引的長度ASC和DESC:可選參數(shù),其中,ASC表示升序排列,DESC表示降序排列CREATETABLE表名(字段名數(shù)據(jù)類型[完整性約束條件],字段名數(shù)據(jù)類型[完整性約束條件],......字段名數(shù)據(jù)類型[UNIQUE|FULLTEXT|SPATIAL]INDEX|KEY[別名](字段名1[(長度)])[ASC|DESC]));2.6索引2.6.2創(chuàng)建索引一、創(chuàng)建表的時候創(chuàng)建索引為了幫助大家更好地了解如何在創(chuàng)建表的時候創(chuàng)建索引,接下來,通過具體的案例,分別對MySQL中的6種索引類型進(jìn)行講解,具體如下:1、創(chuàng)建普通索引【例2-23】在t1表中id字段上建立索引,SQL語句如下:2.6索引2.6.2創(chuàng)建索引1、創(chuàng)建普通索引上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:為了查看索引是否被使用,可以使用EXPLAIN語句進(jìn)行查看,SQL代碼如下:EXPLAINSELECT*FROMt1WHEREid=1\GSHOWCREATETABLEt1\G2.6索引2.6.2創(chuàng)建索引2、創(chuàng)建唯一性索引【例2-24】創(chuàng)建一個表名為t2的表,在表中的id字段上建立索引名為unique_id的唯一性索引,并且按照升序排列,SQL語句如下:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:SHOWCREATETABLEt2\G2.6索引2.6.2創(chuàng)建索引3、創(chuàng)建全文索引【例2-25】創(chuàng)建一個表名為t3的表,在表中的name字段上建立索引名為fulltext_name的全文索引,SQL語句如下:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:SHOWCREATETABLEt3\G2.6索引2.6.2創(chuàng)建索引4、創(chuàng)建單列索引【例2-26】創(chuàng)建一個表名為t4的表,在表中的name字段上建立索引名為single_name的單列索引,SQL語句如下:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:SHOWCREATETABLEt4\G2.6索引2.6.2創(chuàng)建索引5、創(chuàng)建多列索引【例2-27】創(chuàng)建一個表名為t5的表,在表中的id和name字段上建立索引名為multi的多列索引,SQL語句如下:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:SHOWCREATETABLEt5\G2.6索引2.6.2創(chuàng)建索引5、創(chuàng)建多列索引需要注意的是,在多列索引中,只有查詢條件中使用了這些字段中的第一個字段時,多列索引才會被使用。為了驗(yàn)證這個說法是否正確,將id字段作為查詢條件,通過EXPLAIN語句查看索引的使用情況,SQL代碼如下所示:如果只使用name字段作為查詢條件,SQL代碼如下所示:EXPLAINSELECT*FROMt5WHEREid=1\GEXPLAINSELECT*FROMt5WHEREname='Mike'\G2.6索引2.6.2創(chuàng)建索引6、創(chuàng)建空間索引【例2-28】創(chuàng)建一個表名為t6的表,在空間類型為GEOMETRY的字段上創(chuàng)建空間索引,SQL語句如下:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:需要注意的是,創(chuàng)建空間索引時,所在字段的值不能為空值,并且表的存儲引擎為MyISAM。SHOWCREATETABLEt6\G2.6索引2.6.2創(chuàng)建索引二、使用CREATEINDEX語句在已經(jīng)存在的表上創(chuàng)建索引若想在一個已經(jīng)存在的表上創(chuàng)建索引,可以使用CREATEINDEX語句,CREATEINDEX語句創(chuàng)建索引的具體語法格式如下所示:在上述語法格式中,UNIQUE、FULLTEXT和SPATIAL都是可選參數(shù),分別用于表示唯一性索引、全文索引和空間索引。INDEX用于指明字段為索引。CREATE[UNIQUE|FULLTEXT|SPATIAL]INDEX索引名ON表名(字段名[(長度)][ASC|DESC]);2.6索引2.6.2創(chuàng)建索引為了便于大家學(xué)習(xí)如何使用CREATEINDEX語句在已經(jīng)存在的表上創(chuàng)建索引,接下來,創(chuàng)建一個book表,該表中沒有建立任何索引,創(chuàng)建book表的SQL語句如下所示:創(chuàng)建好數(shù)據(jù)表book后,通過具體的案例為大家演示如何使用CREATINDEX語句在已存在的數(shù)據(jù)表中創(chuàng)建索引,具體如下:CREATETABLEbook(

bookidINTNOTNULL,

booknameVARCHAR(255)NOTNULL,

authorsVARCHAR(255)NOTNULL,

infoVARCHAR(255)NULL,

commentVARCHAR(255)NULL,

publicyearYEARNOTNULL);2.6索引2.6.2創(chuàng)建索引1、創(chuàng)建普通索引【例2-29】在book表中的bookid字段上建立一個名稱為index_id的普通索引,SQL語句如下所示:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:CREATEINDEXindex_idONbook(bookid);SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)建索引2、創(chuàng)建唯一性索引【例2-30】在book表中的bookid字段上建立一個名稱為uniqueidx的唯一性索引,SQL語句如下所示:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:CREATEUNIQUEINDEXuniqueidxONbook(bookid);SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)建索引3、創(chuàng)建單列索引【例2-31】在book表中的comment字段上建立一個名稱為singleidx的單列索引,SQL語句如下所示:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:CREATEINDEXsingleidxONbook(comment);SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)建索引4、創(chuàng)建多列索引【例2-32】在book表中的authors和info字段上建立一個名稱為mulitidx的多列索引,SQL語句如下所示:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:CREATEINDEXmulitidxONbook(authors(20),info(20));SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)建索引5、創(chuàng)建全文索引【例2-33】刪除表book,重新創(chuàng)建表book,在表中的info字段上創(chuàng)建全文索引。首先刪除表book,SQL語句如下:然后重新創(chuàng)建表book,SQL語句如下:DROPTABLEbook;2.6索引2.6.2創(chuàng)建索引5、創(chuàng)建全文索引使用CREATEINDEX語句在book表的info字段上創(chuàng)建名稱為fulltextidx的全文索引,SQL語句如下:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:CREATEFULLTEXTINDEXfulltextidxONbook(info);SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)建索引6、創(chuàng)建空間索引【例2-34】創(chuàng)建表t7,在表中的g字段上創(chuàng)建名稱為spatidx的空間索引。首先創(chuàng)建數(shù)據(jù)表t7,SQL語句如下:使用CREATEINDEX語句在t7表的g字段上創(chuàng)建名稱為spatidx的空間索引,SQL語句如下:為了驗(yàn)證空間索引spatidx是否創(chuàng)建成功,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),結(jié)果如下所示:CREATETABLEt7(gGEOMETRYNOTNULL)ENGINE=MyISAM;CREATESPATIALINDEXspatidxONt7(g);SHOWCREATETABLEt7\G2.6索引2.6.2創(chuàng)建索引三、使用ALTERTABLE語句在已經(jīng)存在表上創(chuàng)建索引在已經(jīng)存在的表中創(chuàng)建索引,除了可以使用CREATEINDEX語句外,還可以使用ALTERTABLE語句。使用ALTERTABLE語句在已經(jīng)存在表上創(chuàng)建索引的語法格式如下所示:在上述語法格式中,UNIQUE、FULLTEXT和SPATIAL都是可選參數(shù),分別用于表示唯一性索引、全文索引和空間索引,ADD表示向表中添加字段。ALTERTABLE表名ADD[UNIQUE|FULLTEXT|SPATIAL]INDEX索引名(字段名[(長度)][ASC|DESC])2.6索引2.6.2創(chuàng)建索引接下來,同樣以book表為例,對不同類型的索引進(jìn)行詳細(xì)講解。為了使book表不包含任何索引,我們首先刪除表book,SQL語句如下:然后重新建立表book,SQL語句如下:創(chuàng)建好數(shù)據(jù)表book后,就可以使用ALTERTABLE語句在已存在的數(shù)據(jù)表中創(chuàng)建索引了,具體如下:DROPTABLEbook;2.6索引2.6.2創(chuàng)建索引1、創(chuàng)建普通索引【例2-35】在表中的bookid字段上創(chuàng)建名稱為index_id的普通索引,SQL語句如下:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:ALTERTABLEbookADDINDEXindex_id(bookid);SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)建索引2、創(chuàng)建唯一性索引【例2-36】在book表中的bookid字段上建立一個名稱為uniqueidx的唯一性索引,SQL語句如下:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:ALTERTABLEbookADDUNIQUEuniqueidx(bookid);SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)建索引3、創(chuàng)建單列索引【例2-37】在book表中的comment字段上建立一個名稱為singleidx的單列索引,SQL語句如下所示:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:ALTERTABLEbookADDINDEXsingleidx(comment(50));SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)建索引4、創(chuàng)建多列索引【例2-38】在book表中的authors和info字段上建立一個名稱為multidx的多列索引,SQL語句如下:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:ALTERTABLEbookADDINDEXmultidx(authors(20),info(50));SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)建索引5、創(chuàng)建全文索引【例2-39】刪除表book,重新創(chuàng)建表book,在表中的info字段上創(chuàng)建全文索引。首先刪除表book,SQL語句如下:然后重新創(chuàng)建表book,SQL語句如下:DROPTABLEbook;2.6索引2.6.2創(chuàng)建索引5、創(chuàng)建全文索引使用ALTERTABLE語句在book表的info字段上創(chuàng)建名稱為fulltextidx的全文索引,SQL語句如下:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),SQL代碼如下:ALTERTABLEbookADDFULLTEXTINDEXfulltextidx(info);SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)建索引6、創(chuàng)建空間索引【例2-40】創(chuàng)建表t8,在表中的space字段上創(chuàng)建名稱為spatidx的空間索引。首先得創(chuàng)建數(shù)據(jù)表t8,SQL語句如下所示:使用ALTERTABLE語句在book表的space字段上創(chuàng)建名稱為spatidx的空間索引,SQL語句如下所示:上述SQL語句執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),結(jié)果如下所示:CREATETABLEt8(spaceGEOMETRYNOTNULL)ENGINE=MyISAM;SHOWCREATETABLEt8\GALTERTABLEt8ADDSPATIALINDEXspatidx(space);2.6索引2.6.3刪除索引刪除索引的方式有兩種,具體如下:1、使用ALTERTABLE刪除索引使用ALTERTABLE刪除索引的基本語法格式如下所示:【例2-41】刪除表book中名稱為fulltextidx的全文索引。要想刪除該索引,可以使用以下SQL語句:ALTERTABLE表名DROPINDEX字段名ALTERTABLEbookDROPINDEXfulltextidx;2.6索引2.6.3刪除索引2、使用DROPINDEX刪除索引使用DROPINDEX刪除索引的基本語法格式如下所示【例2-42】刪除表t8中名稱為spatidx的空間索引,SQL語句如下:上述SQL代碼執(zhí)行后,使用SHOWCREATETABLE語句查看表的結(jié)構(gòu),結(jié)果如下所示:DROPINDEX索引名ON表名;DROPINDEXspatidxONt8;SHOWCREATETABLEt8\G本章小結(jié)本章主要講解了數(shù)據(jù)庫的基本操作、數(shù)據(jù)表的基本操作、數(shù)據(jù)類型、表的約束以及索引。數(shù)據(jù)庫和數(shù)據(jù)表的操作是本章的重要內(nèi)容,需要大家通過實(shí)踐練習(xí)加以透徹了解。表的約束和索引是本章難點(diǎn),希望讀者在使用時,可以結(jié)合表的實(shí)際情況去運(yùn)用。第三章添加、更新與刪除數(shù)據(jù)添加數(shù)據(jù)更新數(shù)據(jù)刪除數(shù)據(jù)?學(xué)習(xí)目標(biāo)掌握添加數(shù)據(jù)、更新數(shù)據(jù)和刪除數(shù)據(jù)13了解INSERT語句的其他寫法2熟悉DELETE和TRUNCATE刪除數(shù)據(jù)的區(qū)別掌握了解熟悉添加數(shù)據(jù)3.1?點(diǎn)擊查看本小節(jié)知識架構(gòu)更新數(shù)據(jù)3.2刪除數(shù)據(jù)3.33.1數(shù)據(jù)庫基礎(chǔ)知識返回目錄3.1.13.1.2為表中所有字段添加數(shù)據(jù)為表的指定字段添加數(shù)據(jù)3.1.3同時添加多條記錄知識架構(gòu)3.1 添加數(shù)據(jù)3.1.1為表中所有字段添加數(shù)據(jù)通常情況下,向數(shù)據(jù)表中添加的新記錄應(yīng)該包含表所有字段,即為該表中的所有字段添加數(shù)據(jù),為表中所有字段添加數(shù)據(jù)的INSERT語句有兩種。1、INSERT語句中指定所有字段名向表中添加新記錄時,可以在INSERT語句中列出表的所有字段名,其語法格式如下所示:INSERTINTO表名(字段名1,字段名2,……) VALUES(值1,值2,……);“字段名1,字段名2,……”表示數(shù)據(jù)表中的字段名稱,此處必須列

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論