MySQL數據庫項目化教程(第2版)(微課版)課件匯 陳曉丹 項目5-9 數據查詢- Python程序連接與訪問MySQL數據庫_第1頁
MySQL數據庫項目化教程(第2版)(微課版)課件匯 陳曉丹 項目5-9 數據查詢- Python程序連接與訪問MySQL數據庫_第2頁
MySQL數據庫項目化教程(第2版)(微課版)課件匯 陳曉丹 項目5-9 數據查詢- Python程序連接與訪問MySQL數據庫_第3頁
MySQL數據庫項目化教程(第2版)(微課版)課件匯 陳曉丹 項目5-9 數據查詢- Python程序連接與訪問MySQL數據庫_第4頁
MySQL數據庫項目化教程(第2版)(微課版)課件匯 陳曉丹 項目5-9 數據查詢- Python程序連接與訪問MySQL數據庫_第5頁
已閱讀5頁,還剩379頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

MySQL數據庫項目化教程V1項目五數據查詢項目任務知識目標學習目標任務1:簡單查詢任務2:連接查詢任務3:子查詢(1)了解簡單查詢和復合查詢(2)掌握模糊查詢的用法(3)掌握內連接、左外連接、右外連接和全連接查詢的用法(4)掌握連接查詢和子查詢的區別能力目標素質目標學習目標(1)能夠完成關于表的行和列的查詢(2)能夠使用模糊查詢(3)能夠實現自身連接查詢(4)能夠實現表間連接查詢(1)培養學生的編程能力和業務素質(2)培養學生自我學習的習慣、愛好和能力(3)培養學生的科學精神和態度課程思政(素養提示)學習目標(1)數據庫SQL查詢語句的正確性、查詢效率的優化都體現了嚴謹的工匠精神和求真務實的科學精神。(2)工匠精神是一種執著專注、精益求精、一絲不茍、追求卓越的精神。通過對數據查詢的學習培養學生的工匠精神,形成科學的思維方法。思維導圖學習目標任務分析任務完成任務描述Part

2Part

3Part

1任務一簡單查詢任務分析任務完成Part

1Part

2Part

3任務描述在數據庫應用中,最常用的操作就是查詢,它也是數據庫其他操作的基礎。數據查詢不應只是簡單返回數據庫中存儲的數據,還應該根據需要對數據進行篩選,以及確定數據以什么樣的格式顯示。簡單查詢通常是指查詢的范圍只涉及一個表的查詢。以下根據要求分別從學生技能競賽管理系統中查找相關數據信息。任務描述任務分析任務完成Part

1Part

2Part

3任務描述在學生技能競賽管理系統中,學生需要在數據表中查詢自己參加競賽的信息,教師需要查詢指導學生的信息等。在MySQL中,使用SELECT語句不僅能夠從數據表中查詢所需要的數據,也可以進行數據的統計匯總,將查詢的數據以用戶規定的格式整理返回給用戶端。任務分析任務分析任務完成Part

1Part

2Part

