版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE第頁XX大學
教案
202X~202X學年第1學期課程名稱數據庫系統教學承擔單位數理學院系部(教研室)統計與信算系授課班級24信算任課教師鄭冬松職稱副教授XX大學教務處制二○二年九月
XX大學教案編寫基本要求教案是教師在教學工作中依據人才培養目標和教學大綱的要求,在認真研讀教材和參閱有關教學資料的基礎上,以課時為單位設計的課堂教學方案,教師要精心設計和組織好每一次課為單元的授課內容和進程,認真按照教案編寫要求寫好所任課程的教案。具體要求如下:1、任課教師必須以課程教學大綱為依據,在深入研究教材內容,了解學生基本情況的基礎上,根據課程的內容和特點編寫出教案。2、授課時間和周次嚴格按照校歷表上的時間進行安排。任課教師在重復講授本門課程,教案必需根據實際情況的變化作必要的補充和相應的調整。3、教案書寫的具體格式可因學科、專業、課程性質的差異而不同,但應包括課程簡介,教學重點難點及教案基本內容和過程。教案基本內容和過程一般還應包括教學方法及手段,作業、討論題、思考題和教學單元小結等。4、每門課程首頁只需要填寫一份,講師及以上職稱的教師一學期須寫兩份此教案,其他教師一次課須寫一份課程教案,每項頁面大小可自行添減。5、課程類別包括公共基礎課、學科基礎課、專業必修課、專業選修課、集中實踐環節、實驗課、公共選修課等。
教案(首頁)課程名稱數據庫系統課程編號092153601L總學時:64學時理論:32學時實踐:32學時周學時:4學時課程類別專業必修課學分3任課教師鄭冬松職稱副教授授課對象專業班級:24信算課程簡介《數據庫系統》主要培養學生應用數據庫基本知識,進行數據庫管理系統維護和數據庫應用系統開放的能力。是本科計算機專業和信算專業的主干課程,是一門理論與實踐緊密聯系的課程,直接關系到學生的理論分析能力和綜合動手能力的培養。具體說來,本課程的教學目標在于使學生具備以下幾方面的知識和能力:1、首先,通過課程學習,使得絕大多數同學,掌握數據庫基本理論,理解數據庫系統的基本原理和技術;2、其次,讓大部分同學,能熟練使用SQL語言和特定的數據庫管理系統上進行數據庫的各項操作;3、再次,通過課程學習,讓部分基礎較好、學習能力較強的同學掌握數據庫設計的基本方法和步驟,具有設計數據庫模式以及開發數據庫應用系統的基本能力。基要本參教考材資和料主教材名稱作者出版社及出版時間《數據庫應用技術教程(SQLServer2022)-微課視頻版》鄭冬松清華大學出版社,2026年X月指定參考書作者出版社及出版時間《數據庫系統概論(第6版)》王珊等高等教育出版社,2023年出版TOC\h\c"表"16790表1第一單元數據庫概述 -2-22893表2第二單元數據庫和數據表的創建與管理 -4-3072表3第三單元數據的完整性和表中數據操作 -8-29633表4第四單元數據查詢1 -11-18282表5第四單元數據查詢2 -14-8677表6第四單元數據查詢3 -17-13898表7第四單元數據查詢4 -20-14611表8第五單元SQL2022中視圖和索引的應用 -23-20408表9第六單元數據庫編程技術基礎 -27-8777表10第七單元存儲過程的應用 -34-18117表11第八單元觸發器的應用 -39-15422表12第九單元數據庫安全性管理 -45-7181表13第十單元事務管理 -51-6555表14第十一單元數據庫的日常維護 -54-28048表15第十二單元數據庫應用系統開發基礎 -60-28520表16第十三單元關系規范化與數據庫設計 -63-表SEQ表\*ARABIC1第一單元數據庫概述授課時間202X年X月X日授課周次第1周授課方式(請打√)理論課□√討論課□實驗課□習題課□其他□課時安排2授課題目(教學章、節或主題):第一單元數據庫概述教學目的、要求:理解本課程在本專業教學計劃中的重要地位以及學習的必要性;了解本課程的課程框架、教學目的,推薦必讀參考書和選讀參考書;了解本課程教學內容,并指出重點和難點部分;了解本課程的實驗安排和要求;提出學習本課程的學習方法;理解和掌握數據庫的基本概念;了解數據庫技術的產生和發展;了解數據庫系統的特點。教學重點及難點:課程框架,課程難點和重點內容;DBMS的定義、產生和作用。教學基本內容和過程(可增加頁)1、課堂導入請學生思考我們身邊有哪些數據庫管理系統,簡單列舉數據庫技術在其中的應用,并引導學生從自己專業角度考慮數據庫學習的重要性(約10分鐘)。2、教學內容與時間安排(1)課程介紹約30分鐘課程框架介紹教學目的介紹推薦必讀參考書和選讀參考書(并作簡單點評)主要內容安排重點和難點部分實驗安排和要求學習方法和忠告(2)數據與信息(學生閱讀教程,超星互動答題,大概20分鐘)問題1:什么是數據?什么是信息?他們的聯系是什么?數據是描述事物的符號記錄。從計算機的角度來看,所謂數據是指一切能被計算機存儲和處理,反映客觀實體信息的物理符號。從數據中獲得的有意義的內容稱為信息。數據是信息存在的一種形式,只有通過解釋或處理才能成為有用的信息。問題2:什么是數據處理?為了從大量原始的數據中提取、推導出對人們有價值的信息,對數據進行的分類、組織、編碼、存儲、檢索和維護一系列活動的總和叫數據處理。問題3:數據處理三世界是?現實世界、信息世界、機器世界(3)聯系(講解+學生互動舉例15分)問題4:聯系分為?實體內部各屬性之間的聯系;實體與實體之間的聯系(1:1,1:n,m:n)。(4)什么是數據庫?什么是數據庫管理系統?什么是數據庫系統?(講授或互動10分)按照一定的格式,永久存儲在計算機上,有組織、可共享的大量的數據的集合。問題5:DBMS的意思是?數據庫管理系統。課程案例圖書館的書籍管理;
超市的商品庫存管理,商品售出及進貨記錄,商品銷售額統計;
公司員工的考勤記錄;
虛擬社區的用戶信息;
汽車站,火車站等售票系統;
等等等等只要是涉及到大量數據的存儲及修改,查詢,統計等操作就需要用到數據庫技術。4、單元小結通過本單元的學習,學生了解了數據庫原理與應用課程的框架,對課程重要性有一定認識;了解了數據、數據庫、數據庫管理系統、數據庫系統的定義和作用,了解了聯系的種類和表示方法,為后續的課程內容打下了基礎。5、教學方法案例介紹、理論講授、多媒體課件、超星互動課后作業布置要求學生在課余時間了解目前有哪些典型的數據庫系統,各有什么特點。完成第一章課后習題(超星測試)。
表SEQ表\*ARABIC2第二單元數據庫和數據表的創建與管理授課時間202X年X月X日授課周次第2周授課方式(請打√)理論課□√討論課□實驗課□習題課□其他□課時安排2授課題目(教學章、節或主題):第二單元數據庫和數據表的創建與管理教學目的、要求:1.了解系統數據庫的作用;2.掌握數據庫文件存儲結構;3.掌握創建數據庫的多種方法;4.掌握修改、刪除數據庫;5.掌握管理和維護數據庫;6.了解數據庫屬性;7.掌握SQLServer2022中的數據類型;8.掌握建立數據表的方法;9.掌握查看、修改和刪除數據表的方法。教學重點及難點:數據庫的創建方法,SQLServer2022常用的數據類型(重點);數據庫的管理-數據庫遷移,使用ManagementStudio及SQL語句創建和管理數據表(難點)教學基本內容和過程(可增加頁)1、課堂導入上節知識回顧:提問什么是數據庫?什么是數據庫管理系統,什么是數據庫系統?學生回顧上節知識后,引出本節內容,數據庫管理系統有哪些?如何建立數據庫呢?(約8分鐘)2、教學內容與時間安排(1)SQL2022數據庫的體系結構(4分鐘)系統數據庫介紹(各個系統數據庫的作用)數據庫文件的種類、擴展名,建立一個數據庫,并提出問題:建立一個數據庫至少需要哪些數據庫文件呢?學生選課數據庫的創建(8分鐘)首先,介紹SQL2022的運行環境,如何選擇數據庫服務(數據庫引擎服務),如何選擇或填入服務器等;然后,用ManagementStudio演示逐步創建數據庫(包括操作起點,數據取名,邏輯文件名,物理文件名等);最后,介紹ManagementStudio中編寫和運行代碼的位置,并用sql語句CreateDatabase創建數據庫。發布任務,學生答題(8分鐘)創建銷售管理數據庫,數據文件在d:\data,數據文件邏輯名稱為sales_data,文件名為sales_data.mdf,初始大小為10MB,最大尺寸為無限大,增長速度為10%;該數據庫的日志文件,邏輯名稱為sales_log,文件名為sales_log.ldf,初始大小為3MB,最大尺寸為5MB,增長速度為1MB。通過超星設置互動-拍照互動,讓學生參考書本上的代碼,模仿編寫,然后拍照提交。在大屏幕上投影展示學生答案,解析點評錯誤展示答題,并點評(3分鐘);學習使用圖形化以及sql語句對數據庫各種屬性進行修改(修改擴充數據文件和事務日志的容量)(5分鐘);其它數據庫管理操作(更改數據庫名稱、打開關閉、分離附加等)(4分鐘)。SQL2022中表的基本概念和數據類型(10分鐘)表是組織和管理數據的基本單位;常用的數據類型(數值型,字符型以及適用場景);課件互動:讓學生選擇合適的數據類型;列的屬性(是否為空,是否標識)。學生選課數據庫的表的創建(15分鐘)首先,介紹使用ManagementStudio圖形化操作創建學生表(注意為空性的選擇);然后,使用CREATETABLE語句創建表(提醒學生易錯地方如:表的名字、每行后面的英文逗號等);最后,介紹如何使用模板創建數據表(了解)。學生選課數據庫的表的管理(15分鐘)查看表結構和表中數據的操作修改表使用ManagementStudioAltertable語句修改表(超星拍照互動)在學生表里加一列,興趣愛好,可以為空刪除剛添加的列將性別列改為char(4)刪除和重命名表3、課程案例(1)創建學生選課管理數據庫。將該數據庫的數據文件存儲在D:\Data下,數據文件的邏輯名稱為Stu_data,文件名為Stu_data.mdf,初始大小為10MB,最大尺寸為無限大,增長速度為10%;該數據庫的日志文件,邏輯名稱為Stu_log,文件名為Stu_log.ldf,初始大小為3MB,最大尺寸為5MB,增長速度為1MB。(2)代碼添加和刪除數據文件。alterdatabase學生選課1addfile(name=stu_Data3,filename='f:\stu_data3.ndf',size=10MB,maxsize=2GB,filegrowth=10MB)alterdatabase學生選課1removefilestu_Data3把銷售管理數據庫轉移到e:\。(4)在學生選課數據庫中,利用ManagementStudio創建學生表。(5)在學生選課數據庫中,利用CreateTable語句,創建課程表和選課表。CREATETABLECourse(--創建課程表Cnochar(6)NOTNULL,Cnamechar(20)NOTNULL,Credittinyint,Semestertinyint)CREATETABLESC--創建選課表(Snochar(5)NOTNULL,Cnochar(6)NOTNULL,Gradetinyint)GO4、單元小結通過本單元的學習,學生了解了SQL2022數據庫的存儲結構,及SQL2022中常用的數據類型,學會根據實際需求選擇適當的數據類型,掌握創建和管理庫和數據表的2種方法(ManagementStudio圖形化操作,和代碼操作)。5.教學方法操作演示、理論講授、多媒體課件、超星互動課后作業布置完成課堂教學中未完成的課程案例。
表SEQ表\*ARABIC3第三單元數據的完整性和表中數據操作授課時間202X年X月X日授課周次第3周授課方式(請打√)理論課□√討論課□實驗課□習題課□其他□課時安排2授課題目(教學章、節或主題):第三單元數據的完整性和表中數據操作(3.4-3.5)教學目的、要求:掌握使用主鍵約束和惟一約束保證數據表的完整性、使用檢查約束、默認值保證列的完整性;掌握使用主鍵和外鍵來保證數據表之間的完整性;掌握表中數據的添加、修改和刪除的方法。教學重點及難點:數據表完整性的分類和實現(重點);外鍵的理解和實現(難點)。教學基本內容和過程(可增加頁)1、課堂導入上節知識回顧(10分鐘):(1)學生回顧上節內容,并完成任務2:請使用SQL語句創建一個表,表中包含3個字段(序號,姓名,性別),其中序號為自動增加列;(2)完成后,引出本節內容:數據庫創建好了,數據表也有了,接下來準備向數據表中添加數據了,可怎么保證數據表中的數據的真實性,讓表中數據和實際相符合同時減少錯誤呢?本節,我們將學習數據的完整性,也就是解決數據和實際一致的問題。教學內容與時間安排(1)完整性的定義和要求(30分鐘)認識完整性的分類和定義,先對照下圖整體講解,然后就各種完整性分別舉例。得出,各種完整性對表中數據的要求,如:實體完整性要求表中不允許存在如下的記錄:無主碼值的記錄;主碼值相同的記錄。參照完整性要求外碼的取值:或者值為空;或者等于其所引用的關系中的某個元組的主碼值。講到參照完整性時,提問:學生選課數據庫中那個表里有外鍵?隨機提問(2)約束的意義、分類和實現(40分鐘)完整性是現實世界對數據的要求,就像老師要求大家上課要認真聽講一樣,不過光有要求不行,必須有措施或手段保證要求的實現。老師要通過安排座位、上課提問互動等形式,達到讓大家上課認真聽講的目的,數據庫通過約束,保障完整性要求的實現。約束(Constraint)是MicrosoftSQLServer2022提供的自動保持數據庫完整性的一種方法。約束就是限制,定義約束就是定義可輸入表或表的單個列中的數據的限制條件。約束種類 實現的完整性主關鍵字約束(PrimaryKeyConstraint) 實體完整性外關鍵字約束(ForeignKeyConstraint) 參照完整性惟一約束(UniqueConstraint) 實體完整性檢查約束(CheckConstraint) 用戶自定義完整性默認約束(DefaultConstraint) 用戶自定義完整性分別使用圖形化操作和代碼,實現各種約束,然后展示這些約束的效果。3、課程案例(1)在學生選課數據庫中給各個表添加主鍵、外鍵;(2)讓姓名唯一;(3)確保學生的性別輸入值只能是“男”或“女”;(4)在學生選課數據庫中的學生表中,新學生如果不到特定系部的話,新學生全部到計算機系。4、單元小結通過本單元的學習,使學生了解什么是數據完整性,掌握使用主鍵約束和惟一約束保證數據表的實體完整性;使用檢查約束、默認值保證列的完整性;掌握使用主鍵和外鍵來保證數據表之間的完整性。5、教學方法操作演示、理論講授、多媒體課件、超星互動6、課后作業布置第三章課后習題。
表SEQ表\*ARABIC4第四單元數據查詢1授課時間202X年X月X日授課周次第4周授課方式(請打√)理論課□√討論課□實驗課□習題課□其他□課時安排2授課題目(教學章、節或主題):第四單元數據查詢1教學目的、要求:掌握SELECT語句語法格式;掌握最基本的查詢技術;掌握條件查詢技術。教學重點及難點:查詢語句的基本結構和查詢思維(重點)。教學基本內容和過程(可增加頁)1、課堂導入上節知識回顧(10分鐘):(1)通過提問回顧上節內容:什么是實體完整性,如何實現實體完整性?什么是參照完整性,如何實現參照完整性?要求機器上完成任務(視機器情況而定,部分機房機器啟動速度慢,可能無法實現):設置學生表的姓名為唯一健。使用altertable命令,為選課表添加外鍵約束。完成后,引出本節內容:數據庫的操作主要是數據的增、刪、改、查,就像我們的朋友圈,大家天天看,刷刷朋友的動態,看得多,發的少,數據庫的工作也是如此,查詢占到日常工作的80%以上,所以,掌握數據查詢的技術,是學習數據庫中最為重要的內容之一。SQLServer為我們提供的專門用于查詢的語言--SQL(結構化查詢語言),學習掌握SQL也是本課程最為重要的內容。假設,我們要得到如下信息,我們該怎樣做?(引發學生帶著問題學習)在學生選課系統數據庫中能根據按照指定的要求靈活、快速地查詢相關信息。如:查詢所有學生的學號,姓名和年齡。查詢信息系學生的學號,姓名和出生年份。查詢所有學生中年齡最大、最小的學生學號和姓名。查詢女生人數,平均年齡。教學內容與時間安排(1)Select語句的基本結構(5分鐘)SELECT<目標列名序列>--需要哪些列FROM<數據源>--來自于哪些表[WHERE<檢索條件>]--根據什么條件[GROUPBY<分組依據列>][HAVING<分組篩選條件>][ORDERBY<排序依據列>]對照以上語法結構,適當解釋,要找什么?也就是表中的哪些列,寫在select語句中,這些列是哪個表中的,把這個表的名字寫在from子句中,按照或者根據什么條件找數據,把條件表述在where子句中,最基本的條件是“某列(列名)=值”,下面的暫時不講。(2)簡單查詢(60分鐘)選擇列:查詢表中部分列;查詢表中所有列;查詢經過計算的列;增加常量列;顯示列標題(列標題別名);選擇行:消除重復的行(distinct,舉例,若問選課的學生學號,同一個學號說多次,沒有意義,這是可以通過distinct消除重復的行);查詢滿足條件的元組(where)--如下表,逐一舉例,同時引導學生思考寫出代碼;查詢條件謂
詞比較運算符=,
>,
>=,
<,
<=,
<>(或!=)NOT+比較運算符
確定范圍BETWEEN…AND,
NOT
BETWEEN…AND確定集合IN,
NOT
IN字符匹配LIKE,
NOT
LIKE
空值IS
NULL,
IS
NOT
NULL邏輯謂詞AND,
OR3、課程案例學生選課數據庫中,假定信息需求,嘗試用SQL語句實現,如:查詢信息系全體學生的姓名。查詢年齡在20歲以下的學生的姓名及年齡。查詢考試成績有不及格的學生的學號。(本題注意題意,要求結果學號不重復,和實際一樣)查詢年齡在或不在21~23歲之間的學生的姓名、所在系和年齡。查詢信息系、數學系和計算機系學生的姓名和性別。查詢學生表中姓‘張’、‘王’和‘李’的學生的情況。查詢名字中第2個字為‘小’或‘曉’的學生的姓名和學號。查詢所有不姓“王”也不姓“李”的學生姓名。查詢姓劉且名字是3個字的學生姓名。(本題注意使用函數消除空格,給學生提及數據類型定義)4、單元小結通過本單元的學習,使學生掌握SELECT語句語法格式;掌握最基本的查詢技術;掌握各種條件的表述和查詢思維:找什么--從哪找--有什么條件。5、教學方法操作演示、理論講授、多媒體課件、超星互動6、課后作業布置課后習題相關內容。
表SEQ表\*ARABIC5第四單元數據查詢2授課時間202X年X月X日授課周次第5周授課方式(請打√)理論課R討論課□實驗課□習題課□其他□課時安排2授課題目(教學章、節或主題):第四單元數據查詢2教學目的、要求:多重條件查詢;掌握排序、分組、統計。教學重點及難點:多重條件查詢(難點);分組查詢的理解(重難點)。教學基本內容和過程(可增加頁)1、課堂導入上節知識回顧(13分鐘):帶學生回顧查詢語句的基本結構,然后通過練習了解學生掌握情況,練習如下:查詢所有選課學生的學號;查詢考試成績有不及格的學生的學號;查詢既不姓鄭又不姓王的學生學號和姓名;查詢信息系和數學系的學生姓名和所在系。采用超星拍照互動的形式,學生在機房電腦寫代碼,然后截圖或者復制代碼到超星,老師通過電子教室廣播點評學生的答案。完成后,引出本節內容:上次課我們學習了基本的查詢表達,能夠把查詢要求按SQL語句結構表述出來,但查詢要求較為復雜,如有多個查詢條件,我們又該如何表達呢?還有,有時候我們需要一些統計的數據,如:想知道有多少學生,有多少男生,選1號課程的人有多少?等等,我們需要使用計算函數,如:count、sum、max等來實現這些要求;還有,若我們要查詢的是每一個類別的統計情況,如:我們要查詢每個系有多少人,每個性別有多少人,每個課程有多少人選修等等,統計的不在是表中所有數據,也不是符合條件的數據,而是每一種情況的統計,這時候,就需要用到分組groupby,讓計算函數的作用范圍更細;查詢結果若感覺比較亂,可以用排序,讓結果更友好。多條件查詢、計算函數、分組、排序就是本節要學習的內容。2、教學內容與時間安排多重條件查詢(8分鐘)使用邏輯運算符AND和OR來組成多條件查詢典型案例:查詢計算機系和信息系年齡大于等于21歲的學生姓名、所在系和年齡。易錯說明:注意查詢條件之間的邏輯關系,是查詢2個系中年齡大于21的學生。對查詢結果進行排序(orderby)(3分鐘)注意多排序關鍵詞的表達方式,不能使用2個orderby使用計算函數匯總數據(8分鐘)COUNT(*):統計表中元組個數;COUNT([DISTINCT]<列名>):統計本列列值個數;SUM([DISTINCT]<列名>):計算列值總和;AVG([DISTINCT]<列名>):計算列值平均值;MAX([DISTINCT]<列名>):求列值最大值;MIN([DISTINCT]<列名>):求列值最小值。注意區分count和sum函數的區別,注意count(*)和count(列名)的區別對查詢結果進行分組統計(25分鐘)了解分組統計的作用和目的以及語句表達分組語句的一般形式: GROUPBY<分組依據列>[,…n] [HAVING<組選擇條件>]使用動態圖形(ppt動畫)或者動畫形式,演示分組的運算步驟。注意分組篩選和where的區別:WHERE子句用來篩選FROM子句中指定的數據源所產生的行數據;GROUPBY子句用來對經WHERE子句篩選后的結果數據進行分組;HAVING子句用來對分組后的結果數據再進行篩選。課堂練習,提交超星(15分鐘)查詢數學系女生學號和姓名,查詢結果按學號升序排列查詢每個系學生人數,按人數降序排列查詢選課人數在2人以上的課程的課程號查詢選課門數大于等于3門的學生的學號,和選課門數,按選課門數的降序排列3、課程案例以學生選課數據庫為例,進行多條件、排序、分組、分組篩選等知識點講解4、單元小結通過本單元的學習,學生掌握多條件查詢技術;掌握排序、分組、統計查詢的實現,注意使用分組的場景,一般是對每一種情況進行統計的時候需要使用。5、教學方法操作演示、理論講授、多媒體課件、超星互動6、課后作業布置課后習題相關內容
表SEQ表\*ARABIC6第四單元數據查詢3授課時間202X年X月X日授課周次第6周授課方式(請打√)理論課R討論課□實驗課□習題課□其他□課時安排2授課題目(教學章、節或主題):第四單元數據查詢3教學目的、要求:集合查詢;多表連接查詢。教學重點及難點:多重條件查詢(難點);分組查詢的理解(重難點)。教學基本內容和過程(可增加頁)1、課堂導入上節知識回顧(13分鐘):帶學生回顧查詢語句的基本結構特別是groupby后面部分,使學生進一步理解并掌握何時要分組,什么情況下要用分組后的篩選(having),然后通過練習了解學生掌握情況,練習如下:查詢選課人數大于等于3人的課程號和選課人數。A.select課程號,選課人數fromstudentwhere選課人數>=3B.selectcno,count(*)選課人數fromscwhere選課人數>=3C.selectcno,count(*)選課人數fromscgroupbycnohavingcount(*)>=3D.selectcno,count(*)選課人數fromscgroupbycnowherecount(*)>=3采用超星單選題互動的形式,學生可在機房電腦調試,然后做出選擇,老師通過電子教室廣播講解。完成后,引出本節內容:上次課我們學習了較為復雜的單表查詢,包括排序、分組、分組篩選等內容,從剛剛的選擇題得分率看,大多數同學已經掌握了單表查詢的核心技術,可實際的數據庫應用系統中不可能只有一張表,例如,學生選課這個數據庫,里面就有三張表,每個表記錄一個主題信息,student表記錄學生的基本信息,course表記錄課程信息,sc表記錄學生的選課信息,我們也不好把這三個表合成一個,因為會有很多數據冗余,還會有其他的數據問題。那這樣,當我們要查詢的數據涉及到兩個以上的表的時候,如:我們要查詢“劉超華選課的課程號和成績”,明顯,單單student表沒有我們要的數據,單單sc表也看不出來哪個是“劉超華”的選課,我們必須把這2個表結合起來查詢,也就是要使用多表連接查詢技術。另外,我們在查詢中,有時候發現一些問題不太方便直接表達,但可以通過連接、相交、差集等集合操作去實現,也就是使用集合查詢實現,本節,我將重點學習多表連接查詢和集合查詢。2、教學內容與時間安排集合查詢(8分鐘)使用集合查詢關鍵詞:union、intersect、except進行集合的并、交、差運算注意:參加聯合查詢操作的各查詢結果的列數必須相同,對應項的數據類型也必須相同。舉例如下:查詢選修了1號課程或選修了2號課程的學生的學號。查詢既選修了1號課程又選修了2號課程的學生的學號。查詢選修了1號課程但沒有選修2號課程的學生的學號。通過以上例題,使學生掌握三個關鍵詞的基本用法,然后進行綜合舉例,如下:查詢學生表,列出除數學系的女生外,所有學生的學號、姓名、所在系和性別。分析查詢需求,理清思路,最好輔以集合圖形,并提供多種解題方法。連接查詢的定義及內連接(35分鐘)內連接語法如下:SELECT…FROM表名[INNER]JOIN被連接表ON連接條件執行連接操作的過程--看步驟,原表截圖演示(snipaste)或使用動畫例題分析講解(師生同步,半屏廣播)學生超星拍照互動,題目如下:查詢選修了“高等數學”的學生的姓名,考試成績。自身連接(10分鐘)自身連接:相互連接的表物理上為同一張表。必須為兩個表取別名,使之在邏輯上成為兩個表。注意理解,特別是為什么要把一個表看作是兩張表,完全出入查詢需要考慮,可以使用2表連接的形式表達。為區分,可以將查詢條件叫表一和查詢結果展示列為表2。超星拍照互動:查詢和數據庫同一個學期開設的課程的課程名和學分。外連接(10分鐘)了解外連接的作用和意義--避免因內連接拋棄不符合連接條件的數據。只限制一張表中的數據必須滿足連接條件,而另一張表中數據可以不滿足連接條件。外連接的語法格式為: FROM表1LEFT|RIGHT[OUTER]JOIN表2ON<連接條件>舉例區分left和right。例題56-59,分析講解(師生同步,半屏廣播)課堂練習,提交超星(15分鐘,若時間不夠可作為課后練習)查詢數學系男生的選課情況。查詢選修了數據庫的學生的學號和姓名。查詢和數據庫同一學期開設的其它課程的課程名和開課學期。查詢沒有選課的學生的學號和姓名。3、課程案例以學生選課數據庫為例,進行集合查詢、多表連接查詢等知識點講解4、單元小結通過本單元的學習,學生了解集合查詢和多表連接查詢的應用場景,結合具體查詢案例,使學生掌握內連接、自身連接、外連接的sql表達,進一步建立查詢思維,并在實戰中提高sql代碼編寫能力。5、教學方法操作演示、理論講授、多媒體課件、超星互動6、課后作業布置第四章課后習題
表SEQ表\*ARABIC7第四單元數據查詢4授課時間202X年X月X日授課周次第7周授課方式(請打√)理論課R討論課□實驗課□習題課□其他□課時安排2授課題目(教學章、節或主題):第四單元數據查詢4教學目的、要求:子查詢(嵌套查詢、CTE子句);在數據更新中使用查詢語句;窗口函數的使用。教學重點及難點:子查詢(重點);相關子查詢、窗口函數的理解(難點)。教學基本內容和過程(可增加頁)1、課堂導入上節知識回顧(15分鐘):帶學生回顧自身連接查詢,明確自身查詢其實就是利用2表連接的查詢原理,查找同一個表中有關聯的數據;回顧外連接,了解如何顯示內連接丟棄的數據。然后通過練習了解學生掌握情況,3個練習如下:查詢和數據庫同一學期開設的其它課程的課程名和開課學期。查詢沒有選課的學生的學號和姓名。統計信息系每個學生的選課門數,包括沒有選課的學生,結果按選課門數遞減排序。前2題引導學生一起練習,第3題讓學生通過超星拍照上傳,老師通過電子教室廣播講解點評。完成后,引出本節內容:我們已經掌握了單表查詢技術以及多表連接查詢技術,是不是我們現在就無所不能了呢?還是回到上次說的那個問題,我們要查詢所有學生中年齡最大的學生的學號和姓名以及年齡,發現似乎還是沒法解決,因為where里面不能使用聚合函數,但是我們的表達里面就是要表達年齡是最大年齡的那個學生,如果我們把查詢分為兩步走,先查詢所有學生中最大的年齡值,然后再查詢所有年齡為這個年齡的學生的學號姓名以及年齡,問題是不是就解決了?這種方法就是我們今天要學習的子查詢。2、教學內容與時間安排子查詢(40分鐘,大部分例子老師講解演示,學生跟著思考或者同步機器調試)子查詢的定義基于集合的子查詢進行比較測試不相關子查詢CTE子句(介紹清楚cte的作用,在某些情況下可以簡化子查詢)課堂互動:例:查詢考試平均成績高于全體學生的總平均成績的學生的學號和平均成績。相關子查詢(存在性查詢)例:查詢選修了1課程的學生姓名。解釋執行過程,幫助學生理解并掌握。進一步舉例如下:例:查詢沒有選修1號課程的學生姓名和所在系。注意:不能使用多表連接中否定的做法。課堂互動:查詢計算機系沒有選修“java”課程的學生的姓名和性別。SELECTSname,SsexFROMStudentWHEREnotexists(SELECT*FROMSCJOINCourseONSC.Cno=Course.CnoWHERECname='java'andSC.sno=student.sno)ANDSdept='計算機系'CTE子句例:在選課表Sc中,查詢選課人數超過平均選課人數的課程號及其選課人數。分別用子查詢和CTE實現,老師分析思路,完成代碼,學生體會用CTE的優勢(就像創建了一個臨時表,有了這個臨時表,查詢思路更加清晰,更容易表述)。在數據更新中使用查詢語句。(15分鐘)一次插入多行設stu_cs為計算機系的學生表,結構和student一致,但無數據,請將計算機系的學生信息添加進去。一次更新多行將計算機系全體學生的成績加5分。將學分最低的課程的學分加2分。數學系學生的“信息系統”考試成績增加10分。刪除符合條件的數據刪除計算機系不及格學生的修課記錄。(基于其他表條件的刪除)刪除信息系考試成績不及格學生的不及格課程的選課記錄。(較復雜的數據刪除)窗口函數的使用。(10分鐘)窗口函數的語法結構函數名(參數)OVER([PARTITIONBY分區列]--按指定列將數據分區,每個分區為獨立窗口[ORDERBY排序列[ASC|DESC]]--對分區內數據按指定列排序[ROWS|RANGEBETWEEN邊界定義]--定義窗口框架范圍(SQLServer2022增強特性))主要函數包括:ROW_NUMBER、RANK、SUM、AVGOVER子句:用于定義“窗口”,其中PARTITIONBY將數據劃分為多個獨立分區(類似分組),ORDERBY指定分區內數據的排序方式,ROWS|RANGE則進一步限定窗口內參與計算的行范圍(如“前2行到當前行”)。窗口函數在學生選課數據庫中的應用用例4.56-4.59給學生演示講解,使學生清楚窗口函數的優勢:數據劃分多個獨立分區,實現分區內的統計或聚合計算。3、課程案例本次課結束時,綜合舉例,假設學生信息分布在各個以系為名字的表里,總學生表里沒有學生所屬系的信息,如何更新總表,填上學生所在系,代碼如下:updatestudentsetsdept=(selectsdeptfrom(selectsno,sdeptfromstu_csunionselectsno,sdeptfromstu_isunionselectsno,sdeptfromstu_ma)stuwherestudent.sno=stu.sno)本例用到查詢生成表,集合查詢,更新中使用查詢語句等知識。4、單元小結通過本單元的學習,學生了解子查詢的定義和使用,學會使用子查詢解決復雜的查詢問題,了解相關子查詢的使用場景,并能使用學到的查詢知識,解決較為復雜的實際問題,進一步鞏固查詢思維,并在實戰中提高sql代碼編寫能力。5、教學方法操作演示、理論講授、多媒體課件、超星互動6、課后作業布置第四章課后習題
表SEQ表\*ARABIC8第五單元SQL2022中視圖和索引的應用授課時間202X年X月X日授課周次第8周授課方式(請打√)理論課R討論課□實驗課□習題課□其他□課時安排2授課題目(教學章、節或主題):第五單元SQL2022中視圖和索引的應用教學目的、要求:理解視圖的作用;掌握創建視圖、修改視圖和刪除視圖的方法;理解索引的優點和缺點;掌握使用CREATEINDEX語句創建索引的方式;掌握查看、刪除和修改索引。教學重點及難點:使用managementstudio創建滿足不同需要的視圖。教學基本內容和過程(可增加頁)1、課堂導入上節知識回顧(5分鐘):帶學生回顧子查詢,子查詢包括相關子查詢和不相關子查詢,各有各的應用場景,不相關子查詢子查詢的運行不依賴父查詢,只查詢的結果作為父查詢的條件,這樣我們就可以將復雜的問題分步逐一解決。(如查詢和數據庫學分相同的課程的名稱和學分。)而相關子查詢,子查詢的運行依賴于父查詢的條件,根據子查詢的真假判斷父查詢當前行是否是要求的結果。(如查詢沒有選修的1號課程的學生的學號和姓名。)下面通過一個超星互動選擇題來回顧上一講的知識。練習如下:查詢選了1號課程,但沒有選2號課程的學生的學號和姓名。選項如下:A、selectsno,snamefromstudent
wheresnoin(selectsno
fromscwherecno='1'andsnonotin(selectsnofromscwherecno='2'))B、selectsno,snamefromstudent
whereexists(select*fromsc
wheresno=student.snoandcno='1')andnotexists(select*fromscwheresno=student.snoandcno='2')C、selects.sno,snamefromstudentsjoinscons.sno=sc.snowherecno='1'exceptselects.sno,snamefromstudentsjoinscons.sno=sc.snowherecno='2'D、selects.sno,snamefromstudentsjoinscons.sno=sc.snowherecno='1'andcno!='2'E、selectsno,snamefromstudent
wheresnoin(selectsnofromscwherecno='1')andnotexists(select*fromscwheresno=student.snoandcno='2')以上選項,A是使用不相關子查詢解決問題,B使用相關子查詢解決問題,C是使用集合查詢解決問題,E是使用相關和不相關都參與的方式及問題,D是在兩表連接中使用否定形式是錯誤的。先設定5分鐘學生參與超星互動,然后根據答題情況,老師通過電子教室廣播講解點評。完成后,引出本章節內容(3分鐘):這一次課我們學習第5章視圖和索引的應用,這是相對獨立的一個章節。視圖就是存儲在數據庫中的SQL語句,他只存放定義,不存放數據,數據還是從它所對應的查詢表中來,所以我們可以把經常要寫的查詢保存為視圖,例如我們經常要做多表連接,查詢學生的選課情況,就可以把學生的選課情況做成一個視圖,這樣學生的基本信息都包括進去,想查什么就像是單表查詢一下,肯定會方便許多。而所以也是一個獨立的數據庫對象,有點像圖書的目錄,很明顯圖書的目錄能增加我們的查閱效率,索引的功能也是如此。下面我們開始學習的兩種對象。2、教學內容與時間安排視圖(35分鐘)視圖的定義視圖的作用一簡化操作,二提高數據的安全性,三屏蔽數據庫的復雜性,四數據及時更新(舉例說明)。創建視圖圖形化界面創建用例:5-1,注意講清楚窗口各部分名稱,注意如何出現表和表之間的連線(主鍵)SQL代碼語法格式:CREATEVIEW視圖名[(column[,...n])][WITHENCRYPTION]ASselect_statement[WITHCHECKOPTION]注意相關參數的說明,特別是WITHCHECKOPTION參數的說明。用例:5-2,5-3注意講代碼定義視圖中的列名細節和代碼中參數使用的意義。練習演練創建一個視圖,使其統計每個學生的考試平均成績和修課總門數。創建一個包含每門課程的課程號,課程名,選課人數,平均成績的視圖。創建每個系的平均年齡的視圖sdept_avg_sage。第1題,老師使用圖形化操作演示,注意演示清楚如何產生的分組依據,如何填寫聚合函數等細節。第2題,代碼演示,要求學生一起操作,特別注意列名的定義和使用。第3題,學生自己實現,老師巡視查看學生情況,要求完成同學彈幕。視圖的管理修改視圖alterview刪除視圖dropview查看視圖系統存儲過程sp_help老師演示講解。視圖的應用利用視圖查詢數據(容易)利用視圖更新數據(注意條件,更新數據要保證轉換成對基本的正確操作)索引。(35分鐘)索引的作用每一行記錄都包括數據表中一列或若干列值的集合,而不是數據表中的所有記錄,因而能夠提高數據的查詢效率。索引的分類聚集索引和非聚集索引表中的行的物理存儲順序和索引順序完全相同(聚集)非聚集索引不改變數據行的物理存儲順序。惟一索引(設置主鍵或設置唯一鍵時)索引和約束的關系(PRIMARYKEY、UNIQUE)獨立索引創建索引使用ManagementStudio(表上右鍵-設計-選擇列右鍵-索引/鍵)使用CREATEINDEX語句CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]/*索引的類型*/INDEX索引名ON{表名|視圖名}列名[ASC|DESC][,...n])例5.9CREATEINDEXIX_snameONstudent(sname)刪除索引DropindexSname_index注:主鍵帶來的索引只能刪除主鍵才能刪掉索引查看索引用系統存儲過程sp_helpindex重命名索引Sp_rename'表名.原索引名稱','新索引名稱'--和改表的列名類似3、課程案例。穿插在課程之中,仍然以學生選課數據庫中創建各種視圖和索引為例。4、單元小結通過本單元的學習,了解視圖和索引的作用和存在價值,會使用視圖簡化查詢、提高效率,能理解索引在提高查詢速度上的作用,掌握創建索引的圖形化和代碼方法。了解這兩種數據庫對象的使用場景,并能使用學到的新知識,解決實際問題,進一步鞏固數據庫思維,并在實戰中提高數據庫系統的操作能力。5、教學方法操作演示、理論講授、多媒體課件、超星互動6、課后作業布置第5章課后習題
表SEQ表\*ARABIC9第六單元數據庫編程技術基礎授課時間202X年X月X日授課周次第9周授課方式(請打√)理論課R討論課□實驗課□習題課□其他□課時安排2授課題目(教學章、節或主題):第六單元數據庫編程技術基礎教學目的、要求:正確理解和掌握使用SQLServer變量;掌握SQLServer函數的使用;掌握流程控制語句;掌握編寫順序結構、選擇結構和循環結構的程序;游標的基本使用。教學重點及難點:case語句(難點);游標的使用(難點);如何使用流程控制語句增強sql的功能(重點)。教學基本內容和過程(可增加頁)1、課堂導入上節知識回顧(10分鐘):回顧第5章視圖和索引中,視圖的定義和索引的作用。隨機提問形式,了解同學們對上節課程基本內容的掌握情況,對于索引的作用可以舉例說明。舉例如下:declare@ibigint=1--產生10萬行記錄的表while@i<=100000begininsertintostuuvalues(@i,'zds'+convert(varchar(20),@i))set@i=@i+1endaltertablestuualtercolumnsnobigintnotnull--添加主鍵前準備altertablestuu--添加主鍵addconstraintpk_snoprimarykey(sno);select*intostuu1--產生另外的表fromstuu比較查詢效率selectcount(*)fromstuu1selectcount(*)fromstuuselectsno,snamefromstuu1wheresno=95888完成后,引出本章節內容:我們已經掌握了單表查詢技術以及多表連接查詢技術,以及多表連接技術中較復雜的相關和不相關子查詢,我們的數據庫技術有了較大的進步。但有時要實現更為復雜的查詢的時候,目前掌握的SQL技術,還是會有力不從心的感覺,SQL里面能不能編程呢?如果能把變量和結構控制語句,也用到SQL技術里面,那我們的SQL語句是不是就更強大了呢?當然可以。今天我們就開始學習,怎樣在SQL代碼里面使用編程技術,包括變量、流程控制語句、函數和游標。2、教學內容與時間安排SQL編程基礎(5分鐘)注釋變量的定義和使用print語句流程控制語句。(35分鐘)順序Beginend分支Ifelse循環While例1:計算1+2+3+…+100的和。結合數據庫舉例例2:查詢選修3號課程的學生的平均成績是否大于60分,輸出相應的提示信息。declare@qintset@q=60if(selectAVG(grade)fromSCwhereCno='3')>@qprint'選修號課程的平均成績大于'+convert(varchar(10),@q)+'分'elseprint'選修號課程的平均成績不大于'+convert(varchar(10),@q)+'分'例3:查詢選課表中是否有數學系的學生的選課信息,輸出相應的提示信息。ifexists(select*fromscwheresnoin(selectsnofromstudentwheresdept='數學系'))print'有數學系的同學的選課信息'elseprint'沒有數學系的同學的選課信息'CASE結構簡單CASE表達式CASE條件表達式WHEN表達式值1THEN結果表達式1[WHEN表達式值2THEN結果表達式2[…]][ELSE結果表達式n]END搜索CASE表達式語法格式為:CASEWHEN邏輯表達式1THEN結果表達式1[WHEN邏輯表達式2THEN結果表達式2[…]][ELSE結果表達式n]END顯然,簡單case中條件表達式需要和when里面的具體值相匹配,而搜索case中通過when里面的邏輯表達式處理需匹配的內容,可以是包含表達式的關系運算返回邏輯值即可,靈活性更高例4:利用搜索case表達式實現:輸出課程號、課程名、開課學期,開課學期用“第幾學期”。超星互動練習:請嘗試使用case語句實現以下效果。函數。(5分鐘)介紹常用的函數如:getdate(),convert(),datadiff()游標(20分鐘)游標概念(逐行讀取數據的需要)游標的使用游標應用示例(重點)例5:使用游標處理學生表中姓陳的同學信息。DECLAREname_curCURSORFORSELECTsnameFROMstudentWHEREsnameLIKE'陳%'ORDERBYsnameOPENname_cur--首先提取第一行數據FETCHNEXTFROMname_curWHILE@@FETCH_STATUS=0--若讀取成功BEGINFETCHNEXTFROMname_curENDCLOSEname_curDEALLOCATEname_cur--聲明用于存儲FETCH返回結果的局部變量DECLARE@var_snochar(5),@var_snamechar(20)DECLAREstu_cursorCURSORFORSELECTsno,snameFROMstudentWHEREsnameLIKE'陳%'ORDERBYsno,snameOPENstu_cursor--首先提取第一行數據,并將結果保存到局部變量中FETCHNEXTFROMstu_cursorINTO@var_sno,@var_snameWHILE@@FETCH_STATUS=0BEGIN--將當前行值連接成一個字符串PRINT'學號:'+@var_sno+',姓名:'+@var_sname--提取下一行數據FETCHNEXTFROMstu_cursorINTO@var_sno,@var_snameENDCLOSEstu_cursorDEALLOCATEstu_cursor例6,例7分別使用帶SCROLL選項的游標和修改數據的游標例6:--展示absolute,relative,last的作用declaremycurscrollcursorforselectsno,snamefromstudentorderbysagedescdeclare@ssnochar(5),@ssnamechar(20)openmycurSETNOCOUNTONfetchabsolute1frommycurinto@ssno,@ssnameprint'指定學生的學號是:'+@ssno+',指定學生的姓名是:'+@ssnamefetchlastfrommycurinto@ssno,@ssnameprint'指定學生的學號是:'+@ssno+',指定學生的姓名是:'+@ssnamefetchrelative-1frommycurinto@ssno,@ssnameprint'指定學生的學號是:'+@ssno+',指定學生的姓名是:'+@ssnamefetchrelative-1frommycurinto@ssno,@ssnameprint'指定學生的學號是:'+@ssno+',指定學生的姓名是:'+@ssnameclosemycurdeallocatemycur結果如下:指定學生的學號是:95006,指定學生的姓名是:陳斌斌指定學生的學號是:95013,指定學生的姓名是:陳冬指定學生的學號是:95003,指定學生的姓名是:王敏指定學生的學號是:95005,指定學生的姓名是:陳平例7:--更新由游標指定的數據declaremycurcursorforselect*fromstudent1wheresdept='計算機系'forUPDATEofsageOPENmycurFETCHNEXTFROMmycurWHILE@@FETCH_STATUS=0BEGIN UPDATEstudent1 SETsage=28 WHERECURRENTOFmycur FETCHNEXTFROMmycurENDCLOSEmycurDEALLOCATEmycur3、課程案例。穿插在課程之中,仍然以學生選課數據庫的數據讀取為例。4、單元小結通過本單元的學習,正確理解和掌握使用SQLServer變量;掌握SQLServer函數的使用;掌握流程控制語句;掌握編寫順序結構、選擇結構和循環結構的程序;掌握游標的使用場景和基本使用,并能使用學到的新知識,解決較為復雜的實際問題,進一步鞏固查詢思維,并在實戰中提高sql代碼編寫能力。5、教學方法操作演示、理論講授、多媒體課件、超星互動6、課后作業布置第六章課后習題
表SEQ表\*ARABIC10第七單元存儲過程的應用授課時間202X年X月X日授課周次第10周授課方式(請打√)理論課R討論課□實驗課□習題課□其他□課時安排2授課題目(教學章、節或主題):第七單元存儲過程的應用教學目的、要求:理解存儲過程的作用;掌握創建、刪除、修改和加密存儲過程;掌握各類存儲過程的執行方法。教學重點及難點:帶參數的存儲過程的創建和執行。教學基本內容和過程(可增加頁)1、課堂導入上節知識回顧(10分鐘):回顧第6章數據庫編程技術基礎中,sql中如何定義變量?如何給變量賦值?隨機提問形式,了解同學們對上節課程基本內容的掌握情況。完成后,引出本章節內容(3分鐘):第6章我們學習了數據庫的編程技術基礎,這個編程技術基礎主要用在第7章和第8章,今天我們學習第7章存儲過程,前面我們學習的SQL語句,都是在客戶端上執行的,每次要執行相同或類似的功能,都要重新寫SQL語句,編寫和執行效率偏低,還有一種執行SQL語句的方法,那就是把SQL語句存儲在數據庫服務器上,并給他取個名字,要執行類似的代碼的時候,直接叫他的名字就可以了,存放在服務器上的SQL代碼就是存儲過程,因為這部分SQL代碼存儲在服務器上,第一次執行時就編譯過了,以后執行基本上不用編譯,因而執行速度比較快。2、教學內容與時間安排存儲過程概念(15分鐘)存儲過程的三點功能接受輸入參數并以輸出參數的形式將一個或多個值返回給調用過程;執行數據庫操作(包括調用其它過程)的多句編程語句;向調用過程返回狀態值,以表明成功或失敗(以及失敗原因)。使用存儲過程的4點好處模塊化程序設計改善數據庫性能減少網絡流量增加安全機制存儲過程的分類2類,1類系統存儲過程sp_開頭,1類用戶自定義存儲過程創建和執行存儲過程(35分鐘)創建存儲過程代碼CREATEPROC[EDURE]存儲過程名[{@參數名數據類型}[=default][OUTPUT]][,...n]ASSQL語句[...n]注意命名,注意參數定義位置,注意再sql語句中使用已經定義的參數執行存儲過程[EXEC[UTE]]存儲過程名[實參[,OUTPUT][,…n]]注意要在查詢窗口的第一行執行,注意參數給出的形式案例教學例1.不帶參數的存儲過程:查詢信息系學生的考試情況,列出學生的姓名、課程名和考試成績。Createprocc_is_ksAsSelectsname,cname,gradeFromstudentsjoinscons.sno=sc.snojoincoursecono=oWheresdept=’信息系’逐步寫出,引導思考例2.帶輸入參數的存儲過程:查詢某個指定系學生的考試情況,列出學生的學號、姓名、所在系、課程名和考試成績。Createprocc_sdept_ks@ssdeptchar(20)AsSelects.sno,sname,sdept,cname,gradeFromstudentsjoinscons.sno=sc.snojoincoursecono=oWheresdept=@ssdept本列依舊老師引導,學生一起思考寫出,特別提醒注意參數的定義和使用方式,以及注意如何執行這個帶參數的存儲過程(2種方式,位置法和參數名法)練習1:創建一個存儲過程,proc1,用來輸入學生的姓名,查詢學生的基本信息。本練習使用超星拍照或者彈幕形式。例3.含多個輸入參數并有默認值的存儲過程:查詢某個學生(姓名)某門課程的考試成績,若沒有指定課程,則默認課程為“數據庫”。Createprocc_cno_grade@ssnamechar(20),@ccnamechar(20)=’數據庫’AsSelectgradeFromstudentsjoinscons.sno=sc.snojoincoursecono=oWheresname=@ssnameandcname=@ccname本例老師演示講解,注意速度,引導學生一起思考完成,特別注意默認值的設置和執行效果,執行時進一步明確參數的使用場景,若參數連續給出,可以按位置或者按名稱,若參數不連續給出,只能按名稱。有默認值的參數不給值的時候自動使用默認值。練習2:創建存儲過程,proc2,查詢指定系別的指定課程的選課平均成績,默認查詢“數據庫”的選課平均成績。本練習使用超星拍照或者彈幕形式。例4.含多個輸入參數并均指定默認值的存儲過程:查詢指定系、指定性別的學生中年齡大于等于指定年齡的學生詳細信息。系的默認值為“計算機系”,性別默認值為“男”,年齡默認值為20。本例,老師引導學生一起思考解決。例7,老師根據時間,可以直接ppt講解。(有輸出參數)練習3:使用輸出參數,建立存儲過程proc3,輸入一個學生的姓名,輸出該學生所在系的平均年齡。(注意輸出參數的定義和使用)本列給學生一些提示,然后超星彈幕互動。查看\修改\刪除存儲過程(5分鐘)查看存儲過程可編程性--存儲過程--右鍵修改修改存儲過程ALTERPROC[EDURE]存儲過程名[{@參數名數據類型}[=default][OUTPUT]][,...n]ASSQL語句[...n]修改存儲過程代價和重新創建差不多。刪除存儲過程圖形化操作在要刪除的存儲過程上右擊鼠標,在彈出菜單中選擇“刪除”命令。代碼實現DROP{PROC|PROCEDURE}{procedure}[,...n]可以一次刪除多個存儲過程。舉例:刪除前面創建的部分存儲過程系統存儲過程和擴展存儲過程(5分鐘)常用系統存儲過程介紹sp_tablessp_stored_proceduressp_renamesp_renamedbsp_helpsp_helptext存儲過程的應用(5分鐘)例12.將指定課程的學分改為指定值,要求指定值必須在1~10之間,否則不予修改。CREATEPROCp_UpCredit1@cnochar(6),@creditintASIF@creditBETWEEN1AND10UPDATECourseSETCredit=@creditWHERECno=@cno例13.刪除指定學生(學號)的成績不及格的修課記錄。CREATEPROCp_DSC@snochar(5)ASDELETEFROMSCWHERESno=@snoANDGrade<60講解例12,引導學生完成例13,進一步學習參數的定義和使用。3、課程案例。穿插在課程之中,仍然以學生選課數據庫中創建各種存儲過程為例。4、單元小結通過本單元的學習,了解存儲過程的定義和作用,會使用代碼創建不帶參數的存儲過程、帶輸入參數的存儲過程、帶輸入參數并有默認值的存儲過程、帶輸出參數的存儲過程,以及這些存儲過程的調用方式,調用存儲過程時參數的定義和使用規則等。并能使用學到的新知識,解決實際問題,進一步鞏固數據庫思維,并在實戰中提高數據庫系統的操作能力。5、教學方法操作演示、理論講授、多媒體課件、超星互動6、課后作業布置第7章課后習題
表SEQ表\*ARABIC11第八單元觸發器的應用授課時間202X年X月X日授課周次第11周授課方式(請打√)理論課R討論課□實驗課□習題課□其他□課時安排2授課題目(教學章、節或主題):第八單元觸發器的應用教學目的、要求:了解觸發器的概念和分類;掌握創建、執行、修改和刪除觸發器的方法;掌握INSERTED表和DELETE表的使用;掌握DDL觸發器的創建和使用;掌握觸發器的禁用和啟動。教學重點及難點:觸發器的創建和觸發時機(重點);使用觸發器實現數據完整性(難點)。教學基本內容和過程(可增加頁)1、課堂導入上節知識回顧(10分鐘):先簡要回顧一下存儲過程的創建和執行,然后通過超星拍照互動檢驗學生對存儲過程的掌握情況,互動題如下:創建一個能夠向SC表中插入學生學號,課程號,成績的存儲過程。createprocproc_indata@ssnochar(5),@ccnochar(6),@ggradeintasinsertintoscvalues(@ssno,@ccno,@ggrade)執行如下:Execproc_indata‘95003’,’1’,77根據學生答題情況,適當講解。完成后,引出本章節內容(3分鐘):第7章我們學習了存儲過程,存儲過程的執行,需要我們在查詢窗口使用exec存儲過程名稱,來調用指定的存儲過程,也就是說一般的存儲過程需要我們喊他,他才做事。但有些時候我們希望某些存儲過程能夠自動執行,例如,在銷售管理過程中產品售出,有了新的銷售訂單,產品存庫存以和已銷售量都應該相應的發生改變,而且是自動改變。這時候就要用到一類新的存儲過程--觸發器。觸發器是一類特殊的存儲過程,它能夠對系統的dml事件做出響應,自動實現一些功能,我們通常用它來實現數據的完整性。2、教學內容與時間安排觸發器概述。(5分鐘)特殊的存儲過程,自動執行,用于維護數據完整性。存儲過程的分類DML觸發器、DDL觸發器超星互動,選擇題:觸發器是一種特殊類型的存儲過程,被捆綁到(A)或視圖上。數據表索引數據庫函數本題互動目的是抓住學生的注意力。DML觸發器的定義和創建(25分鐘)什么是DML觸發器(針對數據表的插入、更新、刪除而引發的觸發器)創建觸發器的Transact-sql語句CREATETRIGGER觸發器名稱ON{表名|視圖名}{FOR|AFTER|INSTEADOF}{[INSERT][,][DELETE][,][UPDATE]}ASSQL語句注意:for和after同義是后觸發(引發觸發器的事件發生后執行),insteadof是替代觸發器特別提出只在觸發器中才有的,inserted和deleted表,以及他們使用的場合。此時,及時通過超星選擇題互動,加強學生記憶。通過例子演示講解如何編寫出發器代碼,以及如何引發觸發器執行例1.限制職工的基本工資必須在相應工作的最低工資和最高工資之間。CREATETriggertri_SaON職工表AFTERINSERT,UPDATEASIFEXISTS(SELECT*FROM職工表aJOIN工作表bONa.工作號=b.工作號WHERE基本工資NOTBETWEEN最低工資AND最高工資)ROLLBACK--撤消已執行的操作本例注意解釋說明為什么在觸發器里可以撤銷剛剛的DML操作--事務機制。例2.限制職工表中“浮動工資”列的取值必須在“基本工資”的0~30%范圍內。CREATETriggertri_FsaON職工表forINSERT,UPDATEASIFEXISTS(SELECT*FROMINSERTEDWHERE浮動工資NOTBETWEEN0AND基本工資*0.3)ROLLBACK觸發:insertinto職工表(職工號,工作號,基本工資,浮動工資)values('05','01',1000,400)本例使用了觸發器特有的inserted表,注意說明此表的作用。例3.限制不能將不及格學生的成績改為及格,如果違反約束,給出提示信息:“不能將不及格成績改為及格”。CREATETriggertri_ChagradeONSCforUPDATEASIFEXISTS(SELECT*FROMINSERTEDaJOINDELETEDbONa.Sno=b.SnoANDa.Cno=b.CnoWHEREb.Grade<60ANDa.Grade>=60)BEGINROLLBACKPRINT'不能將不及格成績改為及格!'END此例,以啟發學生思考為主,可以使用偽代碼,再逐步用規范代碼替代,培養學生思維以及向規范代碼轉換的能力。同時,進一步加強對2個臨時表應用場景的體會。前觸發型觸發器定義(前觸發型觸發器與后觸發型觸發器的區別),超星選擇互動--增強記憶例4.用前觸發器實現例1限制職工基本工資必須在相應工作的最低工資和最高工資之間。CREATETriggertri_SaON職工表INSTEADOFINSERTASIFNOTEXISTS(SELECT*FROMinsertedaJOIN工作表bONa.工作號=b.工作號WHERE基本工資NOTBETWEEN最低工資AND最高工資)INSERTINTO職工表SELECT*FROMINSERTED可以和截胡類比。DDL觸發器的應用場景和創建(15分鐘)防止對數據庫架構進行某些更改以響應數據庫架構中的更改記錄數據庫架構中的更改或事件創建代碼:CREATETRIGGER觸發器名ON{ALLSERVER|DATABASE}[WITHENCRYPTION]{FOR|A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 再生透水混凝土景觀小品表面氣泡數監理細則
- 再生透水混凝土座椅抗壓強度監理細則
- 企業情感營銷中敘事傳輸對態度改變的影響研究報告
- 光耦基本原理及特點
- 玻璃制品機械成型工安全生產基礎知識競賽考核試卷含答案
- dic人衛7版病理生理
- FANUC數控系統講解
- 高壓電器及元件裝配工風險評估與管理測試考核試卷含答案
- 商品防損員常識能力考核試卷含答案
- 油制氫裝置操作工安全綜合測試考核試卷含答案
- 2026年上海市徐匯區社工招聘筆試真題(附答案)
- 2026年高中秋季開學軍訓蛻變新生班會
- 交管12123學法減分題庫200題(含答案解析2026完整版)
- 2026年晚期結直腸癌肝轉移轉化治療臨床指南
- 2026年湖北省中考道德與法治、歷史合卷試卷(含答案)
- 城市道路交通安全評價標準 DG-TJ08-2407-2022
- 中醫診斷學中的痛癥辨析與治療
- GB 15607-2023涂裝作業安全規程粉末靜電噴涂工藝安全
- 第4章-有限差分法課件
- 產品召回演練模板
- 高級經濟師《知識產權事務》綜合練習11
評論
0/150
提交評論