第一篇:數據庫原理實驗報告
南 京 曉 莊 學 院
《數據庫原理與應用》
課程實驗報告
實驗二 數據庫的創建、管理、備份及還原實驗
所在院(系): 數學與信息技術學院 班級:
學號:
姓名:
1.實驗目的
(1)掌握分別使用SQL Server Management Studio圖形界面和Transact-SQL語句創建和修改數據庫的基本方法;
(2)學習使用SQL Server查詢分析窗口接收Transact-SQL語句和進行結果分析。
(3)了解SQL Server的數據庫備份和恢復機制,掌握SQL Server中數據庫備份與還原的方法。
2.實驗要求
(1)使用SQL Server Management Studio創建“教學管理”數據庫。
(2)使用SQL Server Management Studio修改和刪除“教學管理”數據庫。(3)使用Transact-SQL語句創建“教學管理”數據庫。
(4)使用Transact-SQL語句修改和刪除“教學管理”數據庫。(5)使用SQL Server Management Studio創建“備份設備”;使用SQL Server Management Studio對數據庫“教學管理”進行備份和還原。(6)SQL Server 2005數據庫文件的分離與附加。(7)按要求完成實驗報告
3.實驗步驟、結果和總結實驗步驟/結果
(1)總結使用SQL Server Management Studio創建、修改和冊除“TM”(教學管理)數據庫的過程。
一、使用SQL Server Management Studio創建數據庫的步驟如下:
a.在磁盤上新建一個目錄,如在C:盤中新建“MyDB“目錄
b.在wimdows系統“開始“菜單中,依次選取”程序->Microsoft SQL Server 2005->SQL Management Studio” ,打開SQL Server Management Studio并連接到SQL Server 2005服務。
c.在“對象資源管理器“中單擊SQL Server服務器前面的“+”號或直接雙擊數據庫名稱,展開該服務器對象資源樹形結構,然后右鍵點擊“數據庫”文件夾,在彈出的快捷菜單上選擇“新建數據庫”選項
d.在打開的“新建數據庫”對話窗口中輸入數據庫名稱“教學管理”,在該窗口中“數據庫文件”設置部分可以修改數據文件和日志文件的文件名、初始大小、保存路徑等。
e.單擊“確定”按鈕,創建“教學管理”數據庫。
二、使用SQL Server Management Studio修改和刪除“教學管理”數據庫
1、使用SQL Server Management Studio圖形界面直接修改“教學管理”數據庫名為“TM”
2、使用SQL Server Management Studio圖形界面查看和修改數據庫屬性 a.在快捷菜單中選擇“屬性”項進入
使用
3.使用SQL Server Management Studio圖形界面刪除數據庫 在第一幅圖中的快捷菜單中選擇“刪除”項
(2)總結在實驗中為創建、修改和刪除“教學管理”數據庫所編寫的各條T-SQL語句及其完成了什么功能。
1、創建:
CREATE DATABASE 教學管理 ON PRIMARY(Name=JXGL, FileName='C:MyDBJXGL_Data.mdf', Size=3MB, MaxSize=100MB, filegrowth=1MB)LOG ON(Name=JXGL_Log, FileName='C:MyDBJXGL_Log.ldf', Size=1MB, MaxSize=UNLIMITED, FileGrowth=10%);點擊執行
2、使用Transact-SQL語句修改和刪除“教學管理”數據庫
增加數據文件。例如,在數據庫“教學管理”中增加數據文件JXGL_EXT,需要在數據庫查詢編輯器中輸入代碼:
在增加數據文件之前,要先獲得修改權限,即alter database數據庫句法,然后再添加數據文件。具體參數也有5項,與創建數據文件相同,在添加數據文件項中,name項是必不可少的。
編寫T—SQL語句,刪除“教學管理”數據庫中的數據文件或日志文件,注意不能刪除非空文件。如刪除剛添加到數據庫中的數據文件“jxgl_ext1” 實例代碼如下: ALTER DATABASE 教學管理
REMOVEFILE jxgl_ex1——刪除數據庫文件時應指定其邏輯名稱
SQL語句刪除數據庫?刪除了數據庫“教學管理” drop database 教學管理
檢查所輸入SQL語句有無語法錯,確認正確后, 按F5鍵或單擊“執行”按鈕,這樣就刪除了數據庫“教學管理”。
(3)總結使用SQL Server Management Studio備份與還原數據庫的幾種方法。
1、創建“備份設備”
2、對數據庫“TM”進行備份
1)打開 SQL Server Management Studio,右擊需要備份的數據庫,從彈出的快捷菜單中依次選擇【任務】--【備份】命令,打開【備份數據庫】對話框。如下圖所示:
(2)在【備份數據庫】對話框的【常規】頁面中根據需要選擇需要備份的【數據庫】,在本示例選擇備份數據庫.接下來還可以選擇【備份類型】、備份集的名稱等相關參數。默認情況下,備份操作會所數據庫中的數據備份到 SQL SERVER 數據庫的默認工作目錄
(3)切換【備份數據庫】對話框中的【選項】頁面。在此頁面中,可以根據需要進行相應的設置。例如,可以根據需要將現有數據備分到現有的備份集中,也可使用數據庫中的當前數據覆蓋現有的備份集。除此之外。還可以設置備份操作的可靠性選項。
單擊【確定】按鈕,即可執行備份操作。一旦備份操作結束。SQL SERVER 數據庫系統將彈出名為 Microsoft SQL Server Management Studio 的對話框,提示備份已成功完成。
3、使用“TM”數據庫完整備份還原數據庫到備份完成時點的數據庫狀態 通過 SQL Server Management Studio 還原數據庫
使用 SQL Server Management Studio 進行數據還原操作的步驟如下所示:
(1)右擊【數據庫】節點,從彈出的快捷菜單中選擇【還原數據庫】命令,打開【還原數據庫】對話框,如下圖所示:
在[還原數據庫]對話框中的[常規]頁面中,選擇[目標]下拉列框中的[源數據庫]選項。
[選擇用于還原的備份集]列表框中將顯示用于還原TM數據庫的可用備份集,備份集,且[目標數據庫]將會被同時設置為TM
在“還原數據庫”的窗口中選擇“選項”頁,在“還原選項”選項區域中選擇“覆蓋現有數據庫”復選框,單擊確定。還原操作完成后,打開“TM”數據庫,可以看到TM數據庫已進行還原
4.實驗思考:
①SQL Server 2005物理數據庫包含了哪能幾種類型的文件以及它們的作用? SQL Server2005數據庫具有三種類型的文件:
主數據文件
主數據文件是數據庫的起點,指向數據庫中的其他文件。每個數據庫都有一個主數據文件。主數據文件的推薦文件擴展名是.mdf。它將數據存儲在表和索引中,包含數據庫的啟動信息,還包括一些系統表,這些表記載數據庫對象及其他文件的位置信息。
次要數據文件
除主數據文件之外的所有其他數據文件都是次要數據文件。某些數據庫可能不含有任何次要數據文件。次要數據文件的推薦文件擴展名是.ndf。
日志文件
SQL Server具有事物功能,日志文件包含著用于恢復數據庫的所有日志信息。每個數據庫必須至少有一個日志文件,當然也可以有多個,建立數據庫時,SQL Server會自動建立數據庫的日志文件。日志文件的推薦文件擴展名是.ldf。②數據庫備份與轉儲包含那些原理?
備份(backup)實際就是數據的副本,備份的目的是為了防止不可預料的數據丟 失和應用錯誤。
轉儲(restore)是指當數據文件或控制文件出現損壞時,將已備份的副本文件還原到原數據庫的過程
數據庫轉存實現熱備份恢復功能。通過修改初始化文件里的路徑,實現轉存。啟 動到MOUNT狀態下,將所有數據文件和日志文件通過ALTER DATABASE RENAME FILE '原始路徑/名稱' TO '當前路徑/名稱';然后將數據庫打開,重建TEMP tablespace即可。數據轉儲是數據庫恢復中采用的基本技術。
所謂轉儲即dba定期地將數據庫復制到磁帶或另一個磁盤上保存起來的過程。當數據庫遭到破壞后可以將后備副本重新裝入,將數據庫恢復到轉儲時的狀態。靜態轉儲:在系統中無運行事務時進行的轉儲操作。靜態轉儲簡單,但必須等待 正運行的用戶事務結束才能進行。同樣,新的事務必須等待轉儲結束才能執行。顯然,這會降低數據庫的可用性。動態轉儲:指轉儲期間允許對數據庫進行存取或修改。動態轉儲可克服靜態 轉儲的缺點,它不用等待正在運行的用戶事務結束,也不會影響新事務的運行。但是,轉儲結束時后援副本上的數據并不能保證正確有效。因為轉儲期間運行的 事務可能修改了某些數據,使得后援副本上的數據不是數據庫的一致版本。為此,必須把轉儲期間各事務對數據庫的修改活動登記下來,建立日志文件(log file)。這樣,后援副本加上日志文件就能得到數據庫某一時刻的正確狀態。轉儲還可以分為海量轉儲和增量轉儲兩種方式。海量轉儲是指每次轉儲全部數據庫。
增量轉儲則指每次只轉儲上一次轉儲后更新過的數據。
從恢復角度看,使用海量轉儲得到的后備副本進行恢復一般說來更簡單些。但如 果數據庫很大,事務處理又十分頻繁,則增量轉儲方式更實用更有效。
③如果數據或日志文件非空不能刪除,查找SQL Server中縮小文件大小的方法。
在SQL Server中,所有對數據庫執行的更新操作都會記錄在數據庫的事務日志文件中,除非將數據庫設為可自動收縮的或手動的對數據庫進行了收縮,否則事務日志文件將一直增長,直到達到事先設定的日志文件增長上限或用盡所有可用的磁盤空間。如果當前的數據庫文件或日志文件過大,可以使用以下兩個命令對其進行收縮: DBCC SHRINKDATABASE:收縮指定數據庫的所有數據和日志文件的大小 DBCC SHRINKFILE:收縮數據庫的某個指定數據或日志文件的大小
這兩個命令可以釋放數據庫中的空閑空間,并將數據庫或指定的數據庫文件收縮到指定的大小,但收縮后的數據文件或日志文件的大小不會小于文件中現存的有效數據所占空間的大小。在使用以上命令收縮日志文件的時候需要注意,已寫入數據庫但未被截斷的事務日志記錄是 不會被收縮的,因為雖然這部分日志記錄的信息已經寫入數據庫文件,但在使用事務日志備份進行數據庫還 原的時候,還將用到其中的信息。
對于使用簡單恢復模型的數據庫,事務日志會在每次處理檢查點(CheckPoint)時自動被截 斷。
對于使用完全恢復模型或大容量日志記錄恢復模型的數據庫,事務日志只有在執行日志備份(BACKUP LOG)時才會被截斷,這時事務日志中記錄的信息被寫入事務日志備份文件,而它們所占用的這部分空間被標記為可用(即被截斷)。
截斷事務日志并不會使日志文件變小,但可以將其中的部分空間釋放供以后寫入新的日志記錄使用。若要減少日志文件的物理大小,則要使用上面提到的
在執行BACKUP LOG語句的時候,還可以使用WITH NO_LOG(或WITH TRUNCATE_ONLY,含 義相同)參數,這時并不真正備份事務日志,而只是截斷事務日志中的非活動部分
(這和普通的BACKUP LOG語句作用相同)。這適合于剩余磁盤空間不夠進行事務日志備份或不打算保 留事務日志中的非活動部分用于數據庫恢復的情況。避免事務日志文件增長過快以致用盡所有磁盤空間的現象發生
一種辦法是將數據庫設為使用簡單恢復模型,這樣可以使SQL Server周期性的自動截斷事務日志的
非活動部分,并回收其占用的空間供以后寫入事務日志記錄使用。但這將使數據庫無法利用事務日志備份還原到即時點,降低了數據庫的可靠性,因此一般不應用于生產型數據庫。對于生產型數據庫,推薦的做法是使用完全恢復模型,并定期進行數據庫的完全備份和事務日志備份。例 如每周執行一次完全備份,每天執行一次事務日志備份,這可以通過SQL Server企業管理器中的數據庫 維護計劃向導很方便的實現(一般可以設為在每天夜里業務不繁忙的某個時刻自動執行備份)。
通過定期執行數據庫的事務日志備份,可以避免日志文件的迅速增大,而使其保持一個比較穩定的大小。
雖然數據庫備份文件也會占用很多磁盤空間,但隨時可以將這些文件移到其他磁盤上或在不需要它們的時候將其刪除,而且可以在出現故障或誤操作的時候方便的進行數據庫的還原。
由于數據文件的大小是隨數據庫中數據量的增長而增長的,數據庫中已刪除的數據所占的空間可以供新插 入的數據使用;而在定期執行了事務日志的備份后,我們可以將日志文件的大小控制在一個比較合理的范 圍。因此,一般不需要對數據庫進行收縮,也不推薦將數據庫設為自動收縮模式。
減小事務日志文件大小的
首先在該數據庫中執行CHECKPOINT命令,然后將該數據庫分離(Detach),再將與其對應的數據庫日志 文件(.ldf文件)改名或刪除或移動到其他目錄下,然后執行sp_attach_single_file_db存儲過程或在企業管 理器中重新將其附加(Attach)。由于找不到原來的日志文件,SQL Server將自動為該數據庫建立一個大 小只有504K的日志文件。但這種方法必須暫時將數據庫脫機,因此一般不適宜在生產環境中使用。
1、建議首先備份數據庫(但不是必需的):
BACKUP DATABASE database_name TO backup_device
2、備份事務日志:
BACKUP LOG database_name TO backup_device 如果不需要當前事務日志中的記錄進行數據庫還原或沒有足夠的空間進行事務日志備份的 的話,也可僅執行以下命令截斷事務日志: BACKUP LOG database_name WITH NO_LOG
3、收縮事務日志文件:
DBCC SHRINKFILE(log_file_name)其中log_file_name是事務日志文件的邏輯名稱,可以在企業管理器中數據庫屬性的“事務 日志”頁中看到(如Northwind數據庫的默認事務日志文件邏輯名稱為Northwind_log)。
4、如果日志文件仍然較大的話,可以嘗試重復執行一次 BACKUP LOG WITH NO_LOG和DBCC SHRINKFILE命令。
5、如果這時仍沒有明顯的效果,請執行DBCC OPENTRAN(database_name)檢查當前數據庫中是否存在長時間未提交的活動事務。有必要的話,可以斷開這些連接并重新嘗試截斷事務日志和收縮日志文件。
6、事務日志文件收縮完成后,建議立即執行一次數據庫的完全備份并根據實際需要制定適當的數據庫備份計劃。④思考后續實驗過程中,你計劃采用哪種方法備份自己的數據庫實驗操作結果?并說明為什么采用該方法。
答:數據庫備份有四種類型
? 完全備份 ? 事務日志備份 ? 差異備份
? 文件備份 采用完全備份
完全備份就是指對某一個時間點上的所有數據(包含用戶表、系統表、索引、視圖和存儲過程等所有數據庫對象)或應用進行的一個完全拷貝。
實際應用中就是用一盤磁帶對整個系統進行完全備份,包括其中的系統和所有數據。
這種備份方式最大的好處就是只要用一盤磁帶,就可以恢復丟失的數據。因此大大加快了系統或數據的恢復時間。
第二篇:數據庫原理實驗報告
南 京 曉 莊 學 院
《數據庫原理與應用》
課程實驗報告
實驗一 SQL Server 2005常用服務與實用工具實驗
所在院(系): 數學與信息技術學院 班級:
學號:
姓名:
1.實驗目的
(1)了解Microsoft 關系數據庫管理系統SQL Server的發展歷史及其特性。(2)了解SQL Server 2005的主要組件、常用服務和系統配置。
(3)掌握Microsoft SQL Server Management Studio 圖形環境的基本操作方法。了解使用“SQL Server 2005 聯機從書”獲取幫助信息的方法;了解“查詢編輯器”的使用方法;了解模板的使用方法。
2.實驗要求
(1)收集整理Microsoft關系數據庫管理系統SQL Server的相關資料,總結其發展歷史及SQL Server 2005主要版本類別和主要功能特性。
(2)使用SQL Server配置管理器查看和管理SQL Server 2005服務。
(3)使用Microsoft SQL Server Management Studio連接數據庫;使用SQL Server幫助系統獲得所感興趣的相關產品主題/技術文檔。
(4)使用Microsoft SQL Server Management Studio“查詢編輯器”編輯并執行Transact-SQL查詢語句。
(5)查看Microsoft SQL Server 2005模板,了解模板的使用方法。(6)按要求完成實驗報告。
3.實驗步驟、結果和總結實驗步驟/結果
(1)簡要總結SQL Server系統發展歷史及SQL Server 2005主要版本類別與主要功能特性。
(2)總結SQL Server Management Studio的主要操作方法。
(3)總結查詢編輯器的功能和主要操作方法,并舉例說明。
(4)總結“模板”的使用方法,并舉例說明。
4.實驗思考:
查詢相關資料,簡要描述SQL Server 2005的主要服務。
第三篇:數據庫原理上機實驗報告
廣西科技大學理學院《數據庫原理》上機實驗報告
實驗序號與實驗名稱:實驗九:用戶管理和權限管理
姓名:薛亞妮學號:201000901045
專業班級:信計101實驗日期:2012年 12月15日
一、實驗目的:理解和體會數據庫安全性的內容,加強對DBMS功能的認識。
二、實驗內容:數據庫的用戶管理和操作權限管理。
三、程序源代碼:
1、對象操作授權
sp_grantdbaccess 201000901035
grant select on 產品1045 to 201000901035
grant create view,create table to 201000901035
grant execute on sp_getgoods to 2010009010352、在授權過程中體會GRANT命令中WITH GRANT OPTION 短語的作用。
--用戶201000901045--
grant select on產品1045 to [201000901035] WITH GRANT OPTION
--用戶201000901035--
grant select on 產品1045 to [201000901035]
As [201000901035]
3、分情況收回授權,并體會REVOKE命令中GRANT OPTION FOR和CASCADE
--短語的作用
revoke select on 產品1045 from 201000901035
revoke create view,create table to 201000901035
revoke grant option for select on 產品1045 from 201000901035 CASCADE
四、實驗結果分析與總結
安全性控制是數據庫管理員(或系統管理員)的一個重要任務,他要充分利用數據庫管理系統的安全功能,保證數據庫和數據庫中數據的安全。
授權登錄用戶為當前數據庫用戶 :
sp_grantdbaccess [@loginame =] login
[,[@name_in_db =] name_in_db]
使一個登錄用戶成為數據庫用戶只是授權的第一步,數據庫管理員可以進一步為能夠連接到自己所管理數據庫的用戶在該數據庫上授予所需要的權限.收回權限:收回語句授權 :REVOKE { ALL | statement_list } FROM name_list
收回對象授權 :
REVOKE [GRANT OPTION FOR]
{ ALL [ PRIVILEGES ] | permission_list }
{[(column_list)] ON { table | view } | ON { table | view } [(column_list)]
| ON stored_procedure| ON user_defined_function }
FROM name_list
[ CASCADE ]
[ AS { group | role } ]
禁止語句權限: DENY { ALL | statement_list } TO name_list
禁止對象權限: DENY { ALL [ PRIVILEGES ] | permission_list }
{[(column_list)] ON { table | view } | ON { table | view } [(column_list)]
| ON stored_procedure| ON user_defined_function }
TO name_list
[CASCADE]
第四篇:數據庫原理及技術實驗報告2
《數據庫原理及技術》實驗報告
姓名: 莫鴻斌
學號:201601030137
班級:2016級計算機科學與技術
實驗日期: 2018-3-16
一、實驗項目
了解SQL Server2012常用組件
二、實驗目的
1.掌握SQL Server Management Studio的運用; 2.掌握SQL Server 2012常用組件;
3.如何使用SQL Server Management Studio創建數據庫及表。
三、實驗內容
1.了解SQL Server2012常用組件;
2.使用SQL Server management studio創建數據庫factory,要求將數據庫文件factory_data.MDF存放在E:data下面,其文件初始大小5MB,自動按5MB增長,將事務日志文件factory_log.LDF存放在E:data目錄下,其文件大小按1MB自動增長。3.在數據庫factory下創建如下表: 職工表(職工號(int),姓名(char(10)),性別(char(2)),出生日期(datetime),黨員否(bit),參加工作時間(datetime),部門號(int)),其中職工號作為主鍵。部門表(部門號(int),部門名(char(10)),其中部門號作為主鍵。工資表(職工號(int),發放年份(int),發放月份(int),工資(decimal(6,1))),其中職工號、年份、月份作為主鍵。
4.建立第三步創建的表之間的參照完整性規則。5.在上述表中輸入數據,每個表至少10條記錄。6.備份數據庫,考走以備下次試驗使用。
四、實驗環境
安裝有SQL Server2008的PC一臺。
五、實驗步驟及結果
1.了解SQL Server2012常用組件;
2.使用SQL Server management studio創建數據庫factory;要求將數據庫文件factory_data.MDF存放在E:data下面,其文件初始大小5MB,自動按5MB增長,將事務日志文件factory_log.LDF存放在E:data目錄下,其文件大小按1MB自動增長。
3.在數據庫factory下創建如下表: 職工表(職工號(int),姓名(char(10)),性別(char(2)),出生日期(datetime),黨員否(bit),參加工作時間(datetime),部門號(int)),其中職工號作為主鍵。部門表(部門號(int),部門名(char(10)),其中部門號作為主鍵。工資表(職工號(int),發放年份(int),發放月份(int),工資(decimal(6,1))),其中職工號、年份、月份作為主鍵。
4.建立第三步創建的表之間的參照完整性規則。
5.在上述表中輸入數據,每個表至少10條記錄。
6.備份數據庫,考走以備下次試驗使用。
六、結論及思考
第五篇:數據庫實驗報告
實驗一 PowerDesigner 的 CDM 應用
1:實驗目的
使用PowerDesinger進行數據庫概念模型設計,掌握CDM中的實體、實體屬性、實體與實體之間聯系的操作方法。2:實驗內容
建立一個“實驗一練習”命名的Conceptual Data Model(CDM)文件,其中應包括的實體、實體的屬性及實體之間的聯系。3:實驗結果
4.實驗心得
初次接觸數據庫原理實驗,相對來說還是比較陌生,但老師講解還相對比較清楚,并且實驗報告寫的十分清楚,只是遇到多建立了一個實體而無法刪除的問題,通過同學的幫助也解決了,相對來說第一次實驗還是比較順利的。
實驗二 PowerDesigner 的 PDM 應用
1.實驗目的
用PowerDesinger的工具將CDM生成PDM過程,熟悉PDM工作區,為生成數據庫中的物理的表打下基礎。完成這個實驗后,應該能夠了解從CDM到PDM的轉換過程,熟悉PowerDesinger的PDM工作區,使用工具選項板進行PDM對象設計。
2.實驗內容
從CDM生成PDM,設計結束后,利用PowerDesigner的“生成數據庫”功能,產生數據庫中各數據對象的定義,再運行MySQL的命令行客戶端軟件,打開test數據庫,運行crebas.sql,同時進行中英文的轉換,最后運行show tables命令查看表。
3.實驗結果
4.實驗心得
經過本次實驗,學會了用PowerDesinger的工具將CDM生成PDM過程,并且利用crebas.sql進行中英文的轉換,最后利用show tables命令查看表,受益匪淺。
實驗 三Navicat for MySQL的使用和SQL語言數據定義語言DDL 1.實驗目的
了解Navicat for MySQL的啟動,熟悉如何在Navicat for MySQL下配置數據庫聯接。了解DDL語言的CREATE、DROP、ALTER對表、索引、視圖的操作,學會在Navicat for MySQL中用DDL語言進行對表、索引、視圖的增加、刪除和改動 2.實驗內容
1.啟動Navicat for MySQL。
2.在MySQL–新建連接中完成連接參數配置,并完成連接測試和保存連接參數。3.查看mysql數據庫的help_category表的定義、表中數據與索引、完整性約束等。4.查看mysql數據庫的其它數據庫對象,如視圖、索引、存儲過程、函數、觸發器。5.在Navicat for MySQL中打開查詢,新建查詢,運行簡單的SQL語句,如select * from help_keyword where help_keyword_id<=3;觀察下結果。3.實驗結果
4.實驗心得
使用navicat for MySQL連接數據庫的時候,不能正常連接到數據庫,出現“access denied for user’root@’localhost”的錯誤提示,經過查找發現是MySQL沒有正確安裝,重裝之后就可以正常的訪問數據庫,在本次實驗中也學會了Navicat for MySQL的基礎的查詢使用以及簡單的SQL語句的運行。
實驗 四 SQL語言數據定義語言DDL 1:實驗目的
本次實驗了解SQL語言中DDL語言的CREATE、DROP、ALTER對表、索引、視圖的操作,掌握在Navicat for MySQL中用DDL語言進行對表、索引、視圖的增加、刪除和改動。掌握使用SQL語句增加或刪除約束,加深對完整性概念的理解,達到靈活應用的目的。掌握使用SQL語句定義和刪除同義詞。2:實驗原理
在 Navicat for MySQL 中使用 CREATE 命令完成對表、索引、視圖、同義詞 的創建,使用 DROP 命令完成對表、索引、視圖、同義詞的刪除,使用 ALTER 命 令對表結構進行修改及完整性約束的增加、刪除。
3:實驗代碼及結果 相應SQL語句為:
CREATE TABLE NewTable(studentid varchar(10)NOT NULL , name varchar(20)NOT NULL , sex varchar(2)NOT NULL , age integer NOT NULL , Fee decimal(10,2)NULL , address varchar(50)NULL , memo varchar(300)NULL , PRIMARY KEY(studentid));
截圖如下:
3.用Create Table語句建表CourseAa,相應的SQL語句為: CREATE TABLE CourseAa(Aa1 Varchar(20), Aa2 INTEGER, Aa3 decimal(10)); 截圖如下:
5.用Create Table語句建表ChooseBb 相應的SQL語句如下: CREATE TABLE ChooseBb(Bb1 VARCHAR(30), Bb2 INTEGER, Bb3 DECIMAL(6));
6.用Drop Table語句刪除表CourseAa,相應的SQL語句如下: Drop table CourdeAa;
7.用Alter Table語句更新表ChooseBb,添加一個屬性名Bb4,類型Varchar,長度20,完整性約束設為非空值,缺省值設為字符“系統測試值”,相應的SQL語句如下: ALTER TABLE choosebb ADD Bb4 VARCHAR(30)NOT NULL;
8.用Alter Table語句更新表ChooseBb,添加一個屬性名Bb5,類型Varchar, 長度10,完整性約束設為主碼。完成后,表ChooseBb的設計如下所示。相應的SQL語句如下:
ALTER TABLE choosebb ADD Bb5 VARCHAR(30)PRIMARY KEY;
9.用Create View語句建立一個視圖View_Choosebb,生成的視圖屬性名(View_bb1,View_bb2,view_bb3), 其中View_bb1對應于基表ChooseBb的Bb1、View_bb2對應于基表ChooseBb的Bb4、view_bb3對應于基表ChooseBb的Bb5。完成后,視圖View_Choosebb的設計如下所示。
相應的SQL語句如下:
CREATE VIEW View_Choosebb AS SELECT Bb4 AS View_bb1,View_bb2 FROM chooseBb;CREATE VIEW View_Choosebb AS SELECT Bb5 AS View_bb3 FROM chooseBb;10.用Drop View語句刪除視圖View_Choosebb。相應的SQL語句如下: DROP VIEW View_choosebb;11.用Create Index語句對表ChooseBb的Bb2屬性建立一個升序索引,索引名Index_bb2。用Create Index語句對表ChooseBb的Bb4屬性建立一個降序索引,索引名Index_bb4。相應的SQL語句如下:
CREATE INDEX Index_bb2 ON ChooseBb(Bb4 DESC);12.用Drop Index語句刪除索引Index_bb2。相應的SQL語句如下:
DROP INDEX Index_bb2 ON ChooseBb;
4:實驗中遇到的問題及心得體會
1、用Drop Table語句刪除表CourseAa的時候,在SQL瀏覽框中輸入語句并運行,發現左邊項目欄中還是有CourseAa表的存在,但是確打不開CourseAa表,弄了很長時間,也不知道是什么情況,最后嘗試刷新頁面之后,發現語句運行正確,CourseAa表成功刪除。
2、由于理論課時查詢語言之學到了表的查詢,到后面實驗中涉及視圖的建立及查詢,也不清楚是怎么回事,而且由于對查詢語句的不熟悉,實驗過程中進行緩慢,視圖的部分是課下看書慢慢寫的,沒有截圖。
通過這次實驗,初步了解了SQL語言中DDL語言的CREATE、DROP、ALTER對表、索引、視圖的操作,掌握在Navicat for MySQL中用DDL語言進行對表、索引、視圖的增加、刪除和改動。掌握使用SQL語句增加或刪除約束。因為實驗過程中對這些語句的不熟悉耽誤課很長時間,還需課下多下工夫多看、多寫。
實驗五
SQL語言數據操縱語言DML
1:實驗目的
SQL 語言的數據操縱功能通過 DML(數據維護語言)實現。DML 包括數據查詢 和數據更新兩種數據操縱語句。其中,數據查詢指對數據庫中的數據查詢、統計、分組、排序等操作;數據更新指數據的插入、更新和刪除等數據維護操作。
本次實驗了解 DML 語言的 INSERT、UPDATE、DELETE 等數據維護語言,掌握 在 Navicat for MySQL 中用 DML 語言的 INSERT、UPDATE、DELETE 對表進行數據 插入、更新和刪除。
2實驗內容
在 Navicat for MySQL 中使用 INSERT 語句向表中插入數據。使用 UPDATE 語句更新(修改)表中已有數據。使用 DELETE 語句刪除表中數據。
3:實驗代碼及結果
1、用Create Table語句建立test表,其語句和截圖如下所示; CREATE TABLE `NewTable`(`Name` varchar(20)NOT NULL , `Age` integer NULL , `Score` numeric(10,2)NOT NULL , `Address` varchar(60)NULL);
2、繼續用Create Table語句建立test_temp表,其語句同1。
3、用INSERT語句對表test_temp,插入如實驗報告中的三條記錄,其插入語句和截圖如下: INSERT INTO test_temp
VALUES('鄭七',21,'490.50','重郵宿舍11-2-1');INSERT INTO test_temp
VALUES('張八',20,'560.00','南福苑3-3-3');INSERT INTO test_temp
VALUES('王九',10,'515.00','學生新區19-7-1');
4、用INSERT INTO…SELECT…FROM語句,將test_temp表中的數據,插入到test中,其語句及其截圖如下: INSERT INTO test
SELECT * FROM test_temp;
5、用UPDATE語句將test表中年齡小于20的數據,將其成績更新為原來的成績加5分,其語句和截圖如下:
UPDATE test SET Score=Score+5 WHERE Age<=20;
6用UPDATE語句將test表中居住在南福苑所有的學生年齡減少1歲,其語句和截圖如下:、UPDATE test SET Age=Age-1 WHERE Address Like '南福苑%';
7、用DELETE語句將test表中年齡大于等于21 并且成績大于等于500的學生數據刪除,其語句和截圖如下: DELETE FROM test
WHERE Score<=500 AND Age>=21;
8、用DELETE語句將test表中成績小于550并且居住在重郵宿舍的學生數據刪除,其語句和截圖如下:
DELETE FROM test WHERE Score<=550 AND Address LIke'重郵宿舍%';
4實驗心得
這次實驗從實驗原理還是實驗操作來說還是相對簡單的,但越是對簡單的是就越容易犯迷糊,這次件表命名給了我很多啟示,以后對細節還是要十分注意的。
實驗六 SQL語言數據查詢語言DQL
1:實驗目的
本次實驗了解 SQL 語言的 SELECT 語句對數據的查詢,學會在 Navicat for MySQL 中用 SELECT 語句對表中的數據進行簡單查詢、連接查詢、嵌套查詢和組 合查詢。2:實驗原理
在 Navicat for MySQL 中使用 SELECT 語句從表中查詢數據、統計數據及對 數據進行分組和排序等操作。3:實驗代碼及結果
1.用 Create Table 建立 Student 表:
2.用 Create Table 建立 Course 表:
3.用 Create Table 建立 Choose 表:
4.用 INSERT 語句向 Student 表中插入 3 個元組:
5.用 INSERT 語句向 Course 表中插入 3 個元組:
6.用 INSERT 語句向 Choose 表中插入 7 個元組:
7.用 SELECT 語句,查詢計算機學院學生的學號和姓名。
8.用 SELECT 語句的 between?and?表示查詢條件,查詢年齡在 20~23 歲的學 生信息。
9.用 SELECT 語句的 COUNT()聚集函數,統計 Student 表中學生總人數。
10.分別用 SELECT 語句的 max()、min()、sum()、avg()四個聚集函數,計算 Choose 表中 C1 課程的最高分、最低分、總分、平均分。max():
Min():
Sum();
avg():
11.用 SELECT 語句對空值(NULL)的判斷條件,查詢 Course 表中先修課稱編號為 空值的課程編號和課程名稱。
12.用 SELECT 語句的連接查詢,查詢學生的學號、姓名、選修的課程名及成績。
13.用 SELECT 的存在量詞 EXISTS,查詢與“張三”在同一個學院學習的學生信 息。
14.用 SELECT 語句的嵌套查詢,查詢選修 C1 課程的成績低于“張三”的學生的 學號和成績。
15.用 SELECT 語句的組合查詢(UNION),查詢選修了 C1 課程或者選修了 C3 課程 的學生學號。
16.用 SELECT 語句的組合查詢(UNION)與 DISTINCT 短語,查詢選修了 C1 課程或 者選修了 C3 課程的學生學號,并取消重復的數據。
4.實驗心得
本次實驗室相對于前幾次來說比較困難的一次,因為語句剛學過,下去也沒有及時去練習,對于很多還是比較困難,在本次實驗中通過練習,讓我了解 SQL 語言的 SELECT 語句對數據的查詢,學會在 Navicat forMySQL 中用 SELECT 語句對表中的數據進行簡單查詢、連接查詢、嵌套查詢和組合查詢。課下時間也會多多練習SQl語句。
實驗七
MYSQL應用開發環境的建立
1:實驗目的
通過在Windows平臺下,搭建Apache Httpd Web服務器,PHP腳本支持,訪問MySQL數據庫等,學習了解MySQL應用開發環境的建立過程。本次實驗通過安裝Apache HTTD Server 2.2、PHP 5.3.28,配置httpd.conf和PHP.ini文件,完成MySQL的PHP應用開發環境的建立。2:實驗內容
1、按照實驗指導安裝Apache http Server。成功后,截圖如下:
2、配置Apache服務器支持PHP文件解析,截圖如下:
3、實驗測試成功,截圖如下:
3:遇到的問題及解決 配置PHP擴展支持MySQL數據庫。用記事本打開php5.3.28之下的php.ini文件,把;extension=php_mysql.dll去掉。只是去掉了extension=php_mysql.dll,而,而沒有其前面的分號去掉就保存了文件。
4:實驗心得
通過在 Windows平臺下,搭建 Apache Httpd Web 服務器,PHP 腳本支持,訪問 MySQL 數據庫等,我學習了解 了MySQL 應用開發環境的建立過程。學會了安裝 Apache HTTD Server 2.2、PHP 5.3.28,配置 httpd.conf和 PHP.ini 文件,完成 MySQL 的 PHP 應用開發環境的建立。
實驗八 MySQL的存儲過程
1:實驗目的
存儲過程分為兩類:1.系統提供的存儲過程;2.用戶自定義存儲過程。
存儲過程具有的優點:1.存儲過程允許標準組件式編程;2.存儲過程能夠實 現較快的執行速度;3.存儲過程能夠減少網絡流量;4.存儲過程可被作為一種安 全機制來充分利用。存儲過程是可復用的組件!想象一下如果你改變了主機的語 言,這對存儲過程不會產生影響,因為它是數據庫邏輯而不是應用程序。存儲過 程是可以移植的!
本次實驗了解 MySQL 存儲過程的創建、修改和刪除的方法和步驟,掌握在 Navicat for MySQL中對存儲過程的進行創建、修改和刪除,掌握在MySQL Command Line Client 中調用帶參數和不帶參數的存儲過程。
2:實驗內容
1、MySQL Command Line Client中創建存儲過程,按照實驗指導書創建第一、第二個存儲過程及其調用。
2、調用第三、第四個傳出參數的存儲過程:
3、創建存儲過程third_p(),顯示表cqupt中的數據,并對其進行調用測試。
4、創建存儲過程simpleproc2(),對傳入參數進行乘以10的處理,變量定義@x,并對其進行調用測試。5.用Drop Procedure語句刪除存儲過程first_p。
3:實驗結果
4:心得體會
通過此次實驗,學會了在MySQL Command Line Client中創建存儲過程及其調用,并傳遞參數對其進行調用測試.實驗九MySQL的觸發器和SQL語言數據控制語言DCL 1:實驗目的
觸發器是特定事件出現的時候,自動執行的代碼塊,類似于存儲過程。觸發器與存儲過程的區別在于:存儲過程是由用戶或應用程序顯式調用的,而觸發器是不能被直接調用的,由DBMS自動執行。觸發器具有這些功能:
1、允許/限制對表的修改;
2、自動生成派生列,比如自增字段;
3、強制數據一致性;
4、提供審計和日志記錄;
5、防止無效的事務處理;
6、啟用復雜的業務邏輯。
本次實驗了解MySQL觸發器的創建、修改和刪除的方法和步驟,掌握在Navicat for MySQL中對觸發器的進行創建、修改和刪除,掌握觸發器觸發測試的方法。2:實驗內容
1、創建觸發器audit_student,該觸發器對修改student表的時間、用戶名記錄到日志表中。
2.執行
五、教學過程中
(三)實驗內容的第二部分改造簡單觸發器,增加觸發類型判斷功能,驗證觸發器的改造和改造后的觸發器觸發測試。3.自行編寫student表的觸發器aduit_student_update,在對student表進行更新操作前觸發,觸發時,向student_log表寫入觸發用戶、觸發時間和觸發類型。并對該新建進行觸發測試。
4.自行編寫student表的觸發器aduit_student_delete,在對student表進行刪除操作后觸發,觸發時,向student_log表寫入觸發用戶、觸發時間和觸發類型。并對該新建進行觸發測試。
3:實驗結果
①輸入如下語句,建立實驗表student,如圖所示: create table student(SNO varchar(10),SNAME varchar(30),Sage Int);
②輸入如下語句,建立日志表student_log,并查看日志表是否為空,如圖所示:
create table student_log(who varchar(30),whattimeTIMESTAMP);
select * from student_log;
③輸入如下語句,在student表上語句觸發器,如圖所示: use test;
Create trigger audit_student Beforeinsert On student For each row Begin Insert into student_log(Who,whattime)Values(current_user,current_timestamp);End;
建立④輸入如下語句對觸發器進行INSERT觸發測試,如圖所示: 對student表做一個INSERT操作:
Insert into student values('1992150033','吳思遠',40);
輸入如下語句查看表student_log,檢查觸發器工作結果,表student_log中數據如圖所示:
select * from student_log;
①輸入如下語句,修改日志表結構,增加一個屬性存放觸發語句類型。如圖所示: alter table student_log add(action varchar(20));
②修改觸發器,記錄觸發語句類型。選中student表,單擊右鍵,選擇設計表,點擊觸發器選項卡,在定義中對INSERT進行編輯,如圖所示:
select * from student_log
4:實驗心得
本次實驗讓我了解 MySQL 觸發器的創建、修改和刪除的方法和步驟,掌握在
Navicat for MySQL 中對觸發器進行創建、修改和刪除的步驟,掌握了觸發器觸發測試的方法。
實驗十SQL的數據控制通過DCL(數據控制語言)實現
1:實驗目的
DCL 通過對數據庫用戶的授 權和權限回收命令來實現有關數據的存取控制,以保證數據庫的安全性
本次實驗了解 DCL 語言的 GRANT 和 REVOKE 語句對數據庫存取權限的控制,學會在Navicat for MySQL中用GRANT、REVOKE語句對數據庫存取權限進行設定。
2:實驗內容
1.登錄mysql,創建用戶jason,密碼為abc123,并授權該用戶完整訪問數據庫test。即執行如下DCL語句:GRANT ALL ON test.* TO jason@“%”IDENTIFIED BY “abc123”;2.啟動另外一個Navicat for MySQL,在MySQL –新建連接中完成jason連接參數配置
3.對user表進行授予權限操作,并用select insert 進行測試 4.對user表進行收回權限操作,用select insert語句進行測試 3:實驗結果
GRANT ALL ON test.* TO jason@“%” IDENTIFIED BY “abc123”;GRANT SELECT on mysql.host to jason;
2、將數據庫 mysql 中表 host 的查詢權限從用戶 jason 回收
3.創建用戶jason,密碼為abc123,并授權該用戶完整訪問數據庫test。GRANT ALL ON test.* TO jason@“%” IDENTIFIED BY “abc123”;
4.啟動另外一個Navicat for MySQL,在MySQL –新建連接中完成jason連接參數配置。為了能查詢到相應的數據,我們必須進行授權操作。語句如下: Grant select on mysql.user to jason;
授權后,現在切換到Navicat for MySQL,執行之前窗口中的查詢語句:
5、接下來,切換到MySQL的命令行客戶端,創建一個簡單的表,切換到Navicat for MySQL,新建一個查詢:
insert into mysql.dcltest(id,name)values(1,'張三豐');
6、切換到MySQL的命令行客戶端,執行如下授權語句,進行INSERT權限的授予: Grant insert on mysql.user to jason;
輸入如下查詢語句:
Select * from mysql.dcltest;
權限授予后,root(數據庫超級用戶)可以進行權限的回收。
7、切換到Navicat for MySQL,新建一個查詢,執行如下插入語句: insert into mysql.dcltest(id,name)values(2,'掃地僧');執行如下權限回收語句:
Revoke insert on mysql.dcltest from jason;
新建一個查詢,執行如下查詢語句: select * from mysql.dcltest;
Revoke select on mysql.dcltest from jason;
4:實驗心得
通過本次實驗,我了解DCL語言的GRANT和REVOKE語句對數據庫存取權限的控制,學會在Navicat for MySQL中用GRANT、REVOKE語句對數據庫存取權限進行設定。
實驗十一MySQL的事務與鎖
1:實驗目的
事務(Transaction)是MySQL數據庫系統中的一個邏輯工作單元,是完成一組數據庫操作的程序執行單元;鎖(Lock)是MySQL數據庫系統中并發控制的常用方法.本次實驗了解MySQL事務的設置、提交和回退的方法和步驟,掌握MySQL Command Line Client中如何進行相關操作。了解MySQL的表鎖定與鎖定解除,掌握MySQL Command Line Client中如何進行相關操作。2:實驗內容
啟動MySQL的命令行客戶端,輸入密碼mysql(小寫);執行
五、教學過程中
(三)實驗內容的1部分,學習和驗證MySQL的事務;在實驗步驟2的基礎上,在數據bankrecord的表record中,添加一個元組id為3的張六,初始余額2萬;自己寫事務完成如下操作:李四向張六轉賬5千,然后取消該轉賬;王五向李四轉賬1萬5,然后確認轉賬;執行
五、教學過程中
(三)實驗內容的2部分,學習和驗證MySQL的鎖;在步驟4的基礎上,在數據庫bookrecord的表sellrecord中,添加一個元組id為2000的書籍Oracle數據庫實用教程庫,存為2本;在當前MySQL命令行客戶端里面模擬李四購書,另外啟動一個MySQL命令行客戶端,模擬王五購書;要求使用寫鎖先鎖定后,再修改,因為庫存有兩本,所以李四和王五都能買到,庫存為0,并且兩人的名字都出現在buyername 3:實驗結果
create database bankrecord character set utf8 collate utf8_general_ci;use bankrecord;
create table record(id int,name varchar(20),jine decimal(8,2));
set names gbk;
insert into record values(1, '李四',20000);insert into record values(2, '王五',20000);start transaction;
update record set jine=jine-10000 where name='李四';select * from record;rollback;
select * from record;
1、查看數據庫自動提交模式是否打開:
2,按照實驗指導先建立數據庫、表和向表中插入初始賬戶記錄:
3、完成開始事務,從李四賬戶轉出 1 萬元,向王五賬戶中轉入 1 萬元,提交確認轉賬:
4、安實驗指導執行語句先建立數據庫、表和向表中插入初始書籍記錄:
5、在數據庫 bankrecord 的表 record 中,添加一個元組id 為 3 的張六,初始余額 2 萬,李四向張六轉賬 5 千,然后取消該轉賬;王五向李四轉賬 1 萬 5,然后確認轉賬(語句在圖中顯示):
6、在數據庫 bookrecord 的表 sellrecord 中,添加一個元組id 為 2000 的書籍 Oracle 數據庫實用教程庫,存為 2 本(相關語句在圖中顯示):
7、在當前 MySQL 命令行客戶端里面模擬李四購書,另外啟動一個 MySQL 命令行客戶 端,模擬王五購書(語句在圖中顯示)。
4:實驗心得
本次實驗了解 MySQL 事務的設置、提交和回退的方法和步驟,掌握 MySQL Command Line Client 中如何進行相關操作。了解 MySQL 的表鎖定與鎖定解除,掌握 MySQL Command Line Client 中如何進行相關操作。
實驗十二MySQL的常用函數MySQL 1:實驗目的
本次實驗了解 MySQL 常用字符串、日期和時間函數等的使用,掌握 MySQL Command Line Client 中如何進行相關操作。常用函數包括常用字符串、日期和時間函數等各類函數。2:實驗內容
啟動 MySQL 的命令行客戶端,輸入密碼 mysql(小寫);執行
五、教學過程中
(三)實驗內容的 1 部分,學習和驗證 MySQL 的字符串函數;在實驗步驟 2 的基礎上,學習如下兩個函數并完成題目:定位和位置函數 LOCATE(substr,str),返回字符串 str 中子字符串 substr 的第一次出現位置,如果 str 中不包含 substr,返回 0。
請使用LOCATE函數計算needle在haystackneedlehaystack第一次出現的位置;子字符串函數 SUBSTRING(str,pos,len),從字符串 str 返回一個長度同 len 字符相同的子字符串,起始于位置 pos;請使用 SUBSTRING 函數計算 backspace,從第 2 個字符起,長度為 5 的子字符串;字符串函數的解答腳本和結果請保存,老師會檢查;執行
五、教學過程中
(三)實驗內容的 2 部分,學習和驗證 MySQL 的日期和時間函數;在步驟 4 的基礎上,學習如下一個函數并完成題目:周函數 WEEK(date),返回 date 時間包含的星期數;請使用 WEEK 函數計算當前日期包含的星期數。3:實驗結果
4:實驗心得
通過本次實驗掌握了MySQL 常用函數包括常用字符串、日期和時間函數等各類函數,并且學會了MySQL Command Line Client 中如何進行相關操作。