3任務描述1.查詢表中指定字段用戶可以查詢表中的所有字段進行顯示,如果有些列在本次查詢中無關緊要,也可以只查詢部分字段。SELECT查詢語句最簡單的形式是從一個表中檢索所有記錄,實現的方法是使用星號(*)通配符指定查詢所有字段名稱。語法格式如下:SELECT*FROM表名;【例5-1】查詢student表中所有學生的詳細信息。SELECT*FROMstudent;【例5-2】查詢teacher表中所有教師的詳細信息。SELECT*FROMteacher;所有字段所有字段運行結果【例5-1】【例5-2】使用SELECT查詢語句,可以獲取多個字段下的數據,只需要在關鍵字SELECT后面指定要查找的字段的名稱即可,不同字段名稱之間用逗號(,)隔開,最后一個字段后面不需要加逗號,語法格式如下:SELECT字段名1,字段名2,…,字段名nFROM表名;【例5-3】查詢student表中學生的學號和姓名。SELECTst_no,st_nameFROMstudent;【例5-4】查詢teacher表中教師的姓名和信息。SELECTtc_name,tc_infoFROMteacher;1.查詢表中指定字段部分字段部分字段運行結果【例5-3】【例5-4】為字段取別名在有些情況下,顯示的列的名稱會很長或者名稱不夠直觀,MySQL可以指定列別名,替換字段或表達式。為字段取別名的基本語法形式為:列名[AS]列別名“列名”為表中字段定義的名稱,“列別名”為字段新的名稱,AS關鍵字為可選參數。【例5-5】查詢student表中所有學生的學號、姓名和班級編號,要求字段名為漢字形式。SELECTst_noAS學號,st_nameAS姓名,class_idAS班級編號FROMstudent;為字段取別名【例5-6】查詢teacher表中所有教師的工號、姓名和性別,要求字段名為漢字形式。SELECTtc_no教師工號,tc_name姓名,tc_sex性別FROMteacher;1.查詢表中指定字段運行結果【例5-5】【例5-6】簡單條件查詢2.選擇行選擇行查詢就是通過滿足某些條件進行查詢,從而查詢出相應的記錄,通常會把相應的查詢條件放到WHERE子句。語法形式為:SELECT字段名1,字段名2,…,字段名nFROM表名WHERE查詢條件;簡單條件查詢表時只有一個查詢條件。簡單條件查詢【例5-7】查詢student表中院系編號為4的所有學生信息。SELECT*FROMstudentWHEREdp_id=4;運行結果【例5-7】復合條件查詢2.選擇行復合條件查詢通常使用AND或者OR連接多個查詢條件。其中AND表示前后的兩個查詢條件要同時成立,OR表示前后的兩個查詢條件其中一個成立即可。OR可以和AND一起使用,但是在使用時要注意兩者的優先級,由于AND的優先級高于OR,因此先對AND兩邊的操作數進行操作,再與OR中的操作數結合。語法形式如下:SELECT字段1,字段2,…,字段nFROM表名WHERE查詢條件1AND查詢條件2AND…AND查詢條件n;【例5-8】查詢student表中院系編號為4的所有女學生的信息。SELECT*FROMstudentWHEREdp_id=4ANDst_sex='女';復合條件查詢【例5-9】查詢class表中院系編號為1和2的班級信息。SELECT*FROMclassWHEREdp_id=1ORdp_id=2;運行結果【例5-8】【例5-9】指定范圍查詢2.選擇行指定范圍查詢表示要查詢的記錄在指定的條件范圍內或者不在指定的條件范圍內,使用[not]BETWEENAND來查詢[不在]某個范圍內的值,該操作符需要兩個參數,即范圍的開始值和結束值,如果字段值滿足指定的范圍查詢條件,則這些記錄被返回。語法形式如下:SELECT字段1,字段2,…,字段nFROM表名WHERE查詢條件[not]BETWEEN開始值AND結束值;指定范圍查詢【例5-10】在project表中查詢培訓天數在20到35天的競賽項目名稱及培訓天數。SELECTpr_name,pr_daysFROMprojectWHEREpr_daysBETWEEN20AND35;運行結果【例5-10】模糊條件查詢2.選擇行在前面的查詢操作中,講述了如何查詢多個字段的記錄,如何進行比較查詢或者是查詢一個條件范圍內的記錄,如果要查找所有的包含字符“陳”的學生名字,該如何查找呢?簡單的比較操作在這里已經行不通了,在這里需要使用通配符進行匹配查找,通過創建查找模式對表中的數據進行比較。執行這個任務的關鍵字是LIKE。通配符是一種在SQL的WHERE條件子句中擁有特殊意思的字符,SQL語句中支持多重通配符。一般模糊條件查詢格式如下:SELECT字段FROM表WHERE某字段LIKE條件;模糊條件查詢%:匹配任意長度的字符,甚至包括零字符。【例5-11】查詢student表中姓“陳”的學生信息。SELECT*FROMstudentWHEREst_nameLIKE'陳%';運行結果【例5-11】模糊條件查詢2.選擇行_:表示任意單個字符。匹配單個任意字符,它常用來限制表達式的字符長度。如果要匹配多個字符,則需要使用相同個數的“_”。【例5-12】查詢student表中姓“李”的且名字為兩個字的學生信息。SELECT*FROMstudentWHEREst_nameLIKE'李_';[]:表示括號內所列字符中的一個(類似正則表達式)。指定一個字符、字符串或范圍,要求所匹配的對象為他們中的任一個。【例5-13】查詢student表中名字帶有單字“旭”的學生,姓可以為李、王、林、張。SELECT*FROMstudentWHEREst_nameREGEXP'[李王林張]旭';模糊條件查詢運行結果【例5-12】【例5-13】模糊條件查詢2.選擇行[^]:表示不在括號所列之內的單個字符。其取值和[]相同,但它所要求匹配對象為指定字符以外的任一個字符。【例5-14】查詢student表中名字帶有單字“燦”的學生,姓不可以為王、林、張。SELECT*FROMstudentWHEREst_nameREGEXP'[^王林張]燦';空值查詢2.選擇行數據表創建的時候,設計者可以指定某列中是否可以包含空值(NULL)。空值不同于0,也不同于空字符串。空值一般表示數據未知、不適用或將在以后添加數據。在SELECT語句中使用ISNULL子句,可以查詢某字段內容為空記錄。空值查詢【例5-15】查詢teacher表中2號院系沒有信息介紹的教師信息。SELECT*FROMteacherWHEREdp_id=2ANDtc_infoISNULL;消除重復行2.選擇行從例題5-15可以看到返回了6條記錄,其中性別只有男,有時,處于對數據分析的要求,需要消除重復的記錄值,如何使查詢結果沒有重復呢?在SELECT語句中,可以使用DISTINCT關鍵字指示MySQL消除重復的記錄。如果查詢結果有重復值并且所有重復值的次數并不重要的情況下,可以消除重復行。消除重復行【例5-16】查詢teacher表中院系編號為2的教師性別情況。SELECTDISTINCTtc_sexFROMteacherWHEREdp_id=2;顯示前N行2.選擇行SELECT返回所有匹配的行,有可能是表中所有的行,如僅僅需要返回第一行或者前幾行,使用LIMIT關鍵字,基本語法形式如下:LIMIT[位置偏移量,]行數;顯示前N行【例5-17】查詢前3名學生的信息。SELECT*FROMstudentLIMIT3;COUNT()函數3.使用聚合函數COUNT()函數統計數據表中包含的記錄行的總數,或者根據查詢結果返回列中包含的數據行數。其使用方法有兩種:計算表中總的行數,不管某列有數值或者為空值。COUNT(*)計算指定列下總的行數,計算時將忽略空值的行。COUNT(字段名)COUNT()函數【例5-18】統計student表中男學生的人數。SELECTCOUNT(*)AS男生人數FROMstudentWHEREst_sex='男';SUM()函數3.使用聚合函數SUM()是一個求總和的函數,返回指定列值的總和。AVG()函數【例5-20】統計project表中各種競賽項目的平均培訓天數。SELECTAVG(pr_days)AS平均培訓天數FROMproject;【例5-19】統計院系編號為6的競賽項目的總培訓天數。SELECTSUM(pr_days)AS總培訓天數FROMprojectWHEREdp_id=6;AVG()函數通過計算返回的行數和每一行數據的和,求得指定列數據的平均值。運行結果【例5-19】【例5-20】MAX()函數3.使用聚合函數MAX()返回查詢列中的最大值。MIN()函數【例5-22】在project表中找出所有競賽項目中的最小培訓天數。SELECTMIN(pr_days)AS最小培訓天數FROMproject;【例5-21】在project表中找出所有競賽項目中的最大培訓天數。SELECTMAX(pr_days)AS最大培訓天數FROMproject;MIN()返回查詢列中的最小值。分組查詢4.分組查詢分組查詢是對數據按照某個或多個字段進行分組,可以使用GROUPBY子句,用于將結果集中的行分成若干個組來輸出,在一個查詢語句中,如果用了GROUPBY子句,則SELECT子句中的列只能使用分組項字段和聚合函數。基本語法形式為:[GROUPBY字段][HAVING<條件表達式>]字段值為進行分組時所依據的列名稱;“HAVING<條件表達式>”指定滿足表達式限定條件的結果將被顯示。分組查詢【例5-23】查詢表project中平均培訓天數大于40天的院系編號和平均培訓時間。SELECTdp_id,AVG(pr_days)AS平均培訓天數FROMprojectGROUPBYdp_idHAVINGAVG(pr_days)>40;排序輸出5.排序輸出從前面的查詢結果,我們會發現有些字段的值是沒有任何順序的,MySQL可以通過在SELECT語句中使用ORDERBY子句,對查詢的結果進行排序。有升序排序和降序排序,默認為升序排序。排序輸出【例5-24】查詢表project中競賽項目的項目名稱和培訓時間,并按培訓天數降序排列。SELECTpr_name,pr_daysFROMprojectORDERBYpr_daysDESC;運行結果【例5-24】任務總結本任務主要介紹在MySQL軟件中關于單表數據的查詢操作,使用SELECT語句實現,從選擇列查詢、選擇行查詢、使用聚合函數查詢、分組查詢和排序輸出五個方面進行介紹。查詢是對數據庫里的數據進行檢索,并按用戶要求返回所需數據的過程。它是SQL語言的核心操作。任務分析任務完成任務描述Part

2Part

3Part

1任務二連接查詢任務分析任務完成Part

1Part

2Part

