




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
MySQL數(shù)據(jù)庫管理系統(tǒng)MySQL數(shù)據(jù)庫管理系統(tǒng)1提綱MySQL數(shù)據(jù)庫簡介MySQL的安裝與配置MySQL基本工具M(jìn)ySQL數(shù)據(jù)庫操作建庫建表存儲過程觸發(fā)器備份與恢復(fù)2022/12/92DatabaseTechnology,GUCAS提綱MySQL數(shù)據(jù)庫簡介2022/12/92DatabaseMySQL數(shù)據(jù)庫簡介MySQL數(shù)據(jù)庫的特點主要有以下幾個方面:使用核心線程的完全多線程服務(wù),這意味著可以采用多CPU體系結(jié)構(gòu)??蛇\行在不同平臺。使用C和C++語言編寫,并使用多種編譯器進(jìn)行測試,保證了源代碼的可移植性。支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多種操作系統(tǒng)。為多種編程語言提供了API。這些編程語言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。支持多線程,充分利用CPU資源。優(yōu)化的SQL查詢算法,可有效地提高查詢速度。既能夠作為一個單獨的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個庫嵌入其他的軟件中。提供多語言支持,常見的編碼如中文的GB2312、BIG5,日文的Shift_JIS等,都可以用做數(shù)據(jù)表名和數(shù)據(jù)列名。提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑。提供可用于管理、檢查、優(yōu)化數(shù)據(jù)庫操作的管理工具??梢蕴幚頁碛猩锨f條記錄的大型數(shù)據(jù)庫。2022/12/93DatabaseTechnology,GUCASMySQL數(shù)據(jù)庫簡介MySQL數(shù)據(jù)庫的特點主要有以下幾個方面MySQL的安裝與配置下載地址:
2022/12/94DatabaseTechnology,GUCASMySQL的安裝與配置下載地址:2022/12/94Dat運行下載的“mysql-5.1.31-win32”,出現(xiàn)如下界面:MySQL的安裝與配置(續(xù))
Mysql安裝向?qū)樱碞ext繼續(xù)。運行下載的“mysql-5.1.31-win32”,MySQ5MySQL的安裝與配置(續(xù))選擇安裝類型,有“Typical(默認(rèn))”“Complete(完全)”“Custom(用戶自定義)”三個選項,我們選擇“Custom”,有更多的選項,也方便熟悉安裝過程MySQL的安裝與配置(續(xù))選擇安裝類型,有6MySQL的安裝與配置(續(xù))確保DeveloperComponents全部選上,點選“Change...”手動指定安裝目錄。MySQL的安裝與配置(續(xù))確保7MySQL的安裝與配置(續(xù))填上安裝目錄,我的是“d:\ProgramFiles\MySQL\MySQLServer5.1\”,也建議不要放在與操作系統(tǒng)同一分區(qū),這樣可以防止系統(tǒng)備份還原的時候,數(shù)據(jù)被清空。按“OK”繼續(xù)。MySQL的安裝與配置(續(xù))填上安裝目錄,8MySQL的安裝與配置(續(xù))返回剛才的界面,按“Next”繼續(xù)。MySQL的安裝與配置(續(xù))返回剛才的界面,9MySQL的安裝與配置(續(xù))確認(rèn)先前的設(shè)置,如果有誤,按“Back”返回重做。按“Install”開始安裝。MySQL的安裝與配置(續(xù))確認(rèn)先前的設(shè)置,如果有誤,按“B10MySQL的安裝與配置(續(xù))正在安裝中MySQL的安裝與配置(續(xù))正在安裝中11安裝過程中會出現(xiàn)MySQL企業(yè)版的信息提示,點Next繼續(xù)安裝MySQL的安裝與配置(續(xù))安裝過程中會出現(xiàn)MySQLMySQL的安裝與配置(續(xù))12MySQL的安裝與配置(續(xù))至此,軟件安裝完成,出現(xiàn)mysql配置向?qū)?,將“ConfiguretheMysqlServernow”前面的勾打上,點“Finish”結(jié)束軟件的安裝并啟動mysql配置向?qū)А?/p>
MySQL的安裝與配置(續(xù))至此,軟件安裝完成,出現(xiàn)mysq13MySQL的安裝與配置(續(xù))mysql配置向?qū)咏缑?,按“Next”繼續(xù)。MySQL的安裝與配置(續(xù))mysql配置向?qū)咏缑妫?4MySQL的安裝與配置(續(xù))選擇配置方式,“DetailedConfiguration(手動精確配置)”“StandardConfiguration(標(biāo)準(zhǔn)配置)”,我們選擇“DetailedConfiguration”,方便熟悉配置過程。MySQL的安裝與配置(續(xù))選擇配置方式,15MySQL的安裝與配置(續(xù))選擇服務(wù)器類型,“DeveloperMachine(開發(fā)測試類,mysql占用很少資源)”“ServerMachine(服務(wù)器類型,mysql占用較多資源)”“DedicatedMySQLServerMachine(專門的數(shù)據(jù)庫服務(wù)器,mysql占用所有可用資源)”一般選“ServerMachine”,不會太少,也不會占滿。MySQL的安裝與配置(續(xù))選擇服務(wù)器類型,16MySQL的安裝與配置(續(xù))選擇mysql數(shù)據(jù)庫的大致用途,“MultifunctionalDatabase(通用多功能型,好)”、“TransactionalDatabaseOnly(服務(wù)器類型,專注于事務(wù)處理,一般)”“Non-TransactionalDatabaseOnly(非事務(wù)處理型,較簡單,主要做一些監(jiān)控、記數(shù)用,對MyISAM數(shù)據(jù)類型的支持僅限于non-transactional),
隨自己的用途而選擇,我這里選擇“TransactionalDatabaseOnly”,按“Next”繼續(xù)。MySQL的安裝與配置(續(xù))選擇mysql數(shù)據(jù)庫的大致用途,17MySQL的安裝與配置(續(xù))對InnoDBTablespace進(jìn)行配置,就是為InnoDB數(shù)據(jù)庫文件選擇一個存儲空間。這里沒有修改,使用用默認(rèn)位置,直接按“Next”繼續(xù)MySQL的安裝與配置(續(xù))對InnoDBTablespa18MySQL的安裝與配置(續(xù))選擇您的應(yīng)用的一般mysql訪問量,同時連接的數(shù)目“DecisionSupport(DSS)/OLAP(20個左右)”、“OnlineTransactionProcessing(OLTP)(500個左右)”、“ManualSetting(手動設(shè)置,自己輸一個數(shù))”,
這里選“OnlineTransactionProcessing(OLTP)”,一般夠用了,按“Next”繼續(xù)MySQL的安裝與配置(續(xù))選擇您的應(yīng)用的一般mysql訪問19MySQL的安裝與配置(續(xù))是否啟用TCP/IP連接,設(shè)定端口,如果不啟用,就只能在自己的機(jī)器上訪問mysql數(shù)據(jù)庫了,這里啟用,把前面的勾打上,PortNumber:3306。按“Next”繼續(xù)MySQL的安裝與配置(續(xù))是否啟用TCP/IP連接,設(shè)定端20MySQL的安裝與配置(續(xù))對mysql默認(rèn)數(shù)據(jù)庫語言編碼進(jìn)行設(shè)置,第一個是西文編碼,第二個是多字節(jié)的通用utf8編碼,都不是我們通用的編碼,這里選擇第三個,然后在CharacterSet那里選擇或填入“gbk”,當(dāng)然也可以用“gb2312”,按“Next”繼續(xù)。MySQL的安裝與配置(續(xù))對mysql默認(rèn)數(shù)據(jù)庫語言編碼進(jìn)21MySQL的安裝與配置(續(xù))選擇是否將mysql安裝為windows服務(wù),還可以指定ServiceName(服務(wù)標(biāo)識名稱),是否將mysql的bin目錄加入到WindowsPATH,我們這里全選,ServiceName不變。按“Next”繼續(xù)。MySQL的安裝與配置(續(xù))選擇是否將mysql安裝為win22詢問是否要修改默認(rèn)root用戶(超級管理)的密碼(默認(rèn)為空最后)CreateAnAnonymousAccount(新建一個匿名用戶,匿名用戶可以連接數(shù)據(jù)庫,不能操作數(shù)據(jù),包括查詢)”,一般就不用選了,設(shè)置完畢,按“Next”繼續(xù)。MySQL的安裝與配置(續(xù))詢問是否要修改默認(rèn)root用戶(超級管理)的密碼(默認(rèn)為空最23確認(rèn)設(shè)置無誤,如果有誤,按“Back”返回檢查。按“Execute”使設(shè)置生效。MySQL的安裝與配置(續(xù))確認(rèn)設(shè)置無誤,如果有誤,按“Back”返回檢查。按“Exec24設(shè)置完畢,按“Finish”結(jié)束mysql的安裝與配置MySQL的安裝與配置(續(xù))設(shè)置完畢,按“Finish”結(jié)束mysql的安裝與配置My25MySQL的安裝與配置(續(xù))檢驗MySQL是否安裝成功的方法:進(jìn)入cmd輸入:mysql–uroot–p命令,并在隨后的提示中輸入密碼如果出現(xiàn)以下提示則表示MySQL安裝成功。MySQL的安裝與配置(續(xù))檢驗MySQL是否安裝成功的方法26MySQL工具M(jìn)ySQL命令行實用程序
MySQL管理器MySQL查詢?yōu)g覽器MySQL工具M(jìn)ySQL命令行實用程序27MySQL命令行實用程序
進(jìn)入方法:mysql–uroot–p
退出方法:quit
命令以;或\g結(jié)束,即僅按enter不執(zhí)行命令
mysql命令不區(qū)分大小寫一條命令可以分為多行輸入,直到遇到分號為止一行可以輸入多條命令,命令之間用分號隔開MySQL命令行實用程序進(jìn)入方法:mysql–ur28MySQL管理器下載地址:
下載該文件即可MySQL管理器下載地址:下載該文件即可29MySQL管理器啟動MySQL管理器MySQL管理器啟動MySQL管理器30MySQL管理器登錄:填寫數(shù)據(jù)庫服務(wù)器地址、用戶名和密碼MySQL管理器登錄:填寫數(shù)據(jù)庫服務(wù)器地址、用戶名和密碼31MySQL管理器登錄后的界面:MySQL管理器登錄后的界面:32MySQL查詢?yōu)g覽器登錄后的界面:MySQL查詢?yōu)g覽器登錄后的界面:33創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫可以使用CREATEDATABASE語句,該語句的基本格式如下:CREATE{DATABASE|SCHEMA}[IFNOTEXISTS]db_name說明:“[]”中內(nèi)容為可選項,DATABASE與SCHEMA同義。db_name。要創(chuàng)建的數(shù)據(jù)庫的名稱,在文件系統(tǒng)中,MySQL的數(shù)據(jù)存儲區(qū)將以目錄方式表示MySQL數(shù)據(jù)庫。因此,命令中的數(shù)據(jù)庫名字必須符合操作系統(tǒng)文件夾命名規(guī)則。值得注意的是,在MySQL中是不區(qū)分大小寫的。IFNOTEXISTS。在創(chuàng)建數(shù)據(jù)庫前進(jìn)行判斷,只有該數(shù)據(jù)庫目前尚不存在時才執(zhí)行CREATEDATABASE操作。用此選項可以避免出現(xiàn)數(shù)據(jù)庫已經(jīng)存在而再新建的錯誤。創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫34例子:創(chuàng)建學(xué)生管理系統(tǒng)的數(shù)據(jù)庫,名為PXSCJ。打開“開始”→“程序”→“MySQL”→“MySQLServer5.1”→“MySQLCommandLineClient”菜單項,進(jìn)入MySQL客戶端,在客戶端窗口輸入密碼,在命令提示行輸入以下語句:CREATEDATABASEPXSCJ;創(chuàng)建了數(shù)據(jù)庫之后使用USE命令可指定當(dāng)前數(shù)據(jù)庫。語法格式如下:USEdb_name;創(chuàng)建數(shù)據(jù)庫例子:創(chuàng)建學(xué)生管理系統(tǒng)的數(shù)據(jù)庫,名為PXSCJ。創(chuàng)建數(shù)據(jù)庫35已經(jīng)創(chuàng)建的數(shù)據(jù)庫如要刪除,使用DROPDATABASE命令。語法格式如下:DROPDATABASE[IFEXISTS]db_name其中,db_name是要刪除的數(shù)據(jù)庫名??梢允褂肐FEXISTS子句以避免刪除不存在的數(shù)據(jù)庫時出現(xiàn)的MySQL錯誤信息。示例如下:刪除數(shù)據(jù)庫已經(jīng)創(chuàng)建的數(shù)據(jù)庫如要刪除,使用DROPDATABASE命令36創(chuàng)建表使用CREATETABLE語句,基本格式如下:CREATE[TEMPORARY]TABLE[IFNOTEXISTS]tbl_name( <列名1><數(shù)據(jù)類型>[<列選項>], <列名2><數(shù)據(jù)類型>[<列選項>], … <表選項>)TEMPORARY。該關(guān)鍵字表示用CREATE命令新建的表為臨時表。不加該關(guān)鍵字創(chuàng)建的表通常稱為持久表,在數(shù)據(jù)庫中持久表一旦創(chuàng)建將一直存在,多個用戶或者多個應(yīng)用程序可以同時使用持久表。有時需要臨時存放數(shù)據(jù),例如,臨時存儲復(fù)雜的SELECT語句的結(jié)果。此后,可能要重復(fù)地使用這個結(jié)果,但這個結(jié)果又不需要永久保存。這時,可以使用臨時表。用戶可以像操作持久表一樣操作臨時表。只不過臨時表的生命周期較短,而且只能對創(chuàng)建它的用戶可見,當(dāng)斷開與該數(shù)據(jù)庫的連接時,MySQL會自動刪除它們。創(chuàng)建表創(chuàng)建表使用CREATETABLE語句,基本格式如下:創(chuàng)建表37IFNOTEXISTS。建表前加上一個判斷,只有該表目前尚不存在時才執(zhí)行CREATETABLE操作。用此選項可以避免出現(xiàn)表已經(jīng)存在無法再新建的錯誤。列選項。列選項主要有以下幾種:NULL或NOTNULL:表示一列是否允許為空,NULL表示可以為空,NOTNULL表示不可以為空,如果不指定,則默認(rèn)為NULL。DEFAULTdefault_value:為列指定默認(rèn)值,默認(rèn)值default_value必須為一個常量。AUTO_INCREMENT:設(shè)置自增屬性,只有整型列才能設(shè)置此屬性。當(dāng)插入NULL值或0到一個AUTO_INCREMENT列中時,列被設(shè)置為value+1,value是此前表中該列的最大值。AUTO_INCREMENT順序從1開始。每個表只能有一個AUTO_INCREMENT列,并且它必須被索引。UNIQUEKEY|PRIMARYKEY:UNIQUEKEY和PRIMARYKEY都表示字段中的值是唯一的。PRIMARYKEY表示設(shè)置為主鍵,一個表只能定義一個主鍵,主鍵必須為NOTNULL。COMMENT'string':對于列的描述,string是描述的內(nèi)容。創(chuàng)建表IFNOTEXISTS。建表前加上一個判斷,只有該表目前38表選項。在定義列選項的時候,可以將某列定義為PRIMARYKEY,但是當(dāng)主鍵是由多個列組成的多列索引時,定義列時無法定義此主鍵,這時就必須在語句最后加上一個PRIMARYKEY(col_name,…)子句定義的表選項。另外,表選項中還可以定義索引和外鍵。例:使用命令行方式在PXSCJ數(shù)據(jù)庫中創(chuàng)建學(xué)生管理系統(tǒng)中的三個表XSB、KCB和CJB。創(chuàng)建XSB表使用如下語句:USEPXSCJ;CREATETABLEXSB(
學(xué)號
CHAR(6) NOTNULLPRIMARYKEY,
姓名
CHAR(8) NOTNULL,
性別
TINYINT(1) NULLDEFAULT1,
出生時間DATE NULL,
專業(yè)
CHAR(12) NULL,
總學(xué)分
INT(4) NULLDEFAULT
0,
備注
TEXT NULL);創(chuàng)建表表選項。在定義列選項的時候,可以將某列定義為PRIMARY39創(chuàng)建KCB表使用如下語句:USEPXSCJ;CREATETABLEKCB(
課程號
CHAR(3) NOTNULLPRIMARYKEY,
課程名
CHAR(16) NOTNULL,
開課學(xué)期
TINYINT(1) NULLDEFAULT1,
學(xué)時
TINYINT(1) NULL,
學(xué)分
TINYINT(1) NOTNULL);創(chuàng)建CJB表使用如下語句:USEPXSCJ;CREATETABLECJB(
學(xué)號
CHAR(6) NOTNULL,
課程號
CHAR(3) NOTNULL,
成績
INT(4) NULL, PRIMARYKEY(學(xué)號,課程號));創(chuàng)建表創(chuàng)建KCB表使用如下語句:創(chuàng)建表40ALTERTABLE用于更改原有的表結(jié)構(gòu)。例如,可以增加或刪減列,創(chuàng)建或取消索引,更改原有列的類型,重新命名列或表,還可以更改表的描述和表的類型。ALTERTABLE語句的基本格式如下:ALTERTABLEtable_name ADD<列名><數(shù)據(jù)類型><列選項> /*添加列*/ |ALTER<列名>{SETDEFAULTdefault_value|DROPDEFAULT} /*修改默認(rèn)值*/ |CHANGE<舊列名><新列名><數(shù)據(jù)類型><列選項> /*對列重命名*/ |MODIFY<列名><數(shù)據(jù)類型><列選項> /*修改列類型*/ |DROP<列名> /*刪除列*/ |RENAME<新表名> /*重命名該表*/ |其他修改表修改表41其中,table_name為要修改表的表名。ALTERTABLE語句中的修改子句可以包含以下幾類:ADD子句。向表中增加新列。例如,在表t1中增加新的一列a:ALTERTABLEt1ADDCOLUMNaTINYINTNULL;ALTER子句。修改表中指定列的默認(rèn)值。CHANGE子句。修改列的名稱。重命名時,需給定舊列名、新列名和列當(dāng)前的類型,例如,要把一個INTEGER列的名稱從a變更到b:ALTERTABLEt1CHANGEabINTEGER;MODIFY子句:修改指定列的類型。例如,把一個列的數(shù)據(jù)類型改為BIGINT:ALTERTABLEt1MODIFYbBIGINTNOTNULL;注意:若表中該列所存數(shù)據(jù)的數(shù)據(jù)類型與將要修改的列的類型沖突,則發(fā)生錯誤。例如,原來CHAR類型的列要修改成INT類型,而原來列值中有字符型數(shù)據(jù)“a”,則無法修改。DROP子句:從表中刪除列或約束。RENAME子句:修改該表的表名。例如,將表a改名為b:ALTERTABLEaRENAMEb;修改表其中,table_name為要修改表的表名。修改表42刪除一個表可以使用DROPTABLE語句。語法格式如下:DROP[TEMPORARY]TABLE[IFEXISTS]tbl_name[,tbl_name]...例如,刪除XSB表可以使用如下語句:USEPXSCJ;DROPTABLEXSB;刪除表刪除一個表可以使用DROPTABLE語句。語法格式如下:刪43SELECT語句可以從一個或多個表中選取特定的行和列,結(jié)果通常是生成一個臨時表。在執(zhí)行過程中系統(tǒng)根據(jù)用戶的要求從數(shù)據(jù)庫中選出匹配的行和列,并將結(jié)果存放到臨時的表中,SELECT語句的語法格式如下:SELECT [ALL|DISTINCT] select_expr,... [FROMtable1[,table2]…] /*FROM子句*/ [WHEREwhere_definition] /*WHERE子句*/ [GROUPBY{col_name|expr|position}[ASC|DESC],...] /*GROUPBY子句*/ [HAVINGwhere_definition] /*HAVING子句*/ [ORDERBY{col_name|expr|position}[ASC|DESC],...] /*ORDERBY子句*/ [LIMIT{[offset,]row_count}] /*LIMIT子句*/查詢表數(shù)據(jù)SELECT語句可以從一個或多個表中選取特定的行和列,結(jié)果通44創(chuàng)建存儲過程存儲過程可以由聲明式SQL語句(如CREATE、UPDATE和SELECT等語句)和過程式SQL語句(如IF-THEN-ELSE語句)組成。創(chuàng)建存儲過程使用CREATEPROCEDURE語句,語法格式如下:CREATEPROCEDUREsp_name([[IN|OUT|INOUT]param_nametype[,...]]) <routine_body>存儲過程存儲過程45<routine_body>是存儲過程的主體部分,也叫做存儲過程體。它包含了在過程調(diào)用的時候必須執(zhí)行的語句,這個部分總是以BEGIN開始,以END結(jié)束。當(dāng)然,當(dāng)存儲過程體中只有一個SQL語句時可以省略BEGIN-END標(biāo)志。另外,BEGIN-END復(fù)合語句還可以嵌套使用。在開始創(chuàng)建存儲過程之前,先介紹一個很實用的命令:DELIMITER命令。在MySQL中,服務(wù)器處理語句的時候是以分號為結(jié)束標(biāo)志的。但是在創(chuàng)建存儲過程的時候,存儲過程體中可能包含多個SQL語句,每個SQL語句都是以分號為結(jié)尾的,這時服務(wù)器處理程序遇到第一個分號的時候就會認(rèn)為程序結(jié)束,這肯定是不行的。所以這里使用DELIMITER命令將MySQL語句的結(jié)束標(biāo)志修改為其他符號。例如:DELIMITER$$執(zhí)行完這條命令后,程序結(jié)束的標(biāo)志就換成兩個美元符“$$”了。要想恢復(fù)使用分號“;”作為結(jié)束符,運行下面命令即可:DELIMITER;存儲過程<routine_body>是存儲過程的主體部分,也叫做存儲46存儲過程體中可以包含所有類型的SQL語句,另外還可以包含以下內(nèi)容。(1)局部變量使用DECLARE語句聲明局部變量,例如,聲明一個整型變量和兩個字符變量:DECLAREnumINT(4);DECLAREstr1,str2VARCHAR(6);說明:局部變量只能在BEGIN_END語句塊中聲明。(2)使用SET語句賦值要給局部變量賦值,可以使用SET語句,例如:SETnum=1,str1='hello';說明:這條語句無法單獨執(zhí)行,只能在存儲過程和存儲函數(shù)中使用。(3)SELECT...INTO語句使用SELECT…INTO語句可以把選定的列值直接存儲到變量中。因此,返回的結(jié)果只能有一行。例如:SELECT姓名,專業(yè)
INTOname,project FROMXSB WHERE學(xué)號='081101';存儲過程存儲過程體中可以包含所有類型的SQL語句,另外還可以包含以下47(4)流程控制語句在MySQL中,常見的過程式SQL語句可以用在一個存儲過程體中。例如,IF語句、CASE語句、WHILE語句等。IF語句。IF-THEN-ELSE語句可根據(jù)不同的條件執(zhí)行不同的操作。語法格式為:IFsearch_conditionTHENstatement_list[ELSEIFsearch_conditionTHENstatement_list]...[ELSEstatement_list]ENDIF說明:search_condition是判斷的條件,statement_list中包含一個或多個SQL語句。當(dāng)search_condition的條件為真時,就執(zhí)行相應(yīng)的SQL語句。CASE語句。語法格式為:CASEcase_value WHENwhen_valueTHENstatement_list [WHENwhen_valueTHENstatement_list]... [ELSEstatement_list]ENDCASE存儲過程(4)流程控制語句存儲過程48或者:CASE WHENsearch_conditionTHENstatement_list [WHENsearch_conditionTHENstatement_list]... [ELSEstatement_list]ENDCASE第一種格式中case_value是要被判斷的值或表達(dá)式,接下來是一系列的WHEN-THEN塊,每一塊的when_value參數(shù)指定要與case_value比較的值,如果為真,就執(zhí)行statement_list中的SQL語句。如果前面的每一塊都不匹配就執(zhí)行ELSE塊指定的語句。CASE語句最后以ENDCASE結(jié)束。第二種格式中CASE關(guān)鍵字后面沒有參數(shù),在WHEN-THEN塊中,search_condition指定了一個比較表達(dá)式,表達(dá)式為真時執(zhí)行THEN后面的語句。與第一種格式相比,這種格式能夠?qū)崿F(xiàn)更為復(fù)雜的條件判斷,使用起來更方便。存儲過程或者:存儲過程49WHILE語句。語法格式為:WHILEsearch_conditionDO statement_listENDWHILE說明:語句首先判斷search_condition是否為真,為真則執(zhí)行statement_list中的語句,然后再次進(jìn)行判斷,為真則繼續(xù)循環(huán),不為真則結(jié)束循環(huán)?!纠縿?chuàng)建一個存儲過程,實現(xiàn)的功能是刪除一個特定學(xué)生的信息。DELIMITER$$CREATEPROCEDUREDELETE_STUDENT(INXHCHAR(6))BEGIN DELETEFROMXSBWHERE學(xué)號=XH;END$$DELIMITER;存儲過程WHILE語句。語法格式為:存儲過程50【例】創(chuàng)建一個存儲過程,有兩個輸入?yún)?shù)XH和KCM,要求當(dāng)某學(xué)生某門課程的成績小于60分時將備注修改為“有課程沒過”,大于等于60分時將該成績修改為60分。DELIMITER$$CREATEPROCEDUREDO_UPDATE(INXHCHAR(6),INKCMCHAR(16))BEGIN DECLAREKCHCHAR(3); DECLARECJTINYINT; SELECT課程號
INTOKCHFROMKCBWHERE課程名=KCM; SELECT成績
INTOCJFROMCJBWHERE學(xué)號=XHAND課程號=KCH; IFCJ<60THEN UPDATEXSBSET備注='有課程沒過'WHERE學(xué)號=XH; ELSE UPDATECJBSET成績=60WHERE學(xué)號=XHAND課程號=KCH; ENDIF;END$$DELIMITER;存儲過程【例】創(chuàng)建一個存儲過程,有兩個輸入?yún)?shù)XH和KCM,要求512.調(diào)用存儲過程存儲過程創(chuàng)建完后,可以使用CALL語句來調(diào)用。語法格式如下:CALLsp_name([參數(shù)[,...]])例:創(chuàng)建存儲過程,實現(xiàn)查詢XSB表中學(xué)生人數(shù)的功能,該存儲過程不帶參數(shù)。CREATEPROCEDUREDO_QUERY() SELECTCOUNT(*)FROMXSBORDERBY學(xué)號;調(diào)用該存儲過程:CALLDO_QUERY();存儲過程3.刪除存儲過程存儲過程創(chuàng)建后需要刪除時使用DROPPROCEDURE語句。例如,刪除存儲過程DELETE_STUDENT可以使用如下語句:DROPPROCEDUREIFEXISTSDELETE_STUDENT;2.調(diào)用存儲過程存儲過程3.刪除存儲過程52創(chuàng)建觸發(fā)器使用CREATETRIGGER語句,語法格式如下:CREATETRIGGERtrigger_nametrigger_timetrigger_eventONtbl_nameFOREACHROWtrigger_stmttrigger_name。觸發(fā)器的名稱。trigger_time。觸發(fā)器觸發(fā)的時刻,有兩個選項AFTER和BEFORE,以表示觸發(fā)器是在激活它的語句之前還是之后觸發(fā)。trigger_event。觸發(fā)事件,指明激活觸發(fā)程序的語句的類型。trigger_event可以是INSERT、UPDATE和DELETE,分別表示插入、修改、刪除數(shù)據(jù)時激活觸發(fā)器。tbl_name。與觸發(fā)器相關(guān)的表名,在該表上發(fā)生觸發(fā)事件才會激活觸發(fā)器。同一個表不能擁有兩個具有相同觸發(fā)時刻和事件的觸發(fā)器。trigger_stmt。觸發(fā)器動作,包含觸發(fā)器激活時將要執(zhí)行的語句。如果要執(zhí)行多個語句,可使用BEGIN...END復(fù)合語句結(jié)構(gòu),這樣就能使用存儲過程中允許的相同語句。觸發(fā)器創(chuàng)建觸發(fā)器使用CREATETRIGGER語句,語法格式如下53例:創(chuàng)建一個觸發(fā)器,當(dāng)刪除表XSB中某個學(xué)生的信息時,同時將CJB表中與該學(xué)生有關(guān)的數(shù)據(jù)全部刪除。DELIMITER$$CREATETRIGGERXS_DELETEAFTERDELETE ONXSBFOREACHROWBEGIN DELETEFROMCJBWHERE學(xué)號=OLD.學(xué)號;END$$DELIMITER;現(xiàn)在驗證一下觸發(fā)器的功能:DELETEFROMXSBWHERE學(xué)號='081101';使用SELECT語句查看CJB表中的情況:SELECT*FROMCJB;刪除觸發(fā)器也是使用DROP語句,例如:DROPTRIGGERXS_DELETE;觸發(fā)器例:創(chuàng)建一個觸發(fā)器,當(dāng)刪除表XSB中某個學(xué)生的信息時,同時將54創(chuàng)建數(shù)據(jù)庫和表1.創(chuàng)建數(shù)據(jù)庫以創(chuàng)建PXSCJ2數(shù)據(jù)庫為例,創(chuàng)建數(shù)據(jù)庫的方法如下:(1)打開“開始”→“程序”→“MySQL”→“MySQLAdministrator”菜單項,ServerHost為“l(fā)ocalhost”,Username為“root”,輸入密碼,單擊【OK】按鈕。主機(jī)名用戶名密碼使用界面工具操作MySQL創(chuàng)建數(shù)據(jù)庫和表主機(jī)名用戶名密碼使用界面工具操作MySQL55(2)在MySQLAdministrator窗口中展開Catalogs選項欄,出現(xiàn)如圖所示的數(shù)據(jù)庫列表,在任意一個數(shù)據(jù)庫名上右擊鼠標(biāo),選擇“CreateNewSchema”子選項。Catalogs選項欄數(shù)據(jù)庫列表使用界面工具操作MySQL(2)在MySQLAdministrator窗口中展開Ca56(3)出現(xiàn)如圖所示的界面,輸入需要創(chuàng)建的數(shù)據(jù)庫名PXSCJ2,單擊【OK】按鈕。這樣數(shù)據(jù)庫PXSCJ2就創(chuàng)建成功了。使用界面工具操作MySQL(3)出現(xiàn)如圖所示的界面,輸入需要創(chuàng)建的數(shù)據(jù)庫名PXSCJ2572.創(chuàng)建表若要在數(shù)據(jù)庫PXSCJ2中創(chuàng)建XSB表,步驟如下:(1)在MySQLAdministrator窗口中展開Catalogs選項欄,在數(shù)據(jù)庫PXSCJ2上右擊鼠標(biāo),在彈出的快捷單上選擇“CreateNewTable”選項,或者直接單擊【CreateTable】按鈕。(2)在彈出的“MySQLTableEditor”窗口中輸入表名XSB,在“ColumnsandIndices”子選框中輸入表的各列及數(shù)據(jù)類型,如圖所示,單擊【ApplyChanges】按鈕。在彈出的“ConfirmTableEditor”對話框中單擊【Execute】按鈕,即可成功創(chuàng)建表XSB。輸入表名列名列類型使用界面工具操作MySQL2.創(chuàng)建表列名列類型使用界面工具操作MySQL58如果要在數(shù)據(jù)庫中刪除表,步驟如下:(1)在MySQLAdministrator窗口中展開Catalogs選項欄,選擇數(shù)據(jù)庫(如PXSCJ2),在快捷選單上右擊要刪除的表,選擇“DropTable”選項。(2)在彈出對話框中單擊【DropTable】按鈕,即刪除了表。如果要修改表,可以在步驟(1)中選擇“EditTable”選項,在彈出的窗口中進(jìn)行修改,修改后單擊【ApplyChanges】按鈕即可完成。使用界面工具操作MySQL如果要在數(shù)據(jù)庫中刪除表,步驟如下:使用界面工具操作MySQL59啟動MySQLAdministrator,在Catalogs選項欄中選中數(shù)據(jù)庫PXSCJ2,再選中需要操作的表(XSB),右擊,在彈出的快捷選單中選擇“EditTableData”選項,進(jìn)入操作所選擇的表數(shù)據(jù)窗口,如圖所示。添加記錄的方法是:單擊圖中下方工具欄的“Edit”選項,雙擊需要輸入的地方,將數(shù)據(jù)寫入,每輸入一個值,按回車鍵。每輸入完一行值,將光標(biāo)移到下一行中,如圖所示。數(shù)據(jù)輸入完畢后單擊【ApplyChanges】按鈕保存結(jié)果。單擊Edit進(jìn)行修改操作表數(shù)據(jù)啟動MySQLAdministrator,在Catalog60雙擊右側(cè)Schemata欄內(nèi)數(shù)據(jù)庫PXSCJ2中的XSB表,單擊【Execute】按鈕可查看插入數(shù)據(jù)后的XSB表。修改記錄的方法和添加數(shù)據(jù)基本相同。進(jìn)入上頁圖所示的窗口后單擊“Edit”選項,雙擊需要修改的地方,輸入新記錄,修改完后單擊【ApplyChanges】按鈕即可。刪除記錄的方法是:在操作數(shù)據(jù)的窗口,將當(dāng)前光標(biāo)移動到要刪除的行,單擊鼠標(biāo)右鍵,在彈出的快捷選單上選擇“deleterow(s)”選項,再單擊【ApplyChanges】按鈕即刪除了該行記錄。保存記錄執(zhí)行按鈕圖7.14添加數(shù)據(jù)操作表數(shù)據(jù)雙擊右側(cè)Schemata欄內(nèi)數(shù)據(jù)庫PXSCJ2中的XSB表,61除了用命令行進(jìn)行查詢外,還可以用MySQL的查詢工具M(jìn)ySQLQueryBrowser進(jìn)行數(shù)據(jù)查詢。查詢方法如下:啟動MySQLQueryBrowser,輸入服務(wù)器名、用戶名和密碼(與MySQLAdministrator工具一樣),在DefaultSchema欄后的文本框中輸入要設(shè)定的當(dāng)前數(shù)據(jù)庫名。連接后進(jìn)入MySQLQueryBrowser主窗口,如圖所示。輸入SQL語句顯示結(jié)果操作表數(shù)據(jù)除了用命令行進(jìn)行查詢外,還可以用MySQL的查詢工具M(jìn)ySQ621.備份數(shù)據(jù)庫(1)登錄MySQLAdministrator,在MySQLAdministrator管理器窗口選中“Backup”選項欄,在出現(xiàn)的“BackupProject”欄上單擊【NewProject】按鈕,如圖所示。備份名Backup選項欄數(shù)據(jù)庫備份和恢復(fù)1.備份數(shù)據(jù)庫備份名Backup選項欄數(shù)據(jù)庫備份和恢復(fù)63(2)在Projectname欄上輸入要創(chuàng)建備份的名稱,在Schemata選項框中選擇需要創(chuàng)建的數(shù)據(jù)庫名稱(以PXSCJ數(shù)據(jù)庫為例),單擊【>】按鈕,在MySQLAdministrator中出現(xiàn)如圖所示的備份選項。要取消,單擊【<】按鈕。(3)選擇要備份的數(shù)據(jù)庫中的表,單擊【ExecuteBackupNow】按鈕,出現(xiàn)保存數(shù)據(jù)對話框,選擇要備份的路徑,并單擊【保存】按鈕。備份完成后可以在指定的目錄中找到一個.sql格式的文件,里面保存了與數(shù)據(jù)庫相關(guān)的一系列SQL語句。要備份的數(shù)據(jù)庫列表單擊備份選擇需要備份的表文件數(shù)據(jù)庫備份和恢復(fù)(2)在Projectname欄上輸入要創(chuàng)建備份的名稱,在642.恢復(fù)數(shù)據(jù)庫(1)登錄MySQLAdministrator,在MySQLAdministrator管理器窗口選中Restore選項欄,在彈出的菜單上選擇“OpenBackupFile”選項。在彈出的對話框中選擇需要恢復(fù)的備份,單擊【打開】按鈕,如圖所示。Restore選項欄已經(jīng)保存的備份數(shù)據(jù)庫備份和恢復(fù)2.恢復(fù)數(shù)據(jù)庫數(shù)據(jù)庫備份和恢復(fù)65(2)在隨后的恢復(fù)選項中,如圖所示,選擇要恢復(fù)的類型,然后單擊【StartRestore】按鈕即可。(3)如果提示數(shù)據(jù)庫恢復(fù)成功,在Catalogs目錄下就能查看數(shù)據(jù)庫恢復(fù)的具體情況。單擊此按鈕開始恢復(fù)數(shù)據(jù)庫備份和恢復(fù)(2)在隨后的恢復(fù)選項中,如圖所示,選擇要恢復(fù)的類型,然后單66總結(jié)MySQL數(shù)據(jù)庫簡介MySQL的安裝與配置MySQL基本工具M(jìn)ySQL數(shù)據(jù)庫操作建庫建表存儲過程觸發(fā)器備份與恢復(fù)2022/12/9DatabaseTechnology,GUCAS67總結(jié)MySQL數(shù)據(jù)庫簡介2022/12/9Database67謝謝觀賞謝謝觀賞68MySQL數(shù)據(jù)庫管理系統(tǒng)MySQL數(shù)據(jù)庫管理系統(tǒng)69提綱MySQL數(shù)據(jù)庫簡介MySQL的安裝與配置MySQL基本工具M(jìn)ySQL數(shù)據(jù)庫操作建庫建表存儲過程觸發(fā)器備份與恢復(fù)2022/12/970DatabaseTechnology,GUCAS提綱MySQL數(shù)據(jù)庫簡介2022/12/92DatabaseMySQL數(shù)據(jù)庫簡介MySQL數(shù)據(jù)庫的特點主要有以下幾個方面:使用核心線程的完全多線程服務(wù),這意味著可以采用多CPU體系結(jié)構(gòu)??蛇\行在不同平臺。使用C和C++語言編寫,并使用多種編譯器進(jìn)行測試,保證了源代碼的可移植性。支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多種操作系統(tǒng)。為多種編程語言提供了API。這些編程語言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。支持多線程,充分利用CPU資源。優(yōu)化的SQL查詢算法,可有效地提高查詢速度。既能夠作為一個單獨的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個庫嵌入其他的軟件中。提供多語言支持,常見的編碼如中文的GB2312、BIG5,日文的Shift_JIS等,都可以用做數(shù)據(jù)表名和數(shù)據(jù)列名。提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑。提供可用于管理、檢查、優(yōu)化數(shù)據(jù)庫操作的管理工具??梢蕴幚頁碛猩锨f條記錄的大型數(shù)據(jù)庫。2022/12/971DatabaseTechnology,GUCASMySQL數(shù)據(jù)庫簡介MySQL數(shù)據(jù)庫的特點主要有以下幾個方面MySQL的安裝與配置下載地址:
2022/12/972DatabaseTechnology,GUCASMySQL的安裝與配置下載地址:2022/12/94Dat運行下載的“mysql-5.1.31-win32”,出現(xiàn)如下界面:MySQL的安裝與配置(續(xù))
Mysql安裝向?qū)?,按Next繼續(xù)。運行下載的“mysql-5.1.31-win32”,MySQ73MySQL的安裝與配置(續(xù))選擇安裝類型,有“Typical(默認(rèn))”“Complete(完全)”“Custom(用戶自定義)”三個選項,我們選擇“Custom”,有更多的選項,也方便熟悉安裝過程MySQL的安裝與配置(續(xù))選擇安裝類型,有74MySQL的安裝與配置(續(xù))確保DeveloperComponents全部選上,點選“Change...”手動指定安裝目錄。MySQL的安裝與配置(續(xù))確保75MySQL的安裝與配置(續(xù))填上安裝目錄,我的是“d:\ProgramFiles\MySQL\MySQLServer5.1\”,也建議不要放在與操作系統(tǒng)同一分區(qū),這樣可以防止系統(tǒng)備份還原的時候,數(shù)據(jù)被清空。按“OK”繼續(xù)。MySQL的安裝與配置(續(xù))填上安裝目錄,76MySQL的安裝與配置(續(xù))返回剛才的界面,按“Next”繼續(xù)。MySQL的安裝與配置(續(xù))返回剛才的界面,77MySQL的安裝與配置(續(xù))確認(rèn)先前的設(shè)置,如果有誤,按“Back”返回重做。按“Install”開始安裝。MySQL的安裝與配置(續(xù))確認(rèn)先前的設(shè)置,如果有誤,按“B78MySQL的安裝與配置(續(xù))正在安裝中MySQL的安裝與配置(續(xù))正在安裝中79安裝過程中會出現(xiàn)MySQL企業(yè)版的信息提示,點Next繼續(xù)安裝MySQL的安裝與配置(續(xù))安裝過程中會出現(xiàn)MySQLMySQL的安裝與配置(續(xù))80MySQL的安裝與配置(續(xù))至此,軟件安裝完成,出現(xiàn)mysql配置向?qū)?,將“ConfiguretheMysqlServernow”前面的勾打上,點“Finish”結(jié)束軟件的安裝并啟動mysql配置向?qū)А?/p>
MySQL的安裝與配置(續(xù))至此,軟件安裝完成,出現(xiàn)mysq81MySQL的安裝與配置(續(xù))mysql配置向?qū)咏缑?,按“Next”繼續(xù)。MySQL的安裝與配置(續(xù))mysql配置向?qū)咏缑妫?2MySQL的安裝與配置(續(xù))選擇配置方式,“DetailedConfiguration(手動精確配置)”“StandardConfiguration(標(biāo)準(zhǔn)配置)”,我們選擇“DetailedConfiguration”,方便熟悉配置過程。MySQL的安裝與配置(續(xù))選擇配置方式,83MySQL的安裝與配置(續(xù))選擇服務(wù)器類型,“DeveloperMachine(開發(fā)測試類,mysql占用很少資源)”“ServerMachine(服務(wù)器類型,mysql占用較多資源)”“DedicatedMySQLServerMachine(專門的數(shù)據(jù)庫服務(wù)器,mysql占用所有可用資源)”一般選“ServerMachine”,不會太少,也不會占滿。MySQL的安裝與配置(續(xù))選擇服務(wù)器類型,84MySQL的安裝與配置(續(xù))選擇mysql數(shù)據(jù)庫的大致用途,“MultifunctionalDatabase(通用多功能型,好)”、“TransactionalDatabaseOnly(服務(wù)器類型,專注于事務(wù)處理,一般)”“Non-TransactionalDatabaseOnly(非事務(wù)處理型,較簡單,主要做一些監(jiān)控、記數(shù)用,對MyISAM數(shù)據(jù)類型的支持僅限于non-transactional),
隨自己的用途而選擇,我這里選擇“TransactionalDatabaseOnly”,按“Next”繼續(xù)。MySQL的安裝與配置(續(xù))選擇mysql數(shù)據(jù)庫的大致用途,85MySQL的安裝與配置(續(xù))對InnoDBTablespace進(jìn)行配置,就是為InnoDB數(shù)據(jù)庫文件選擇一個存儲空間。這里沒有修改,使用用默認(rèn)位置,直接按“Next”繼續(xù)MySQL的安裝與配置(續(xù))對InnoDBTablespa86MySQL的安裝與配置(續(xù))選擇您的應(yīng)用的一般mysql訪問量,同時連接的數(shù)目“DecisionSupport(DSS)/OLAP(20個左右)”、“OnlineTransactionProcessing(OLTP)(500個左右)”、“ManualSetting(手動設(shè)置,自己輸一個數(shù))”,
這里選“OnlineTransactionProcessing(OLTP)”,一般夠用了,按“Next”繼續(xù)MySQL的安裝與配置(續(xù))選擇您的應(yīng)用的一般mysql訪問87MySQL的安裝與配置(續(xù))是否啟用TCP/IP連接,設(shè)定端口,如果不啟用,就只能在自己的機(jī)器上訪問mysql數(shù)據(jù)庫了,這里啟用,把前面的勾打上,PortNumber:3306。按“Next”繼續(xù)MySQL的安裝與配置(續(xù))是否啟用TCP/IP連接,設(shè)定端88MySQL的安裝與配置(續(xù))對mysql默認(rèn)數(shù)據(jù)庫語言編碼進(jìn)行設(shè)置,第一個是西文編碼,第二個是多字節(jié)的通用utf8編碼,都不是我們通用的編碼,這里選擇第三個,然后在CharacterSet那里選擇或填入“gbk”,當(dāng)然也可以用“gb2312”,按“Next”繼續(xù)。MySQL的安裝與配置(續(xù))對mysql默認(rèn)數(shù)據(jù)庫語言編碼進(jìn)89MySQL的安裝與配置(續(xù))選擇是否將mysql安裝為windows服務(wù),還可以指定ServiceName(服務(wù)標(biāo)識名稱),是否將mysql的bin目錄加入到WindowsPATH,我們這里全選,ServiceName不變。按“Next”繼續(xù)。MySQL的安裝與配置(續(xù))選擇是否將mysql安裝為win90詢問是否要修改默認(rèn)root用戶(超級管理)的密碼(默認(rèn)為空最后)CreateAnAnonymousAccount(新建一個匿名用戶,匿名用戶可以連接數(shù)據(jù)庫,不能操作數(shù)據(jù),包括查詢)”,一般就不用選了,設(shè)置完畢,按“Next”繼續(xù)。MySQL的安裝與配置(續(xù))詢問是否要修改默認(rèn)root用戶(超級管理)的密碼(默認(rèn)為空最91確認(rèn)設(shè)置無誤,如果有誤,按“Back”返回檢查。按“Execute”使設(shè)置生效。MySQL的安裝與配置(續(xù))確認(rèn)設(shè)置無誤,如果有誤,按“Back”返回檢查。按“Exec92設(shè)置完畢,按“Finish”結(jié)束mysql的安裝與配置MySQL的安裝與配置(續(xù))設(shè)置完畢,按“Finish”結(jié)束mysql的安裝與配置My93MySQL的安裝與配置(續(xù))檢驗MySQL是否安裝成功的方法:進(jìn)入cmd輸入:mysql–uroot–p命令,并在隨后的提示中輸入密碼如果出現(xiàn)以下提示則表示MySQL安裝成功。MySQL的安裝與配置(續(xù))檢驗MySQL是否安裝成功的方法94MySQL工具M(jìn)ySQL命令行實用程序
MySQL管理器MySQL查詢?yōu)g覽器MySQL工具M(jìn)ySQL命令行實用程序95MySQL命令行實用程序
進(jìn)入方法:mysql–uroot–p
退出方法:quit
命令以;或\g結(jié)束,即僅按enter不執(zhí)行命令
mysql命令不區(qū)分大小寫一條命令可以分為多行輸入,直到遇到分號為止一行可以輸入多條命令,命令之間用分號隔開MySQL命令行實用程序進(jìn)入方法:mysql–ur96MySQL管理器下載地址:
下載該文件即可MySQL管理器下載地址:下載該文件即可97MySQL管理器啟動MySQL管理器MySQL管理器啟動MySQL管理器98MySQL管理器登錄:填寫數(shù)據(jù)庫服務(wù)器地址、用戶名和密碼MySQL管理器登錄:填寫數(shù)據(jù)庫服務(wù)器地址、用戶名和密碼99MySQL管理器登錄后的界面:MySQL管理器登錄后的界面:100MySQL查詢?yōu)g覽器登錄后的界面:MySQL查詢?yōu)g覽器登錄后的界面:101創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫可以使用CREATEDATABASE語句,該語句的基本格式如下:CREATE{DATABASE|SCHEMA}[IFNOTEXISTS]db_name說明:“[]”中內(nèi)容為可選項,DATABASE與SCHEMA同義。db_name。要創(chuàng)建的數(shù)據(jù)庫的名稱,在文件系統(tǒng)中,MySQL的數(shù)據(jù)存儲區(qū)將以目錄方式表示MySQL數(shù)據(jù)庫。因此,命令中的數(shù)據(jù)庫名字必須符合操作系統(tǒng)文件夾命名規(guī)則。值得注意的是,在MySQL中是不區(qū)分大小寫的。IFNOTEXISTS。在創(chuàng)建數(shù)據(jù)庫前進(jìn)行判斷,只有該數(shù)據(jù)庫目前尚不存在時才執(zhí)行CREATEDATABASE操作。用此選項可以避免出現(xiàn)數(shù)據(jù)庫已經(jīng)存在而再新建的錯誤。創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫102例子:創(chuàng)建學(xué)生管理系統(tǒng)的數(shù)據(jù)庫,名為PXSCJ。打開“開始”→“程序”→“MySQL”→“MySQLServer5.1”→“MySQLCommandLineClient”菜單項,進(jìn)入MySQL客戶端,在客戶端窗口輸入密碼,在命令提示行輸入以下語句:CREATEDATABASEPXSCJ;創(chuàng)建了數(shù)據(jù)庫之后使用USE命令可指定當(dāng)前數(shù)據(jù)庫。語法格式如下:USEdb_name;創(chuàng)建數(shù)據(jù)庫例子:創(chuàng)建學(xué)生管理系統(tǒng)的數(shù)據(jù)庫,名為PXSCJ。創(chuàng)建數(shù)據(jù)庫103已經(jīng)創(chuàng)建的數(shù)據(jù)庫如要刪除,使用DROPDATABASE命令。語法格式如下:DROPDATABASE[IFEXISTS]db_name其中,db_name是要刪除的數(shù)據(jù)庫名??梢允褂肐FEXISTS子句以避免刪除不存在的數(shù)據(jù)庫時出現(xiàn)的MySQL錯誤信息。示例如下:刪除數(shù)據(jù)庫已經(jīng)創(chuàng)建的數(shù)據(jù)庫如要刪除,使用DROPDATABASE命令104創(chuàng)建表使用CREATETABLE語句,基本格式如下:CREATE[TEMPORARY]TABLE[IFNOTEXISTS]tbl_name( <列名1><數(shù)據(jù)類型>[<列選項>], <列名2><數(shù)據(jù)類型>[<列選項>], … <表選項>)TEMPORARY。該關(guān)鍵字表示用CREATE命令新建的表為臨時表。不加該關(guān)鍵字創(chuàng)建的表通常稱為持久表,在數(shù)據(jù)庫中持久表一旦創(chuàng)建將一直存在,多個用戶或者多個應(yīng)用程序可以同時使用持久表。有時需要臨時存放數(shù)據(jù),例如,臨時存儲復(fù)雜的SELECT語句的結(jié)果。此后,可能要重復(fù)地使用這個結(jié)果,但這個結(jié)果又不需要永久保存。這時,可以使用臨時表。用戶可以像操作持久表一樣操作臨時表。只不過臨時表的生命周期較短,而且只能對創(chuàng)建它的用戶可見,當(dāng)斷開與該數(shù)據(jù)庫的連接時,MySQL會自動刪除它們。創(chuàng)建表創(chuàng)建表使用CREATETABLE語句,基本格式如下:創(chuàng)建表105IFNOTEXISTS。建表前加上一個判斷,只有該表目前尚不存在時才執(zhí)行CREATETABLE操作。用此選項可以避免出現(xiàn)表已經(jīng)存在無法再新建的錯誤。列選項。列選項主要有以下幾種:NULL或NOTNULL:表示一列是否允許為空,NULL表示可以為空,NOTNULL表示不可以為空,如果不指定,則默認(rèn)為NULL。DEFAULTdefault_value:為列指定默認(rèn)值,默認(rèn)值default_value必須為一個常量。AUTO_INCREMENT:設(shè)置自增屬性,只有整型列才能設(shè)置此屬性。當(dāng)插入NULL值或0到一個AUTO_INCREMENT列中時,列被設(shè)置為value+1,value是此前表中該列的最大值。AUTO_INCREMENT順序從1開始。每個表只能有一個AUTO_INCREMENT列,并且它必須被索引。UNIQUEKEY|PRIMARYKEY:UNIQUEKEY和PRIMARYKEY都表示字段中的值是唯一的。PRIMARYKEY表示設(shè)置為主鍵,一個表只能定義一個主鍵,主鍵必須為NOTNULL。COMMENT'string':對于列的描述,string是描述的內(nèi)容。創(chuàng)建表IFNOTEXISTS。建表前加上一個判斷,只有該表目前106表選項。在定義列選項的時候,可以將某列定義為PRIMARYKEY,但是當(dāng)主鍵是由多個列組成的多列索引時,定義列時無法定義此主鍵,這時就必須在語句最后加上一個PRIMARYKEY(col_name,…)子句定義的表選項。另外,表選項中還可以定義索引和外鍵。例:使用命令行方式在PXSCJ數(shù)據(jù)庫中創(chuàng)建學(xué)生管理系統(tǒng)中的三個表XSB、KCB和CJB。創(chuàng)建XSB表使用如下語句:USEPXSCJ;CREATETABLEXSB(
學(xué)號
CHAR(6) NOTNULLPRIMARYKEY,
姓名
CHAR(8) NOTNULL,
性別
TINYINT(1) NULLDEFAULT1,
出生時間DATE NULL,
專業(yè)
CHAR(12) NULL,
總學(xué)分
INT(4) NULLDEFAULT
0,
備注
TEXT NULL);創(chuàng)建表表選項。在定義列選項的時候,可以將某列定義為PRIMARY107創(chuàng)建KCB表使用如下語句:USEPXSCJ;CREATETABLEKCB(
課程號
CHAR(3) NOTNULLPRIMARYKEY,
課程名
CHAR(16) NOTNULL,
開課學(xué)期
TINYINT(1) NULLDEFAULT1,
學(xué)時
TINYINT(1) NULL,
學(xué)分
TINYINT(1) NOTNULL);創(chuàng)建CJB表使用如下語句:USEPXSCJ;CREATETABLECJB(
學(xué)號
CHAR(6) NOTNULL,
課程號
CHAR(3) NOTNULL,
成績
INT(4) NULL, PRIMARYKEY(學(xué)號,課程號));創(chuàng)建表創(chuàng)建KCB表使用如下語句:創(chuàng)建表108ALTERTABLE用于更改原有的表結(jié)構(gòu)。例如,可以增加或刪減列,創(chuàng)建或取消索引,更改原有列的類型,重新命名列或表,還可以更改表的描述和表的類型。ALTERTABLE語句的基本格式如下:ALTERTABLEtable_name ADD<列名><數(shù)據(jù)類型><列選項> /*添加列*/ |ALTER<列名>{SETDEFAULTdefault_value|DROPDEFAULT} /*修改默認(rèn)值*/ |CHANGE<舊列名><新列名><數(shù)據(jù)類型><列選項> /*對列重命名*/ |MODIFY<列名><數(shù)據(jù)類型><列選項> /*修改列類型*/ |DROP<列名> /*刪除列*/ |RENAME<新表名> /*重命名該表*/ |其他修改表修改表109其中,table_name為要修改表的表名。ALTERTABLE語句中的修改子句可以包含以下幾類:ADD子句。向表中增加新列。例如,在表t1中增加新的一列a:ALTERTABLEt1ADDCOLUMNaTINYINTNULL;ALTER子句。修改表中指定列的默認(rèn)值。CHANGE子句。修改列的名稱。重命名時,需給定舊列名、新列名和列當(dāng)前的類型,例如,要把一個INTEGER列的名稱從a變更到b:ALTERTABLEt1CHANGEabINTEGER;MODIFY子句:修改指定列的類型。例如,把一個列的數(shù)據(jù)類型改為BIGINT:ALTERTABLEt1MODIFYbBIGINTNOTNULL;注意:若表中該列所存數(shù)據(jù)的數(shù)據(jù)類型與將要修改的列的類型沖突,則發(fā)生錯誤。例如,原來CHAR類型的列要修改成INT類型,而原來列值中有字符型數(shù)據(jù)“a”,則無法修改。DROP子句:從表中刪除列或約束。RENAME子句:修改該表的表名。例如,將表a改名為b:ALTERTABLEaRENAMEb;修改表其中,table_name為要修改表的表名。修改表110刪除一個表可以使用DROPTABLE語句。語法格式如下:DROP[TEMPORARY]TABLE[IFEXISTS]tbl_name[,tbl_name]...例如,刪除XSB表可以使用如下語句:USEPXSCJ;DROPTABLEXSB;刪除表刪除一個表可以使用DROPTABLE語句。語法格式如下:刪111SELECT語句可以從一個或多個表中選取特定的行和列,結(jié)果通常是生成一個臨時表。在執(zhí)行過程中系統(tǒng)根據(jù)用戶的要求從數(shù)據(jù)庫中選出匹配的行和列,并將結(jié)果存放到臨時的表中,SELECT語句的語法格式如下:SELECT [ALL|DISTINCT] select_expr,... [FROMtable1[,table2]…] /*FROM子句*/ [WHEREwhere_definition] /*WHERE子句*/ [GROUPBY{col_name|expr|position}[ASC|DESC],...] /*GROUPBY子句*/ [HAVINGwhere_definition] /*HAVING子句*/ [ORDERBY{col_name|expr|position}[ASC|DESC],...] /*ORDERBY子句*/ [LIMIT{[offset,]row_count}] /*LIMIT子句*/查詢表數(shù)據(jù)SELECT語句可以從一個或多個表中選取特定的行和列,結(jié)果通112創(chuàng)建存儲過程存儲過程可以由聲明式SQL語句(如CREATE、UPDATE和SELECT等語句)和過程式SQL語句(如IF-THEN-ELSE語句)組成。創(chuàng)建存儲過程使用CREATEPROCEDURE語句,語法格式如下:CREATEPROCEDUREsp_name([[IN|OUT|INOUT]param_nametype[,...]]) <routine_body>存儲過程存儲過程113<routine_body>是存儲過程的主體部分,也叫做存儲過程體。它包含了在過程調(diào)用的時候必須執(zhí)行的語句,這個部分總是以BEGIN開始,以END結(jié)束。當(dāng)然,當(dāng)存儲過程體中只有一個SQL語句時可以省略BEGIN-END標(biāo)志。另外,BEGIN-END復(fù)合語句還可以嵌套使用。在開始創(chuàng)建存儲過程之前,先介紹一個很實用的命令:DELIMITER命令。在MySQL中,服務(wù)器處理語句的時候是以分號為結(jié)束標(biāo)志的。但是在創(chuàng)建存儲過程的時候,存儲過程體中可能包含多個SQL語句,每個SQL語句都是以分號為結(jié)尾的,這時服務(wù)器處理程序遇到第一個分號的時候就會認(rèn)為程序結(jié)束,這肯定是不行的。所以這里使用DELIMITER命令將MySQL語句的結(jié)束標(biāo)志修改為其他符號。例如:DELIMITER$$執(zhí)行完這條命令后,程序結(jié)束的標(biāo)志就換成兩個美元符“$$”了。要想恢復(fù)使用分號“;”作為結(jié)束符,運行下面命令即可:DELIMITER;存儲過程<routine_body>是存儲過程的主體部分,也叫做存儲114存儲過程體中可以包含所有類型的SQL語句,另外還可以包含以下內(nèi)容。(1)局部變量使用DECLARE語句聲明局部變量,例如,聲明一個整型變量和兩個字符變量:DECLAREnumINT(4);DECLAREstr1,str2VARCHAR(6);說明:局部變量只能在BEGIN_END語句塊中聲明。(2)使用SET語句賦值要給局部變量賦值,可以使用SET語句,例如:SETnum=1,str1='hello';說明:這條語句無法單獨執(zhí)行,只能在存儲過程和存儲函數(shù)中使用。(3)SELECT...INTO語句使用SELECT…INTO語句可以把選定的列值直接存儲到變量中。因此,返回的結(jié)果只能有一行。例如:SELECT姓名,專業(yè)
INTOname,project FROMXSB WHERE學(xué)號='081101';存儲過程存儲過程體中可以包含所有類型的SQL語句,另外還可以包含以下115(4)流程控制語句在MySQL中,常見的過程式SQL語句可以用在一個存儲過程體中。例如,IF語句、CASE語句、WHILE語句等。IF語句。IF-THEN-ELSE語句可根據(jù)不同的條件執(zhí)行不同的操作。語法格式為:IFsearch_conditionTHENstatement_list[ELSEIFsearch_conditionTHENstatement_list]...[ELSEstatement_list]ENDIF說明:search_condition是判斷的條件,statement_list中包含一個或多個SQL語句。當(dāng)search_condition的條件為真時,就執(zhí)行相應(yīng)的SQL語句。CASE語句。語法格式為:CASEcase_value WHENwhen_valueTHENstatement_list [WHENwhen_valueTHENstatement_list]... [ELSEstate
溫馨提示
- 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年諸城市事業(yè)單位招聘工作人員考試真題
- 電力驗收合同范本
- 2024年紹興市越城區(qū)機(jī)關(guān)事業(yè)單位A類用工招聘考試真題
- 透水施工合同范本
- 科技產(chǎn)品的電商平臺個性化促銷方案設(shè)計
- 2024年廣安門醫(yī)院保定醫(yī)院招聘工作人員考試真題
- 定位服務(wù)合同范本
- 2025至2030年中國木工電刨數(shù)據(jù)監(jiān)測研究報告
- 名人活動中介協(xié)議
- 2025年企業(yè)法務(wù)顧問聘用協(xié)議范本
- 教育部人文社科 申請書
- 無菌手術(shù)臺鋪置的細(xì)節(jié)管理
- 《康復(fù)評定技術(shù)》課件-第五章 運動控制
- 議論文8(試題+審題+范文+點評+素材)-2025年高考語文寫作復(fù)習(xí)
- 【理特咨詢】2024生成式人工智能GenAI在生物醫(yī)藥大健康行業(yè)應(yīng)用進(jìn)展報告
- 2025新人教版英語七年級下單詞默寫表(小學(xué)部分)
- 2025年春新外研版(三起)英語三年級下冊課件 Unit6第1課時Startup
- 2025江蘇蘇州高新區(qū)獅山商務(wù)創(chuàng)新區(qū)下屬國企業(yè)招聘9人高頻重點提升(共500題)附帶答案詳解
- 《蒙牛集團(tuán)實施財務(wù)共享過程中存在的問題及優(yōu)化建議探析》8800字(論文)
- 平拋運動的經(jīng)典例題
評論
0/150
提交評論