第一篇:數據庫原理_實驗教學講稿
邯 鄲 學 院
實驗教學講稿
2013~2014學年 第一學期
分院(系、部): 教 研 室: 課 程 名 稱: 授 課 班 級: 主 講 教 師: 職
稱: 使 用 教 材:
信息工程學院 網絡工程 數據庫原理
網絡工程2011級本科班
李 娜 講師
《數據庫系統概論》
邯鄲學院制
實驗1 認識DBMS系統、數據庫及數據庫表的建立實驗
一、實驗目的
本實驗的目的是使學生熟悉SQL Server Management Studio的使用方法,熟悉SQL SERVER的常用數據類型,加深對SQL語言的數據定義語句的理解。熟練掌握數據庫及數據庫表的創建、修改和刪除。
二、實驗時數:
2學時
三、實驗內容
分別使用SQL語言和對象資源管理器完成以下操作:
1.創建數據庫
創建數據庫名為COMPANY1,主數據文件的邏輯名稱為COMPANY_DATA,操作系統文件的名稱為D:MSSQLDATACOMPANY.MDF,大小為20MB,最大為50MB,以25%的速度增長。日志文件的邏輯名稱為COMPANY_LOG,操作系統文件的名稱為D:MSSQLDATACOMPANY.LDF,大小為3MB,最大為10MB,以1MB的速度增長。2.修改數據庫
(1)將數據庫COMPANY1的主數據文件的初始分配空間大小擴充到40MB.(2)將數據庫COMPANY1改名為COMPANY 3.創建表
在名為COMPANY數據庫中創建以下四個表:(1)部門表,表名DEPA 列名 DNO 數據類型 DECIMAL(2)
描述
部門編號 部門名稱 部門地址 DNAME VARCHAR(16)ADDR VARCHAR(20)(2)雇員表,表名EMPL 列名 ENO 數據類型 DECIMAL(4)
描述
員工編號 員工姓名 出生日期 ENAME CHAR(8)BIRTHDATE DATETIME
SALARY DECIMAL(7,2)DNO DECIMAL(2)
工資
所在部門編號
(3)項目表,表名PROJ 列名 PNO 數據類型 DECIMAL(3)
描述
項目編號 項目名稱 PNAME VARCHAR(24)(4)工作表,表名JOB 列名 ENO PNO DAYS 數據類型 DECIMAL(4)DECIMAL(3)INT
描述
員工編號 項目編號
工作天數
4.修改表結構
1)修改部門表DEPA,添加一列部門電話,列名Telephone,數據類型VARCHAR(15)。2)為項目表PROJ添加Begindate和Enddate列,數據類型為DATETIME。3)刪除項目表PROJ中的Enddate列。5.刪除表
1)刪除項目表PROJ。
6、添加記錄:
1)向DEPA表添加14號部門,客戶中心,地址為開發區紫光路2號。2)向DEPA表添加 15號部門,技術支持部,地址未詳。3)向DEPA表添加 13號部門,財務部,地址未詳。
??
4)向EMPL表添加1401號員工,張山,出生日期1977年9月1日,工資4050元,14號部門。
5)向EMPL表添加1402號員工,何宜,生日不祥,工資不祥,15號部門。??
6)向PROJ表添加103號項目,歷史學院檔案庫管理系統。7)向PROJ表添加104號項目,ATM機管理系統。??
8)向JOB表添加1401號員工,參與了104號項目35天。9)向JOB表添加1402號員工,參與了103號項目20天。??
7、修改記錄:
1)把DEPA表中’客戶中心’的地址改為’大連甘井子區紅嶺路’;2)把DEPA表中15號部門的地址用沈陽東郊路120號填充。
3)把EMPL表中何宜的生日、工資用1981年12月20日,3000元填充。4)把EMPL表中張山的部門號改為15號。5)把JOB表中參與104號項目的每人增加5天。6)把JOB表中參與103號項目的每人天數乘以系數0.8。
8、刪除記錄:
1)刪除地址為空的部門。
2)刪除JOB表中參與104號項目的員工。3)刪除JOB表中天數低于25天的員工。
4)刪除生于1980年后,且工資低于4000的員工。5)刪除屬于14號部門的員工。6)刪除15號部門的信息。
9.使用對象資源管理器分離和附加數據庫COMPANY
實驗2 數據庫的單表查詢、分組查詢與聚集函數的使用
一、實驗目的
本實驗的目的是使學生熟悉SQL Server Management Studio的使用方法。加深對SQL語言的查詢語句的理解。熟練掌握數據庫的單表查詢(包括投影、選擇條件表達,數據排序,模糊查詢等), 熟練掌握數據庫的分組、統計、計算和集合的操作方法。
二、實驗時數
2學時
三、實驗內容 1.簡單的SELECT查詢
1)查詢雇員表Empl中所有員工的詳細信息,并且列名用漢字表示。2)查詢項目表Proj中所有項目的詳細信息,并且列名用漢字表示。2.使用WHERE子句進行查詢
1)查詢雇員表Empl中李強的員工編號。
2)查詢項目表Proj中項目編號為“101”的項目名稱。3.使用DISTINCT關鍵字去掉重復行
1)查詢雇員表Empl中出現的所有部門編號,要求無重復。
2)查詢工作表Job中參與過項目開發的所有員工編號,要求無重復。4.使用ORDER BY子句對查詢結果進行排序
1)查詢雇員表Empl中所有員工的詳細信息,結果按員工姓名降序排列。2)查詢工作表Job中的工作信息,結果按工作天數升序排列。5.使用LIKE子句進行模糊查詢
1)查詢所有姓王的員工的編號及姓名,并且以員工編號及員工姓名作為列名。2)查詢雇員表Empl中姓名以“偉”字結尾的員工信息。6.使用聚集函數MIN、MAX進行查詢
1)查詢雇員表Empl中員工的最低工資,并且列名用“最低工資”表示。2)查詢雇員表Empl中員工的最高工資,并且列名用“最高工資”表示。7.使用聚集函數COUNT進行查詢
1)查詢雇員表Empl中所有員工的總人數,并且列名用“員工總數”表示。2)查詢14號部門的人數,并且列名用“客戶中心部人數”表示。
8.使用分組子句GROUP BY與聚集函數MIN、MAX進行查詢 1)查詢每個部門中年齡最大的員工,顯示部門編號和出生日期。
2)分別統計雇員表Empl中各部門員工的最高工資,并且列名分別用“部門編號”及“最高工資”表示。
9.使用分組子句GROUP BY與聚集函數SUM、AVG進行查詢
1)分別統計雇員表Empl中各部門員工的工資總額,并且列名分別用“部門編號”及“各部門工資總額”表示。
2)分別統計雇員表Empl中各部門員工工資的平均數,并且列名分別用“部門編號”及“各部門工資平均數”表示。
10.使用分組子句GROUP BY與聚集函數COUNT進行查詢
1)統計員工人數多于4人的部門信息,并且列名分別用“部門編號”及“員工人數”表示。
2)分別統計工作表Job中各項目的參與開發的員工人數,并且列名分別用“項目編號”及“員工人數”表示。
實驗3 數據庫的多表連接和子查詢
一、實驗目的
本實驗的目的是使學生加深對SQL和SQL語言的查詢語句的理解。熟練掌握數據庫的多表連接查詢和子查詢。
二、實驗時數
2學時
三、實驗內容 ㈠多表連接查詢:
1.對兩張數據表使用內連接進行查詢
1)查詢姓名為“王一偉”的員工所在部門的名稱,并且列名用漢字表示。2)查詢編號為“1002”的員工姓名及該員工所在部門的名稱,并且列名用漢字表示。
2.對多張數據表使用內連接進行查詢
1)查詢姓名為“陳晨”的員工參與過的所有項目的名稱,并且列名用漢字表示。2)查詢編號為“1202”的員工姓名及該員工參與過的所有項目的名稱,并且列名用漢字表示。
3.對兩張數據表使用左連接進行查詢
1)使用左連接查詢所有員工的基本信息及參與項目開發情況,如果某員工參與過項目開發,則列出該員工所參與的所有項目的編號,否則該項以空值表示。2)使用左連接查詢所有員工的基本信息及所在部門名稱,如果某員工尚未分配到任何部門,則該員工的部門名稱項以空值表示。4.對兩張數據表使用右連接進行查詢
1)使用右連接查詢所有員工的基本信息及參與項目開發情況,如果某員工參與過項目開發,則列出該員工所參與的所有項目的編號,否則該項以空值表示。2)使用右連接查詢所有員工的基本信息及所在部門名稱,如果某員工尚未分配到任何部門,則該員工的部門名稱項以空值表示。㈡子查詢: 1.多表單值子查詢
1)查詢編號為1001的員工的部門名。
2)查詢‘客戶中心’部門的員工數。3)查詢陳晨所在的項目編號。2.多表多值子查詢
1)查詢1985年以后出生的員工在所在項目的工作天數。2)查詢參與項目天數超過40天的員工姓名。3)查詢工資低于2000的員工的所屬部門。3.多層嵌套子查詢
1)查詢‘客戶中心'部門中,收入高于平均工資的員工。2)查詢“開發系統”項目的參與部門。
3)查詢'宣傳'部門雇員參加的項目名稱。4.相關子查詢
1)查詢參與兩個項目以上的員工姓名。2)查詢所有未參與項目的員工姓名。
實驗4 數據庫的視圖與索引定義
一、實驗目的
本實驗的目的是使學生掌握索引與視圖的定義與維護操作,加深對索引與視圖在關系數據庫中的作用的理解。
二、實驗時數
2學時 [相關知識] 建立索引是加快查詢速度的有效手段。用戶可以根據應用環境的需要,在基本表上建立一個或多個索引,以提供多個存取路徑,加快查找速度。
視圖是根據子模式建立的虛擬表。一個視圖可以由一個表構造,也可以由多個表構造。查看和修改視圖就如同對表的操作一樣,非常容易。
三、實驗內容 ㈠索引 1.創建索引
1)為PROJ表的PNAME列創建非聚集索引Pindex。
2)為DEPA表的DNAME(降序),ADDR兩列創建唯一非聚集索引Dindex。3)在PROJ表的PNAME列上創建唯一非聚集索引Pindex,若該索引已存在則刪除后重建。2.查看索引
1)查看DEPA表的索引信息。
2)查看數據庫COMPANY索引使用的空間信息 3.索引更名
1)將DEPA表的索引Dindex名更改為Dindex1。4.刪除索引
1)刪除DEPA表的索引Dindex1。㈡視圖 1.創建視圖
1)創建14號部門員工的視圖EMPL_14(ENO,ENAME,SALARY)。2)創建包含項目名與員工名及工作天數的視圖Prjemp。
3)在視圖EMPL_14上創建工資在3000以上的員工的視圖EMPL_14H3。4)創建每個部門的平均工資的視圖E_AVG(DNO,SAVG)。2.查詢視圖
1)根據視圖Prjemp查詢做'設計系統'項目的所有員工及工作天數。2)根據視圖E_AVG查詢‘客戶中心’的平均工資。3.更新視圖
1)在視圖EMPL_14中將1042號員工的姓名改為‘李立春’。2)向視圖EMPL_14中插入一條新記錄(1050,‘趙英’,3500)。3)刪除視圖EMPL_14中1042號員工的記錄。4.刪除視圖
1)刪除視圖Prjemp。
實驗5 數據庫的安全性控制
一、實驗目的
本實驗的目的是通過實驗使學生加深對數據安全性的理解,并掌握SQL Server中有關用戶,角色及操作權限的管理方法。
二、實驗時數
2學時
三、實驗內容
分別使用SQL語言和對象資源管理器完成以下操作:
1.建立數據庫登錄帳戶S1和D1,密碼均為1234,登錄帳戶S1默認數據庫分別為COMPANY,其它保持默認值。
2.將S1映射為COMPANY數據庫的同名數據庫用戶。
3.將D1映射為COMPANY數據庫的數據庫用戶,數據庫用戶名為S2。3. 對數據庫用戶授予權限
1)授予S1對EMPL表插入數據的權限,并驗證該權限(方法:通過登錄帳戶S1登錄SQL Server,然后插入一條數據來驗證該權限)。
2)授予S2創建表的權限,并驗證該權限(方法:通過登錄帳戶D1登錄SQL Server,然后創建-張表來驗證該權限)。
3)收回S1對EMPL表插入數據的權限,并驗證該權限(方法:通過登錄帳戶S1登錄SQL Server,然后插入一條數據來驗證該權限)。4.創建用戶角色
1)在COMPANY數據庫中創建角色MYROLE,授予該角色查詢和修改EMPL表的權限。
2)將S1添加為角色MYROLE的成員,并驗證s1是否能夠查詢EMPL表。3)將S2添加為角色MYROLE的成員,并驗證s2是否能夠修改EMPL表。5.收回數據庫用戶權限
1)采用用戶角色方法收回S1和S2修改EMPL表的權限,并驗證S1是否還能修改EMPL表。
2)拒絕S2查詢 EMPL表的權限,并驗證S2是否還能查詢EMPL表。
實驗6 數據完整性
一、實驗目的
本實驗的目的是通過實驗使學生加深對數據完整性的理解,掌握數據完整性的約束條件,學會創建和使用觸發器。
二、實驗時數
2學時 [相關知識] SQL Server實現數據完整性的具體方法有4種:約束、缺省、規則和觸發器。觸發器是實施復雜完整性的特殊類型的存儲類型。觸發器不需要專門語句調用,當對它所保護數據進行修改時自動激活,以防止對數據進行不正確,未授權或不一致的修改。
三、實驗內容
1.創建包含非空約束字段的表
創建一個員工聯系信息表Contact,一共有3個字段: 雇員號(Eno)數據類型為4位長定長字符串; 電話(Tel)數據類型為8位長定長字符串; 地址(Addr)數據類型為20位變長字符串; 要求雇員號和電話不能為空。2.創建包含唯一約束字段的表
創建員工郵箱表Mail,一共有2個字段: 雇員號(Eno)數據類型為4位長定長字符串; 郵箱地址(Mail)數據類型為20位變長字符串; 要求雇員號非空,郵箱地址唯一。3.創建包含主碼約束字段的表
創建一個員工卡信息表Card,一共有3個字段: 雇員號(Eno)數據類型為4位長定長字符串; 卡號(Cno)數據類型為8位長定長字符串; 開卡日期(Startday)日期格式; 要求雇員號和卡號聯合做主鍵。
4.創建包含檢查約束字段的表
創建項目進度表Process,一共有3個字段: 項目號(Pno)數據類型為4位長定長字符串; 完成百分比(Percentage)數據類型為DECIMAL(3,2); 已用費用(Pem)數據類型為INT;
要求:⑴完成百分比用小數表示且數值小于1;
⑵已用費用的取值為0-100000(用規則實現)。5.創建包含默認值約束字段的表
創建通勤表Commudity,一共有2個字段: 雇員號(Eno)數據類型為4位長定長字符串; 通勤標志(Flag)數據類型為1位定長字符串; 要求通勤標志默認為‘Y’。6.創建包含外碼約束字段的表
1)創建部門經理表Mgr,一共有2個字段:
部門號(Dno)數據類型為4位長定長字符串 經理員工號(Eno)數據類型為4位長定長字符串 要求部門號是主鍵(用CONSTRAINT 約束實現)2)創建部門收支表CHARGE,一共有2個字段:
部門號(Dno)數據類型為4位長定長字符串 收支(CHARGE)數據類型為DECIMAL(7,2)要求部門號是外鍵 7.創建觸發器
在表EMPL上創建一個觸發器EMPL_date,當更改員工編號時同步更改Job表中對應的員工編號。
實驗7 數據庫設計
一、實驗目的
使學生能夠對給定的實際需求,選擇一種編程語言或開發工具,完成數據庫設計,并實現數據的查詢等操作,從而掌握數據庫應用系統的設計方法和步驟。熟悉大型數據庫管理系統的結構與組成; 熟悉數據庫應用系統的設計方法和開發過程;
掌握一種大型數據庫管理系統(SQL SERVER或ORACLE)的應用技術和開發工具的使用;
熟悉數據庫設計工具的使用; 熟悉數據庫安全的相關知識和技術; 熟悉數據庫系統的管理和維護。
二、實驗時數
4學時
三、實驗內容
完整實踐數據庫應用系統設計的工程過程:需求分析概念設計邏輯設計物理設計實施編寫應用程序:
(1)需求分析:選定一個應用,對所設計的數據庫系統有一定的調研分析,其結果應該以簡單的需求分析說明書數據字典和數據流圖(2級數據流即可)表示;(2)概念分析:使用E-R圖作為描述工具.描述出局部和全局的E-R圖;(3)邏輯設計:將E-R圖轉化為相應的關系模式,并根據范式理論進行優化分析,關系模式不少于3個;
(4)物理設計:根據需要設計必要的索引等結構;
(5)實施:以某種DBMS為工具創建出完整的數據庫.在數據庫中要表現出的知識點包括: ①設置數據完整性(參照完整性、實體完整性、自定義完整性(包括觸發器)。②設置用戶,并相應設計用戶的權限和角色(用戶設計至少3個,有不同的權限)。
③建立存儲過程完成相關操作至少2個,以文件方式保存。④
(6)編寫應用程序:利用開發工具C++、JAVA、.NET平臺或其它動態網頁開發工具編寫應用程序;
(7)以上內容,請詳細描述,并有必要抓圖;(8)提交系統的源碼程序、設計性實驗報告。
實驗8 數據庫的備份與恢復
一、實驗目的
本實驗的目的是通過實驗使學生了解SQL Server的數據備份和恢復機制,掌握SQL Server中數據庫備份和恢復的方法。
二、實驗時數 2學時
三、實驗內容
分別使用SQL語言和對象資源管理器完成以下操作: 1.創建備份設備
創建一個名為company_dev的磁盤備份設備,其對應的文件是D:company_dev.bak,該備份設備用于COMPANY數據庫的備份。寫出創建該備份設備的SQL語句。2.對數據庫進行完全備份
對COMPANY數據庫進行一次完全備份,備份到company_dev備份設備中。并且寫出完成完全備份的SQL語句。3.對數據庫進行差異備份
對COMPANY數據庫完成完全備份后,往EMPL表中添加兩條新記錄。然后對COMPANY數據庫進行差異備份,并且寫出完成差異備份的SQL語句。4.對數據庫進行事務日志備份
對COMPANY數據庫完成差異備份后,執行SQL語句修改數據庫的內容。然后對COMPANY數據庫進行事務日志備份,并且寫出完成事務日志備份的SQL語句。5.模擬數據庫故障發生
模擬用戶不小心刪除了COMPANY數據庫,從而需要使用備份恢復數據庫。6.恢復最近的完全數據庫備份
作為恢復的第一步,使用完全備份恢復COMPANY數據庫。7.恢復完全備份之后的最近的差異數據庫備份
利用差異備份恢復COMPANY數據庫,并寫出相應的SQL語句。8.恢復完全或差異備份之后的數據庫事務日志備份
利用事務日志備份恢復COMPANY數據庫,并寫出相應的SQL語句。
第二篇:數據庫原理 實驗教學講稿(邯院版)
邯 鄲 學 院
實驗教學講稿
2013~2014學年 第一學期
分院(系、部): 教 研 室: 課 程 名 稱: 授 課 班 級: 主 講 教 師: 職
稱: 使 用 教 材:
信息工程學院 網絡工程 數據庫原理
網絡工程2011級本科班
李 娜 講師
《數據庫系統概論》
邯鄲學院制
實驗1 認識DBMS系統、數據庫及數據庫表的建立實驗
一、實驗目的
本實驗的目的是使學生熟悉SQL Server Management Studio的使用方法,熟悉SQL SERVER的常用數據類型,加深對SQL語言的數據定義語句的理解。熟練掌握數據庫及數據庫表的創建、修改和刪除。
二、實驗時數:
2學時
三、實驗內容
分別使用SQL語言和對象資源管理器完成以下操作:
1.創建數據庫
創建數據庫名為COMPANY1,主數據文件的邏輯名稱為COMPANY_DATA,操作系統文件的名稱為D:MSSQLDATACOMPANY.MDF,大小為20MB,最大為50MB,以25%的速度增長。日志文件的邏輯名稱為COMPANY_LOG,操作系統文件的名稱為D:MSSQLDATACOMPANY.LDF,大小為3MB,最大為10MB,以1MB的速度增長。
Create database company1 On primary(name= company _data, Filename=’c:datastudent.mdf’, Size=20, Maxsize=50, Filegrowth=25%)Log on(name= company _log, Filename=’c:datastudent.ldf’, Size=1, Maxsize=12, Filegrowth=1)2.修改數據庫
(1)將數據庫COMPANY1的主數據文件的初始分配空間大小擴充到40MB.Alter database company1 Modify file(name=’c:datastudent.mdf’, Size=40)(2)將數據庫COMPANY1改名為COMPANY Exec sp_renamedb ‘company1’,’company’ 3.創建表
在名為COMPANY數據庫中創建以下四個表:(1)部門表,表名DEPA 列名 DNO 數據類型 DECIMAL(2)
描述
部門編號 部門名稱 部門地址 DNAME VARCHAR(16)ADDR VARCHAR(20)Create table depa(dno DECIMAL(2)not null, Dname VARCHAR(16), Addr VARCHAR(20))(2)雇員表,表名EMPL 列名 ENO 數據類型 DECIMAL(4)
描述
員工編號 員工姓名 出生日期 工資
所在部門編號 ENAME CHAR(8)BIRTHDATE DATETIME SALARY DECIMAL(7,2)DNO DECIMAL(2)(3)項目表,表名PROJ 列名 數據類型
描述
PNO DECIMAL(3)項目編號 項目名稱 PNAME VARCHAR(24)(4)工作表,表名JOB 列名 ENO PNO DAYS 數據類型 DECIMAL(4)DECIMAL(3)INT
描述
員工編號 項目編號
工作天數
4.修改表結構
1)修改部門表DEPA,添加一列部門電話,列名Telephone,數據類型VARCHAR(15)。Alter table depa Add Telephone VARCHAR(15)2)為項目表PROJ添加Begindate和Enddate列,數據類型為DATETIME。3)刪除項目表PROJ中的Enddate列。Alter table proj Drop column Enddate 5.刪除表
1)刪除項目表PROJ。Drop table proj
6、添加記錄:
1)向DEPA表添加14號部門,客戶中心,地址為開發區紫光路2號。Insert into depa(dno,dname,addr)values(14,’ 客戶中心’,’ 開發區紫光路2號’)2)向DEPA表添加 15號部門,技術支持部,地址未詳。3)向DEPA表添加 13號部門,財務部,地址未詳。
??
4)向EMPL表添加1401號員工,張山,出生日期1977年9月1日,工資4050元,14號部門。
5)向EMPL表添加1402號員工,何宜,生日不祥,工資不祥,15號部門。
??
6)向PROJ表添加103號項目,歷史學院檔案庫管理系統。7)向PROJ表添加104號項目,ATM機管理系統。??
8)向JOB表添加1401號員工,參與了104號項目35天。9)向JOB表添加1402號員工,參與了103號項目20天。??
7、修改記錄:
1)把DEPA表中’客戶中心’的地址改為’大連甘井子區紅嶺路’;
Update depa set addr=’ 大連甘井子區紅嶺路’ where dname=’ 客戶中心’ 2)把DEPA表中15號部門的地址用沈陽東郊路120號填充。
3)把EMPL表中何宜的生日、工資用1981年12月20日,3000元填充。4)把EMPL表中張山的部門號改為15號。5)把JOB表中參與104號項目的每人增加5天。6)把JOB表中參與103號項目的每人天數乘以系數0.8。
8、刪除記錄:
1)刪除地址為空的部門。
Delete from depa where addr=null 2)刪除JOB表中參與104號項目的員工。3)刪除JOB表中天數低于25天的員工。
4)刪除生于1980年后,且工資低于4000的員工。5)刪除屬于14號部門的員工。6)刪除15號部門的信息。
9.使用對象資源管理器分離和附加數據庫COMPANY
實驗2 數據庫的單表查詢、分組查詢與聚集函數的使用
一、實驗目的
本實驗的目的是使學生熟悉SQL Server Management Studio的使用方法。加深對SQL語言的查詢語句的理解。熟練掌握數據庫的單表查詢(包括投影、選擇條件表達,數據排序,模糊查詢等), 熟練掌握數據庫的分組、統計、計算和集合的操作方法。
二、實驗時數
2學時
三、實驗內容 1.簡單的SELECT查詢
1)查詢雇員表Empl中所有員工的詳細信息,并且列名用漢字表示。
select ENO AS 員工編號,ENAME AS 員工姓名,BIRTHDATE AS 出生日期,SALARY AS 工資,DNO AS 部門編號
from EMPL 2)查詢項目表Proj中所有項目的詳細信息,并且列名用漢字表示。
select PNO AS 項目編號,PNAME AS 項目名稱
from PROJ 2.使用WHERE子句進行查詢
1)查詢雇員表Empl中李強的員工編號。
select ENO AS 員工編號 from EMPL where ename='李強'
2)查詢項目表Proj中項目編號為“101”的項目名稱。
select PNAME AS 項目名稱 from PROJ where PNO='101'
3.使用DISTINCT關鍵字去掉重復行
1)查詢雇員表Empl中出現的所有部門編號,要求無重復。
select distinct ENO AS 員工編號 from EMPL 2)查詢工作表Job中參與過項目開發的所有員工編號,要求無重復。
select distinct ENO AS 員工編號
from JOB(為什么沒有項目的不會被選中)
4.使用ORDER BY子句對查詢結果進行排序
1)查詢雇員表Empl中所有員工的詳細信息,結果按員工姓名降序排列。
select ENO AS 員工編號,ENAME AS 員工姓名,BIRTHDATE AS 出生日期,SALARY AS 工資,DNO AS 部門編號 from EMPL order by ENAME DESC
2)查詢工作表Job中的工作信息,結果按工作天數升序排列。
select distinct ENO AS 員工編號,PNO,DAYS from JOB ORDER BY DAYS ASC
5.使用LIKE子句進行模糊查詢
1)查詢所有姓王的員工的編號及姓名,并且以員工編號及員工姓名作為列名。
select ENO AS 員工編號,ENAME AS 姓名 from EMPL where ENAME like '王%'
2)查詢雇員表Empl中姓名以“偉”字結尾的員工信息。
select ENO AS 員工編號,ENAME AS 員工姓名,BIRTHDATE AS 出生日期,SALARY AS 工資,DNO AS 部門編號 from EMPL where ENAME like '%偉'
6.使用聚集函數MIN、MAX進行查詢
1)查詢雇員表Empl中員工的最低工資,并且列名用“最低工資”表示。
select MIN(SALARY)as 最低工資
from EMPL 2)查詢雇員表Empl中員工的最高工資,并且列名用“最高工資”表示。
select MAX(SALARY)as 最低工資
from EMPL 7.使用聚集函數COUNT進行查詢
1)查詢雇員表Empl中所有員工的總人數,并且列名用“員工總數”表示。
select count(ENAME)as 員工總數
from EMPL 2)查詢14號部門的人數,并且列名用“客戶中心部人數”表示。
select count(DNO)as 客戶中心部人數 from EMPL
WHERE DNO='14'
8.使用分組子句GROUP BY與聚集函數MIN、MAX進行查詢 1)查詢每個部門中年齡最大的員工,顯示部門編號和出生日期。
select distinct max(BIRTHDATE)as 年齡,DNO AS 部門編號 FROM EMPL group by BIRTHDATE,DNO 2)分別統計雇員表Empl中各部門員工的最高工資,并且列名分別用“部門編號”及“最高工資”表示。
9.使用分組子句GROUP BY與聚集函數SUM、AVG進行查詢
1)分別統計雇員表Empl中各部門員工的工資總額,并且列名分別用“部門編號”及“各部門工資總額”表示。
SELECT DNO AS 部門編號,sum(SALARY)AS 工資綜合 from EMPL GROUP BY DNO
2)分別統計雇員表Empl中各部門員工工資的平均數,并且列名分別用“部門編號”及“各部門工資平均數”表示。
SELECT DNO AS 部門編號,AVG(SALARY)AS平均工資 from EMPL GROUP BY DNO
10.使用分組子句GROUP BY與聚集函數COUNT進行查詢
1)統計員工人數多于4人的部門信息,并且列名分別用“部門編號”及“員工人數”表示。
select
DNO AS 部門編號,count(ENAME)as 部門人數 from empl group by DNO having count(ENAME)> 4 2)分別統計工作表Job中各項目的參與開發的員工人數,并且列名分別用“項目編號”及“員工人數”表示。
select
PNO AS 項目編號,count(ENO)as 部門人數 from JOB group by PN
實驗3 數據庫的多表連接和子查詢
一、實驗目的
本實驗的目的是使學生加深對SQL和SQL語言的查詢語句的理解。熟練掌握數據庫的多表連接查詢和子查詢。
二、實驗時數
2學時
三、實驗內容 ㈠多表連接查詢:
1.對兩張數據表使用內連接進行查詢
1)查詢姓名為“王一偉”的員工所在部門的名稱,并且列名用漢字表示。
select dname 部門名稱 from depa,empl where empl.ename='王一偉' and empl.dno=depa.dno
2)查詢編號為“1002”的員工姓名及該員工所在部門的名稱,并且列名用漢字表示。
select ename 員工姓名,dname 部門名稱 from empl,depa where empl.eno='1002' and empl.dno=depa.dno
2.對多張數據表使用內連接進行查詢
1)查詢姓名為“陳晨”的員工參與過的所有項目的名稱,并且列名用漢字表示。
select empl.ename as 姓名,proj.pname as 項目名稱 from empl,job,proj where empl.eno=job.eno and job.pno=proj.pno and empl.ename='陳晨'
2)查詢編號為“1202”的員工姓名及該員工參與過的所有項目的名稱,并且列名用漢字表示。
select empl.ename as 姓名,proj.pname as 項目名稱 from empl,job,proj where empl.eno=job.eno and job.pno=proj.pno and empl.eno='1402'
3.對兩張數據表使用左連接進行查詢
1)使用左連接查詢所有員工的基本信息及參與項目開發情況,如果某員工參與過項目開發,則列出該員工所參與的所有項目的編號,否則該項以空值表示。
select empl.ename as 姓名,job.pno as 項目編號 from empl left outer join job on empl.eno=job.eno
2)使用左連接查詢所有員工的基本信息及所在部門名稱,如果某員工尚未分配到任何部門,則該員工的部門名稱項以空值表示。
select empl.ename as 姓名,depa.dname as 部門名稱 from empl left outer join depa on empl.dno=depa.dno
4.對兩張數據表使用右連接進行查詢
1)使用右連接查詢所有員工的基本信息及參與項目開發情況,如果某員工參與過項目開發,則列出該員工所參與的所有項目的編號,否則該項以空值表示。
select empl.ename as 姓名,job.pno as 項目編號 from job right outer join empl on empl.eno=job.eno
2)使用右連接查詢所有員工的基本信息及所在部門名稱,如果某員工尚未分配到任何部門,則該員工的部門名稱項以空值表示。
select empl.ename as 姓名,depa.dname as 部門名稱 from depa right outer join empl on empl.dno=depa.dno
㈡子查詢: 1.多表單值子查詢
1)查詢編號為1001的員工的部門名。
select depa.dname as 部門名稱 from depa where depa.dno =(select empl.dno from empl where empl.eno='1001')
2)查詢‘客戶中心’部門的員工數。
select count(empl.dno)as 部門人數 from empl
where empl.dno =(select depa.dno from depa where depa.dname='客戶中心')
3)查詢陳晨所在的項目編號。
select job.pno as 部門編號 from job where job.eno =(select empl.eno from empl where empl.ename='陳晨')
2.多表多值子查詢
1)查詢1985年以后出生的員工在所在項目的工作天數。
select job.days as 工作天數 from job where job.eno in(select empl.eno from empl where empl.birthdate > 1985)
2)查詢參與項目天數超過40天的員工姓名。
select empl.ename as 姓名 from empl where empl.eno in(select job.eno from job where job.days > 40)
3)查詢工資低于2000的員工的所屬部門。
select depa.dname as 部門名稱 from depa where depa.dno in(select empl.dno
from empl where empl.salary > 2000)
3.多層嵌套子查詢
1)查詢‘客戶中心'部門中,收入高于平均工資的員工。
select empl.ename as 工資高于平均工資的員工 from empl where salary >(select avg(empl.salary)from empl)and empl.dno in(select depa.dno from depa where depa.dname='客戶中心')
2)查詢“開發系統”項目的參與部門。
SELECT T1.DNAME FROM PROJ S1,JOB S2,EMPL S3,DEPA T1 WHERE T1.DNO = S3.DNO AND S3.ENO = S2.ENO AND S2.PNO = S1.PNO AND S1.PNAME = '開發系統'
3)查詢'宣傳'部門雇員參加的項目名稱。
SELECT T1.PNAME FROM PROJ T1,JOB S1,EMPL S2,DEPA S3 WHERE T1.PNO = S1.PNO AND S1.ENO = S2.ENO AND S2.DNO = S3.DNO AND S3.DNAME = '宣傳' 4.相關子查詢
1)查詢參與兩個項目以上的員工姓名。
SELECT T1.ENO,T2.ENAME FROM(SELECT ENO,COUNT(PNO)COUNT FROM JOB GROUP BY ENO HAVING COUNT(PNO)>=2)T1,EMPL T2
WHERE T1.ENO = T2.ENO
2)查詢所有未參與項目的員工姓名。
SELECT T1.ENAME FROM EMPL T1 WHERE T1.ENO NOT IN(SELECT ENO FROM JOB)
實驗4 數據庫的視圖與索引定義
一、實驗目的
本實驗的目的是使學生掌握索引與視圖的定義與維護操作,加深對索引與視圖在關系數據庫中的作用的理解。
二、實驗時數
2學時 [相關知識] 建立索引是加快查詢速度的有效手段。用戶可以根據應用環境的需要,在基本表上建立一個或多個索引,以提供多個存取路徑,加快查找速度。
視圖是根據子模式建立的虛擬表。一個視圖可以由一個表構造,也可以由多個表構造。查看和修改視圖就如同對表的操作一樣,非常容易。
三、實驗內容 ㈠索引 1.創建索引
1)為PROJ表的PNAME列創建非聚集索引Pindex。
create nonclustered index Pindex on proj(PNAME)
2)為DEPA表的DNAME(降序),ADDR兩列創建唯一非聚集索引Dindex。
CREATE UNIQUE INDEX Dindex ON DEPA(DNAME DESC,ADDR)3)在PROJ表的PNAME列上創建唯一非聚集索引Pindex,若該索引已存在則刪除后重建。
if exists(select* from sys.indexes where name='Pindex')DROP INDEX PROJ.Pindex else CREATE UNIQUE INDEX Pindex ON PROJ(PNAME)
2.查看索引
1)查看DEPA表的索引信息。
SELECT * FROM sys.indexes WHERE name='Dindex'
2)查看數據庫COMPANY索引使用的空間信息
select * from sys.dm_db_index_usage_stats
3.索引更名
1)將DEPA表的索引Dindex名更改為Dindex1。
exec sp_rename 'depa.Dindex','Dindex1' 4.刪除索引
1)刪除DEPA表的索引Dindex1。
DROP INDEX DEPA.Dindex1
㈡視圖 1.創建視圖
1)創建14號部門員工的視圖EMPL_14(ENO,ENAME,SALARY)。
CREATE VIEW EMPL_14(ENO,ENAME,SALARY)AS SELECT ENO,ENAME,SALARY FROM EMPL WHERE EMPL.DNO='14' GO SELECT * FROM EMPL_14
2)創建包含項目名與員工名及工作天數的視圖Prjemp。
CREATE VIEW PRJEMP(PNAME,ENAME,DAYS)AS SELECT PROJ.PNAME,EMPL.ENAME,JOB.DAYS FROM EMPL,JOB,PROJ WHERE EMPL.ENO=JOB.ENO AND JOB.PNO=PROJ.PNO GO SELECT * FROM PRJEMP
3)在視圖EMPL_14上創建工資在3000以上的員工的視圖EMPL_14H3。
CREATE VIEW EMPL_14H3(ENAME)AS SELECT ENAME FROM EMPL_14 WHERE SALSRY > 3000 GO SELECT * FROM EMPL_14H3
4)創建每個部門的平均工資的視圖E_AVG(DNO,SAVG)。
CREATE VIEW E_AVG(DNO,SAVG)AS SELECT DNO,AVG(SALARY)FROM EMPL GROUP BY DNO GO SELECT * FROM E_AVG
2.查詢視圖
1)根據視圖Prjemp查詢做'設計系統'項目的所有員工及工作天數。
SELECT ENAME,DAYS FROM PRJEMP WHERE PNAME='歷史學院檔案庫管理系統'
2)根據視圖E_AVG查詢‘客戶中心’的平均工資。
SELECT SAVG FROM E_AVG WHERE DNO=(SELECT DNO FROM DEPA WHERE DNAME='客戶中心')
3.更新視圖
1)在視圖EMPL_14中將1042號員工的姓名改為‘李立春’。
UPDATE EMPL_14 SET ENAME='李立春' WHERE ENO='1402'
2)向視圖EMPL_14中插入一條新記錄(1050,‘趙英’,3500)。
INSERT INTO EMPL(ENO,ENAME,SALARY,DNO)VALUES(1405,'趙英',3500,14)
3)刪除視圖EMPL_14中1042號員工的記錄。
DELETE FROM EMPL_14 WHERE ENAME='李立春'
4.刪除視圖
1)刪除視圖Prjemp。DROP VIEW PRJEMP
實驗5 數據庫的安全性控制
一、實驗目的
本實驗的目的是通過實驗使學生加深對數據安全性的理解,并掌握SQL Server中有關用戶,角色及操作權限的管理方法。
二、實驗時數
2學時
三、實驗內容
分別使用SQL語言和對象資源管理器完成以下操作:
1.建立數據庫登錄帳戶S1和D1,密碼均為1234,登錄帳戶S1默認數據庫分別為COMPANY,其它保持默認值。
(create login S1 with password='1234', default_database=COMPANY;create login D1 with password='1234')
2.將S1映射為COMPANY數據庫的同名數據庫用戶。
(create user S1 for login S1)
3.將D1映射為COMPANY數據庫的數據庫用戶,數據庫用戶名為S2。
(USE CONPANY GO create user S2 for login D1)
3. 對數據庫用戶授予權限
1)授予S1對EMPL表插入數據的權限,并驗證該權限(方法:通過登錄帳戶S1登錄SQL Server,然后插入一條數據來驗證該權限)。
GRANT INSERT ON EMPL TO S1;
2)授予S2創建表的權限,并驗證該權限(方法:通過登錄帳戶D1登錄SQL Server,然后創建-張表來驗證該權限)。
GRANT create table
TO S2;
3)收回S1對EMPL表插入數據的權限,并驗證該權限(方法:通過登錄帳戶S1登錄SQL Server,然后插入一條數據來驗證該權限)。
revoke select oN EMPL from S1
4.創建用戶角色
1)在COMPANY數據庫中創建角色MYROLE,授予該角色查詢和修改EMPL表的權限。
CREATE ROLE MYROLE Go GRANT SELECT,UPDATE ON EMPL TO MYROLE
2)將S1添加為角色MYROLE的成員,并驗證s1是否能夠查詢EMPL表。
exec sp_addrolemember MyRole,S1
3)將S2添加為角色MYROLE的成員,并驗證s2是否能夠修改EMPL表。
exec sp_addrolemember MyRole,S2
5.收回數據庫用戶權限
1)采用用戶角色方法收回S1和S2修改EMPL表的權限,并驗證S1是否還能修改EMPL表。
REVOKE SELECT,UPDATE FROM MYROLE
2)拒絕S2查詢 EMPL表的權限,并驗證S2是否還能查詢EMPL表。
revoke select oN EMPL from S1
實驗6 數據完整性
一、實驗目的
本實驗的目的是通過實驗使學生加深對數據完整性的理解,掌握數據完整性的約束條件,學會創建和使用觸發器。
二、實驗時數
2學時 [相關知識] SQL Server實現數據完整性的具體方法有4種:約束、缺省、規則和觸發器。觸發器是實施復雜完整性的特殊類型的存儲類型。觸發器不需要專門語句調用,當對它所保護數據進行修改時自動激活,以防止對數據進行不正確,未授權或不一致的修改。
三、實驗內容
1.創建包含非空約束字段的表
創建一個員工聯系信息表Contact,一共有3個字段: 雇員號(Eno)數據類型為4位長定長字符串; 電話(Tel)數據類型為8位長定長字符串; 地址(Addr)數據類型為20位變長字符串; 要求雇員號和電話不能為空。
create table Contact(Eno char(4)not null, Tel char(8)not null, Addr nvarchar(20))
2.創建包含唯一約束字段的表
創建員工郵箱表Mail,一共有2個字段: 雇員號(Eno)數據類型為4位長定長字符串; 郵箱地址(Mail)數據類型為20位變長字符串; 要求雇員號非空,郵箱地址唯一。
use company1 go create table Mail(Eno char(4)not null,Mail nvarchar(20))go alter table Mail add constraint Email unique(Mail)
3.創建包含主碼約束字段的表
創建一個員工卡信息表Card,一共有3個字段: 雇員號(Eno)數據類型為4位長定長字符串; 卡號(Cno)數據類型為8位長定長字符串; 開卡日期(Startday)日期格式; 要求雇員號和卡號聯合做主鍵。
use company1 go create table Card(Eno char(4)not null, Cno char(8)not null, Startday datetime)alter table Card add constraint E_C primary key clustered(Eno,Cno)
4.創建包含檢查約束字段的表
創建項目進度表Process,一共有3個字段: 項目號(Pno)數據類型為4位長定長字符串; 完成百分比(Percentage)數據類型為DECIMAL(3,2); 已用費用(Pem)數據類型為INT;
要求:⑴完成百分比用小數表示且數值小于1;
⑵已用費用的取值為0-100000(用規則實現)。
create table Process(Pno char(4)not null, Percentage DECIMAL(3,2)not null, Pem int)go alter table Process add constraint CK check(Percentage<1)create rule GZ as @Pem>0 and @Pem<=10000
go exec sp_bindrule GZ,'Process.Pem'
5.創建包含默認值約束字段的表
創建通勤表Commudity,一共有2個字段: 雇員號(Eno)數據類型為4位長定長字符串; 通勤標志(Flag)數據類型為1位定長字符串; 要求通勤標志默認為‘Y’。
create table Commudity(Eno char(4)not null, Flag char(1)not null)
alter table Commudity add constraint FL default 'Y' for Flag
6.創建包含外碼約束字段的表
1)創建部門經理表Mgr,一共有2個字段:
部門號(Dno)數據類型為4位長定長字符串 經理員工號(Eno)數據類型為4位長定長字符串 要求部門號是主鍵(用CONSTRAINT 約束實現)create table Mgr(Dno char(4)not null, Eno char(4))go alter table Mgr add constraint Dn primary key clustered(Dno)
2)創建部門收支表CHARGE,一共有2個字段:
部門號(Dno)數據類型為4位長定長字符串 收支(CHARGE)數據類型為DECIMAL(7,2)要求部門號是外鍵
create table CHARGE(Dno char(4)not null, CHARGE DECIMAL(7,2)not null)go alter table CHARGE add constraint Av primary key clustered(Dno)
alter table CHARGE add constraint DN foreign key(Dno)references Mgr(Dno)
7.創建觸發器
在表EMPL上創建一個觸發器EMPL_date,當更改員工編號時同步更改Job表中對應的員工編號。
實驗7 數據庫設計
一、實驗目的
使學生能夠對給定的實際需求,選擇一種編程語言或開發工具,完成數據庫設計,并實現數據的查詢等操作,從而掌握數據庫應用系統的設計方法和步驟。熟悉大型數據庫管理系統的結構與組成; 熟悉數據庫應用系統的設計方法和開發過程;
掌握一種大型數據庫管理系統(SQL SERVER或ORACLE)的應用技術和開發工具的使用;
熟悉數據庫設計工具的使用; 熟悉數據庫安全的相關知識和技術; 熟悉數據庫系統的管理和維護。
二、實驗時數
4學時
三、實驗內容
完整實踐數據庫應用系統設計的工程過程:需求分析概念設計邏輯設計物理設計實施編寫應用程序:
(1)需求分析:選定一個應用,對所設計的數據庫系統有一定的調研分析,其結果應該以簡單的需求分析說明書數據字典和數據流圖(2級數據流即可)表示;(2)概念分析:使用E-R圖作為描述工具.描述出局部和全局的E-R圖;(3)邏輯設計:將E-R圖轉化為相應的關系模式,并根據范式理論進行優化分析,關系模式不少于3個;
(4)物理設計:根據需要設計必要的索引等結構;
(5)實施:以某種DBMS為工具創建出完整的數據庫.在數據庫中要表現出的知識點包括: ①設置數據完整性(參照完整性、實體完整性、自定義完整性(包括觸發器)。②設置用戶,并相應設計用戶的權限和角色(用戶設計至少3個,有不同的權限)。
③建立存儲過程完成相關操作至少2個,以文件方式保存。④
(6)編寫應用程序:利用開發工具C++、JAVA、.NET平臺或其它動態網頁開發工具編寫應用程序;
(7)以上內容,請詳細描述,并有必要抓圖;(8)提交系統的源碼程序、設計性實驗報告。
實驗8 數據庫的備份與恢復
一、實驗目的
本實驗的目的是通過實驗使學生了解SQL Server的數據備份和恢復機制,掌握SQL Server中數據庫備份和恢復的方法。
二、實驗時數 2學時
三、實驗內容
分別使用SQL語言和對象資源管理器完成以下操作: 1.創建備份設備
創建一個名為company_dev的磁盤備份設備,其對應的文件是D:company_dev.bak,該備份設備用于COMPANY數據庫的備份。寫出創建該備份設備的SQL語句。2.對數據庫進行完全備份
對COMPANY數據庫進行一次完全備份,備份到company_dev備份設備中。并且寫出完成完全備份的SQL語句。3.對數據庫進行差異備份
對COMPANY數據庫完成完全備份后,往EMPL表中添加兩條新記錄。然后對COMPANY數據庫進行差異備份,并且寫出完成差異備份的SQL語句。4.對數據庫進行事務日志備份
對COMPANY數據庫完成差異備份后,執行SQL語句修改數據庫的內容。然后對COMPANY數據庫進行事務日志備份,并且寫出完成事務日志備份的SQL語句。5.模擬數據庫故障發生
模擬用戶不小心刪除了COMPANY數據庫,從而需要使用備份恢復數據庫。6.恢復最近的完全數據庫備份
作為恢復的第一步,使用完全備份恢復COMPANY數據庫。7.恢復完全備份之后的最近的差異數據庫備份
利用差異備份恢復COMPANY數據庫,并寫出相應的SQL語句。8.恢復完全或差異備份之后的數據庫事務日志備份
利用事務日志備份恢復COMPANY數據庫,并寫出相應的SQL語句。
第三篇:數據庫原理及應用實驗教學指導書
《數據庫原理及應用》實驗
本實驗與《數據庫原理及應用》課程相配套,適用于本校地理信息系統專業本科學生。實驗目的:
數據庫系統及應用實驗是本課程教學環節中的重要一環。數據庫系統及應用課程學習數據庫的建立和應用,需要通過大量的上機來驗證和熟悉數據庫管理軟件,通過本實驗學習,學習使用SQL Server,掌握數據庫的原理,能應用SQL Server做一些應用實踐,并能結合高級編程語言開發一些小型的項目,并進一步了解學習空間數據庫;
基本要求:
1)總體要求:學生實驗前,要認真閱讀實驗指導書,能夠按教學內容獨自使用SQL Server完成實驗,做好實驗報報告。
2)先修課程:計算機基礎、高級語言(C語言程序設計)、數據結構 3)本課程已開出11個實驗。
《數據庫原理與應用》對地理信息系統專業應開設11個實驗,其中綜合性實驗1個,設計性實驗9個,演示性實驗1個。
4)本實驗分組: 本實驗由單人單機完成。課程名稱: 數據庫原理與應用開課單位: 資源環境學院實 驗 室: GIS與RS實驗室 實驗代碼 實驗名稱
開課學期:第必修/
選修 必修 必修 必修 必修 必修 必修 必修 必修 必修 必修 必修學期 類型 演示 設計 設計 設計 設計 設計 設計 設計 設計 設計 綜合課實驗要求 時認識SQL2000,能夠注冊,連接2 服務器,了解工具欄各個命令在SQL Server環境下建立和維2 護數據庫建立表,修改表結構,建立索4 引,數據完整性描述掌握數據的插入、更新和刪除。2用SQL SELECT語句完成各種數6 據查詢定義視圖,并在視圖上完成查2 詢、插入、更新和刪除操作掌握存儲過程的建立和執行 2建立一組觸發器,并執行一些2 必要的數據操作使其被執行初步掌握以作為客戶端開發工2 具開發C/S應用的方法。初步掌握以作為客戶端開發工2 具開發C/S應用的方法。完成一個數據庫小系統的開發
類別
03031401 SQL Server界面與操專
作 業
03031402 建立數據庫 專
業
03031403 建立表和數據完整性 專
業
03031404 SQL 數據操作 專
業
03031405 SQL 數據查詢 專
業
03031406 視圖的定義和操作 專
業
03031407 存儲過程 專
業
03031408 觸發器 專
業
03031409 使用Visual FoxPro專
做客戶端開發 業
03031410 使用PowerBuilder做專
客戶端開發 業
03031411 系統開發 專
業
第四篇:實驗教學講稿
融匯實驗教學 彰顯物理學科魅力
什么是物理?我常給出的答案是“物理物理,就是以物明理的科學”;要求學習者要做到“眼中有物,心中有理”。那么“物”又來自于哪里?“物”就存在于生活之中,一個現象,一句話,一個故事,一件小事,一個幽默,一條新聞都有可能包含著物理知識,實驗更是“物”的重要組成部分。
眾所周知,物理學是一門以實驗為基礎的學科,物理實驗直觀生動,容易激發學生學習物理的興趣,形成準確的物理概念,加深理解和鞏固所學內容,利于培養學生實事求是的科學素養、嚴肅認真的科學態度和循序漸進的學習方法;因此實驗教學更是成為了物理教學實施新課程改革的重要基礎和手段,進行物理實驗教學是物理學科特點所決定的,同時也是新課改的重要組成部分。物理課由于實驗多,往往是學生最愛上的課,注意力最集中的課。
下面這張圖充分說明物理實驗的教育功能。通過實驗活動培養學生觀察、動手、動腦的能力,不少學生感到學習物理困難,其重要原因之一,就是不會把所學的知識用來研究具體物理問題。通過實驗,可以使學生養成善于分析、善于總結的良好的習慣,使學生感到物理知識親切,能解決生活中的具體問題。
物理實驗的教育功能動情動腦觀念態度動手思想方法操作技能
一 談實驗在教學中的地位和作用
對于實驗在教學中的地位和作用,有句順口溜“聽一聽,不在心;看一看,懂一半;練一練,心智能力都發展”;只有學生自己動手做過、動手練過,對知識和技能的掌握才是牢固的。
一 從實驗中來——激發學生的興趣
興趣是指一個人經常趨向于認識、掌握某種事物,力求參與某項活動,并且有積極情緒色彩的心理傾向。興趣的作用:
興趣的動力作用 興趣是推動人們進行求知活動和學習的重要的心理因素,它能使人集中精力,積極愉快地從事某種活動。凡是符合自己的興趣的活動,都容易提高人的積極性。
興趣的開發作用 興趣是開發潛能的鑰匙,一些學者曾經說過:所有智力方面的工作都要依賴于興趣。研究表明,興趣比智力更能促進學生努力學習,提高學習成績。
所以我們經常說,興趣是最好的老師,興趣是靈感的源泉。在課堂上如何激發學生的學習興趣調動起學習熱情便成了首要任務。1 利用實驗新奇的現象吸引學生 14、5歲的孩子正是好奇心強,對一切新奇的、神秘的事物感興趣的時候,利用孩子的這些特點,設計并進行現象新奇的實驗可以很好的吸引學生的興趣和注意力。
(1)如在《大氣壓強》這節課時,導課部分我是這樣設計的:視頻1大氣壓強導課
為什么很多人喜歡劉謙呢,就是因為他的魔術,使他這個人同他的魔術一樣具有了些神秘色彩。魔術的魅力就在于,它集知識性,科學性,趣味性于一體,抓住人們好奇求知的心理特點,制作出種種讓人不可思議,變幻莫測的假象,使人們難以識破其中奧秘,從而達到以假亂真的藝術效果。魔術能夠提高想象力,活躍大腦思維。但魔術一般是不揭秘的,很多魔術我們看了以后可能一輩子也不知道倒底是怎么回事,而我們在課堂上設置的“魔術”是必須當場揭秘的,這樣也就使學生對揭秘環節更加期盼。
(2)還有其他一些好的導課:視頻2平面鏡成像引入:
設置的懸念具有精短、新奇的特點。這節課開始,老師分別點燃玻璃板前后的兩支蠟燭,其實后面的他沒有點,但他故意用手擋一下,好象怕火滅了,學生以為他點了,那么學生的生活經驗告訴他們,火是怕水的,但令人驚呀的是,水真的沒有澆滅玻璃后面這蠟燭。從學生的表情可以看出,他們真的相信了這個現象,但他們真的不相信這個事實。這樣就使他們從簡單的好奇,變為迫切希望揭露迷底。
(3)視頻3光的折射引入:也有類似的效果。(4)視頻4機械能守恒:設置懸念,讓學生提心吊膽。
(5)視頻5吞蛋。瓶吞雞蛋的實驗,可以很好的引起學生的好奇心,從而產生學習興趣。(6)視頻6吞吐氣球
(7)視頻7 大氣壓強:見證奇跡的時刻
(8)視頻8 大氣壓強:兩個例子引課,時間有點長,我們在設計新課的時候,可能也會遇到類似的問題,這節課的引入有好多個有趣的小實驗,我們可能很難取舍,但不能羅列,選一個,我看哪個都行。
學起于思,思起于疑。初中學生的注意力難以持久,不能在一節課中始終如一的保持良好的聽課狀態,可以在講課過程中進行一些神秘的實驗。視頻9在講大氣壓強時,我做了一個不消氣的氣球,敞著口的氣球鼓鼓的;這個出人意料的現象,學生感覺神秘極了,當時我是在下午上課,學生有些困頓的時候我做了這個實驗;學生困意頓消,為了知道氣球不消氣的原因又聚精會神一絲不茍的繼續聽課。最好動的學生也全神貫注地聽完了整節課;有幾名同學回家以后還試著模仿這個實驗表演給家人看。
再如視頻10。教師要保護學生的學習興趣,保證學生學習興趣的延續。我個人認為,學生的最初級階段的學習可能是源于一種簡單的模仿,但我們不能讓學生的學習狀態停留在模仿的層面。因為只有模仿就不可能有超越。利用實驗營造和諧的氛圍
物理來自于生活,物理實驗更離不開生活。關注發生在學生身邊的生活現象或熱點問題,可以拉近物理知識和學生的距離,使學生產生親切感、認同感,為順利學習新知識作鋪墊。
在講流體壓強時,我先播放了在家拍的視頻“聽話的柚子”(視頻11),讓學生猜想柚子為什么會這么聽話?然后根據學生的猜想設計實驗(視頻12)。從熟悉的生活現象入手,學生喜聞樂見,實驗過程學生也就津津樂道,水到渠成。最后在分析一段生活中常見的現象:視頻13(粉色垃圾)整節課前后呼應。
另外,中學生缺乏思維的靈活性和敏捷性,教師要在其似懂非懂、似通非通處及時提出問題,問題設置要低起點、有梯度,采取追問方式,引導學生逐步解決問題。人的正常思維都有邏輯性的,所謂邏輯通常指人們思考問題,從某些已知條件出發推出合理的結論的規律。
在講液體壓強一課液體壓強的存在時:我提出的問題是:舉出液體壓強存在的事例,剛開始一切正常,直到有學生提到游泳時水會把人體壓變形,眾人皆笑;該生力爭。我建議他用實驗來說明問題,聰明的小伙子真的做了一個實驗(視頻14)從水對手套的作用效果入手說明液體壓強的存在。這是我事先沒有想到的一個實驗,從眾人皆笑到眾人皆驚現場效果相當熱烈,它的說服力也肯定不止于實驗現象本身這么簡單。
再如下面兩個例子:視頻15(大氣壓強導托里拆利實驗)視頻16:謝曉峰課:探究凸透鏡成像規律總結
這兩節課的特點是課堂輕松愉悅,老師不斷給學生創造展示的機會,老師毫不吝嗇對學生的贊賞和鼓勵,最終達到的目標就是,在老師的引導下,學生通過自主的探究,不僅完成常規的學習任務,還找到了新的解決問題的方法,最終體現了學生的主體地位,通過適當的引導或者是指點,真正的把學習和創造的空間留給學生。
3利用實驗賦予學生挑戰的體驗
“紙上得來終覺淺,是非經過不知難”,只有親身經歷過的事情,記憶才是最深刻的。同樣要想讓學生扎實掌握知識、理解到位,要想培養學生分析問題、解決問題的能力,就要在實驗教學中創設體驗性的情境,充分調動學生眼看、耳聽、口說、手動,讓學生去體會和感悟。
在教學中還可以充分利用學生的好勝心,安排一些挑戰性的實驗,從而起到激勵學生,增強學生學習動力的效果。
在講流體壓強時,為了讓學生體會“流速大,壓強小”,我安排了比賽“吹硬幣”(視頻17);學生通過一試身手,相互較量,交流吹硬幣的竅門,加深了對“流體壓強和流速的關系”的理解,提高了學習的興趣。
在課堂上留給學生一段感受和體驗的時間,如在講“蒸發吸熱”時,發給每個學生一團酒精棉,簡單的在手背上擦一擦,涼涼的感覺讓學生牢記了蒸發吸熱的“熱”來自于哪里,再做此類習題時決不會犯錯誤。看似占用了課堂一分鐘,卻節省了習題課上的十遍八遍的重復強調。這樣的“課上一分鐘,課后十分功”的例子還有像比較壓力的作用效果等。在講“顯微鏡和望遠鏡”一節時,如何幫助學生體會兩塊透鏡組合在一起的成像效果呢?我采用了創設體驗性情境的辦法,給每個小組發兩塊不同焦距的凸透鏡和一個極小的字,讓他們自己想辦法把字放大,如何放得更大;學生們自由發揮去體驗當年顯微鏡的發明過程;讓學生在體驗的過程中引起感官和思維的共鳴。
競爭是激發熱情的情境之一,競爭心理一旦形成,就有非決一高低不可之勢。物理教學的競爭情境是經常使用的激情方式。
例如視頻18(原14):
視頻19(原15):用激光筆射擊比賽,設種置一種競爭的氣氛,激發了學習熱情。
二 到實驗中去——-幫助學生理解知識
物理世界是豐富多彩的,中學物理實驗(包括教材中設置的眾多“小實驗”和“做一做”等)大大地促進了學生的認知發展,加強學生對知識的理解和鞏固。實驗,是建立物理概念和規律、理解和掌握物理知識的重要環節;學生通過物理實驗,可以大大豐富感性認識,深化與活化已掌握的物理知識。實驗與其它物理內容的密切聯系,可以使課堂教學得到不斷的延伸。如果把實驗作為教學的主要任務加以落實,在教學中科學合理的利用實驗,對幫助學生理解物理知識事半功倍。利用演示實驗,形成物理概念、得出物理規律,使學生感受倍深。在講大氣壓強存在時,我設計的演示實驗是(視頻20)永不墜落和(視頻21)逆流而上。這兩個實驗的共同特點是:沖擊!實驗現象和正常的思維相反,對學生的沖擊就像火星撞地球,從最初的疑惑到最后的認同,經過激烈的思想碰撞,印象深刻,記憶持久。利用分組實驗,進行手、眼、腦并用的有目的的探索活動,使學生真正進入角色。
在完成“影響液體壓強的因素”的探究實驗時,把演示改成了分組實驗。液體壓強的知識比較抽象,學生的認識很容易停留在表面現象,改為分組后,直觀感受影響液體壓強的因素,在親歷探究實驗過程的基礎上建立規律。3 利用實驗,加深學生對所學知識的理解,提高學生的能力,使學生觸類旁通。
學生在學習過程中常會遇到一些疑難知識,進入思維的誤區;對某些新的概念似懂非懂,對某些規律將信將疑;怎么幫助學生突破難點呢?做個小實驗就是個很好的辦法。
在教材 85頁習題 2題(加圖一):學生一時理解不了,這時我做了個小實驗(視頻22),通過比較橡皮膜突起程度明顯不同,問題迎刃而解。又如習題(加圖二):在完成這個實驗后(視頻23)就很好的解釋了此題。用實驗解題的好處就是說服力強,印象深刻;有時用語言不好準確表述的,用實驗一目了然。
學生是學習的主人,從觀察現象到總結規律,再到運用理論知識分析解決實際問題;要通過耳聽、眼觀、腦想、口述和手動來完成,因此,只有充分發揮學生的主體作用,才能把知識落到實處。
在講解燈的亮度由實際功率決定時,我們制作了演示板:視頻24 在“探究壓力作用效果與哪些因素有關實驗”中,為了讓學生深刻體會到壓力的作用效果,我選用了學生最熟悉的圓珠筆或圓規來完成實驗,體會筆壓手的作用效果(視頻25)。學生有切身感受。在講流體壓強時,設計了“吹紙杯”的小實驗(視頻26),效果也很好。
三 在實驗中得——有效培養非智力因素
教育的根本目的就是要提高人的基本素質。通過實驗,學生會從身邊熟悉的生活現象中去探究并認識物理規律,同時教師加以啟發,他們能將認識到的物理知識及科學研究方法應用于生產生活實際中,解釋和探索社會上更為復雜的物理現象。事實證明,學生在物理實驗探究活動中不僅能產生濃厚的興趣,而且還感受到了自己的失敗和錯誤,通過糾正錯誤,逐步走向正確,真正體會到成功的喜悅,對激發學生終身的探索興趣起著積極作用,有效地促進了學生科學能力的發展。
比如在講完壓強單元后播放了我在內蒙古呼和浩特拍到的視頻短片(視頻27),利用學生掌握的知識分析這個黑色的控制閥門(控制壓力,溫度,濕度的)和壓力表的作用。(加圖1)分析鍋蓋中墊圈的作用。(加圖2)分析這棵打吊瓶的樹。(加圖3)分析拔火罐的原理。在實驗過程中也看到了這樣的畫面(視頻28)學生的實驗操作能力還有待提高。
通過實驗,學生可以看到科學進化的實驗背景、儀器設備背景,尋覓到人類與自然作斗爭的歷史足跡;體察出實驗設計者獨具匠心的巧妙方法、用心良苦的教學思想。例如,各種各樣減少摩擦的方法,就反映出人類在與摩擦作斗爭的過程中智力和手段的進化。壇壇罐罐當儀器、拼拼湊湊做實驗不單單是解決一個實驗設備的問題,而是一種重要的教學思想。在教師的手中完成了一個又一個有趣實驗的那些日常生活中隨處可見的物品,無聲地在告訴學生,物理學就在你身邊,教師全神貫注地操作實驗,被實驗現象所吸引,特別是為實驗的成功、挫折而驚喜、擔憂,以自己在實驗中的情感體驗無意識地感染學生。這種無意識的感情流露,無不強烈地向學生傳達著一個信息,實驗的確是科學不可缺少的部分,它值得我們花時間和精力。這樣的效果比教師說實驗、要求學生如何如何重視要好得多。
下面我們來欣賞王顯峰老師輪軸這節課的一部分。(視頻29)
實驗改變了課堂的空間結構,這無聲的語言可以活躍課堂氣氛。拉近師生間心靈的距離,融洽師生關系,從而促進教與學的過程。在這樣的情境中,班級中平時學習成績并不好但活潑好動的學生往往成為了活躍分子。這一方面給了他們施展才能的機會,另一方面也往往使教師偶而觸動,改變對這些學生可能存在的成見。同時也更利于發現學生在學習上的困難。這樣就更有可能客觀公正地評價對待學生,而這些無形的因素對學生學習的影響有時往往是出人意料的。(圖片1)實驗成功的孩子激動的心情;(圖片2)發現“大氣壓可真大”時的興奮;(圖片3)動手實驗時的專心;(圖片4);準備做實驗時的信心(圖片5)觀察實驗時的聚精會神;(圖片6)興高采烈;(圖片7)挑戰實驗時的開心;這些都是無可替代的。
二 談實驗的改進與創新
有些實驗,照搬教材效果并不好,如對它做點簡單的改進,其效果就大不一樣,教師可以不拘泥于教材或教參的安排,進行一些創新設計。《標準》指出:“使用身邊隨手可得的物品,進行探究活動和各種實驗,可以拉近物理學與生活的距離,讓學生深切地感受到科學的真實性,感受到科學和社會、科學和日常生活的關系。”著名物理教育家朱正元教授曾說過“壇壇罐罐當儀器,拼拼湊湊做實驗”,就是說在物理實驗教學中要大力倡導做簡單易行的替代性實驗。其實,研究和制作一些簡單實用的實驗器材,本身就是培養實踐能力的有效方式,學生身邊的物品和器具同樣是物理資源。我們應結合實際情況,就地取材、修舊利廢、因陋就簡,創造條件進行實驗教學,這些小實驗往往具有取材容易、貼近生活、直觀明了、便于操作的特點。
例如,我在08年參加吉林省十佳物理教師評選的時候,就有一道題:可樂瓶是人們日常生活中用于裝飲料用的,請用可樂瓶盡可能多的設計物理實驗。
①探究聲音的音調:在幾只相同的塑料瓶中裝上不同深度的水,然后用嘴對著瓶中吹氣,會發出音調高低不同的聲音,從而可以說明音調跟頻率的關系。
②摩擦起電:把一只小塑料瓶在頭皮上反復摩擦幾下,然后將其靠近一些小紙屑,發現小紙屑被吸引,說明用摩擦的方法可使物體帶電,帶電體能吸引輕小物體。③光的直線傳播:在一只塑料瓶中裝入一定量的水,在其中加入適量的豆奶粉,擰緊瓶蓋,充分搖勻,將激光筆發出的光透過瓶底,對著瓶蓋照射,會看到光沿直線傳播的光柱,效果明顯。(此實驗還可說明光能在液體中傳播)
④探究白色和黑色物體吸熱能力的強弱:用白紙和黑紙包住兩個裝滿水的塑料瓶,在太陽光下照射相同的時間后,看看誰的溫度升得高。溫度升得越高,說明其吸收的熱量就越多,其吸熱能力就越強。
此外用塑料瓶做的實驗還很多,例如可以替代燒杯、量筒、漏斗、溢水杯等實驗器材,聲音與能量、阿基米德原理的演示、潛水艇模型、土電話、噴泉、閉口浮沉子等的實驗裝置等。
下面我們就來看看這樣的具有創新的實驗:
1、水能傳聲 視頻30 2 機翼的升力 視頻31 3燈箱 視頻32 4 磁推車 視頻33 5 排簫 視頻34 6 簡易電動機 視頻35 7視頻36(yuan10)平面鏡成像
利用這樣的方式來演示平面鏡成象原理,非常有創意。光線本身就是我們抽象出來的一種模型,那么我們就用模型來演示模型,非常新穎。和課件對比,你更相信那個真實? 8視頻37(9)凸透鏡成像
用發光二極管取代了傳統的蠟燭,清潔,清晰,操作方便;利用大光屏,放大情景,使實驗現象更明顯更直觀。
9、壓縮空氣引火儀的使用、氣體對外做功的改進;圖片
10、摩擦起電的做法;圖片
11、壓力作用效果的改進;圖片
12、光的直線傳播用空氣清新劑,牛奶稀釋,蚊香等 圖片
13、重力勢能用橡皮泥等 圖片
三談實驗教學的有效實施
教育的關鍵不在于向受教育者傳授現成的結論。因為現成的結論,只是對以往問題的探究結果,他們往往是經過提煉的、條例清楚的。現實中的問題并非如此。我們日常生活中,遇到的問題總是復雜的、多層次的、多關聯的。我們認識和解釋問題所運用的概念,往往是模糊的。如果學生不接觸現實問題,只是學習前人的結論,那么他們永遠不會了解和掌握思維的原則和技巧,永遠也不能真正認識現實的世界。換句話說,教師不僅要告訴學生亞里斯多德有那些思想,更重要的是向學生呈現他是怎么想的,要給他們科學思維的原料,而不是成品。要向他們呈現問題的復雜性、模糊性。這就要求我們的教師在教學中,要給學生以思維的空間,教會學生獨立思考和自主探究。
一、探究式教學
探究式教學日益成為初中物理教學課堂的主要教學方式,對學生是一種極好的鍛煉,對教師的素質卻是極大的考驗,教師除了要認真解讀、領悟探究式教學中蘊涵的思想,樹立真正的教育觀念外,還應該根據探究式教學的要求,改變自身的教學行為,學習新的教學理念,教學策略,總結教學過程中的實踐經驗和教訓,才能使探究式教學有效的實施。
探究基本過程和模式:提出問題、猜想與假設、制定計劃與設計實驗、進行試驗與收集證據、分析與論證、評估、交流與合作。1.對反射定律的研究 播放視頻
(1)視頻16:利用反射實驗器材研究光的反射,教師捕捉時機,因勢利導。這里實驗中所用的器材,是傳統的演示器材,能夠演示反射和折射規律,缺點是不能反映出三線共面,而上課的老師把這個實驗器材進行了改造,制成了可以研究三線共面的光具盤。
(2)視頻17:通過描畫反射光路研究反射定律,上課的老師沒有使用教材中介紹的實驗裝置,也沒有使用剛才我們看到的反射定律演示器,而是不拘泥于教材、權威、專家的思路,將探究實驗加以改進,創造性地設計了對光的反射的研究過程,既降低了實驗的成本,又增強了實驗的可操作性,使得實驗的難度降低,節省了教學的時間,提高了教學時效。
(3)視頻18:利用粘在黑板上的激光筆研究光的反射定律,跟前一位老師比,這套實驗器材,也可以在黑板上畫出描畫出光路圖,可以通過演示的方式探究光的反射定律,可見度更大了。
(4)視頻19:粘在黑板上的激光筆演示光路可逆,有時候演示的效果是非常明顯的,上課老師的這一段設計,增大了可見度,把復雜的問題簡單化。2.鏡面反射和漫反射的研究
播放視頻20:作圖比較鏡面反射和漫反射,這是一個更簡便的教學設計,可以看出上課老師在板書設計方面花費了一番心思,看似平淡的作圖考查,為后面鏡面反射、漫反射的教學埋下了伏筆。一經教師點破,便產生了化腐朽為神奇的效果,而這一環節的過渡,完全可以用巧妙來描述了。3.平面鏡成像規律的研究(1)視頻21:為什么用玻璃而不用平面鏡,設計實驗方案時,教師沒有為學生直接提供實驗器材及實驗方法,也沒有直接告訴學生怎樣做,而是引導學生設計實驗、探索方案,上課老師在這里成功地進行了角色轉變,讓學生做學習的主人,自己則成為學生學習的伙伴。
(2)視頻22:用復寫紙使鏡后變暗,剛才這節課,沒有學生問,老師也沒有講,鏡后的蠟燭其實不應該點燃,為什么不能點燃呢?因為這樣進入人眼的光有兩種,一種是前面蠟燭反射的光,這個光進入人眼越多,看到的虛像越清楚,還有一種是鏡子后面蠟燭透射過來的折射光,這個光越多,看到平面鏡成的像越不清楚。例如:教室里的玻璃晚上可以當鏡子用。晚上,我們身體射上玻璃的光主要來自于燈光,通過玻璃窗看到的像比較清晰,而白天我們站在玻璃窗前,我們身體射向玻璃的主要來自于太陽,光要比晚上射向玻璃窗的光更多,但是我們卻不容易通過玻璃窗看到鏡子中的虛像,就是因為白天由玻璃窗外面透射過來的光更多,相比之下反射光被淡化了。再比如,貼了膜的汽車玻璃,由車內看車外很清楚,由車外看車內很模糊,也是這個道理。
所以平面鏡成像實驗中,放在鏡后的蠟燭最好不點燃。而這節課,為了使效果觀察到的像的效果更明顯,在鏡子后面放了復寫紙,以降低鏡后的亮度。更容易觀察到像,更易于確定像的位置。
(3)視頻23:人物模擬平面鏡成像,模擬平面鏡中的像--一個簡單的人體側軀運動,又讓學生體悟到平面鏡的特點,氣氛輕松活躍,這個做游戲的學生一生都不會忘記,平面鏡成像的對稱性。
(4)視頻24:平面鏡成像軸對稱關系有創意,引導學生將實驗記錄紙對折,從而總結出像與物關于平面鏡“對稱”的結論,方法巧妙自然,過程流暢。4.折射規律的研究 視頻錄相
(1)視頻25:光的折射路徑超聲波加濕器,自制實驗儀器對折射規律的研究效果好,用水霧產生器解決了光路可見的難題,雖然水霧的濃淡還需調節略嫌麻煩,但光源的位置,光線的方向、角度的可調節性,清晰的光路圖讓學生產生興趣。略感不足的是儀器結構較為復雜,操作也略顯繁瑣。
(2)視頻26:折射定律演示儀(薄玻璃盒),相比之下這個操作就更實用,更簡便了。
5.視頻27:液體壓強跟哪些因素有關 6.視頻28:研究凸透鏡成像規律的數據理視頻 7.視頻29:研究浮力大小
這個探究過程是按照提問、猜想、實驗、總結猜想、再實驗的程序進行。“浮力大小跟哪些因素有關”、通過實驗提練出有價值的猜想,再將猜想分類、根據分類進而要探究浮力跟某因素有什么關系,再實驗等環節設計。但總覺得其中最后一個猜想:“浮力大小跟排開液體的重、排開液體的體積有關”這個是很難猜到的,學生的認知水平和思維習慣來看,多數會把目光集中在受浮力的這個物體上,如果猜不到,老師就必須出手做適當引導,把這事也得引出來。也就是說老師得引導學生做科學的猜想,即便這樣,學生的猜想仍可能是不科學的,也仍有可能有猜不出來的。或者我們認為是不科學的,可能這就是課堂時間和學生探究實踐之間的矛盾,我們不能滿足學生在有限的課堂時間通過探究驗證或者排除他們認為有關的因素。我們只能從理論上排除一些。找幾個不適合猜想或按探究模式進行的探究:(1)視頻30:如何測量大氣壓,學生沒法猜想,只能通過老師引導,一步一步的對研究方案進行改進,最后達到目的。這個設計非常適合學生的認知邏輯,也附和托里拆利實驗的原發展過程。其中研究大氣壓支撐水柱時,可再更換更長玻璃管。(介紹用利用日光燈管做這個實驗的一個改進過程,現象明顯)不足之處,最后改進到用水銀取代水來做這個實驗,水銀有毒,不提倡在課堂演示,但教參有配套的錄象,我覺得這個環節寧可放錄象也不用課件,課件的可信度要大大降低了。
(2)視頻31:測量大氣壓,這節課利用皮碗這套器材測量大氣壓強,這是教材上的內容,可以讓學生體驗測量過程,但這里體現的物理量之間的轉換關系更復雜更難理解一些。
二、物理教學常用的思想方法分析
研究物理的科學方法有許多,經常用到的有觀察法、實驗法、比較法、類比法、等效法、轉換法、控制變量法、模型法、科學推理法等。
研究某些物理知識或物理規律,往往要同時用到幾種研究方法。如在研究電阻的大小與哪些因素有關時,我們同時用到了觀察法(觀察電流表的示數)、轉換法(把電阻的大小轉換成電流的大小、通過研究電流的大小來得到電阻的大小)、歸納法(將分別得出的電阻與材料、長度、橫截面積、溫度有關的信息歸納在一起)、和控制變量法(在研究電阻與長度有關時控制了材料、橫截面積)等方法。可見,物理的科學方法題無法細致的分類。只能根據題意看題中強調的是哪一過程,來分析解答。在中考中并不會考察學生每種方法的名稱,但他的思想滲透了整個教學過程。
下面我們將一些重要的實驗方法進行一下分析。
一、控制變量法
物理學研究中常用的一種研究方法——控制變量法。所謂控制變量法,就是在研究和解決問題的過程中,對影響事物變化規律的因素或條件加以人為控制,使其中的一些條件按照特定的要求發生變化或不發生變化,最終解決所研究的問題。
可以說任何物理實驗,都要按照實驗目的、原理和方法控制某些條件來研究。
如:導體中的電流與導體兩端的電壓以及導體的電阻都有關系,中學物理實驗難以同時研究電流與導體兩端的電壓和導體的電阻的關系,而是在分別控制導體的電阻與導體兩端的電壓不變的情況下,研究導體中的電流跟這段導體兩端的電壓和導體的電阻的關系,分別得出實驗結論。通過學生實驗,讓學生在動腦與動手,理論與實踐的結合上找到這“兩個關系”,最終得出歐姆定律I=U/R。
為了研究導體的電阻大小與哪些因素有關,控制導體的長度和材料不變,研究導體電阻與橫截面積的關系。
為了研究滑動摩擦力的大小跟哪些因素有關,保證壓力相同時,研究滑動摩擦力與接觸面粗糙程度的關系。
利用控制變量法研究物理問題,注重了知識的形成過程,有利于扭轉重結論、輕過程的傾向,有助于培養學生的科學素養,使學生學會學習。中學物理課本中,涉及控制變量法的實驗有:(1)響度與哪些因素有關(2)蒸發快慢與哪些因素的有關;(3)電阻跟長度、橫截面積、材料的關系實驗
(4)探究電阻上的電流跟兩端電壓的關系;電流與電阻關系(5)研究電流做功的多少跟哪些因素有關系;(6)焦耳定律(電流產生熱量跟哪些因素有關)(7)電磁鐵磁性強弱跟哪些因素有關(8)同種物質質量和體積的關系實驗;(9)重力大小與什么因素有關系
(10)探究摩擦力大小跟什么因素有關實驗;(11)探究壓力作用效果與什么因素有關實驗;(12)探究液體內部壓強跟哪些因素有關實驗;(13)浮力大小跟哪些因素有關(14)機械效率與哪些因素有關;
(15)動能、重力勢能大小與哪些因素有關;
二、轉換法
一些比較抽象的看不見、摸不著的物質的微觀現象,要研究它們的運動等規律,使之轉化為學生熟知的看得見、摸得著的宏觀現象來認識它們。這種方法在科學上叫做“轉換法”。如:分子的運動,電流的存在等,如:空氣看不見、摸不到,我們可以根據空氣流動(風)所產生的作用來認識它;分子看不見、摸不到,不好研究,可以通過研究墨水的擴散現象去認識它;電流看不見、摸不到,判斷電路中是否有電流時,我們可以根據電流產生的效應來認識它;磁場看不見、摸不到,我們可以根據它產生的作用來認識它。再如,有一些物理量不容易測得,我們可以根據定義式轉換成直接測得的物理量。在由其定義式計算出其值,如電功率(我們無法直接測出電功率只能通過P=UI利用電流表、電壓表測出U、I計算得出P)、電阻、密度等。中學物理課本中,測不規則小石塊的體積我們轉換成測排開水的體積;我們測曲線的長短時轉換成細棉線的長度;在測量滑動摩擦力時轉換成測拉力的大小;大氣壓強的測量(無法直接測出大氣壓的值,轉換成求被大氣壓壓起的水銀柱的壓強)測硬幣的直徑時轉換成測刻度尺的長度;測液體壓強(我們將液體的壓強轉換成我們能看到的液柱高度差的變化);通過電流的效應來判斷電流的存在(我們無法直接看到電流);通過磁場的效應來證明磁場的存在(我們無法直接看到磁場);研究物體內能與溫度的關系(我們無法直接感知內能的變化,只能轉換成測出溫度的改變來說明內能的變化);在研究電熱與電流、電阻的因素時,我們將電熱的多少轉換成液柱上升的高度;在我們研究電功與什么因素有關的時候,我們將電功的多少轉換成砝碼上升的高度;密度、功率、電功率、電阻、壓強(大氣壓強)等物理量都是利用轉換法測得的;在我們回答動能與什么因素有關時,我們回答說小球在平面上滑動的越遠則動能越大,就是將動能的大小轉換成了小球運動的遠近。以上列舉的這些問題均應用了這種科學方法。
轉化的思想在被利用的時候,總是要用到“反映”這個詞:
(1)在研究聲音能傳遞能量時,用燭焰的跳動反映聲音能傳遞能量。(2)在光的傳播實驗中,用煙霧、水霧等物質的反射來反映光的傳播路徑。(3)通過溫度計內液柱高度(液體熱脹冷縮程度)變化,反映溫度。(4)通過燈的亮度變化反映電路中電流的變化。
(5)研究電阻大小跟哪些因素有關時,通過電路中電流的變化反映電阻的大小。
(6)通過燈的亮度反映燈的實際功率
(7)通過煤油溫度的變化反映電路中產生電熱的多少(8)通過鐵屑在磁場中的分布情況反映磁場的分布情況(9)通過小磁針在磁場中受力情況反映磁場的特點(10)通過力的作用效果反映力的三要素不同(11)通過形變程度反映彈力的大小
(12)通過小球對外做功的多少反映動能的大小(13)擴散反映分子的無規則運動
(14)在物態變化、比熱容實驗中,利用加熱時間反映物質吸收熱量的多少。
三、積累法
在測量微小量的時候,我們常常將微小的量積累成一個比較大的量、比如在測量一張紙的厚度的時候,我們先測量100張紙的厚度在將結果除以100,這樣使測量的結果更接近真實的值就是采取的積累法。
要測量出一張郵票的質量、測量出心跳一下的時間,測量出導線的直徑,均可用積累法來完成。
四、理想化物理模型
實際現象和過程一般都十分復雜的,涉及到眾多的因素,采用模型方法對學習和研究起到了簡化和純化的作用。但簡化后的模型一定要表現出原型所反映出的特點、知識。模型法有較大的靈活性。每種模型有限定的運用條件和運用的范圍。
中學課本中很多知識都應用了這個方法,比如有: 液柱、(比如在求液體對豎直的容器底的壓強的時候,我們就選了一個液柱作為研究的對象簡化,簡化后的模型依然保留原來的特點和知識);光線、(在我們學習光線的時候光線是一束的,而且是看不見的,我們使用一條看的見的實線來表示就是將問題簡化,利用了理想化模型);液片、(在我們研究連通器的特點,求大氣壓時我們都在某一位置取了一個液面,研究該液面所受到的壓強和壓力,也是將問題簡化,利用理想化模型法);光沿直線傳播(在我們學習中我們知道真正的空氣是各處都不均勻的,比如越往上空氣越稀薄,在比如因為空氣各處不均勻形成了風,而在光是沿直線傳播一節中我們將問題簡化,只取一個簡單的模型,一條光線在均勻的介質中傳播)。
勻速直線運動;(生活中很少有一個物體真正的做勻速直線運動,在我們研究問題的時候勻速直線運動只是一個模型)
磁感線(磁感線是不存在的一條線,但是我們為了便于研究磁場我們人為的引入了一條線,將我們研究的問題簡化。)
五、科學推理法
當你在對觀察到的現象進行解釋的時候就是在進行推理,或說是在做出推論,例如當你家的狗在叫的時,你可能會推想有人在你家的門外,要做出這一推論,你就需要把現象(狗的叫聲)與以往的知識經驗,即有陌生人來時狗會叫結合起來。這樣才能得出符合邏輯的答案
如:在進行牛頓第一定律的實驗時,當我們把物體在越光滑的平面運動的就越遠的知識結合起來我們就推理出,如果平面絕對光滑物體將永遠做勻速直線運動。
如:在做真空不能傳聲的實驗時,當我們發現空氣越少,傳出的聲音就越小時,我們就推理出,真空是不能傳聲的。
六、歸納法
是通過樣本信息來推斷總體信息的技術。要做出正確的歸納,就要從總體中選出的樣本,這個樣本必須足夠大而且具有代表性。在我們買葡萄的時候就用了歸納法,我們往往先嘗一嘗,如果都很甜,就歸納出所有的葡萄都很甜的,就放心的買上一大串。
比如銅能導電,銀能導電,鋅能導電則歸納出金屬能導電。在實驗中為了驗證一個物理規律或定理,反復的通過實驗來驗證他的正確性然后歸納、分析整理得出正確的結論。
在阿基米德原理中,為了驗證F浮=G排,我們分別利用石塊和木塊做了兩次實驗,歸納、整理均得出F浮=G排,于是我們驗證了阿基米德原理的正確性,使用的正是這種方法。
在驗證杠桿的平衡條件中,我們反復做了三次實驗來驗證F1×L1=F2×L2也是利用這種方法。
一切發聲體都在振動結論的得出(在實驗中對多種結論進行分析整理并得出最后結論時),都要用到這一方法。
在驗證導體的電阻與什么因素有關的時候,經過多次的實驗我們得出了導體的電阻與長度,材料,橫截面積,溫度有關,也是將實驗的結論整理到一起后歸納總結得出的。
在所有的科學實驗和原理的得出中,我們幾乎都用到了這種方法。
七、比較法(對比法)
當你想尋找兩件事物的相同和不同之處,就需要用到比較法,可以進行比較的事物和物理量很多,對不同或有聯系的兩個對象進行比較,我們主要從中尋找它們的不同點和相同點,從而進一步揭示事物的本質屬性。
如,比較蒸發和沸騰的異同點;如,比較汽油機和柴油機的異同點 ;如,電動機和熱機;如,電壓表和電流表的使用。
利用比較法不僅加深了對它們的理解和區別,使同學們很快地記住它們,還能發現一些有趣的東西。
八、圖像法
用圖像法來描述物理過程具有形象直觀的特點,可以清晰地描述出其變化的動態特征,把物理量之間的相互依賴關系和線性關系、周期性等清晰地呈現出來。熱學:(1)熔化、凝固圖像,(2)液體沸騰,(3)比熱容 電學:(4)電阻的電流電壓關系圖像
力學:(5)速度圖像,(6)密度圖像,(7)壓強(8)浮力
九、等效法
等效是在保證效果或結論不變的前提下,用一個量去替換另一個或另一些量。(1)總電阻就是用一個量替代多個量。
(2)阿基米德用皇冠排出的水的體積替代皇冠的體積。我們用量筒借排水法來測固體體積,都是用等效法。
(3)分析較復雜電路時,將電流表看成導線,將電壓表看成斷路。當學生學完物理以后,讓他們腦子里有一點物理的知識,能夠把這些知識跟實際聯系起來,遇到一些問題,他們能夠真正下手去解決。當前我們的物理教學,沒有使學生學到能“用”的程度,還只停留在“做題”上。(放羊娃的故事,同樣適用于我們的老師的做題思想)把每一件簡單的事做好就是不簡單,把每一件平凡的事做好就是不平凡。很多小事,一個人能做,另外的人也能做,只是做出來的效果不一樣,往往是一些細節上的功夫,決定著完成的質量。視頻匠心: 以上只是談了一些個人簡單看法,可能不夠全面,也不夠成熟,但愿能夠拋磚引玉,謝謝大家!
第五篇:數據庫原理總結
1關系的范式及規范化
范式是衡量關系模式優劣的標準。范式級別越高,其數據冗余和操作異常現象就越少。第一范式:如果一個關系模式R的所有屬性都是不可分的基本數據項,則這個關系屬于第一范式。第二范式:若關系模式R屬于第一范式,且每個非主屬性都完全函數依賴于主鍵,則R屬于第二范式。第三范式:若關系模式R屬于第一范式,且每個非主屬性都不傳遞依賴于主關鍵字,則R屬于第三范式。BC范式:若關系模式R屬于第一范式,且每個屬性都不傳遞依賴于主關鍵字,則R屬于BC范式。
2對模式的分解顯然不是隨意的,主要涉及以下兩個原則:無損聯結:當對關系模式R進行分解時,R的元組將分別在相應屬性集進行投影而產生新的關系。如果對新的關系進行自然聯接得到的元組的集合與原關系完全一致,則稱為無損聯結。保持依賴:當對關系模式R進行分解時,R的函數依賴集也將按相應的模式進行分解。如果分解后總的函數依賴集與原函數依賴集保持一致,則稱為保持依賴。
3事務的定義:事務是數據庫的邏輯工作單位,由用戶定義的一組操作序列組成,序列中的操作要么全做要么全不做。
4簡述事務所具有的ACID(原子性,一致性,隔離性,持續性)特性:事務的ACID特性是: 原子性:事務是一個不可分割的單位。一致性:事務對數據庫操作的結果是將數據庫從一個一致性狀態變為另一個一致性狀態。隔離性:多個事務的并發執行不互相干擾。持續性:事務一旦提交,它對數據庫中數據的改變就是永久性的。5事務的調度:事務的執行次序稱為調度。若多個事務是按照某一次序串行地執行,則稱事務的調度是串行調度。若多個事務同時交叉地并行執行,則稱事務的調度為并發調度。
6事務并發執行產生的不一致情況及避免:并發操作可能會產生丟失修改,不能重復讀和讀”臟”數據這三種不一致情況,采用封鎖機制來進行并發控制,可避各種不一致情況。一級封鎖協議可以避免丟失修改,二級封鎖協議可以避免丟失修改和讀”臟”數據,三級封鎖協議可以避免丟失修改、不能重復讀和讀”臟”數據。
7事務的COMMIT語句和ROLLBACK語句的功能是什么?答:COMMIT語句表示事務執行成功地接結束(提交),此時告訴系統,DB要進入一個新的正確狀態,該事務對DB的所有更新都已交付實施(寫入磁盤)。ROLLBACK語句表示事務執行不成功地結束(應該“回退”)此時告訴系統,已發生錯誤,DB可能處在不正確的狀態,該事務對DB的所有更新必須被撤消,DB應恢復該事務到初始狀態。
8活鎖和死鎖:活鎖:在多個事務并發執行的過程中,可能會存在某個總有機會獲得鎖的事務卻永遠也沒得到鎖的現象,可以通過“先來先服務”的策略預防活鎖的發生。死鎖:在多個事務并發執行過程中,多個并發事務處于相互等待的狀態的現象。
9死鎖的預防:數據庫當中預防死鎖的方法有兩種。第一種方法是要求每個事務必須一次性地將所有要使用的數據加鎖或必須按照一個預定的加鎖順序對使用到的數據加鎖。第二種方法是每當處于等待狀態的事務由可能導致死鎖時,就不再等待下去,強行回滾該事務。
10完整性約束的定義:關系數據庫提供的三類完整性約束:實體完整性、參照完整性和用戶自定義完整性。實體完整性:實體完整性約束是指任何基本表(關系)的主鍵(主關鍵字)中的每一個屬性列都不能取空值,即基本表中的每一個元組在主鍵上的分量都有值。參照完整性:根據參照完整性原則,用戶只要定義了某一個關系(基本表)的外鍵(外部關鍵字),系統就會控制外鍵的值要么為空,要么等于被參照關系中某一個主鍵的值,這就是系統對外鍵的一種約束。用戶定義完整性:用戶定義完整性約束條件的作用對象可以是屬性列、元組或關系(基本表),其中對屬性列的約束可以規定屬性列的數據類型、取值范圍等;對元組的約束可以規定元組中各屬性間的相互關系;而對關系的約束則可以規定各元組間或關系間的相互聯系。
11故障恢復的原則:對數據庫的影響有兩種可能性:一是數據庫本身被破壞;二是數據庫沒有被破壞,但數據可能不正確,這是因為事務的運行被非正常終止造成的。12恢復算法一般由兩部分組成:在正常事務處理時采取措施,保證有足夠的冗余信息可用于故障恢復。故障發生后采取措施,將數據庫內容恢復到某個保證數據庫一致性、事務原子性及持久性的狀態。
13數據庫在運行過程中可能產生的故障有哪幾類? 答:1)事務故障:事務在運行過程中由于種種原因,如輸入數據的錯誤,運算溢出,違反了某些完整性限制,某些應用程序的錯誤,以及并行事務發生死鎖等,使事務未能運行到正常中指點之前就被撤消了,這種情況稱為“事務故障”。2)系統故障:系統故障是指系統在運行過程中,由于某些原因,如OS和DBMS代碼錯誤,操作員操作事物。特定類型的硬件錯誤(CPU故障),突然停電等造成系統停止運行,致使事物在執行過程中以非控方式中指。這時。內存中的信息丟失,而存儲在外存儲上的數據未受影響,這種情況稱為“系統故障”。3)介質故障:系統在運行過程中,由于某種硬件故障,如磁盤損壞,磁頭碰撞,或由于OS的某種潛在的錯誤。瞬間強磁場干擾,使存儲在外存的數據部分損失或全部損失,稱之為“介質故障”。14故障恢復技術:數據轉儲、日志文件、檢查點方法、數據庫鏡像
15關系的完整性約束:域完整性約束:關系中屬性的值應是域中的值,并由語義決定其能否為空值。實體完整性約束:關系中的主鍵不能為空值。參照完整性約束:關系的外鍵必須是另一個關系主鍵的有效值或者是空值。用戶自定義完整性約束:正對某一具體數據的約束條件,由應用環境決定。
16故障恢復原理是冗余可分為副本和日志。恢復算法:在正常事物處理時采取措施,保證有足夠的冗余信息可用于故障恢復、故障發生后采取措施,將數據庫內容恢復到某個保證數據庫一致性、事物原子性及持久性的狀態。
17事務故障的恢復:事務故障是指事務在運行至正常終止點前被中止,這時恢復子系統應利用日志文件撤消(UNDO)此事務已對數據庫進行的修改。事務故障的恢復是由系統自動完成的,對用戶是透明的,系統的恢復步驟是:⑴ 反向掃描文件日志(即從最后向前掃描日志文件),查找該事務的更新操作。⑵ 對該事務的更新操作執行逆操作。即將日志記錄中“更新前的值”寫入數據庫。這樣,如果記錄中是插入操作,則相當于做刪除操作(因此時“更新前的值”為空)。若記錄中是刪除操作,則做插入操作,若是修改操作,則相當于用修改前值代替修改后值。⑶ 繼續反向掃描日志文件,查找該事務的其他更新操作,并做同樣處理。⑷ 如此處理下去,直至讀到此事務的開始標記,事務故障恢復就完成了。
18系統故障的恢復:系統故障造成數據庫不一致狀態的原因有兩個,一是未完成事務對數據庫的更新可能已寫入數據庫,二是已提交事務對數據庫的更新可能還留在緩沖區沒來得及寫入數據庫。因此,恢復操作就是要撤銷故障發生時未完成的事務,重做已完成的事務。系統恢復步驟如下:正向掃描日志文件,即從頭掃描日志文件,找出在故障發證前已經提交的事務,將其事務標示記入重做隊列,同時找出故障發證時尚未完成的事務,將其事務標識計入撤銷隊列、對撤銷隊列中的各個事務進行撤銷處理、對重做隊列中的各個事務進行重做掃描
19日志文件作用及建立原因:答:日志文件是用來記錄事務對數據庫的更新操作的文件。目的是進行事物故障恢復;進行系統故障恢復;協助后備副本進行介質故障恢復。
20三級模式:三級模式結構:數據庫的三級模式由外模式、概念模式和內模式三級模式構成。概念模式:簡稱模式,又稱數據庫模式、邏輯模式。一個數據庫只有一個概念模式,它是數據庫系統三級模式結構的中間層,概念模式是數據庫中全體數據的邏輯描述,而不是數據庫本身,它是裝配數據的一個結構框架。外模式:外模式簡稱子模式,又稱用戶模式,是數據庫用戶能夠看見和使用的局部數據的邏輯結構和特征的描述,是數據庫用戶的數據視圖,是用戶與數據庫系統之間的接口。一個數據庫可以有多個外模式,設置外模式的優點如下:方便用戶使用,簡化用戶接口、保證數據的獨立性、有利于數據共享、有利于數據安全和保密。內模式:內模式也稱存儲模式。是對數據庫中數據物理結構和存儲方式的描述,是數據在數據庫內部的表示形式。一個數據庫只能有一個內模式。21兩級映像:外模式/概念模式映像:外模式/概念模式映像定義了各個外模式與概念模式間的映像關系。概念模式/內模式映像:概念模式/內模式映像定義了數據庫全局邏輯結構與存儲結構之間的對應關系。
22兩極結構的獨立性:物理數據獨立性:如果數據庫內模式要修改,即數據庫的物理結構有所變化,那么只要對概念模式/內模式做相應的修改即可。概念模式/內模式提供了數據的物理數據獨立性。邏輯數據獨立性:如果概念模式要修改,例如增加記錄類型或增加數據項,那么只要對外模式/概念模式映像做相應的修改,就可以使外模式和應用程序盡可能保持不變。這樣,就稱數據庫打到了邏輯數據獨立性。外模式/概念模式映像提供了數據的邏輯獨立性。
23數據庫技術的發展階段:工管理階段(數據部保存、沒有對數據進行管理的軟件系統、沒有文件的概念、一組數據對應于一個程序,數據時面向應用的)、文件系統階段(數據需要長期保存在外存上供反復使用、程序和數據之間有了一定得獨立性、文件的形式已經多樣化、數據的存取基本以記錄為單位)、數據庫系統階段(數據結構化、數據共享、減少數據冗余、具有較高的數據獨立性、方便用戶接口、統一的數據管理與控制功能)
某校與教學管理相關的3個關系模式的結構如下: 學生(學號、姓名、年齡、性別、所在系)課程(課程號、課程名、開課系、任課教師)學習(學號、課程號、成績)試進行如下操作:
1.創建“教學”數據庫,在“教學”數據庫中創建“學生”、“課程”、“學習”這3個基本表,并說明主鍵和外鍵。2.使用SQL的查詢語句表達下列查詢(1)查詢劉老師所授課程的課程號和課程名(2)查詢年齡大于23歲的男學生的學號和姓名
(3)查詢至少修讀劉老師所授課程中一門課程的女學生和姓名(4)查詢王樂同學不學的課程的課程號(5)查詢至少修讀兩門課程的學生學號
(6)查詢全部學生都修讀的課程的課程號與課程名(7)查詢修讀課程中包含劉老師所授課程的學生學號
3)SELECT 姓名 FROM 學生 WHERE 性別=‘女’ AND EXISTS(SELECT * FROM 學習WHERE 學習.學號=學生.學號 AND 課程號 IN(SELECT 課程號 FROM 課程 WHERE 任課教師 LIKE ‘劉%’))4)SELECT 課程號 FROM 課程 WHERE NOT EXISTS(SELECT * FROM 學習WHERE 學習.課程號=課程.課程號 AND 學號 IN(SELECT 學號 FROM 學生 WHERE 姓名=‘王樂’))5)SELECT 學號 FROM 學生 GROUP BY 學號 HAVING COUNT(*)>=2 6)SELECT 課程號,課程名 FROM 課程 WHERE NOT EXISTS(SELECT * FROM 學生 WHERE NOT EXISTS(SELECT * 學號 FROM 學習WHERE 學習.課程號=課程.課程號 AND 學習.學號=學生.學號))7)SELECT 學號 FROM 學習WHERE EXISTS(SELECT * FROM 學習WHERE 課程號 IN(SELECT * FROM 課程號 FROM 課程 WHERE 任課教師 LIKE ‘劉%’))試用SQL查詢語句表達下列對教學數據庫中3個基本表“學生”、“課程”、“學習”的查詢(1)統計有學生修讀的課程門數(2)求修讀C4課程的學生的平均年齡
(3)求劉老師所授課程的每門課程的學生平均成績
(4)統計每門課程學生的修讀人數(超過10人的課程才統計),要求輸出課程號和修讀人數,查詢結果按人數降序排列,若人數相同,按課程號升序排列(5)查詢學號比王樂同學大,而年齡比他小的學生姓名(6)查詢姓名以王打頭的所有學生的姓名和年齡(7)在“學習”表中檢索成績為空值的學生學號和課程號(8)求年齡大于女同學平均年齡的男學生姓名和年齡(9)求年齡大于所有女同學年齡的男學生姓名和年齡 SELECT COUNT(DISTINCT 課程號)FROM 學習
SELECT AVG(年齡)FROM 學生 WHERE EXISTS(SELECT * FROM 學習WHERE學生.學號=學習.學號 AND 課程號=’C4’)SELECT AVG(成績)FROM 學習WHERE GROUP BY 課程號 HAVING 課程號 IN(SELECT 課程號 FROM 課程 WHERE 任課教師 LIKE ‘劉%’)SELECT 課程號,COUNT(*)AS C_COUNT FROM 學習HAVING C_COUNT>10 ORDER BY C_COUNT DESC,課程號
SELECT 姓名 FROM 學生 WHERE 學號>ALL(SELECT 學號FROM 學生WHERE 姓名=’王樂’)AND 年齡
(2)在基本表“學生”中查詢每一門課程成績都大于等于80分的學生學號、姓名和性別,并把查詢到的值送往另一個已存在的基本表“結果”(學號,姓名,性別)中(3)在基本表“學習”中刪除尚無成績的元組
(4)把王樂同學在“學習”基本表中的課程和成績全部刪除(5)把修讀Java課程不及格的成績全改為空值(6)把低于總平均成績的女同學成績提高5%(7)在基本表“學習”中修改C4課程的成績,若成績小于等于75分時提高5%,若成績大于75分時提高4%(用兩個UPDATE語句實現)INSERT INTO 學生 VALUES(‘S009’,’吳’,18)INSERT INTO 結果(學號,姓名,性別)SELECT學號,姓名,性別 FROM 學生 WHERE NOT EXISTS(SELECT * FROM 學習WHERE 學生.學號=學習.學號 AND 成績<80)DELETE FROM 學習WHERE 成績 IS NULL DELETE FROM 學習WHERE 學號 IN(SELECT 學號 FROM 學生 WHERE 姓名=’王樂’)UPDATE 學習SET成績=NULL WHERE 成績<60 AND 課程號 IN(SELECT 課程號 FROM 課程 WHERE 課程名=’JAVA’)UPDATE 學習SET 成績=成績*1.05 WHERE 成績<(SELECT AVG(成績)FROM 學生)UPDATE 學習SET 成績=成績*1.04 WHERE 成績>75 AND 課程號=’C4’ UPDATE 學習SET 成績=成績*1.05 WHERE 成績<=75 AND 課程號=’C4’