3任務描述一個數據庫中,通常存在多張數據表,用戶一般需要用多個表進行組合查詢來查詢出所需要的信息。如果一個查詢需要對多個表進行操作,那么這樣的操作就稱為連接查詢。多表連接查詢是關系數據庫中最重要也是最常用的查詢。多表連接查詢分為內連接、外連接和自連接等不同的連接方式,可以實現用戶各種各樣的查詢要求。任務描述任務分析任務完成Part

1Part

2Part

3任務描述教師的基本信息存儲在教師表(teacher)中,而項目編號存儲在教師指導項目表(tc_project)中,這就涉及兩個表的查詢了。而這兩個表中有一個公共屬性,即教師編號(tc_id),可以通過教師編號這個公共屬性將這兩個表連接起來,以得到符合要求的查詢結果。任務分析任務分析任務完成Part

1Part

2Part

3任務描述自身連接查詢1.第一種內連接查詢如果在一個連接查詢中,涉及到的兩個表都是同一個表,這種查詢稱為自連接查詢。自連接是一種特殊的內連接,它是指相互連接的表在物理上為同一張表,但可以在邏輯上分為兩張表。【例5-25】查詢所有教師工號比“張詠風”大的教師的姓名、工號和性別。SELECTA.tc_name,A.tc_no,A.tc_sexFROMteacherA,teacherBWHEREB.tc_name='張詠風'ANDA.tc_no>B.tc_no;表間連接查詢在多個不同表之間進行連接,這樣的連接稱為表間連接查詢。【例5-26】查詢“王曉東”學生參加的競賽項目名稱、培訓地點、培訓開始時間和培訓結束時間。SELECTpr_name,pr_trainaddress,pr_starttime,pr_endtimeFROMstudent,st_project,projectWHEREst_name='王曉東'ANDstudent.st_id=st_project.st_idANDst_project.pr_id=project.pr_id;運行結果【例5-25】【例5-26】內連接查詢2.第二種內連接查詢除了以上的內連接查詢以外,還可以使用JOINON實現內連接查詢。【例5-27】用JOINON查詢編號為27的學生的班級號、班級名和年級。SELECTclass.class_no,class.class_name,class.class_gradeFROMstudentJOINclassONstudent.st_id=27ANDstudent.class_id=class.class_id;左外連接3.外連接查詢左向外連接的結果集包括

LEFTOUTER子句中指定的左表的所有行,而不僅僅是連接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有選擇列表列均為空值。【例5-28】查詢3號院系所有的學生姓名、性別、參賽項目編號和對應的指導教師編號,如果該學生沒有參賽,也需要顯示參賽項目編號和對應的指導教師編號。SELECTstudent.st_name,student.st_sex,st_project.pr_id,st_project.tc_idFROMstudentLEFTOUTERJOINst_projectONstudent.st_id=st_project.st_idWHEREdp_id=3;運行結果【例5-28】右外連接3.外連接查詢右向外連接是左向外連接的反向連接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。【例5-29】查詢所有的教師姓名、性別及指導的項目編號,如果該教師沒有指導競賽,也需要顯示項目編號。SELECTteacher.tc_name,teacher.tc_sex,st_project.pr_idFROMst_projectRIGHTOUTERJOINteacherONteacher.tc_id=st_project.tc_id;運行結果【例5-29】任務總結本任務主要是分兩部分來講解連接查詢。1.內連接(典型的連接運算,使用像=

或<>之類的比較運算符)。包括相等連接和自然連接。

內連接使用比較運算符根據每個表共有的列的值匹配兩個表中的行。例如,檢索student和st_project表中學生編號相同的所有行。

2.外連接。外連接可以是左向外連接、右向外連接或完整外部連接。

任務分析任務完成任務描述Part

2Part

3Part

1任務三子查詢任務分析任務完成Part

1Part

2Part

3任務描述當一個查詢是另一個查詢的條件時,稱之為子查詢。子查詢是一個SELECT語句,它嵌套在一個SELECT、SELECT...INTO語句、INSERT...INTO語句、DELETE語句或UPDATE語句或嵌套在另一子句查詢中。在學生技能競賽管理系統中,要查詢出所有參加競賽的學生的學號和姓名。任務描述任務分析任務完成Part

1Part

2Part

3任務描述根據任務二可知,使用連接查詢將學生表(student)與學生參賽表(st_project)按照學生編號相等連接,即可得到已經參加競賽的學生姓名和項目編號,因為凡是在學生參賽表中的學生都是已經參加競賽的。除使用連接查詢之外,還可以使用子查詢,子查詢又稱嵌套查詢。任務分析任務分析任務完成Part

1Part

2Part

3任務描述1.使用EXISTS的子查詢使用EXISTS關鍵字引入子查詢后,子查詢的作用就相當于進行存在測試。外部查詢的WHERE子句測試子查詢返回的行是否存在。子查詢實際上不產生任何數據,它只返回TRUE或FALSE值,其目標表達式通常都是*。【例5-30】查詢已有學生參賽的項目和培訓天數。SELECTpr_name,pr_timeFROMprojectWHEREEXISTS(SELECT*FROMst_projectWHEREst_project.pr_id=project.pr_id);EXISTS關鍵字運行結果【例5-30】2.使用IN或NOTIN的子查詢通過IN(或NOTIN)引入的子查詢結果是包含零個值或多個值的列表。子查詢返回結果之后,外部查詢將利用這些結果。【例5-31】查詢所有參賽的學生的學號和姓名。SELECTst_no,st_nameFROMstudentWHEREst_idIN(SELECTst_idFROMst_project);IN(或NOTIN)關鍵字3.使用ANY或ALL的子查詢若要使帶有>ALL的子查詢中的行滿足外部查詢中指定的條件,引入子查詢的列中的值必須大于子查詢返回的值列表中的每個值。同樣,>ANY表示要使某一行滿足外部查詢中指定的條件,引入子查詢的列中的值必須至少大于子查詢返回的值列表中的一個值。SELECTpr_name,pr_daysFROMproject,departmentWHEREpr_days>ALL(SELECTpr_daysFROMproject,departmentWHEREdp_name='信息工程學院'ANDdepartment.dp_id=project.dp_id)ANDdp_name!='信息工程學院'ANDdepartment.dp_id=project.dp_id;【例5-32】查詢比信息工程學院所有競賽項目的培訓天數都多的項目名稱和培訓天數。ANY或ALL關鍵字運行結果【例5-32】4.使用比較運算符的子查詢子查詢可以由一個比較運算符(=、<>、>、>=、<、!>、!<或<=)引入。【例5-33】查詢培訓天數大于平均天數的項目編號、項目名稱和培訓天數。SELECTpr_id,pr_name,pr_daysFROMprojectWHEREpr_days>(SELECTAVG(pr_days)FROMproject);比較運算符運行結果【例5-33】任務總結在SQL語言中,一個SELECT-FROM-WHERE語句稱為一個查詢塊。將一個查詢塊嵌套到另一個查詢塊的WHERE子句或HAVING短語中的查詢稱為子查詢或嵌套查詢。子查詢總是寫在一組圓括號中,可以用在使用表達式的任何地方。上層的查詢塊稱為外層查詢或父查詢,下層查詢塊稱為內層查詢或子查詢。而且SQL語言允許多層嵌套查詢,即子查詢中還可以嵌套其他子查詢。謝謝!MySQL數據庫項目化教程微課版V2項目六數據庫編程項目任務知識目標學習目標任務一存儲過程的使用任務二存儲函數的使用任務三觸發器的使用任務四游標的使用任務五事務(1)掌握存儲過程的使用方法(2)掌握存儲函數的使用方法,以及與存儲過程的區別(3)掌握創建、刪除觸發器的方法(4)掌握游標的使用步驟(5)了解事務的使用,掌握事務隔離級別的設置方法能力目標素質目標學習目標(1)能夠創建與使用存儲過程(2)能夠創建與使用存儲函數(3)能夠創建與使用觸發器(4)能夠使用游標實現查詢(5)能夠創建與管理事務(1)形成自主、好學的學習態度(2)養成務實解決問題的習慣(3)培養團隊協作的精神思政引領(素養提示)學習目標(1)了解數據庫管理員日常工作,分析數據庫使用情況以數據定義,掌握提高工作效率的方法和技巧,提高管理員的執行力和管理能力。(2)樹立正確的職業道德觀念、積極向上的職業態度,培養積極進取的人生態度。知識導圖學習目標任務分析任務完成任務描述Part

