版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章數(shù)據(jù)庫設(shè)計(jì)概述.ppt第2章MySQL概述.ppt第3章MySQL數(shù)據(jù)庫管理.ppt第4章MySQL表結(jié)構(gòu)管理.ppt第5章表記錄的更新操作.ppt第6章表記錄的檢索.ppt第7章視圖.ppt第8章觸發(fā)器.ppt第9章存儲(chǔ)過程與存儲(chǔ)函數(shù).ppt第10章備份與恢復(fù).ppt第11章MySQL性能優(yōu)化.ppt第12章事務(wù)與鎖機(jī)制.ppt第13章綜合開發(fā)案例——圖書館管理系統(tǒng).ppt第1章數(shù)據(jù)庫設(shè)計(jì)概述01數(shù)據(jù)庫概述03E-R圖02數(shù)據(jù)庫的體系結(jié)構(gòu)04數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫概述1主要內(nèi)容數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)1數(shù)據(jù)模型2結(jié)構(gòu)化查詢語言SQL3數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫是信息系統(tǒng)的核心,它能有效地管理各類信息資源。數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫數(shù)據(jù)庫DatabaseDB存放數(shù)據(jù)的倉庫數(shù)據(jù)庫1234567890活著就是為了改變世界數(shù)據(jù)庫姓名課程成績(jī)數(shù)據(jù)庫姓名課程成績(jī)姓名課程成績(jī)數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)DatabaseSystemDBS采用了數(shù)據(jù)庫技術(shù)的計(jì)算機(jī)系統(tǒng)數(shù)據(jù)庫系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行管理的軟件存儲(chǔ)介質(zhì)、處理對(duì)象和管理系統(tǒng)的集合體數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫硬件支持軟件支持?jǐn)?shù)據(jù)庫管理員數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)DatabaseManagementSystemDBMS位于操作系統(tǒng)和用戶之間的一個(gè)數(shù)據(jù)管理軟件數(shù)據(jù)庫模型數(shù)據(jù)庫模型數(shù)據(jù)模型是數(shù)據(jù)庫系統(tǒng)的核心與基礎(chǔ),是描述數(shù)據(jù)與數(shù)據(jù)之間的聯(lián)系、數(shù)據(jù)的語義、數(shù)據(jù)一致性約束等概念性工具的集合。數(shù)據(jù)庫模型數(shù)據(jù)結(jié)構(gòu)1數(shù)據(jù)操作2完整性約束3結(jié)構(gòu)化查詢語言SQL結(jié)構(gòu)化查詢語言SQL結(jié)構(gòu)化查詢語言StructuredQueryLanguageSQL應(yīng)用于關(guān)系數(shù)據(jù)庫查詢的結(jié)構(gòu)化語言結(jié)構(gòu)化查詢語言SQL1974Boyce和ChamberlinSEQUEL1976IBM公司SEQUEL21982美國(guó)國(guó)家標(biāo)準(zhǔn)化組織ANSISQL結(jié)構(gòu)化查詢語言SQL介于關(guān)系代數(shù)和關(guān)系演算之間的語言豐富的
查詢功能SQLServerAccessOracleMySQLDB2結(jié)構(gòu)化查詢語言SQLCREATESELECTINSERTUPDATEDELETEGRANT(REVOKE)結(jié)構(gòu)化查詢語言SQLOraclePL/SQLSQLServerT-SQL數(shù)據(jù)庫的體系結(jié)構(gòu)2數(shù)據(jù)庫三級(jí)模式結(jié)構(gòu)1三級(jí)模式之間的映射2主要內(nèi)容數(shù)據(jù)庫三級(jí)模式結(jié)構(gòu)數(shù)據(jù)庫三級(jí)模式結(jié)構(gòu)模式外模式內(nèi)模式邏輯模式或概念模式一個(gè)數(shù)據(jù)庫只有一個(gè)模式不僅要定義數(shù)據(jù)的邏輯結(jié)構(gòu),而且要定義數(shù)據(jù)之間的聯(lián)系用戶模式外模式是模式的子集一個(gè)數(shù)據(jù)庫可以有多個(gè)外模式存儲(chǔ)模式一個(gè)數(shù)據(jù)庫只有一個(gè)內(nèi)模式三級(jí)模式之間的映射外模式/模式映射模式外模式……外模式模式/內(nèi)模式映射模式內(nèi)模式E-R圖3主要內(nèi)容實(shí)體和屬性1關(guān)系2E-R圖的設(shè)計(jì)原則3實(shí)體和屬性E-R圖E-R圖實(shí)體-關(guān)系圖實(shí)體關(guān)系實(shí)體高山流水老師學(xué)生精神生活物質(zhì)基礎(chǔ)吉林省長(zhǎng)春市實(shí)體屬性屬性是指實(shí)體的特征書名
大小封面顏色頁數(shù)出版社屬性實(shí)體:實(shí)體名屬性:屬性名設(shè)計(jì)圖書館管理系統(tǒng)的圖書實(shí)體圖。實(shí)例圖書書名譯者作者出版社價(jià)格頁碼類型編號(hào)條形碼……圖書書名譯者作者出版社價(jià)格頁碼類型編號(hào)條形碼……關(guān)系 關(guān)系關(guān)系:聯(lián)系名實(shí)體名關(guān)系類型一對(duì)一關(guān)系關(guān)系實(shí)體A1實(shí)體B1任職圖書館1館長(zhǎng)1一對(duì)多關(guān)系關(guān)系實(shí)體An實(shí)體B1放置書架n圖書1多對(duì)多關(guān)系關(guān)系實(shí)體An實(shí)體Bm借閱讀者n圖書mE-R圖的設(shè)計(jì)原則E-R圖的設(shè)計(jì)原則先設(shè)計(jì)局部E-R圖,再把每一個(gè)局部的E-R圖綜合起來,生成總體的E-R圖。屬性應(yīng)該存在于且只存在于某一個(gè)實(shí)體或者關(guān)系中。這樣可以避免數(shù)據(jù)冗余。實(shí)體是一個(gè)單獨(dú)的個(gè)體,不能存在于另一個(gè)實(shí)體中,即不能作為另一個(gè)實(shí)體的屬性。例如,圖1-1所示的圖書實(shí)體,不能作為借閱實(shí)體的一個(gè)屬性。同一個(gè)實(shí)體在同一個(gè)E-R圖中只能出現(xiàn)一次。設(shè)計(jì)圖書館管理系統(tǒng)的E-R圖。實(shí)例數(shù)據(jù)庫設(shè)計(jì)4主要內(nèi)容為實(shí)體建立數(shù)據(jù)表1為表建立主鍵或外鍵2為字段選擇合適的數(shù)據(jù)類型3定義約束條件4為實(shí)體建立數(shù)據(jù)表為實(shí)體建立數(shù)據(jù)表圖書書名作者出版社價(jià)格編號(hào)編號(hào)書名作者出版社價(jià)格根據(jù)下面的圖書實(shí)體圖建立圖書信息表。實(shí)例為表建立主鍵或外鍵為表建立主鍵或外鍵
由于在設(shè)計(jì)數(shù)據(jù)表時(shí),不允許出現(xiàn)完全相同的兩條記錄,所以通常會(huì)創(chuàng)建一個(gè)關(guān)鍵字(Key)字段,用于唯一標(biāo)識(shí)數(shù)據(jù)表中的每一條記錄。讀者信息表?xiàng)l形碼關(guān)鍵字編號(hào)為表建立主鍵或外鍵建立主鍵1
在設(shè)計(jì)數(shù)據(jù)庫時(shí),為每個(gè)實(shí)體建立對(duì)應(yīng)的數(shù)據(jù)表后,通常還會(huì)為其創(chuàng)建主鍵,建立主鍵表稱為主表。作為主鍵的關(guān)鍵字可以是一個(gè)字段,也可以是字段的組合。作為主鍵的字段的值必須具有唯一性,并且不能為空(null)。如果主鍵由多個(gè)字段構(gòu)成時(shí),那么這些字段都不能為空。為表建立主鍵或外鍵建立外鍵2如果存在兩張數(shù)據(jù)表,如果表T1中的一個(gè)字段fk對(duì)應(yīng)于表T2的主鍵pk,那么字段fk則稱為表T1的外鍵,T1稱為外鍵表或子表。此時(shí),表T1的字段fk,要么是表T2的主鍵pk的值,要么是空值。外鍵通常是用于實(shí)現(xiàn)參照完整性的。為字段選擇合適的數(shù)據(jù)類型為字段選擇合適的數(shù)據(jù)類型字符串類型1字符串類型用于保存一系列字符的。這些字符在使用時(shí)是采用單引號(hào)括起來的,主要是用于保存不參與運(yùn)算的信息。
'HTML5從入門到精通'
'9787302210337'
'302'變長(zhǎng)字符串類型定長(zhǎng)字符串類型為字段選擇合適的數(shù)據(jù)類型數(shù)值類型2數(shù)值類型是指可以參與算術(shù)運(yùn)算的類型。它可以分為整型和小數(shù)類型,其中小數(shù)類型又包括浮點(diǎn)型和雙精度型。為字段選擇合適的數(shù)據(jù)類型日期時(shí)間類型3日期時(shí)間類型是指用于保存日期或者時(shí)間的數(shù)據(jù)類型。通??梢苑譃槿掌陬愋汀r(shí)間類型和日期時(shí)間類型。。日期類型存儲(chǔ)的數(shù)據(jù)是“YYYY-MM-DD”格式的字符串時(shí)間類型存儲(chǔ)的數(shù)據(jù)是“hh:mm:ss”格式的字符串日期時(shí)間類型存儲(chǔ)的數(shù)據(jù)是“YYYY-MM-DDhh:mm:ss”格式的字符串定義約束條件定義約束條件
主鍵約束:用于約束唯一性和非空性,通過為表設(shè)置主鍵實(shí)現(xiàn)。
外鍵約束:需要建立兩張數(shù)據(jù)表間的關(guān)系,并且引用主表的字段。
唯一性約束:用于約束唯一性,可以通過為表設(shè)置唯一性約束實(shí)現(xiàn)。
非空約束:用于約束表中的某個(gè)字段不能為空。
檢查約束:用于檢查字段的輸入值是否滿足指定的條件。
默認(rèn)值約束:用于為字段設(shè)置默認(rèn)值。小結(jié)本章主要介紹的是數(shù)據(jù)庫技術(shù)中的一些基本概念和原理,其中重點(diǎn)包括數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)模型的概念、常見的數(shù)據(jù)模型、數(shù)據(jù)庫的三級(jí)模式結(jié)構(gòu),三級(jí)模式之間的映射、E-R圖、以及數(shù)據(jù)庫設(shè)計(jì)等內(nèi)容。其中,常見的數(shù)據(jù)模型和E-R圖,以及數(shù)據(jù)庫設(shè)計(jì)是本章的重點(diǎn),希望大家認(rèn)真學(xué)習(xí),重點(diǎn)掌握。第2章MySQL概述01為什么選擇MySQL數(shù)據(jù)庫03MySQL服務(wù)器的安裝與配置02MySQL特性為什么選擇MySQL數(shù)據(jù)庫1主要內(nèi)容什么是MySQL數(shù)據(jù)庫1MySQL的優(yōu)勢(shì)2MySQL的發(fā)展史3什么是MySQL數(shù)據(jù)庫什么是MySQL數(shù)據(jù)庫
MySQL是一款開放源代碼的關(guān)系型數(shù)據(jù)庫。什么是MySQL數(shù)據(jù)庫MySQLAB結(jié)構(gòu)化查詢語言(SQL)MySQL的優(yōu)勢(shì)MySQL的優(yōu)勢(shì)MySQL數(shù)據(jù)庫是一款自由軟件。
MySQL是一個(gè)真正的多用戶、多線程的SQL數(shù)據(jù)庫服務(wù)器。它是以客戶機(jī)/服務(wù)器結(jié)構(gòu)的實(shí)現(xiàn),由一個(gè)服務(wù)器守護(hù)程序mysqld和很多不同的客戶程序和庫的組成。它能夠快捷、有效和安全的處理大量的數(shù)據(jù)。MySQL的優(yōu)勢(shì)Oracle數(shù)據(jù)庫快捷、便捷和簡(jiǎn)單、易用VSMySQL數(shù)據(jù)庫MySQL的發(fā)展史MySQL的發(fā)展史MySQL名字的起源MySQL的基本目錄以及大量庫和工具均采用了前綴“my”。12共同創(chuàng)辦人MontyWidenius的女兒也叫“My”。MySQL的發(fā)展史Sakila“Dolphin命名”的比賽MySQL的發(fā)展史2016年12月MySQL5.7.17版本發(fā)布2009年4月20日Oracle收購(gòu)Sun,MySQL轉(zhuǎn)入Oracle門下2008年1月16日MySQL被Sun收購(gòu)2005年10月MySQL5.0發(fā)布,這是一個(gè)里程碑的版本1999~2000年MySQLAB公司成立1996年MySQL1.0發(fā)布1985年MySQLAB前身成立1985年MySQLAB前身成立1996年MySQL1.0發(fā)布1999~2000年MySQLAB公司成立2005年10月MySQL5.0發(fā)布,這是一個(gè)里程碑的版本2008年1月16日MySQL被Sun收購(gòu)2009年4月20日Oracle收購(gòu)Sun,MySQL轉(zhuǎn)入Oracle門下2016年12月MySQL5.7.17版本發(fā)布MySQL特性2MySQL特性使用C和C++編寫
Linux、MacOS、Windows
C、C++、Python、Java、PHP支持多線程優(yōu)化的SQL查詢算法既能夠作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個(gè)庫而嵌入到其他的軟件中提供多語言支持。
TCP/IP、ODBC和JDBC提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫操作的管理工具。MySQL5.7的特性將InnoDB作為默認(rèn)的數(shù)據(jù)庫存儲(chǔ)引擎改善性能和可擴(kuò)展性提高實(shí)用性、易管理性和效率提高可用性、改善檢測(cè)與診斷性能MySQL服務(wù)器的安裝與配置3主要內(nèi)容MySQL下載1MySQL環(huán)境安裝2啟動(dòng)、連接、斷開和停止MySQL服務(wù)器3MySQL下載MySQL下載/downloads/MySQL環(huán)境安裝MySQL下載mysql-installer-community-.msi啟動(dòng)、連接、斷開和停止MySQL服務(wù)器啟動(dòng)、連接、斷開和停止MySQL服務(wù)器啟動(dòng)、停止MySQL服務(wù)器1連接和斷開MySQL服務(wù)器2小結(jié)本章介紹了MySQL的基礎(chǔ)知識(shí),以及MySQL服務(wù)器的安裝與配置。通過本章的學(xué)習(xí),希望讀者對(duì)什么是MySQL數(shù)據(jù)庫、MySQL的發(fā)展史,以及MySQL都有哪些特性有所了解。并且能成功的安裝與配置好MySQL數(shù)據(jù)庫,為以后的學(xué)習(xí)打下良好的基礎(chǔ)。上機(jī)指導(dǎo)MySQL數(shù)據(jù)庫安裝完成后,會(huì)自動(dòng)安裝一個(gè)圖形化工具Workbench,用于創(chuàng)建并管理數(shù)據(jù)庫,用戶可以使用該工具以圖形化的方式管理MySQL數(shù)據(jù)庫。本上機(jī)指導(dǎo)要求使用圖形化工具Workbench管理MySQL數(shù)據(jù)庫。第3章MySQL數(shù)據(jù)庫管理01創(chuàng)建數(shù)據(jù)庫03選擇數(shù)據(jù)庫02查看數(shù)據(jù)庫04修改數(shù)據(jù)庫05刪除數(shù)據(jù)庫06數(shù)據(jù)庫存儲(chǔ)引擎的應(yīng)用創(chuàng)建數(shù)據(jù)庫1主要內(nèi)容通過CREATEDATABASE語句創(chuàng)建數(shù)據(jù)庫1通過CREATESCHEMA語句創(chuàng)建數(shù)據(jù)庫2創(chuàng)建指定字符集的數(shù)據(jù)庫3創(chuàng)建數(shù)據(jù)庫前判斷是否存在同名數(shù)據(jù)庫4通過CREATEDATABASE語句創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫的語法格式如下:數(shù)據(jù)庫命名規(guī)則由任意字母、阿拉伯?dāng)?shù)字、下劃線(_)和“$”組成。db_mrbbsdb_shop1db_sell$1合法的數(shù)據(jù)庫名400db\bbsdb`bbs非法的數(shù)據(jù)庫名數(shù)據(jù)庫命名規(guī)則不能與其他數(shù)據(jù)庫重名,并且在Windows系統(tǒng)下不區(qū)分大小寫。db_mrbbsdb_MRBBS合法的數(shù)據(jù)庫名數(shù)據(jù)庫命名規(guī)則名稱最長(zhǎng)可為64個(gè)字符,而別名最多可長(zhǎng)達(dá)256個(gè)字符。數(shù)據(jù)庫命名規(guī)則不能使用MySQL關(guān)鍵字作為數(shù)據(jù)庫名、表名。createbeginforlike合法的數(shù)據(jù)庫名創(chuàng)建數(shù)據(jù)庫通過CREATEDATABASE語句創(chuàng)建圖書館管理系統(tǒng)的數(shù)據(jù)庫。實(shí)例db_library通過CREATESCHEMA語句創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫CREATEDATABASECREATESCHEMA創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫的語法格式如下:創(chuàng)建數(shù)據(jù)庫通過CREATESCHEMA語句創(chuàng)建一個(gè)名稱為db_library1的數(shù)據(jù)庫。實(shí)例創(chuàng)建指定字符集的數(shù)據(jù)庫創(chuàng)建指定字符集的數(shù)據(jù)庫my.inidefault-character-set創(chuàng)建數(shù)據(jù)庫通過CREATEDATABASE語句創(chuàng)建一個(gè)名稱為db_library_gbk的數(shù)據(jù)庫,并指定其字符集為GBK。實(shí)例創(chuàng)建數(shù)據(jù)庫前判斷是否存在同名數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫前判斷是否存在同名數(shù)據(jù)庫IFNOTEXISTS創(chuàng)建數(shù)據(jù)庫通過CREATEDATABASE語句創(chuàng)建圖書館管理系統(tǒng)的數(shù)據(jù)庫,名稱為db_library,并在創(chuàng)建前判斷該數(shù)據(jù)庫名稱是否存,只有不存在時(shí)才進(jìn)行創(chuàng)建。實(shí)例查看數(shù)據(jù)庫2查看數(shù)據(jù)庫SHOW查看數(shù)據(jù)庫查看數(shù)據(jù)庫的語法格式如下:查看數(shù)據(jù)庫使用SHOWDATABASES語句查看MySQL服務(wù)器中的所有數(shù)據(jù)庫名稱。實(shí)例選擇數(shù)據(jù)庫3選擇數(shù)據(jù)庫USE選擇數(shù)據(jù)庫選擇數(shù)據(jù)庫的語法格式如下:選擇數(shù)據(jù)庫選擇名稱為db_library的數(shù)據(jù)庫,設(shè)置其為當(dāng)前默認(rèn)的數(shù)據(jù)庫。實(shí)例修改數(shù)據(jù)庫4修改數(shù)據(jù)庫ALTERDATABASEALTERSCHEMA修改數(shù)據(jù)庫修改數(shù)據(jù)庫的語法格式如下:在使用ALTERDATABASE或者ALTERSCHEMA語句時(shí),用戶必須具有對(duì)數(shù)據(jù)庫進(jìn)行修改的權(quán)限。GB2312或者GBKUTF-8修改數(shù)據(jù)庫修改前面視頻中創(chuàng)建的數(shù)據(jù)庫db_library1,設(shè)置默認(rèn)字符集和較對(duì)規(guī)則。實(shí)例刪除數(shù)據(jù)庫5刪除數(shù)據(jù)庫DROPDATABASE刪除數(shù)據(jù)庫刪除數(shù)據(jù)庫的語法格式如下:刪除數(shù)據(jù)庫的操作應(yīng)該謹(jǐn)慎使用,一旦執(zhí)行該操作,數(shù)據(jù)庫的所有結(jié)構(gòu)和數(shù)據(jù)都會(huì)被刪除,沒有恢復(fù)的可能,除非數(shù)據(jù)庫有備份。刪除數(shù)據(jù)庫通過DROPDATABASE語句刪除名稱為db_library2的數(shù)據(jù)庫。實(shí)例數(shù)據(jù)庫存儲(chǔ)引擎的應(yīng)用6主要內(nèi)容查詢MySQL中支持的存儲(chǔ)引擎1InnoDB存儲(chǔ)引擎2MyISAM存儲(chǔ)引擎3MEMORY存儲(chǔ)引擎4如何選擇存儲(chǔ)引擎5查詢MySQL中支持的存儲(chǔ)引擎查詢MySQL中支持的存儲(chǔ)引擎什么是存儲(chǔ)引擎?存儲(chǔ)數(shù)據(jù)為存儲(chǔ)的數(shù)據(jù)建立索引更新、查詢數(shù)據(jù)實(shí)現(xiàn)方法查詢MySQL中支持的存儲(chǔ)引擎1.查詢支持的全部存儲(chǔ)引擎SHOWENGINES查詢MySQL中支持的存儲(chǔ)引擎SHOWENGINES語句的語法格式如下:查詢MySQL中支持的存儲(chǔ)引擎1.查詢默認(rèn)的存儲(chǔ)引擎SHOWVARIABLES查詢MySQL中支持的存儲(chǔ)引擎查詢默認(rèn)的存儲(chǔ)引擎。實(shí)例MyISAM存儲(chǔ)引擎InnoDB存儲(chǔ)引擎InnoDB遵循CNU通用公開許可(GPL)發(fā)行,已經(jīng)被一些重量級(jí)因特網(wǎng)公司所采用。雅虎InnoDB存儲(chǔ)引擎InnoDB給MySQL的表提供了事務(wù)、回滾、崩潰修復(fù)能力和多版本并發(fā)控制的事務(wù)安全。InnoDB存儲(chǔ)引擎InnoDB對(duì)事務(wù)處理的能力,是MySQL其他存儲(chǔ)引擎所無法與之比擬的。InnoDB存儲(chǔ)引擎中支持自動(dòng)增長(zhǎng)列AUTO_INCREMENT。自動(dòng)增長(zhǎng)列的值不能為空,且值必須唯一。MySQL中規(guī)定自增列必須為主鍵。InnoDB是MySQL史上第一個(gè)提供外鍵約束的表引擎。InnoDB存儲(chǔ)引擎中,表結(jié)構(gòu)存儲(chǔ)在.frm文件中,數(shù)據(jù)和索引存儲(chǔ)在innodb_data_home_dir和innodb_data_file_path表空間中。InnoDB存儲(chǔ)引擎的特性InnoDB存儲(chǔ)引擎InnoDB存儲(chǔ)引擎的優(yōu)缺點(diǎn)良好的事務(wù)管理崩潰修復(fù)能力并發(fā)控制優(yōu)點(diǎn)讀寫效率稍差占用的數(shù)據(jù)空間相對(duì)比較大缺點(diǎn)InnoDB存儲(chǔ)引擎更新密集的表:InnoDB存儲(chǔ)引擎特別適合處理多重并發(fā)的更新請(qǐng)求。事務(wù):InnoDB存儲(chǔ)引擎是唯一支持事務(wù)的標(biāo)準(zhǔn)MySQL存儲(chǔ)引擎,這是管理敏感數(shù)據(jù)的必需軟件。自動(dòng)災(zāi)難恢復(fù):與其他存儲(chǔ)引擎不同,InnoDB表能夠自動(dòng)從災(zāi)難中恢復(fù)。什么情況下使用InnoDB存儲(chǔ)引擎?InnoDB存儲(chǔ)引擎MyISAM存儲(chǔ)引擎MyISAM存儲(chǔ)引擎是基于ISAM存儲(chǔ)引擎發(fā)展起來的,它解決了ISAM的很多不足,并且增加了很多有用的擴(kuò)展。MyISAM存儲(chǔ)引擎的文件類型.frm .MYD.MYI數(shù)據(jù)表db_ad.frmdb_ad.MYDdb_ad.MYIdb_adMyISAM存儲(chǔ)引擎的存儲(chǔ)格式1.MyISAM靜態(tài)如果所有表列的大小都是靜態(tài)的(即不使用xBLOB、xTEXT或VARCHAR數(shù)據(jù)類型),MySQL就會(huì)自動(dòng)使用靜態(tài)MyISAM格式。2.MyISAM動(dòng)態(tài)如果有表列定義為動(dòng)態(tài)的(使用xBLOB、xTEXT或VARCHAR數(shù)據(jù)類型),MySQL就會(huì)自動(dòng)使用動(dòng)態(tài)格式。盡可能使用靜態(tài)數(shù)據(jù)類型。經(jīng)常使用OPTIMIZETABLE語句,它會(huì)整理表的碎片,恢復(fù)由于表更新和刪除而導(dǎo)致的空間丟失。MyISAM存儲(chǔ)引擎的存儲(chǔ)格式3.MyISAM壓縮
有時(shí)會(huì)創(chuàng)建在整個(gè)應(yīng)用程序生命周期中都只讀的表。如果是這種情況,就可以使用myisampack工具將其轉(zhuǎn)換為MyISAM壓縮表來減少空間。MyISAM存儲(chǔ)引擎的優(yōu)缺點(diǎn)占用空間小處理速度快優(yōu)點(diǎn)不支持事務(wù)的完整性和并發(fā)性缺點(diǎn)MEMORY存儲(chǔ)引擎MEMORY存儲(chǔ)引擎MEMORY存儲(chǔ)引擎是MySQL中的一類特殊的存儲(chǔ)引擎。其使用存儲(chǔ)在內(nèi)存中的內(nèi)容來創(chuàng)建表,而且所有數(shù)據(jù)也放在內(nèi)存中。MEMORY存儲(chǔ)引擎1.MEMORY存儲(chǔ)引擎的文件存儲(chǔ)形式每個(gè)基于MEMORY存儲(chǔ)引擎的表實(shí)際對(duì)應(yīng)一個(gè)磁盤文件。該文件的文件名與表名相同,擴(kuò)展名為.frm。該文件中只存儲(chǔ)表的結(jié)構(gòu),而其數(shù)據(jù)文件都是存儲(chǔ)在內(nèi)存中。2.MEMORY存儲(chǔ)引擎的索引類型
MEMORY存儲(chǔ)引擎默認(rèn)使用哈希(HASH)索引。其速度要比使用B型樹(BTREE)索引快。MEMORY存儲(chǔ)引擎3.MEMORY存儲(chǔ)引擎的存儲(chǔ)周期
MEMORY存儲(chǔ)引擎通常很少用到。因?yàn)镸EMORY表的所有數(shù)據(jù)是存儲(chǔ)在內(nèi)存上的,如果內(nèi)存出現(xiàn)異常就會(huì)影響到數(shù)據(jù)的完整性。如果重啟機(jī)器或者關(guān)機(jī),表中的所有數(shù)據(jù)將消失。MEMORY存儲(chǔ)引擎的優(yōu)缺點(diǎn)MEMORY表的大小是受到限制的處理速度非??焯幚硭俣瓤靸?yōu)點(diǎn)數(shù)據(jù)易丟失生命周期短缺點(diǎn)如何選擇存儲(chǔ)引擎如何選擇存儲(chǔ)引擎InnoDB存儲(chǔ)引擎:用于事務(wù)處理應(yīng)用程序,具有眾多特性。同時(shí)支持崩潰修復(fù)能力和并發(fā)控制。如果需要對(duì)事務(wù)的完整性要求比較高,要求實(shí)現(xiàn)并發(fā)控制,那選擇InnoDB存儲(chǔ)引擎有其很大的優(yōu)勢(shì)。如果需要頻繁的進(jìn)行更新、刪除操作的數(shù)據(jù)庫,也可以選擇InnoDB存儲(chǔ)引擎。因?yàn)椋擃惔鎯?chǔ)引擎可以實(shí)現(xiàn)事務(wù)的提交(Commit)和回滾(Rollback)。MyISAM存儲(chǔ)引擎:管理非事務(wù)表,它提供高速存儲(chǔ)和檢索,以及全文搜索能力。MyISAM存儲(chǔ)引擎插入數(shù)據(jù)快,空間和內(nèi)存使用比較低。如果表主要是用于插入新紀(jì)錄和讀出記錄,那么選擇MyISAM存儲(chǔ)引擎能實(shí)現(xiàn)處理的高效率。如果應(yīng)用的完整性、并發(fā)性要求很低,也可以選擇MyISAM存儲(chǔ)引擎。如何選擇存儲(chǔ)引擎MEMORY存儲(chǔ)引擎:提供“內(nèi)存中”表,所有數(shù)據(jù)都在內(nèi)存中,數(shù)據(jù)的處理速度快,但安全性不高。如果需要很快的讀寫速度,對(duì)數(shù)據(jù)的安全性要求較低,可以選擇MEMORY存儲(chǔ)引擎。MEMORY存儲(chǔ)引擎對(duì)表的大小有要求,不能建太大的表。所以,這類數(shù)據(jù)庫只使用相對(duì)較小的數(shù)據(jù)庫表。小結(jié)本章詳細(xì)講解了MySQL數(shù)據(jù)庫管理的相關(guān)知識(shí),其中在介紹創(chuàng)建數(shù)據(jù)庫時(shí),首先介紹了兩條創(chuàng)建數(shù)據(jù)庫的語句,這兩條語句的作用是一樣的,使用哪一個(gè)都可以,然后又介紹了如何創(chuàng)建指定字符集的數(shù)據(jù)庫,以及在創(chuàng)建數(shù)據(jù)庫前判斷是否存在同名數(shù)據(jù)庫等內(nèi)容。除了創(chuàng)建數(shù)據(jù)庫外,還介紹了如何查看、選擇、修改和刪除數(shù)據(jù)庫的方法,以及數(shù)據(jù)庫存儲(chǔ)引擎的應(yīng)用。在這些內(nèi)容中,創(chuàng)建數(shù)據(jù)庫是本章的重點(diǎn),需要多多練習(xí)熟練掌握。上機(jī)指導(dǎo)實(shí)現(xiàn)創(chuàng)建一個(gè)名稱為db_shop的數(shù)據(jù)庫,并將其設(shè)置為默認(rèn)的數(shù)據(jù)庫。要求在創(chuàng)建數(shù)據(jù)庫前判斷是否存在同名的數(shù)據(jù)庫,如果不存在就進(jìn)行創(chuàng)建,否則不創(chuàng)建該數(shù)據(jù)庫。第4章MySQL表結(jié)構(gòu)管理01MySQL數(shù)據(jù)類型03修改表結(jié)構(gòu)02創(chuàng)建表04刪除表05設(shè)置索引06定義約束MySQL數(shù)據(jù)類型1主要內(nèi)容數(shù)字類型1字符串類型2日期和時(shí)間數(shù)據(jù)類型3數(shù)字類型數(shù)字類型整數(shù)數(shù)據(jù)類型小數(shù)數(shù)據(jù)類型整數(shù)數(shù)據(jù)類型數(shù)據(jù)類型取值范圍說明單位TINYINT符號(hào)值:-127~127無符號(hào)值:0~255最小的整數(shù)1字節(jié)BIT符號(hào)值:-127~127無符號(hào)值:0~255最小的整數(shù)1字節(jié)BOOL符號(hào)值:-127~127無符號(hào)值:0~255最小的整數(shù)1字節(jié)SMALLINT符號(hào)值:-32768~32767無符號(hào)值:0~65535小型整數(shù)2字節(jié)MEDIUMINT符號(hào)值:-8388608~8388607無符號(hào)值:0~16777215中型整數(shù)3字節(jié)INT符號(hào)值:-2147683648~2147683647無符號(hào)值:0~4294967295標(biāo)準(zhǔn)整數(shù)4字節(jié)BIGINT符號(hào)值:-9223372036854775808~9223372036854775807無符號(hào)值:0~18446744073709551615大整數(shù)8字節(jié)小數(shù)數(shù)據(jù)類型數(shù)據(jù)類型取值范圍說明單位FLOAT+(-)3.402823466E+38單精度浮點(diǎn)數(shù)8或4字節(jié)DOUBLE+(-)1.7976931348623157E+308+(-)2.2250738585072014E-308雙精度浮點(diǎn)數(shù)8字節(jié)DECIMAL可變精度確定的小數(shù)類型,可以單獨(dú)指定精度(該數(shù)的最大位數(shù))和標(biāo)度(小數(shù)點(diǎn)后面的位數(shù))自定義長(zhǎng)度DECIMAL(8,2)120.6666666667數(shù)字類型如何選擇合適的數(shù)字類型?選擇最小的可用類型,如果值永遠(yuǎn)不超過127,則使用TINYINT比INT強(qiáng)。對(duì)于完全都是數(shù)字的,可以選擇整數(shù)類型。浮點(diǎn)類型用于可能具有小數(shù)部分的數(shù)。字符串類型字符串類型普通的文本字符串類型可變類型特殊類型普通的文本字符串類型數(shù)據(jù)類型取值范圍說明[national]char(M)[binary|ASCII|unicode]0~255個(gè)字符固定長(zhǎng)度為M的字符串,其中M的取值范圍為0~255。National關(guān)鍵字指定了應(yīng)該使用的默認(rèn)字符集。Binary關(guān)鍵字指定了數(shù)據(jù)是否區(qū)分大小寫。ASCII關(guān)鍵字指定了在該列中使用latin1字符集。Unicode關(guān)鍵字指定了使用UCS字符集char0~255個(gè)字符Char(M)類似[national]varchar(M)[binary]0~255個(gè)字符長(zhǎng)度可變,其他和char(M)類似Char(10)可變類型數(shù)據(jù)類型最大長(zhǎng)度(字節(jié)數(shù))說明TINYBLOB2^8~1(225)小BLOB字段BLOB2^16~1(65535)常規(guī)BLOB字段MEDIUMBLOB2^24~1(16777215)中型BLOB字段LONGBLOB2^32~1(4294967295)長(zhǎng)BLOB字段TINYTEXT2^8~1(225)小TEXT字段TEXT2^16~1(65535)常規(guī)TEXT字段MEDIUMTEXT2^24~1(16777215)中型TEXT字段LONGTEXT2^32~1(4294967295)長(zhǎng)TEXT字段BLOBTEXT特殊類型數(shù)據(jù)類型最大值說明Enum(“value1”,“value2”,…)65535該類型的列只可以容納所列值之一或?yàn)镹ULLSet(“value1”,“value2”,…)64該類型的列可以容納一組值或?yàn)镹ULL[national]varchar(M)[binary]0~255個(gè)字符長(zhǎng)度可變,其他和char(M)類似字符串類型如何選擇合適的字符串類型?從速度方面考慮,要選擇固定的列,可以使用CHAR類型。要節(jié)省空間,使用動(dòng)態(tài)的列,可以使用VARCHAR類型。要將列中的內(nèi)容限制在一種選擇,可以使用ENUM類型。允許在一個(gè)列中有多于一個(gè)的條目,可以使用SET類型。如果要搜索的內(nèi)容不區(qū)分大小寫,可以使用TEXT類型。如果要搜索的內(nèi)容區(qū)分大小寫,可以使用BLOB類型。日期和時(shí)間數(shù)據(jù)類型日期和時(shí)間數(shù)據(jù)類型數(shù)據(jù)類型取值范圍說明DATE1000-01-019999-12-31日期,格式Y(jié)YYY-MM-DDTIME-838:58:59835:59:59時(shí)間,格式HH:MM:SSDATETIME1000-01-0100:00:009999-12-3123:59:59日期和時(shí)間,格式Y(jié)YYY-MM-DDHH:MM:SSTIMESTAMP1970-01-0100:00:002037年的某個(gè)時(shí)間時(shí)間標(biāo)簽,在處理報(bào)告時(shí)使用顯示格式取決于M的值YEAR1901-2155年份可指定兩位數(shù)字和四位數(shù)字的格式創(chuàng)建表2主要內(nèi)容設(shè)置默認(rèn)的存儲(chǔ)引擎1設(shè)置自增類型字段2設(shè)置字符集3復(fù)制表結(jié)構(gòu)4設(shè)置默認(rèn)的存儲(chǔ)引擎創(chuàng)建表創(chuàng)建表的語法格式如下:創(chuàng)建表創(chuàng)建表的簡(jiǎn)潔用法創(chuàng)建表使用CREATETABLE語句在MySQL數(shù)據(jù)庫db_library中創(chuàng)建一個(gè)名為tb_bookinfo的數(shù)據(jù)表,該表包括id、barcode、bookname、typeid、author、ISBN、price、page、bookcase和inTime等字段。實(shí)例設(shè)置默認(rèn)的存儲(chǔ)引擎ENGINE屬性如果我們不想使用默認(rèn)的存儲(chǔ)引擎應(yīng)該怎么操作呢?設(shè)置表的存儲(chǔ)引擎設(shè)置表的存儲(chǔ)引擎的語法格式如下:設(shè)置表的存儲(chǔ)引擎在MySQL數(shù)據(jù)庫db_library中創(chuàng)建一個(gè)名為tb_booktype的數(shù)據(jù)表,要求使用MyISAM存儲(chǔ)引擎。實(shí)例設(shè)置自增類型字段設(shè)置自增類型字段自增類型字段的數(shù)據(jù)類型必須為整數(shù)。向自增類型字段插入一個(gè)NULL值時(shí),該字段的值會(huì)被自動(dòng)設(shè)置為比上一次插入值更大的值。設(shè)置自增類型字段AUTO_INCREMENT設(shè)置自增類型字段的語法格式:設(shè)置自增類型字段設(shè)置表的存儲(chǔ)引擎的語法格式:設(shè)置自增類型字段在MySQL數(shù)據(jù)庫db_library中創(chuàng)建一個(gè)名為tb_booktype1的數(shù)據(jù)表,要求將id字段設(shè)置為自動(dòng)編號(hào)字段。實(shí)例設(shè)置字符集設(shè)置字符集defaultcharsetdefaultcharset屬性的語法格式如下:復(fù)制表結(jié)構(gòu)復(fù)制表結(jié)構(gòu)復(fù)制表結(jié)構(gòu)的語法格式如下:使用該語法復(fù)制數(shù)據(jù)表時(shí),將創(chuàng)建一個(gè)與源數(shù)據(jù)表相同結(jié)構(gòu)的新表,該數(shù)據(jù)表的列名、數(shù)據(jù)類型空指定和索引都將被復(fù)制,但是表的內(nèi)容是不會(huì)復(fù)制的。因此,新創(chuàng)建的表是一張空表。如果想要復(fù)制表中的內(nèi)容,可以通過使用AS(查詢表達(dá)式)子句來實(shí)現(xiàn)。創(chuàng)建數(shù)據(jù)庫在數(shù)據(jù)庫db_library中創(chuàng)建一份數(shù)據(jù)表tb_bookinfo的拷貝tb_bookinfobak。實(shí)例修改表結(jié)構(gòu)3主要內(nèi)容修改字段1修改約束條件2修改表的其他選項(xiàng)3修改表名4修改字段修改字段ALTERTABLEALTERTABLE語句的語法格式如下:修改字段修改字段在數(shù)據(jù)表tb_bookinfobak中添加一個(gè)translator字段,類型為varchar(30),notnull,將字段inTime的類型由date修改為DATETIME(6)。實(shí)例修改約束條件修改約束條件1.添加約束條件為表添加約束條件的語法格式如下:PRIMARYKEYDEFAULTUNIQUEKEY約束類型NOTNULLFOREIGNKEY修改約束條件2.刪除約束條件刪除主鍵約束的語法格式如下:刪除外鍵約束的語法格式如下:刪除唯一性約束的語法格式如下:修改表的其他選項(xiàng)修改表的其他選項(xiàng)修改表的存儲(chǔ)引擎的語法格式如下:修改表的其他選項(xiàng)修改表的字符集的語法格式如下:修改表的其他選項(xiàng)修改表的自增類型字段的初始值的語法格式如下:修改表名修改表名RENAMETABLE重命名數(shù)據(jù)表的語法格式如下:修改表名將圖書信息表的副本tb_bookinfobak重命名為tb_books。實(shí)例刪除表4刪除表DROPTABLE刪除數(shù)據(jù)表的語法格式如下:刪除表刪除重命名后的圖書信息表的副本tb_books。實(shí)例設(shè)置索引5主要內(nèi)容索引概述1創(chuàng)建索引2刪除索引3索引概述索引概述
索引是一種將數(shù)據(jù)庫中單列或者多列的值進(jìn)行排序的結(jié)構(gòu)。在MySQL中,索引由數(shù)據(jù)表中一列或多列組合而成。索引概述索引概述對(duì)于具有依賴關(guān)系的子表和父表之間的聯(lián)合查詢時(shí),使用索引可以提高查詢速度,并且可以提高整體的系統(tǒng)性能。創(chuàng)建索引和維護(hù)需要耗費(fèi)時(shí)間,并且該耗費(fèi)時(shí)間與數(shù)據(jù)量的大小成正比。總結(jié):索引可以提高查詢的速度,但是會(huì)影響用戶操作數(shù)據(jù)庫的插入操作。索引概述普通索引:不應(yīng)用任何限制條件的索引,可以在任何數(shù)據(jù)類型中創(chuàng)建。常用的MySQL索引都有哪些?唯一性索引:使用UNIQUE參數(shù)可以設(shè)置唯一索引。創(chuàng)建該索引時(shí),索引的值必須唯一。。全文索引:使用FULLTEXT參數(shù)可以設(shè)置索引為全文索引。全文索引只能創(chuàng)建在CHAR、VARCHAR或者TEXT類型的字段上。單列索引:只對(duì)應(yīng)一個(gè)字段的索引。多列索引:在表的多個(gè)字段上創(chuàng)建一個(gè)索引。空間索引:使用SPATIAL參數(shù)可以設(shè)置索引為空間索引??臻g索引只能建立在空間數(shù)據(jù)類型上。創(chuàng)建索引創(chuàng)建索引1.在建立數(shù)據(jù)表時(shí)創(chuàng)建索引在建立數(shù)據(jù)表時(shí)創(chuàng)建索引的基本語法結(jié)構(gòu)如下:創(chuàng)建索引創(chuàng)建考生成績(jī)表,名稱為tb_score,并在該表的id字段上建立索引。實(shí)例創(chuàng)建索引2.在已建立的數(shù)據(jù)表中創(chuàng)建索引在已建立的數(shù)據(jù)表中創(chuàng)建索引的基本語法如下:普通索引、唯一索引、全文索引、單列索引、多列索引、空間索引創(chuàng)建索引為圖書信息表tb_bookinfo的書名字段設(shè)置索引。實(shí)例刪除索引創(chuàng)建索引刪除索引的基本語法如下:創(chuàng)建索引刪除圖書信息表tb_bookinfo的書名字段的索引idx_name。實(shí)例定義約束6主要內(nèi)容定義主鍵約束1定義候選鍵約束2定義非空約束3定義CHECK約束4定義主鍵約束定義主鍵約束每一個(gè)表只能定義一個(gè)主鍵。唯一性原則。主鍵的值必須能夠唯一標(biāo)識(shí)表中的每一行記錄,且不能為NULL。最小化規(guī)則。復(fù)合主鍵不能包含不必要的多余列。一個(gè)列名在復(fù)合主鍵的列表中只能出現(xiàn)一次。在MySQL中,主鍵列必須遵守以下規(guī)則:定義主鍵約束CREATETABLE或者ALTERTABLEPRIMARYKEY定義主鍵約束在表的某個(gè)列的屬性定義時(shí),加上關(guān)鍵字PRIMARYKEY實(shí)現(xiàn)。定義主鍵約束在創(chuàng)建管理員信息表tb_manager時(shí),將id字段設(shè)置為主鍵。實(shí)例定義主鍵約束在表的所有列的屬性定義后,加上PRIMARYKEY(index_col_name,…)子句實(shí)現(xiàn)。定義主鍵約束在創(chuàng)建學(xué)生信息表tb_student時(shí),將學(xué)號(hào)(id)和所在班級(jí)號(hào)(classid)字段設(shè)置為主鍵。實(shí)例定義候選鍵約束定義候選鍵約束如果一個(gè)屬性集能唯一標(biāo)識(shí)元組,且又不含有多余的屬性,那么這個(gè)屬性集稱為關(guān)系的候選鍵。
候選鍵可以是表中的某一列,也可以是表中多個(gè)列所構(gòu)成的一個(gè)組合。定義候選鍵約束CREATETABLE或者ALTERTABLEUNIQUE定義候選鍵約束創(chuàng)建圖書信息表,將書名字段設(shè)置為候選鍵約束。實(shí)例候選鍵與主鍵之間的區(qū)別一個(gè)表只能創(chuàng)建一個(gè)主鍵,但可以定義若干個(gè)候選鍵。定義主鍵約束時(shí),系統(tǒng)會(huì)自動(dòng)創(chuàng)建PRIMARYKEY索引,而定義候選鍵約束時(shí),系統(tǒng)會(huì)自動(dòng)創(chuàng)建UNIQUE索引。定義非空約束定義非空約束CREATETABLE或者ALTERTABLENOTNULL定義非空約束創(chuàng)建圖書館管理系統(tǒng)的管理員信息表tb_manager1,并為其id字段設(shè)置非空約束。實(shí)例定義CHECK約束定義CHECK約束CREATETABLE或者ALTERTABLE定義CHECK約束定義CHECK約束的語法如下:對(duì)列實(shí)施CHECK約束修改前面視頻中創(chuàng)建的數(shù)據(jù)庫db_library1,設(shè)置默認(rèn)字符集和較對(duì)規(guī)則。實(shí)例對(duì)表實(shí)施CHECK約束修改前面視頻中創(chuàng)建的數(shù)據(jù)庫db_library1,設(shè)置默認(rèn)字符集和較對(duì)規(guī)則。實(shí)例小結(jié)本章主要介紹了對(duì)MySQL表結(jié)構(gòu)進(jìn)行管理的相關(guān)內(nèi)容。主要包括如何創(chuàng)建、修改和刪除表,以及設(shè)置索引和約束等內(nèi)容。其中,最常用的是創(chuàng)建表、設(shè)置索引和定義約束的方法,是本章的重點(diǎn)。對(duì)于修改表結(jié)構(gòu)和刪除表的操作不太常用,但是也需要了解。做到在需要時(shí),知道使用哪些語句實(shí)現(xiàn)就可以了。上機(jī)指導(dǎo)在db_shop數(shù)據(jù)庫中,創(chuàng)建一個(gè)名為tb_sell的數(shù)據(jù)表,要求將id字段設(shè)置為無符號(hào)整數(shù)類型、自動(dòng)編號(hào),并且將其設(shè)置為主鍵,另外還需要設(shè)置該數(shù)據(jù)表采用utf8字符集,存儲(chǔ)引擎為InnoDB。第5章表記錄的更新操作01插入表記錄03刪除表記錄02修改表記錄插入表記錄1主要內(nèi)容使用INSERT...VALUES語句插入新記錄1插入多條記錄2使用INSERT……SELECT語句插入結(jié)果集3使用REPLACE語句插入新記錄4使用INSERT...VALUES語句插入新記錄使用INSERT...VALUES語句插入新記錄創(chuàng)建數(shù)據(jù)庫的語法格式如下:插入完整數(shù)據(jù)通過INSERT...VALUES語句向圖書館管理系統(tǒng)的管理員信息表tb_manager中插入一條完整的數(shù)據(jù)。實(shí)例插入數(shù)據(jù)記錄的一部分通過INSERT...VALUES語句向數(shù)據(jù)表tb_manager中插入數(shù)據(jù)記錄的一部分。實(shí)例插入多條記錄插入多條記錄通過INSERT...VALUES語句向數(shù)據(jù)表tb_manager中一次插入多條記錄。實(shí)例使用INSERT……SELECT語句插入結(jié)果集使用INSERT...VALUES語句插入新記錄創(chuàng)建數(shù)據(jù)庫的語法格式如下:使用INSERT……SELECT語句插入結(jié)果集實(shí)現(xiàn)從圖書館管理系統(tǒng)的借閱表tb_borrow中獲取部分借閱信息(讀者ID和圖書ID)插入到歸還表tb_giveback中。實(shí)例使用REPLACE語句插入新記錄使用REPLACE語句插入新記錄REPLACE語句的語法格式如下:修改表記錄2修改表記錄UPDATE修改表記錄UPDATE語句的語法格式如下:修改表記錄將圖書館管理系統(tǒng)的借閱表中id字段為2的記錄的“是否歸還”字段值設(shè)置為1。實(shí)例刪除表記錄3主要內(nèi)容使用DELETE語句刪除表記錄1使用TRUNCATE語句清空表記錄2使用DELETE語句刪除表記錄使用DELETE語句刪除表記錄DELETE使用DELETE語句刪除表記錄DELETE語句的語法格式如下:刪除數(shù)據(jù)時(shí),如果沒有指定where條件,將刪除所有的記錄。使用DELETE語句刪除表記錄將圖書館管理系統(tǒng)的管理員信息表tb_manager中的名稱為admin的管理員刪除實(shí)例使用TRUNCATE語句清空表記錄使用TRUNCATE語句清空表記錄TRUNCATE使用TRUNCATE語句清空表記錄TRUNCATE語句的語法格式如下:由于TRUNCATETABLE語句會(huì)刪除數(shù)據(jù)表中的所有數(shù)據(jù),并且無法恢復(fù),因此使用TRUNCATETABLE語句時(shí)一定要十分小心。使用TRUNCATE語句清空表記錄清空?qǐng)D書館管理系統(tǒng)的管理員信息表tb_manager。實(shí)例使用TRUNCATE語句清空表記錄使用TRUNCATETABLE語句后,表中的AUTO_INCREMENT計(jì)數(shù)器將被重新設(shè)置為該列的初始值。對(duì)于參與了索引和視圖的表,不能使用TRUNCATETABLE語句來刪除數(shù)據(jù),而應(yīng)用使用DELETE語句。TRUNCATETABLE操作與比DELETE操作使用的系統(tǒng)和事務(wù)日志資源少。DELETE語句和TRUNCATETABLE語句的區(qū)別小結(jié)本章主要介紹了對(duì)表記錄進(jìn)行更新操作的相關(guān)知識(shí)。主要包括向表中插入記錄、修改表記錄,以及刪除表記錄。其中,在介紹插入表記錄時(shí),共介紹了4種方法,有插入單條記錄的方法、插入多條記錄的方法、插入結(jié)果集的方法,以及使用REPLACE語句插入新記錄。在這4種方法中,最常用的是插入單條記錄和插入多條記錄的方法。需要重點(diǎn)掌握,靈活運(yùn)用?,F(xiàn)就可以了。上機(jī)指導(dǎo)向tb_sell數(shù)據(jù)表中,插入兩條銷售數(shù)據(jù),然后將第二條數(shù)據(jù)刪除。第6章表記錄的檢索01基本查詢語句03聚合函數(shù)查詢02單表查詢04連接查詢05子查詢06合并查詢結(jié)果07定義表和字段的別名08使用正則表達(dá)式查詢基本查詢語句1基本查詢語句SELECT語句的基本語法格式如下:?jiǎn)伪聿樵?主要內(nèi)容查詢所有字段1查詢指定字段2查詢指定數(shù)據(jù)3帶IN關(guān)鍵字的查詢4帶BETWEENAND的范圍查詢5帶LIKE的字符匹配查詢6用ISNULL關(guān)鍵字查詢空值7帶AND的多條件查詢8帶OR的多條件查詢9用DISTINCT關(guān)鍵字去除結(jié)果中的重復(fù)行10用ORDERBY關(guān)鍵字對(duì)查詢結(jié)果排序11用GROUPBY關(guān)鍵字分組查詢12用LIMIT限制查詢結(jié)果的數(shù)量13查詢所有字段查詢所有字段查詢所有字段的語法格式如下:查詢所有字段查詢圖書館管理系統(tǒng)的圖書信息表tb_bookinfo的全部數(shù)據(jù)。實(shí)例查詢指定字段查詢指定字段查詢指定字段的語法格式如下:查詢指定字段從圖書館管理系統(tǒng)的圖書信息表tb_bookinfo中查詢圖書的名稱(對(duì)應(yīng)字段為bookname)和作者(對(duì)應(yīng)字段為author)實(shí)例查詢指定數(shù)據(jù)比較運(yùn)算符ISNULL ISNOTNULL BETWEEN IN NOTINLIKE NOTLIKE REGEXP= > < => <= != <>查詢指定數(shù)據(jù)從圖書館管理系統(tǒng)的管理表中查詢名稱為mr的管理員,主要是通過WHERE子句實(shí)現(xiàn)。實(shí)例帶IN關(guān)鍵字的查詢帶IN關(guān)鍵字的查詢帶IN關(guān)鍵字的查詢的語法格式如下:帶IN關(guān)鍵字的查詢從圖書館管理系統(tǒng)的圖書表tb_bookinfo中查詢位于左A-1(對(duì)應(yīng)的ID號(hào)為4)或右A-1(對(duì)應(yīng)的ID號(hào)為6)的圖書信息。實(shí)例帶BETWEENAND的范圍查詢帶BETWEENAND的范圍查詢2017年4月1日到2017年4月10日BETWEENAND帶BETWEENAND的范圍查詢帶BETWEENAND的范圍查詢的語法格式如下:帶BETWEENAND的范圍查詢從圖書館管理系統(tǒng)的借閱表tb_borrow中查詢borrowTime值在2017-02-01~2017-02-28之間的借閱信息。實(shí)例帶LIKE的字符匹配查詢帶LIKE的字符匹配查詢%_明%明日明日科技明日學(xué)院王_王語王語西帶LIKE的字符匹配查詢對(duì)圖書館管理系統(tǒng)的圖書信息進(jìn)行模糊查詢,即要求查詢tb_bookinfo表中bookname字段中包含JavaWeb字符的數(shù)據(jù)。實(shí)例用ISNULL關(guān)鍵字查詢空值用ISNULL關(guān)鍵字查詢空值ISNULL關(guān)鍵字的語法格式如下:用ISNULL關(guān)鍵字查詢空值使用ISNULL關(guān)鍵字查詢tb_readertype表中name字段的值為空的記錄。實(shí)例帶AND的多條件查詢帶AND的多條件查詢使用AND關(guān)鍵字查詢的語法格式如下:帶AND的多條件查詢實(shí)現(xiàn)判斷輸入的管理員帳號(hào)和密碼是否存在。要求查詢tb_manager表中name字段值為mr,并且PWD字段值為mrsoft的記錄。實(shí)例帶OR的多條件查詢帶OR的多條件查詢使用OR關(guān)鍵字查詢的語法格式如下:帶OR的多條件查詢查詢tb_manager表中name字段值為mr或者mingrisoft的記錄。實(shí)例用DISTINCT關(guān)鍵字去除結(jié)果中的重復(fù)行用DISTINCT關(guān)鍵字去除結(jié)果中的重復(fù)行DISTINCT關(guān)鍵字的使用方法如下:用DISTINCT關(guān)鍵字去除結(jié)果中的重復(fù)行實(shí)現(xiàn)從圖書館管理系統(tǒng)的讀者信息表中獲取職業(yè)。要求使用DISTINCT關(guān)鍵字去除tb_reader表中vocation字段中的重復(fù)記錄。實(shí)例用ORDERBY關(guān)鍵字對(duì)查詢結(jié)果排序用ORDERBY關(guān)鍵字對(duì)查詢結(jié)果排序ORDERBY關(guān)鍵字的使用方法如下:用ORDERBY關(guān)鍵字對(duì)查詢結(jié)果排序?qū)崿F(xiàn)對(duì)圖書借閱信息進(jìn)行排序。要求查詢tb_borrow表中的所有信息,并按照“borrowTime”進(jìn)行降序排列。實(shí)例用GROUPBY關(guān)鍵字分組查詢使用GROUPBY關(guān)鍵字來分組實(shí)現(xiàn)分組統(tǒng)計(jì)每本圖書的借閱次數(shù)。要求使用GROUPBY關(guān)鍵字對(duì)tb_borrow表中tbookidalk字段進(jìn)行分組查詢。實(shí)例GROUPBY關(guān)鍵字與GROUP_CONCAT()函數(shù)一起使用仍然對(duì)圖書借閱表進(jìn)行分組統(tǒng)計(jì),這次使用GROUPBY關(guān)鍵字和GROUP_CONCAT()函數(shù)對(duì)表中的bookid字段進(jìn)行分組查詢。實(shí)例按多個(gè)字段進(jìn)行分組對(duì)tb_borrow1表中的bookid字段和readerid字段進(jìn)行分組,分組過程中,先按照bookid字段進(jìn)行分組。當(dāng)bookid字段的值相等時(shí),再按照readerid字段進(jìn)行分組。實(shí)例用LIMIT限制查詢結(jié)果的數(shù)量用LIMIT限制查詢結(jié)果的數(shù)量
LIMIT子句可以對(duì)查詢結(jié)果的記錄條數(shù)進(jìn)行限定,控制它輸出的行數(shù)。用LIMIT限制查詢結(jié)果的數(shù)量實(shí)現(xiàn)查詢最后被借閱的3本圖書。具體方法是查詢tb_borrow1表中,按照借閱時(shí)間進(jìn)行降序排列,顯示前3條記錄。實(shí)例聚合函數(shù)查詢3主要內(nèi)容COUNT()函數(shù)1SUM()函數(shù)2AVG()函數(shù)3MAX()函數(shù)4MIN()函數(shù)5COUNT()函數(shù)COUNT()函數(shù)聚合函數(shù)查詢COUNT()函數(shù)
COUNT()函數(shù)用于對(duì)除“*”以外的任何參數(shù),返回所選擇集合中非NULL值的行的數(shù)目。COUNT()函數(shù)實(shí)現(xiàn)統(tǒng)計(jì)圖書館管理系統(tǒng)中的讀者人數(shù)。具體的實(shí)現(xiàn)方法是使用COUNT()函數(shù)統(tǒng)計(jì)tb_reader表中的記錄數(shù)。實(shí)例SUM()函數(shù)SUM()函數(shù)
SUM()函數(shù)可以求出表中某個(gè)數(shù)值類型字段取值的總和。SUM()函數(shù)實(shí)現(xiàn)統(tǒng)計(jì)商品的銷售金額。具體的實(shí)現(xiàn)方法是使用SUM()函數(shù)統(tǒng)計(jì)tb_sell表中銷售金額字段(amount)的總和。實(shí)例AVG()函數(shù)AVG()函數(shù)
AVG()函數(shù)可以求出表中某個(gè)數(shù)值類型字段取值的平均值。AVG()函數(shù)計(jì)算學(xué)生的平均成績(jī)。具體實(shí)現(xiàn)方法是使用AVG()函數(shù)求tb_student表中總成績(jī)(score)字段值的平均值。實(shí)例MAX()函數(shù)MAX()函數(shù)
MAX()函數(shù)可以求出表中某個(gè)數(shù)值類型字段取值的最大值。MAX()函數(shù)計(jì)算學(xué)生表中的最高成績(jī)。具體的實(shí)現(xiàn)方法是使用MAX()函數(shù)查詢tb_student表中score字段的最大值。實(shí)例MIN()函數(shù)MIN()函數(shù)
MIN()函數(shù)可以求出表中某個(gè)數(shù)值類型字段取值的最小值。MIN()函數(shù)計(jì)算學(xué)生表中的最低成績(jī)。具體的實(shí)現(xiàn)方法是使用MIN()函數(shù)查詢tb_student表中score字段的最小值。實(shí)例連接查詢4主要內(nèi)容內(nèi)連接查詢1外連接查詢2復(fù)合條件連接查詢3內(nèi)連接查詢內(nèi)連接查詢圖書信息表借閱信息表內(nèi)連接查詢后的結(jié)果內(nèi)連接查詢使用內(nèi)連接查詢出圖書的借閱信息。主要涉及到圖書信息表tb_bookinfo和借閱表tb_borrow,這兩個(gè)表通過圖書ID進(jìn)行關(guān)聯(lián)。實(shí)例外連接查詢外連接查詢OUTERJOIN外連接查詢外連接查詢的基本語法格式如下:LEFTJOINRIGHTJOIN左外連接在圖書館管理系統(tǒng)中,圖書信息表(tb_bookinfo)和圖書類型表(tb_booktype)之間通過類型ID字段相關(guān)聯(lián),并且在圖書類型表中保存著圖書的可借閱天數(shù)。因此,要實(shí)現(xiàn)獲取圖書的最多借閱天數(shù),需要使用左外連接來實(shí)現(xiàn)。實(shí)例右外連接對(duì)剛剛完成的例子中的兩個(gè)數(shù)據(jù)表進(jìn)行右外連接,其中圖書類型表(tb_bookTYPE)作為右表,圖書信息表(tb_bookinfo)作為左表,兩表通過圖書類型ID字段關(guān)聯(lián)。實(shí)例復(fù)合條件連接查詢選擇數(shù)據(jù)庫應(yīng)用復(fù)合條件連接查詢實(shí)現(xiàn)查詢出未歸還的圖書借閱信息,主要是判斷是否歸還字段的值等于0的條件。實(shí)例子查詢5主要內(nèi)容帶IN關(guān)鍵字的子查詢1帶比較運(yùn)算符的子查詢2帶EXISTS關(guān)鍵字的子查詢3帶ANY關(guān)鍵字的子查詢4帶ALL關(guān)鍵字的子查詢5帶IN關(guān)鍵字的子查詢帶IN關(guān)鍵字的子查詢子查詢就是指在一個(gè)查詢語句中,還包括另一個(gè)查詢語句。在外一層的查詢中使用里面一層查詢產(chǎn)生的結(jié)果集。IN帶IN關(guān)鍵字的子查詢應(yīng)用帶IN關(guān)鍵字的子查詢實(shí)現(xiàn)查詢被借閱過的圖書信息。實(shí)例帶比較運(yùn)算符的子查詢帶比較運(yùn)算符的子查詢=、!=、>、>=、<、<=帶比較運(yùn)算符的子查詢從學(xué)生信息表(tb_student)和等級(jí)表(tb_grade)中查詢考試成績(jī)?yōu)閮?yōu)秀的學(xué)生信息。實(shí)例帶EXISTS關(guān)鍵字的子查詢帶EXISTS關(guān)鍵字的子查詢
EXISTS關(guān)鍵字用于檢查子查詢是否至少返回一行數(shù)據(jù)。帶EXISTS關(guān)鍵字的子查詢應(yīng)用帶EXISTS關(guān)鍵字的子查詢實(shí)現(xiàn)查詢已經(jīng)被借閱的圖書信息。實(shí)例帶ANY關(guān)鍵字的子查詢帶ANY關(guān)鍵字的子查詢
ANY關(guān)鍵字表示滿足其中任意一個(gè)條件。帶ANY關(guān)鍵字的子查詢ANY關(guān)鍵字的基本用法:帶ANY關(guān)鍵字的子查詢實(shí)現(xiàn)查詢比一年三班最低分高的全部學(xué)生信息。主要是通過帶ANY關(guān)鍵字的子查詢實(shí)現(xiàn)成績(jī)大于一年三班的任何一名同學(xué)的學(xué)生信息。實(shí)例帶ALL關(guān)鍵字的子查詢帶ALL關(guān)鍵字的子查詢
ALL關(guān)鍵字表示表示滿足所有條件。帶ALL關(guān)鍵字的子查詢ALL關(guān)鍵字的基本用法:帶ALL關(guān)鍵字的子查詢實(shí)現(xiàn)查詢比一年三班最高分高的全部學(xué)生信息。主要是通過帶ALL關(guān)鍵字的子查詢實(shí)現(xiàn)成績(jī)大于一年三班的任何一名同學(xué)的學(xué)生信息。實(shí)例合并查詢結(jié)果6合并查詢結(jié)果合并查詢結(jié)果是將多個(gè)SELECT語句的查詢結(jié)果合并到一起。UNION關(guān)鍵字將圖書信息表1(tb_bookinfo)和圖書信息表2(tb_bookinfo1)合并。實(shí)例UNIONALL關(guān)鍵字定義表和字段的別名7主要內(nèi)容為表取別名1為字段取別名2為表取別名為表取別名使用左連接查詢出圖書的完整信息,并為圖書信息表(tb_bookinfo)指定別名為book,為圖書類別表(tb_booktype)指定別名為type。實(shí)例為字段取別名為字段取別名為字段取別名的基本形式如下:為字段取別名實(shí)現(xiàn)統(tǒng)計(jì)每本圖書的借閱次數(shù),并取別名為degree。實(shí)例使用正則表達(dá)式查詢8主要內(nèi)容匹配指定字符中的任意一個(gè)1使用“*”和“+”來匹配多個(gè)字符2匹配指定字符中的任意一個(gè)匹配指定字符中的任意一個(gè)REGEXP[]匹配指定字符中的任意一個(gè)實(shí)現(xiàn)在圖書館管理系統(tǒng)中查詢包括字母k、r或s的管理員信息。主要是對(duì)管理員信息表進(jìn)行查詢,設(shè)置的查詢條件是通過正則表達(dá)式驗(yàn)證name字段。實(shí)例使用“*”和“+”來匹配多個(gè)字符使用“*”和“+”來匹配多個(gè)字符*+使用“*”和“+”來匹配多個(gè)字符實(shí)現(xiàn)在圖書館管理系統(tǒng)中查詢E-mail地址不正確的讀者信息。主要是對(duì)讀者信息表進(jìn)行查詢,設(shè)置的查詢條件是通過正則表達(dá)式驗(yàn)證email字段。實(shí)例小結(jié)本章對(duì)MySQL數(shù)據(jù)庫常見的表記錄的檢索方法進(jìn)行了詳細(xì)講解,并通過大量的舉例說明,使讀者更好的理解所學(xué)知識(shí)的用法。在閱讀本章時(shí),讀者應(yīng)該重點(diǎn)掌握多條件查詢、連接查詢、子查詢和查詢結(jié)果排序。本章學(xué)習(xí)的難點(diǎn)是使用正則表達(dá)式來查詢。正則表達(dá)式的功能很強(qiáng)大,使用起來很靈活。希望讀者能夠閱讀有關(guān)正則表達(dá)式的相關(guān)知識(shí),能過對(duì)正則表達(dá)式了解得更加透徹。上機(jī)指導(dǎo)在db_shop數(shù)據(jù)庫中,創(chuàng)建一個(gè)名稱為tb_goods的數(shù)據(jù)表,并向該數(shù)據(jù)表中插入3條記錄,然后應(yīng)用連接查詢獲取包括商品信息在內(nèi)的銷售數(shù)據(jù)。第7章視圖01視圖概述03視圖操作02創(chuàng)建視圖視圖概述1主要內(nèi)容視圖的概念1視圖的作用2視圖的概念視圖的概念
視圖是一個(gè)虛擬表,是從數(shù)據(jù)庫中一個(gè)或多個(gè)表中導(dǎo)出來的表,其內(nèi)容由查詢定義。數(shù)據(jù)庫中只存放了視圖的定義,而并沒有存放視圖中的數(shù)據(jù)。視圖的概念為什么要使用視圖?安全原因可使復(fù)雜的查詢易于理解和使用視圖的作用視圖的作用1.簡(jiǎn)單性2.安全性在表中增加一個(gè)標(biāo)志用戶名的列;建立視圖,使用戶只能看到標(biāo)有自己用戶名的行;把視圖授權(quán)給其他用戶。3.邏輯數(shù)據(jù)獨(dú)立性創(chuàng)建視圖2主要內(nèi)容查看創(chuàng)建視圖的權(quán)限1創(chuàng)建視圖2創(chuàng)建視圖的注意事項(xiàng)3查看創(chuàng)建視圖的權(quán)限查看創(chuàng)建視圖的權(quán)限CREATEVIEWSELECT查看創(chuàng)建視圖的權(quán)限查詢語法格式如下:查看創(chuàng)建視圖的權(quán)限查詢MySQL中root用戶是否具有創(chuàng)建視圖的權(quán)限。實(shí)例創(chuàng)建視圖創(chuàng)建視圖CREATEVIEW創(chuàng)建視圖創(chuàng)建視圖的語法格式如下:創(chuàng)建視圖在數(shù)據(jù)庫db_librarybak中創(chuàng)建一個(gè)保存完整圖書信息的視圖,命名為v_book,該視圖包括兩張數(shù)據(jù)表,分別是圖書信息表(tb_bookinfo)和圖書類別表(tb_booktype)。視圖包含tb_bookinfo表中的barcode、bookname、author、price和page列;包含tb_booktype表中的typename字段。實(shí)例創(chuàng)建視圖的注意事項(xiàng)創(chuàng)建視圖的注意事項(xiàng)運(yùn)行創(chuàng)建視圖的語句需要用戶具有CREATEVIEW的權(quán)限;SELECT語句不能包含F(xiàn)ROM子句中的子查詢;在定義中引用的表或視圖必須存在;在定義中不能引用temporary表,不能創(chuàng)建temporary視圖;在視圖定義中允許使用ORDERBY,但是,如果從特定視圖進(jìn)行了選擇,而該視圖使用了具有自己ORDERBY的語句,它將被忽略。視圖操作3主要內(nèi)容查看視圖1修改視圖2更新視圖3刪除視圖4查看視圖查看視圖SHOWVIEWDESCRIBE語句SHOWTABLESTATUS語句SHOWCREATEVIEW語句DESCRIBE語句DESC語句的格式如下:DESCSHOWTABLESTATUS語句SHOWTABLESTATUS語句的格式如下:SHOWTABLESTATUSSHOWTABLESTATUS語句使用SHOWTABLESTATUS語句查看圖書視圖(v_book)的結(jié)構(gòu)。實(shí)例SHOWCREATEVIEW語句SHOWCREATEVIEW語句的格式如下:SHOWCREATEVIEWSHOWCREATEVIEW語句使用SHOWCREATEVIEW語句查看視圖book_view1的詳細(xì)定義。實(shí)例修改視圖修改視圖CREATEORREPLACEVIEWALTERVIEWCREATEORREPLACEVIEW語句CREATEORREPLACEVIEW語句的格式如下:CREATEORREPLACEVIEW語句下面使用CREATEORREPLACEVIEW語句將視圖v_book的字段修改為barcode、bookname、price和booktype。實(shí)例ALTERVIEW語句ALTERVIEW語句的格式如下:ALTERVIEW語句下面修改v_book視圖,將原有的barcode、bookname、price和booktype4個(gè)屬性更改為barcode、bookname和booktype3個(gè)屬性。實(shí)例更新視圖更新視圖對(duì)圖書視圖v_book中的數(shù)據(jù)進(jìn)行更新。實(shí)例更新視圖的限制CREATEORREPLACEVIEWALTERVIEW更新視圖的限制哪些視圖不能更新?視圖中包含COUNT()、SUM()、MAX()和MIN()等函數(shù);視圖中包含UNION、UNIONALL、DISTINCT、GROUPBY和HAVIG等關(guān)鍵字;常量視圖;視圖中的SELECT中包含子查詢;創(chuàng)建視圖時(shí),設(shè)置ALGORITHM為TEMPTABLE類型。刪除視圖刪除視圖DROPVIEW語句的格式如下:DROPVIEWDROP刪除視圖刪除前面實(shí)例中一直使用的圖書視圖v_book。實(shí)例小結(jié)本章對(duì)MySQL數(shù)據(jù)庫的視圖的含義和作用進(jìn)行了詳細(xì)講解,并且講解了創(chuàng)建視圖、修改視圖和刪除視圖的方法。創(chuàng)建視圖和修改視圖是本章的重點(diǎn)內(nèi)容,并且需要在計(jì)算機(jī)上實(shí)際操作。讀者在創(chuàng)建視圖和修改視圖后,一定要查看視圖的結(jié)構(gòu),以確保創(chuàng)建和修改的操作是否正確。更新視圖是本章的一個(gè)難點(diǎn)。因?yàn)閷?shí)際中存在一些造成視圖不能更新的因素。希望讀者在練習(xí)中認(rèn)真分析。上機(jī)指導(dǎo)在db_shop數(shù)據(jù)庫中,創(chuàng)建一個(gè)名稱為v_sell的視圖,用于保存包括商品信息在內(nèi)的銷售數(shù)據(jù)。第8章觸發(fā)器01MySQL觸發(fā)器03使用觸發(fā)器02查看觸發(fā)器04刪除觸發(fā)器MySQL觸發(fā)器1主要內(nèi)容創(chuàng)建MySQL觸發(fā)器1創(chuàng)建具有多個(gè)執(zhí)行語句的觸發(fā)器2創(chuàng)建MySQL觸發(fā)器觸發(fā)器的概念
觸發(fā)器是由MySQL的基本命令事件來觸發(fā)的某種特定操作。INSERTUPDATEDELETE觸發(fā)器的概念用戶信息表日志表用戶信息插入一條日志觸發(fā)器創(chuàng)建只有一個(gè)執(zhí)行語句的觸發(fā)器創(chuàng)建只有一個(gè)執(zhí)行語句的觸發(fā)器的基本形式如下:INSERTUPDATEDELETE創(chuàng)建只有一個(gè)執(zhí)行語句的觸發(fā)器實(shí)現(xiàn)保存圖書信息時(shí),自動(dòng)向日志表添加一條數(shù)據(jù)。具體的實(shí)現(xiàn)方法是為圖書信息表(tb_bookinfo)創(chuàng)建一個(gè)由插入命令“INSERT”觸發(fā)的觸發(fā)器auto_save_log。實(shí)例創(chuàng)建具有多個(gè)執(zhí)行語句的觸發(fā)器創(chuàng)建具有多個(gè)執(zhí)行語句的觸發(fā)器創(chuàng)建具有多個(gè)執(zhí)行語句的觸發(fā)器的基本形式如下:;創(chuàng)建具有多個(gè)執(zhí)行語句的觸發(fā)器實(shí)現(xiàn)刪除圖書信息時(shí),分別向日志表和臨時(shí)表中各添加一條數(shù)據(jù)。實(shí)例查看觸發(fā)器2主要內(nèi)容SHOWTRIGGERS1查看triggers表中觸發(fā)器信息2使用SHOWTRIGGERS使用SHOWTRIGGERSSHOWTRIGGERS語句的基本語法形式如下:SHOWTRIGGERSSHOWTRIGGERS\g查看triggers表中觸發(fā)器信息查看triggers表中觸發(fā)器信息查看triggers表中觸發(fā)器信息的基本語法形式如下:triggers查看triggers表中觸發(fā)器信息想要查看某個(gè)數(shù)據(jù)庫中有什么觸發(fā)器?TRIGGER_SCHEMA使用觸發(fā)器3主要內(nèi)容觸發(fā)器的執(zhí)行順序1使用觸發(fā)器維護(hù)冗余數(shù)據(jù)2觸發(fā)器的執(zhí)行順序觸發(fā)器的執(zhí)行順序BEFORE觸發(fā)器表操作AFTER觸發(fā)器使用觸發(fā)器維護(hù)冗余數(shù)據(jù)使用觸發(fā)器維護(hù)冗余數(shù)據(jù)使用觸發(fā)器維護(hù)庫存數(shù)量。主要是通過商品銷售信息表創(chuàng)建一個(gè)觸發(fā)器,實(shí)現(xiàn)當(dāng)添加一條商品銷售信息時(shí),自動(dòng)修改庫存信息表中的庫存數(shù)量。實(shí)例刪除觸發(fā)器4刪除觸發(fā)器DROP語句的格式如下:DROP刪除觸發(fā)器刪除名稱為delete_book_info的觸發(fā)器。實(shí)例小結(jié)本章對(duì)MySQL數(shù)據(jù)庫的觸發(fā)器的定義和作用、創(chuàng)建觸發(fā)器、查看觸發(fā)器、使用觸發(fā)器和刪除觸發(fā)器等內(nèi)容進(jìn)行了詳細(xì)講解,創(chuàng)建觸發(fā)器和使用觸發(fā)器是本章的重點(diǎn)內(nèi)容。讀者在創(chuàng)建觸發(fā)器后,一定要查看觸發(fā)器的結(jié)構(gòu)。使用觸發(fā)器時(shí),觸發(fā)器執(zhí)行的順序?yàn)锽EFORE觸發(fā)器、表操作(INSERT、UPDATE和DELETE)和AFTER觸發(fā)器。讀者需要將本章的知識(shí)結(jié)合實(shí)際需要來設(shè)計(jì)觸發(fā)器。上機(jī)指導(dǎo)在db_shop數(shù)據(jù)庫中,為銷售表(tb_sell)創(chuàng)建一個(gè)AFTERINSERT觸發(fā)器,實(shí)現(xiàn)插入一條銷售信息后,自動(dòng)更新庫存表。第9章存儲(chǔ)過程與存儲(chǔ)函數(shù)01創(chuàng)建存儲(chǔ)過程和存儲(chǔ)函數(shù)03查看存儲(chǔ)過程和函數(shù)02存儲(chǔ)過程和存儲(chǔ)函數(shù)的調(diào)用04修改存儲(chǔ)過程和函數(shù)05刪除存儲(chǔ)過程和函數(shù)創(chuàng)建存儲(chǔ)過程和存儲(chǔ)函數(shù)1主要內(nèi)容創(chuàng)建存儲(chǔ)過程1創(chuàng)建存儲(chǔ)函數(shù)2變量的應(yīng)用3光標(biāo)的運(yùn)用4創(chuàng)建存儲(chǔ)過程存儲(chǔ)過程和存儲(chǔ)函數(shù)
存儲(chǔ)過程和存儲(chǔ)函數(shù)經(jīng)常是一組SQL語句的組合,這些語句被當(dāng)作整體存入MySQL數(shù)據(jù)庫服務(wù)器中。創(chuàng)建存儲(chǔ)過程創(chuàng)建存儲(chǔ)過程的基本形式如下:[IN|OUT|INOUT]param_nametypeBEGIN..ENDDELIMITER//創(chuàng)建存儲(chǔ)過程創(chuàng)建一個(gè)統(tǒng)計(jì)指定圖書借閱次數(shù)的存儲(chǔ)過程。主要是通過創(chuàng)建一個(gè)名稱為proc_count的存儲(chǔ)過程,實(shí)現(xiàn)統(tǒng)計(jì)tb_borrow1數(shù)據(jù)表中指定圖書編號(hào)的圖書的借閱次數(shù)。實(shí)例創(chuàng)建存儲(chǔ)函數(shù)創(chuàng)建存儲(chǔ)函數(shù)創(chuàng)建存儲(chǔ)函數(shù)的基本形式如下:BEGIN..END創(chuàng)建存儲(chǔ)函數(shù)應(yīng)用tb_borrow1數(shù)據(jù)表。創(chuàng)建一個(gè)統(tǒng)計(jì)指定圖書借閱次數(shù)的存儲(chǔ)函數(shù),名稱為func_count。實(shí)現(xiàn)統(tǒng)計(jì)tb_borrow1數(shù)據(jù)表中指定圖書編號(hào)的圖書的借閱次數(shù)。實(shí)例變量的應(yīng)用變量的應(yīng)用局部參數(shù)全局參數(shù)局部變量全局變量BEGIN…END范圍內(nèi)有效整個(gè)存儲(chǔ)過程范圍內(nèi)有效局部變量DECLAREvar_name[,…]type[DEFAULTvalue]聲明局部變量的基本語法形式如下:DECLARE局部變量演示局部變量只在某個(gè)BEGIN…END塊內(nèi)有效。實(shí)例全局變量@全局變量分別在內(nèi)部和外部BEGIN…END塊中都定義了同名的全局變量@t,并且最終輸出結(jié)果相同,從而說明全局變量的作用范圍為整個(gè)程序。實(shí)例為變量賦值使用SET關(guān)鍵字為變量賦值的基本語法形式如下:1.使用SET關(guān)鍵字為變量賦值SETmr_soft=10;為變量賦值使用SELECT…INTO語句為變量賦值的基本語法形式如下:2.使用SELECT…INTO語句為變量賦值光標(biāo)的運(yùn)用光標(biāo)的應(yīng)用光標(biāo)可以逐條讀取結(jié)果集中的記錄游標(biāo)CURSOR光標(biāo)的運(yùn)用聲明光標(biāo)的語法格式如下:1.聲明光標(biāo)不能單獨(dú)執(zhí)行光標(biāo)的運(yùn)用打開光標(biāo)的語法格式如下:2.打開光標(biāo)3.使用光標(biāo)光標(biāo)的運(yùn)用使用光標(biāo)的語法格式如下:4.關(guān)閉光標(biāo)光標(biāo)的運(yùn)用關(guān)閉光標(biāo)的語法格式如下:存儲(chǔ)過程和存儲(chǔ)函數(shù)的調(diào)用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 互聯(lián)網(wǎng)金融培訓(xùn)
- 農(nóng)業(yè)科技推廣與應(yīng)用指導(dǎo)(標(biāo)準(zhǔn)版)
- 2026年劇本殺運(yùn)營(yíng)公司劇本開場(chǎng)前講解規(guī)范制度
- 2025年老年大學(xué)教育管理五年報(bào)告
- 2025年環(huán)保包裝技術(shù)創(chuàng)新驅(qū)動(dòng)因素:新型設(shè)備生產(chǎn)項(xiàng)目可行性研究報(bào)告
- 護(hù)理扎針的專業(yè)發(fā)展
- 2026年自動(dòng)駕駛車輛傳感器技術(shù)報(bào)告及未來五至十年智能網(wǎng)聯(lián)汽車報(bào)告
- 2026年5G通信產(chǎn)業(yè)升級(jí)報(bào)告及未來十年技術(shù)演進(jìn)報(bào)告
- AI驅(qū)動(dòng)的校園環(huán)境智能垃圾分類系統(tǒng)設(shè)計(jì)研究教學(xué)研究課題報(bào)告
- 2026年可穿戴設(shè)備健康監(jiān)測(cè)創(chuàng)新報(bào)告及未來五至十年技術(shù)融合報(bào)告
- 拆除爆破施工方案
- 青海省西寧市2024-2025學(xué)年高一上學(xué)期期末調(diào)研測(cè)試物理試卷(解析版)
- 2025年浙江省中考科學(xué)試題卷(含答案解析)
- 《建筑材料與檢測(cè)》高職土木建筑類專業(yè)全套教學(xué)課件
- 風(fēng)電塔筒升降機(jī)項(xiàng)目可行性研究報(bào)告
- 急性呼吸窘迫綜合征病例討論
- 畢業(yè)設(shè)計(jì)(論文)-自動(dòng)展開曬衣架設(shè)計(jì)
- T/CCMA 0164-2023工程機(jī)械電氣線路布局規(guī)范
- GB/T 43590.507-2025激光顯示器件第5-7部分:激光掃描顯示在散斑影響下的圖像質(zhì)量測(cè)試方法
- 2025四川眉山市國(guó)有資本投資運(yùn)營(yíng)集團(tuán)有限公司招聘50人筆試參考題庫附帶答案詳解
- 2025年鐵嶺衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫新版
評(píng)論
0/150
提交評(píng)論