2Part

3Part

1任務一存儲過程的使用過渡頁任務分析任務完成Part

1Part

2Part

3任務描述

存儲過程是一組為了完成特定功能的SQL語句集,經編譯后存儲在數據庫中,用戶通過指定存儲過程的名字和參數(如果該存儲過程帶有參數)來調用它,存儲過程可以重復使用,大大減少了數據庫開發人員的工作量。本任務結合學生技能競賽管理系統,創建帶參數和不帶參數的存儲過程,以及在存儲過程中使用變量和流程控制語句實現編程功能。任務描述過渡頁任務分析任務完成Part

1Part

2Part

3任務描述存儲過程有以下優點:①增強SQL語言的功能性和靈活性:在存儲過程內可以編寫各種功能代碼,完成復雜的判斷和復雜的運算,有很強的靈活性。②標準組件式編程:存儲過程被創建后,可以在程序中被多次調用,可以隨時修改,不影響應用程序源代碼。③較快的執行速度:存儲過程是預編譯的,這樣可以大大提高數據庫的處理速度。任務分析④減少網絡流量:在用戶的計算機上調用存儲過程時,傳送的只是該調用語句,而不是這一功能的全部代碼,能大大減少網絡流量。⑤增加安全性:通過設置存儲過程的權限,可以避免非授權用戶對數據的訪問,保證數據的安全。任務分析過渡頁任務分析任務完成Part

1Part

2Part

3任務描述任務完成創建存儲過程,使用CREATEPROCEDUER語句,語法格式如下:1.創建存儲過程DELIMITER//CREATEPROCEDURE存儲過程名稱([過程參數[,…]])BEGIN

過程體;END//任務完成1.創建存儲過程以上代碼創建了一個帶有OUT參數的存儲過程pr_student(),實現的功能是統計學生表的總人數,并返回統計結果。任務完成2.存儲過程參數①不帶參數:存儲過程不帶任何參數。②帶IN(輸入)參數:表示向存儲過程傳入參數,存儲過程默認為傳入參數,所以參數IN可以省略。③帶OUT(輸出)參數:該值可在存儲過程內部被改變,并返回。④帶INOUT(輸入/輸出)參數:表示定義的參數可傳入存儲過程,并可以被存儲過程修改后傳出。任務完成2.存儲過程參數【例6-1】創建一個不帶參數的存儲過程,實現查看student表信息的功能。任務完成2.存儲過程參數調用存儲過程的代碼如下:任務完成2.存儲過程參數【例6-2】創建一個帶IN參數的存儲過程,實現根據學生學號查看學生信息的功能。注意:輸入參數的類型必須與數據表對應屬性的數據類型一致。任務完成2.存儲過程參數調用存儲過程,查看學號為“2101050608”的學生信息,代碼如下:任務完成2.存儲過程參數【例6-3】創建一個帶OUT參數的存儲過程,實現查看學生姓名的功能。注意:輸出參數的類型必須與數據表對應屬性的數據類型一致。任務完成2.存儲過程參數調用存儲過程的代碼如下:任務完成3.存儲過程的變量聲明變量的語法格式如下:DECLAREvar_name[,...]type[DEFAULTvalue]變量賦值的語法格式如下:SETvar_name=expr[,var_name=expr]...變量賦值(SELECT...INTO語句)的語法格式如下:SELECTcol_name[,...]INTOvar_name[,...]table_expr任務完成4.存儲過程的流程控制結構語句1)帶IF…THEN…ELSE語句的存儲過程IFsearch_conditionTHENstatement_list[ELSEIFsearch_conditionTHENstatement_list]...[ELSEstatement_list]ENDIF其語法格式如下:任務完成4.存儲過程的流程控制結構語句【例6-4】創建一個存儲過程,輸入學生的學號,如果學生的性別為“男”,輸出“你是一個男生!”,如果學生的性別為“女”,輸出“你是一個女生!”。任務完成4.存儲過程的流程控制結構語句調用存儲過程學號為“2105070405”信息,并查詢輸出參數,代碼如下:任務完成4.存儲過程的流程控制結構語句2)帶CASE語句的存儲過程CASEcase_valueWHENwhen_valueTHENstatement_list[WHENwhen_valueTHENstatement_list]...[ELSEstatement_list]ENDCASE其語法格式如下:任務完成4.存儲過程的流程控制結構語句【例6-5】創建一個存儲過程,輸入學生的學號,如果學生的性別為“男”,就將學生的性別改為“女”,并且輸出“性別修改成功”,如果學生的性別為“女”,則輸出“性別為女,不需要修改”。任務完成4.存儲過程的流程控制結構語句調用存儲過程,查看并更新學生學號為“2105070405”的信息,其代碼如下所示:任務完成5.查看存儲過程可以利用SHOW語句查看已經創建的存儲過程。例如,查看上任務創建的存儲過程pr_change,可以利用如下語句:任務完成6.刪除存儲過程可以利用DROP語句刪除已經創建的存儲過程。例如,刪除上任務創建的存儲過程sp_student,可以利用如下語句:任務總結本任務結合學生技能競賽管理系統中的數據庫,介紹了使用存儲過程的全過程。①通過介紹存儲過程的創建語法,講解存儲過程的創建過程。②通過3個示例介紹3種存儲過程的使用方法,分別是不帶參數的存儲過程,帶IN參數的存儲過程,以及帶OUT參數的存儲過程。通過比較3種類型的存儲過程的使用方法,加深讀者對3種存儲過程的理解。③通過兩個示例介紹了存儲過程中變量和流程控制語句的使用。④介紹了查看存儲過程和刪除存儲過程的方法。在數據庫系統中應用存儲過程可以簡化編程的工作,提高系統運行速度,減少網絡流量,提高安全性。在大型項目中,存儲過程的使用比較頻繁,讀者可以參考更多相關實際項目開發的資料,加深對這方面知識的理解。任務分析任務完成任務描述Part

2Part

3Part

1任務二存儲函數的使用過渡頁任務分析任務完成Part

1Part

2Part

3任務描述本任務主要學習創建、調用、修改、使用和刪除存儲函數,包括創建基本的存儲函數,創建帶變量的存儲函數,以及在存儲函數中調用其他的存儲過程或存儲函數。任務描述過渡頁任務分析任務完成Part

1Part

2Part

3任務描述存儲函數與存儲過程非常類似,都是在數據庫中定義的SQL語句的集合,可以將實現某種功能的SQL語句編寫在存儲函數中,在需要的時候直接調用這些存儲函數即可,這樣大大減少了開發人員的工作量,同時減少了客戶端與服務端之間的數據傳輸,可提高數據交換速度。但是在MySQL8.0版本中創建存儲函數語句時,后面要加上DETERMINISTIC關鍵字,因為系統默認采用NOTDETERMINISTIC形式。任務分析創建存儲函數的語法格式如下:任務分析CREATEFUNCTIONsp_name([func_parameter[,…]])RETURNStypeDETERMINISTIC[characteristic…]routine_body①sp_name:存儲函數的名稱。②func_parameter:存儲函數的參數列表。③RETURNStype:指定返回值的類型。④characteristic:指定存儲函數的特性,該參數的取值與存儲過程中的取值是一樣的。⑤routine_body:SQL代碼的內容,可以用BEGIN...END來標志SQL代碼的開始和結束。過渡頁任務分析任務完成Part

1Part

2Part

3任務描述1)創建基本的存儲函數【例6-6】創建一個存儲函數,返回student表中男生的人數。任務完成1.創建存儲函數1.創建存儲函數任務完成2)創建帶變量的存儲函數【例6-7】創建一個存儲函數,根據指定的學生學號,返回該學生所在的院系名。2.調用存儲函數任務完成1)利用SELECT語句調用存儲函數【例6-8】調用存儲函數man_num()實現查看男生的人數,然后調用存儲函數fun_pname(),查看學號為“2105070418”的學生所在的院系名。2.調用存儲函數任務完成調用man_num()的SQL語句如下:2.調用存儲函數任務完成調用fun_pname()存儲函數:2.調用存儲函數任務完成2)調用其他存儲過程或存儲函數【例6-9】創建一個存儲函數,通過調用存儲函數st_num()獲得學生所在的院系名,然后返回該學生所在院系的總人數。2.調用存儲函數任務完成指定一個學號“2110080133”,調用存儲函數st_num()的SQL語句如下:3.查看存儲函數任務完成可以通過SHOWFUNCTIONSTATUS語句來查看存儲函數的狀態3.查看存儲函數任務完成可以通過SHOWCREATE語句來查看存儲函數的定義信息4.修改存儲函數任務完成修改存儲函數的方法有兩種,一是通過ALERTFUNCTION語句來修改,二是先刪除原有的存儲函數,再重新創建存儲函數,其方法與修改存儲過程的格式一樣,具體可參照任務二中存儲過程的修改方法。5.刪除存儲函數任務完成刪除存儲函數可以通過DROPFUNCTION語句實現,語法格式如下:DROPFUNCTION[IFEXISTS]sp_name;5.刪除存儲函數任務完成【例6-10】利用DROPFUNCTION語句刪除存儲函數nan_num():任務總結本任務結合學生技能競賽管理系統中的數據庫,介紹使用存儲函數的方法,其內容包括:①創建基本存儲函數的方法。②創建帶變量存儲函數的方法。③使用SELECT語句調用存儲函數,以及在存儲函數中調用其他存儲函數的方法。④修改與刪除存儲函數的方法。通過以上內容,希望讀者能夠理解和掌握存儲函數的使用方法與技巧,能夠在實際的開發中使用存儲函數來減少了開發的工作量,提高系統的運行性能。任務分析任務完成任務描述Part

2Part

3Part

1任務三觸發器的使用過渡頁任務分析任務完成Part

1Part

2Part

3任務描述觸發器是一種維護數據的完整性或者執行其他特殊任務的存儲過程,它在滿足一定條件時才會觸發運行,當觸發器被觸發時,數據庫就會自動執行觸發器中的程序語句。本任務是在學生技能競賽管理系統數據庫中使用觸發器,包括創建觸發器,查看觸發器和刪除觸發器。任務描述過渡頁任務分析任務完成Part

1Part

2Part

3任務描述在MySQL中,創建觸發器的語法格式如下:任務分析CREATETRIGGERtrigger_nametrigger_timetrigger_eventONtb_nameFOREACHROWtrigger_stmt;①trigger_name:表示觸發器的名稱。②tirgger_time:表示觸發器的動作時間,可以是BEFORE或者AFTER,BEFORE表示觸發程序是在激發語句之前,而AFTER表示觸發程序是在激發語句之后。③trigger_event:表示激活觸發程序的事件類型,有3種類型,分別為INSERT、DELETE和UPDATE。④tb_name:指明在哪個表上建立觸發器。⑤trigger_stmt:表示當觸發器被觸發時,運行的程序語句可以是單條SQL語句也可以是用BEGIN和END包含的多條語句。可以建立6種觸發器,即BEFOREINSERT、BEFOREUPDATE、BEFOREDELETE、AFTERINSERT、AFTERUPDATE、AFTERDELETE。觸發器有一個限制,就是不能同時在一個表上建立兩個相同類型的觸發器,因此在一個表上最多能建立6個觸發器。任務分析①INSERT型觸發器:插入某一行時,通過INSERT、LOADDATA、REPLACE語句觸發。②UPDATE型觸發器:更改某一行時,通過UPDATE語句觸發。③DELETE型觸發器:刪除某一行時,通過DELETE、REPLACE語句觸發。過渡頁任務分析任務完成Part

1Part

2Part

3任務描述【例6-11】創建一個記錄觸發competition數據庫中數據表的日志表tb_count,然后通過創建觸發器的動作,自動向tb_count添加一條日志。任務完成1.創建INSERT型觸發器先創建日志表tb_count,代碼如下:任務完成1.創建INSERT型觸發器創建觸發器tri_student_count,當student表中增加數據時,tb_count表自動更新,代碼如下:任務完成1.創建INSERT型觸發器運行以上代碼后,為驗證觸發器的運行結果,向student表中插入一條記錄,代碼如下:任務完成1.創建INSERT型觸發器查詢日志表tb_count中的記錄情況:任務完成1.創建INSERT型觸發器2.創建DELETE型觸發器任務完成【例6-12】創建一個觸發器,使得當在st_project表中刪除學生數據時,tb_count表自動更新統計數據,并記錄刪除時間。2.創建DELETE型觸發器任務完成運行以上代碼后,為驗證觸發器的運行效果,刪除st_project表中的一條記錄,代碼如下:2.創建DELETE型觸發器任務完成查詢tb_count表,代碼如下:3.創建UPDATE型觸發器任務完成【例6-13】創建一個觸發器,使得當表st_project數據做修改時,統計st_score數據的總數。3.創建UPDATE型觸發器任務完成運行以上代碼后,為驗證觸發器運行效果,修改st_project表的字段值,代碼如下:3.創建UPDATE型觸發器任務完成運行以上語句,使用SELECT查詢tb_count表,代碼如下:4.查看觸發器任務完成與查看數據庫查看表格一樣,查看觸發器的語法格式如下:SHOWTRIGGERS[FROMschema_name];4.查看觸發器任務完成【例6-14】查看學生技能競賽管理系統數據庫competition中的所有觸發器。5.刪除觸發器任務完成和刪除數據庫、刪除表格一樣,刪除觸發器的語法格式如下: DROPTRIGGER[IFEXISTS][schema_name.]trigger_name;5.刪除觸發器任務完成【例6-15】刪除學生技能競賽管理系統數據庫competition中tri_delete_stproject觸發器。任務總結本任務結合學生技能競賽管理系統,首先介紹了觸發器的觸發條件和使用方法,通過3個示例介紹3種類型觸發器的使用過程:INSERT型觸發器,DELETE型觸發器和UPDATE型觸發器,然后介紹查看觸發器和刪除觸發器的方法。通過以上內容可知,當觸發器觸發時數據庫就會自動運行觸發器中的程序語句,從而實現了維護數據的完整性。任務分析任務完成任務描述Part

2Part

3Part

1任務四游標的使用過渡頁任務分析任務完成Part

1Part

2Part

3任務描述游標是由一個查詢結果集和在結果集中指向特定記錄的游標位置組成的一個臨時文件,它提供了在查詢結果集中向前或向后瀏覽數據、處理結果、集中數據的能力。有了游標,用戶就可以訪問結果集中任意一行數據,可以在游標指向的位置處執行操作。本次任務主要實現在學生技能競賽管理系統數據庫中,創建存儲過程并在存儲過程中使用游標,逐條讀取記錄。任務描述過渡頁任務分析任務完成Part

1Part

2Part

3任務描述游標的使用一般分為5個步驟,分別是:定義游標→打開游標→使用游標→關閉游標→釋放游標。定義游標的語法格式如下:任務分析DECLARE<游標名>CURSORFOR[SELECT語句];這個語句用于定義一個游標。也可以在子程序中定義多個游標,但是一個塊中的每個游標必須有唯一的名字。定義游標后進行單條操作,但不能用SELECT語句,不能有INTO子句。任務分析打開游標的語法格式如下:OPEN<游標名>;使用游標的語法格式如下:FETCH<游標名>INTOvar_name[,var_name]...關閉游標的語法格式如下:CLOSE<游標名>;釋放游標的語法格式如下:DEALLOCATE<游標名>;過渡頁任務分析任務完成Part

1Part

2Part

3任務描述【例6-16】創建一個存儲過程,并在存儲過程中使用游標,逐條讀取記錄。任務完成以上語句運行后,調用存儲過程,測試效果,代碼如下:任務完成任務總結本任務結合學生技能競賽管理系統,介紹了使用游標的5個步驟,包括定義游標、打開游標、使用游標、關閉游標、釋放游標,然后利用一個案例介紹在存儲過程中使用游標讀取查詢結果中數據的方法。任務分析任務完成任務描述Part

2Part

3Part

1任務五事務過渡頁任務分析任務完成Part

1Part

2Part

3任務描述在用戶使用MySQL的過程中,對于一般簡單的業務邏輯或中小型程序而言,無須考慮應用MySQL事務。但在比較復雜的情況下,需要通過一組SQL語句運行多項并行業務邏輯或程序時,就必須保證所有命令執行的同步性,使執行序列中產生依靠關系的動作能夠同時操作成功或同時返回初始狀態。在此情況下,就需要用戶優先考慮使用MySQL事務處理機制。本次任務結合學生技能競賽管理系統,根據事務使用的一般過程,學習初始化事務、創建事務、提交事務、撤銷事務,通過使用事務實現命令執行的同步性。任務描述過渡頁任務分析任務完成Part

1Part

2Part

3任務描述事務(Transaction)有以下四個屬性,通常被稱為ACID。任務分析①原子性:一個事務中的所有操作,要么全部完成,要么全部不完成,不會結束在中間某個環節。事務在運行過程中若發生錯誤,會回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有被運行過一樣。②一致性:在事務開始之前和事務結束以后,數據庫的完整性沒有被破壞。這表示寫入的數據必須完全符合所有的預設規則,包含數據的精確度、串聯性。后續數據庫可以自發地完成預設的工作。任務分析③隔離性:數據庫允許多個并發事務同時對其數據進行讀寫和修改,隔離性可以防止多個事務并發運行時由于交叉運行而導致的數據不一致問題。事務隔離分為不同級別,包括讀未提交(Readuncommitted)、讀提交(Readcommitted)、可重復讀(Repeatableread)和串行化(Serializable)。④持久性:事務處理結束后,對數據的修改就是永久的,即使系統故障也不會丟失。通過InnoDB和BDB類型表,MySQL事務能夠完全滿足事務安全的ACID測試,但是,并不是所有類型的表都支持事務,如MyISAM表就不支持事務,只能通過偽事務對該表實現事務處理。過渡頁任務分析任務完成Part

1Part

2Part

3任務描述使用事務的一般過程是:初始化事務→創建事務→提交事務→撤銷事務。如果用戶操作不當,執行事務提交,則系統會默認執行回滾操作。如果用戶在提交事務前選擇撤銷事務,則用戶在撤銷前的所有事務將被取消,數據庫系統會回到初始狀態。任務完成1.事務的使用創建一個名稱為bank_account數據表:任務完成1.事務的使用向數據表bank_account插入兩條記錄(賬戶初始數據):任務完成1.事務的使用查詢插入數據后的結果:任務完成1.事務的使用下面進行事務的相關操作。任務完成1.事務的使用1)初始化事務初始化MySQL事務,首先聲明初始化MySQL事務后所有的SQL語句為一個單元。在MySQL中,應用STARTTRANSACTION或BEGIN語句來標記一個事務的開始:任務完成1.事務的使用2)創建事務創建事務是在初始化事務成功之后,運行的一系列SQL語句,例如,初始化事務成功后,在表bank_account中更新記賬數據:任務完成1.事務的使用3)提交事務在用戶沒有提交事務之前,當其他用戶連接MySQL服務器時,應用SELECT語句查詢結果,則不會顯示沒有提交的事務。當且僅當用戶成功提交事務后,其他用戶才可能通過SELECT語句查詢事務結果。由事務的特性可知,事務具有隔離性,當事務處在處理過程中時,其實MySQL并未將結果寫入磁盤,這樣一來,這些正在處理的事務相對其他用戶是不可見的。一旦數據被正確插入,用戶就可以使用COMMIT語句提交事務:任務完成1.事務的使用運行結果如圖6-42所示。以上語句運行之后,可以通過SELECT語句查詢事務運行的結果。任務完成1.事務的使用4)撤銷事務(事務回滾)撤銷事務,又稱事務回滾。即事務被用戶開啟、用戶輸入的SQL語句被運行后,如果創建事務時的SQL語句與業務邏輯不符,或者數據庫操作錯誤,可使用ROLLBACK語句撤銷數據庫的所有變化:以上語句運行之后,可以通過SELECT語句查詢事務運行的結果。任務完成1.事務的使用運行結果如圖6-44所示。通過運行結果顯示,更新的數據未能成功,此處不作具體運行結果展示。任務完成1.事務的使用也可以通過ROLLBACKTOSAVEPOINT語句回滾到指定的位置,但需要在創建事務時通過SAVEPOINT設置回滾的位置點。例如,向bank_account表中插入3條記錄時,利用SAVEPOINT設置3個回滾的位置點,代碼如下:使用SELECT語句查看表格數據,代碼如下:任務完成1.事務的使用任務完成1.事務的使用以上代碼都在創建事務時設置了3個回滾位置點,插入語句有誤時,可以回滾到相應的位置,假設第3條插入語句有誤,可以利用以下語句回滾到point2,代碼如下:任務完成1.事務的使用可以根據需要提交回滾位置,例如,提交回滾位置point1,代碼如下:任務完成2.事務的隔離級數據庫在多線程并發訪問時,用戶可以通過不同的線程運行不同的事務,事務中的這種并發訪問可能會導致以下幾個問題。①臟讀(DirtyRead):所有事務都可以看到其他未提交事務的運行結果。②不可重復讀(NonrepeatableRead):一個事務只能看見已經提交的事務所做的改變。③幻讀(PhantomRead):同一事務的多個實例在并發讀取數據時,會看到同樣的數據行。任務完成2.事務的隔離級為了保證這些事務和數據庫性能都不受影響,設置事務的隔離級別是非常必要的,MySQL數據庫中,有以下4種隔離級別。①READ_UNCOMMITTED(未提交讀):這是事務最低的隔離級別,它允許另外一個事務看到這個事務未提交的數據。這種隔離級別可能會導致臟讀、不可重復讀、幻讀。②READ_COMMITTED(提交后讀):它保證一個事務修改的數據提交后才能被另外一個事務讀取,即另外一個事務不能讀取該事務未提交的數據。這種隔離級別可能會導致不可重復讀和幻讀。任務完成2.事務的隔離級③REPEATABLE_READ(可重讀):它保證一個事務在相同條件下前后兩次獲取的數據是一致的。此隔離級別可能出現的問題是幻讀,但InnoDB和Falcon存儲引擎通過多版本并發控制機制解決了該問題。④SERIALIZABLE(序列化):事務被處理為順序運行。這個隔離級別可能導致大量的超時現象和鎖競爭。任務完成3.查看隔離級別MySQL中提供了以下幾種不同的方式查看隔離級別,可以根據具體情況選擇相應的方式。①查看全局隔離級別:SELECT@@global.tx_isolation;②查看當前進程中的隔離級別SELECT@@session.tx_isolation;③查看下一事務的隔離級別SELECT@@tx_isolation;任務完成4.修改隔離級別在MySQL中,事務隔離級別的修改可以通過全局修改或者SET語句兩種方式進行,具體如下。全局修改:打開MySQL的配置文件my.ini,設置參數transaction-isolation,其值為READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE中的一種。全局修改的語法格式如下:transaction-isolation=參數值;通過SET進行設置:在打開的進程中,通過SET語句進行隔離級別的設置,語法格式如下:SET[SESSION|GLOBAL]TRANSACTIONISOLATIONLEVEL參數值;任務總結本次任務結合學生技能競賽管理系統,介紹了事務的4個標準屬性,即原子性、一致性、隔離性、持久性。然后介紹了事務的一般過程:初始化事務、創建事務、提交事務、撤銷事務。最后介紹了事務隔離級別的作用,以及查看和修改事務隔離級別的方法。謝謝!MySQL數據庫項目化教程微課版V2項目七:

數據庫索引與視圖項目任務知識目標學習目標任務1:索引的創建與刪除任務2:視圖的創建與管理(1)掌握索引、視圖的含義和作用(2)了解索引的分類(3)掌握創建、刪除索引的方法(4)掌握創建、修改、更新、

刪除視圖的方法能力目標素質目標學習目標(1)能夠創建索引(2)能夠刪除索引(3)能夠創建視圖(4)能夠查看、修改視圖(5)能夠更新、刪除視圖(1)形成自主好學的學習態度(2)養成務實解決問題的習慣(3)培養團隊協作的精神課程思政(素養提示)學習目標(1)不斷更新理念,利用先進思維方法解決問題,引導學生注重先進理論學習及思維拓展。(2)形成對實際數據的保護意識,引導學生注重維護數據安全。知識導圖學習目標任務分析任務實現任務描述Part

2Part

3Part

1任務一

索引創建與刪除過渡頁任務分析任務實現Part

1Part

2Part

3任務描述任務一

索引創建與刪除本節的任務是創建和刪除索引。創建索引可以通過兩種不同的方法:一是創建表的時候創建索引;二是在已存在的表中創建索引。對已存在的不必要索引進行刪除,也可以利用兩種方式:一是使用ALTERTABLE刪除索引;二是DROPINDEX刪除索引。任務描述過渡頁任務分析任務實現Part

1Part

2Part

3任務描述任務一

索引創建與刪除根據索引的應用范圍和查詢需求的不同,索引分成:(1)普通索引

(2)唯一索引

(3)主鍵索引(4)全文索引

(5)單列索引

(6)多列索引(7)空間索引任務分析索引是對數據庫中單列或者多列的值進行排序后的一種特殊數據庫結構,利用它可以快速指向數據庫中的數據表的特定記錄,索引是提高數據庫性能的重要方式。過渡頁任務分析任務實現Part

1Part

2Part

3任務描述任務一

索引創建與刪除1.創建表的時候創建索引CREATETABLE表名(字段名數據類型[約束條件],字段名數據類型[約束條件]……字段名數據類型[UNIQUE|FULLTEXT|SPATIAL]INDEX|KEY[別名](字段名1[(長度)][ASC|DESC]));語法格式任務實現[UNIQUE|FULLTEXT|SPATIAL]可選參數,分別表示唯一索引、全文索引和空間索引。INDEX和KEY為同義詞,兩者作用相同,用來指定創建索引。別名是可選參數,用來給創建的索引取新的名字。字段名為需要創建索引的字段,該字段必須從數據表中定義的多個字段中選擇。長度為可選參數,表示索引的長度,只有字符串類型的字段才能指定索引長度。ASC或DESC指定升序或降序的索引值存儲。(1)創建普通索引competion數據庫中,創建一張student數據表,并為其字段st_id創建普通索引。對應代碼任務實現(2)唯一索引在competion數據庫中,創建一張department數據表,并為其字段dp_name創建唯一索引。對應代碼任務實現(3)主鍵索引在competion數據庫中,創建一張teacher數據表,并為其字段tc_id創建主鍵索引。對應代碼任務實現(4)單列索引在competion數據庫中,創建一張project數據表,并為其字段pr_name創建單列索引對應代碼任務實現(5)多列索引在competion數據庫中,創建一張class數據表,并為其創建字段class_id和class_name設置多列索引對應代碼任務實現(6)全文索引在competition數據庫中,創建一張st_project數據表,并為其字段remark創建全文索引對應代碼任務實現(7)空間索引在competition數據庫中,創建一張admin數據表,并為其字段ad_name創建空間索引。對應代碼任務實現2.在已存在的表創建索引--使用CREATEINDEX創建索引CREATE

[UNIQUE|FULLTEXT|SPATIAL]INDEX別名ON表名(字段名1[(長度)][ASC|DESC]));語法格式任務實現[UNIQUE|FULLTEXT|SPATIAL]可選參數,分別表示唯一索引、全文索引和空間索引。INDEX和KEY為同義詞,兩者作用相同,用來指定創建索引。屬性名為需要創建索引的字段列,該列必須從數據表中該定義的多個列中選擇。長度為可選參數,表示索引的長度,只有字符串類型的字段才能指定索引長度。ASC或DESC指定升序或降序的索引值存儲。(1)在已存在的表創建普通索引在competion數據庫中,為已經存在的student1表的字段st_no添加名為index_st_no的普通索引。對應代碼任務實現步驟1:添加索引之前用SHOWCREATETABLE語句查看student1表的結構(1)在已存在的表創建普通索引對應代碼任務實現步驟2:輸入如下代碼:CREATEINDEXindex_st_noONstudent1(st_no);步驟3:應用SHOWCREATETABLE語句再查看student1表結構(2)在已存在的表創建唯一索引對應代碼任務實現步驟1:輸入如下代碼:CREATEUNIQUEINDEXuni_st_idONstudent1(st_id);步驟2:應用SHOWCREATETABLE語句再查看student1表結構在competition數據庫中,為已經存在的student1表的字段st_id添加名為uni_st_id的唯一索引。(3)在已存在的表創建多列索引對應代碼任務實現步驟1:輸入如下代碼:CREATEINDEXmulti_stONstudent1(st_name,st_no);步驟2:應用SHOWCREATETABLE語句再查看student1表結構在competition數據庫中,為已經存在的student1表的字段st_no和st_name添加名為multi_st的多列索引。2.在已存在的表創建索引--使用ALTERTABLE創建索引ALTERTABLE表名

ADD[UNIQUE|FULLTEXT|SPATIAL]INDEX索引名(字段名[(長度)][ASC|DESC])語法格式任務實現[UNIQUE|FULLTEXT|SPATIAL]可選參數,分別表示唯一索引、全文索引和空間索引。INDEX和KEY為同義詞,兩者作用相同,用來指定創建索引。屬性名為需要創建索引的字段列,該列必須從數據表中該定義的多個列中選擇。長度為可選參數,表示索引的長度,只有字符串類型的字段才能指定索引長度。ASC或DESC指定升序或降序的索引值存儲。(1)使用ALTERTABLE創建普通索引在competition數據庫中,為已經存在的student1表的字段st_no添加名為index_st_no的普通索引。對應代碼任務實現步驟1:添加索引之前用SHOWCREATETABLE語句查看student1表的結構,發現該表未對任何字段設置索引。對應代碼任務實現步驟2:輸入如下代碼:altertablestudent1addIndexmulti(st_no,st_name);步驟3:應用SHOWCREATETABLE語句再查看student1表結構(1)使用ALTERTABLE創建普通索引(2)使用ALTERTABLE創建唯一索引在competition數據庫中,為已經存在的student1表的字段st_id添加名為uni_st_id的唯一索引。對應代碼任務實現步驟1:輸入如下代碼:ALTERTABLEstudent1ADDUNIQUEINDEXuni_st_id(st_id);對應代碼任務實現步驟1:輸入如下代碼:ALTERTABLEstudent1ADDINDEXmulti_st(st_name,st_no);(3)使用ALTERTABLE創建多列索引在competition數據庫中,為已經存在的student1表的字段st_no和st_name添加名為multi_st的多列索引。對應代碼任務實現步驟1:輸入如下代碼:ALTERTABLEstudent1ADDFULLTEXTINDEXfull_st_info(st_info);(3)使用ALTERTABLE創建多列索引在competition數據庫中,為已經存在的student1表的字段st_info添加名為full_st_info的全文索引。對應代碼任務實現(3)使用ALTERTABLE創建索引使用SHOWCREATETABLE語句再次查看student1表的結構,可發現,名為uni_st_id的唯一索引、名為multi_st的多列索引和名為full_st_info的全文索引添加成功3.刪除索引DROPINDEX別名ON表名;語法格式任務實現(1)使用DROPINDEX刪除索引在competition數據庫中,將student1表的字段st_no設置的普通索引刪除。例題代碼:DROPINDEXindex_st_noONstudent1;3.刪除索引ALTERTABLE表名

DROPINDEX別名;語法格式任務實現(2)使用

ALTERTABLE刪除索引在competition數據庫中,將student1表的字段st_name和st_no設置的多列索引刪除。例題代碼:ALTERTABLEstudent1DROPINDEXmulti_st;注意事項任務總結本節結合學生技能競賽管理系統中的各個表,講解了MySQL數據庫的索引的基礎知識,通過任務介紹了創建索引和刪除索引的方法。讀者應該重點掌握創建索引的兩種方法。任務總結在實際項目中,讀者應結合查詢速度、磁盤空間、維護開銷等因素嘗試多個不同的索引從而建立最優的索引。過渡頁任務分析任務實現Part

1Part

2Part

3任務描述任務二

視圖的創建與管理以學生技能競賽管理系統為例,在MySQL上對單表或多表創建視圖,并對視圖進行查看、修改、更新、刪除等管理,從而快速掌握視圖的相關知識和技能任務描述過渡頁任務分析任務實現Part

1Part

2Part

3任務描述任務二

視圖的創建與管理任

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論