數據庫及其原理實驗

前言

有關SQL Server數據庫的實驗操作,相應的SQL語句不一定是正確無誤的,有錯誤的話敬請指出。

實驗一 數據定義語言

一、實驗目的
1.熟悉SQL Server2008的SQL Server Management Studio(簡稱)
2.掌握創建、分離和附加數據庫的方法
3.掌握T-SQL語言的DDL子語言,在SQL Server環境下采用Transact-SQL實現表的定義、刪除與修改,掌握索引的建立與刪除方法。
4.掌握SQL Server實現完整性的五種約束。
二、實驗內容
1.連接服務器,創建數據庫:(請先在D盤下創建DB文件夾)
在SQL Server建立一個StuDB數據庫;
有一個數據文件:邏輯名爲StuData,文件名爲“d:\db\StuData.mdf”,文件初始大小爲5MB,文件的最大大小不受限制,文件的增長率爲2MB;
有一個日誌文件,邏輯名爲StuLog,文件名爲“d:\db\StuLog.ldf”,文件初始大小爲5MB,文件的最大大小爲10MB,文件的增長率爲10%
在這裏插入圖片描述
2.設置StuDB爲當前數據庫。
在這裏插入圖片描述
3.在StuDB數據庫中作如下操作:
設有如下關係表S: S(CLASS,SNO, NAME, SEX, AGE),
其中:CLASS爲班號,char(5) ;SNO爲座號,char(2);NAME爲姓名,char(10),設姓名的取值唯一;SEX爲性別,char(2) ;AGE爲年齡,int,表中主碼爲班號+座號。寫出實現下列功能的SQL語句。
(1)創建表S;
(2)刷新管理器查看錶是否創建成功;
(3)參考語句:insert into s(CLASS,SNO, NAME, SEX, AGE)
Values(‘95031’,‘25’,‘李明’,‘男’,21)
插入3個記錄:95031班25號李明,男性,21歲;
95101班10號王麗,女性,20歲;
95031班座號爲30,名爲鄭和的學生記錄;
(4)將年齡的數據類型改爲smallint;
(5)向S表添加“入學時間(comedate)”列,其數據類型爲日期型(datetime);
(6)對錶S,按年齡降序建立索引(索引名爲inxage);
(7)刪除S表的inxage索引;
(8)刪除S表;
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
4.在StuDB數據庫中,
(1)按照《數據庫系統概論》(第五版)P52頁的學生-課程數據庫創建STUDENT、COURSE和SC三張表,每一張表都必須有主碼約束,合理使用列級完整性約束和表級完整性。並輸入相關數據。要作好腳本備份以便後面的實驗使用該數據庫數據。
(2)實驗課結束前,將StuDB數據庫分離,在D盤下的DB文件夾下找到StuDB數據庫的兩個文件,進行備份,後面的實驗要用到這個數據庫。
(3)下次實驗課開始前,將之前備份的文件附加到實驗室電腦中的數據庫服務器中。

5.按照《數據庫系統概論》(第五版)P70頁習題6的SPJ數據庫。創建SPJ數據庫,並在其中創建S、P、J和SPJ四張表。每一張表都必須有主碼約束,合理使用列級完整性約束和表級完整性。要作好腳本備份或數據庫分離以便後面的實驗使用該數據庫數據。
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
有的時候實驗一的第五題會不一樣:
5.在StuDB數據庫中,
按照《數據系統概論》(第四版)P82頁的學生-課程數據庫創建Student、Course和SC三張表,每一張表都必須有主碼約束,合理使用列級完整性約束和表級完整性。並輸入相關數據。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
三、實驗要求:
1.根據實驗內容認真寫好實驗報告,記錄每個步驟正確的Transact-SQL命令。
2.無須截屏記錄正確的查詢結果。但要求記錄實驗過程中發生的有學習意義的錯誤及錯誤信息。
3.寫好實驗總結。

實驗二 SQL Server中的單表查詢

一、實驗目的
1.掌握SQL語言的DML子語言,在SQL Server環境下采用Transact-SQL的SELECT語句熟練掌握各種單表查詢方法。

二、實驗內容
(一)附加上次實驗備份的StuDB數據庫和SPJ數據庫,或者將保存好的腳本重新運行。
(二) 按照StuDB學生課程數據庫及數據實現以下查詢:
1.查詢所有課程的課號,課程名。
2.查詢計算機系年齡不到21歲的所有男生的姓名和出生年份。
3.查詢已被學生所選課程的課程號。
4.查詢所有有成績的學生學號和課程號,併爲各列分別取相應的中文別名。
在這裏插入圖片描述
(三) 按照SPJ數據庫及數據實現以下查詢:
1.查詢地點在‘北京’、‘上海’的供應商代碼和供應商名字。
2.查詢供應商名中包含‘方’這個漢字的供應商信息。
3.查詢零件名以‘刀’字結尾,包含三個漢字的零件信息。
4.查詢使用了供應商S1所供應零件的工程項目數。
5.查詢各個供應商所供應的零件的總數,要求對查詢結果降序顯示。
6.查詢供應了3個以上項目的供應商代碼和供應的項目總數。
在這裏插入圖片描述
三、實驗要求:
1.根據實驗內容認真寫好實驗報告,記錄每個步驟正確的Transact-SQL命令。
2.無須截屏記錄正確的查詢結果。但要求記錄實驗過程中發生的有學習意義的錯誤及錯誤信息。
3.寫好實驗總結。

實驗三 SQL Server中的連接查詢

一、實驗目的:
1.掌握採用Transact-SQL實現連接查詢。
2.掌握等值連接(自然連接)、自身連接、外連接和複合條件連接的查詢方法。
二、實驗內容:
按照學生課程數據庫studb和SPJ數據庫完成以下查詢:
(1)查詢每個工程的信息及相應的供應信息(包括列出尚未被供應零件的那些工程)。
(2)查詢供應工程J1紅色零件的供應商號SNO,請用兩種方法實現。
(3)求供應工程J1零件的供應商的完整信息。
(4)查詢使用北京供應商供應零件的工程信息。
(5)查詢所有使用了P3零件的工程號JNO,用帶EXISTS謂詞的子查詢實現。
(6)查詢所有沒有使用了P3零件的工程號JNO,用帶EXISTS謂詞的子查詢實現
(7)查詢參與了全部項目的供應商編號SNO,用帶EXISTS謂詞的子查詢實現。
(8)查詢至少用了供應商S1所供應的所有零件的工程號JNO,用帶EXISTS謂詞的子查詢實現。
(9)查詢選修3號課程且成績不及格的所有學生。
(10)查詢先行課的學分爲4的課程信息。
(11)查詢課程與其間接先行課的名稱。
(12)查詢其他系中比計算機科學系所有學生年齡都小的學生完整信息,用兩種方法實現。
(13)查詢其他系中比計算機科學系某一學生年齡大的學生姓名與年齡,用兩種方法實現。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
三、實驗要求:
1.寫出正確的Transact-SQL命令。
2.無須截屏記錄正確的查詢結果。要求記錄實驗過程中發生的有學習意義的錯誤及錯誤信息。
3.寫好實驗小結
4.下課後直接提交實驗報告

實驗四 SQL Server的數據更新

一、實驗目的:
1.掌握採用Transact-SQL實現嵌套查詢。
2.掌握採用Transact-SQL實現數據更新。
3.掌握採用Transact-SQL實現視圖的定義、刪除、查詢與更新。
二、實驗內容
按照學生課程數據庫studb和SPJ數據庫完成以下操作:
(一)數據更新 
1)插入一個學生:林紅,女,200215135,信息系,20歲
2)插入一個選課記錄:200215135,1,成績未定
3)將計算機系所有學生的年齡加1歲
4)刪除所有200215135學生的選課記錄
5)刪除所有姓林的同學的信息
6)請自行設計案例對學生-課程數據庫的數據更新,並觀察是否有違反數據的完整性約束。(參考課上的操作,例如先修課程的錄入,唯一性錄入)
在這裏插入圖片描述
(二)視圖
1)創建一個學生成績統計視圖,包括學號,姓名,選課門數,平均分,最高分,最低分
2)利用上題所建視圖實現:
①查詢成績高於自己平均成績的選課記錄
②查詢每個同學獲得最高分的選課記錄
3)請爲工程項目名爲三建的工程項目建立一個供應情況的視圖,包括供應商代碼(SNO)、零件代碼(PNO)、供應數量(QTY)。針對該視圖完成下列查詢:
①找出三建工程項目使用的各種零件代碼及其數量;
②找出供應商S3的供應情況;
在這裏插入圖片描述
三、實驗要求
1.寫出正確的Transact-SQL命令。
2.無須記錄正確的查詢結果。但要求記錄實驗過程中發生的有學習意義的錯誤及錯誤信息。
3.寫好實驗小結。
4.下課後提交實驗報告。

實驗五 語法元素與流程控制

一、實驗目的:
1)掌握Transact-SQL局部變量的聲明、賦值和使用方法以及全局變量的運用方法,掌握Transact-SQL的局部變量的作用域概念。
2)掌握Transact-SQL的控制流語言的使用方法。
3)掌握與控制流語言語句一起使用的其它 Transact-SQL 語句:
CASE、//(註釋)、–(註釋)、PRINT。
二、實驗內容和要求
1、使用局部變量、全局變量
(1)定義一個int的整型變量,爲其賦值45,並顯示變量的值。
(2)定義一個長度爲20的可變長度型字符變量,爲其賦值“Welcome to FJUT”, 並顯示變量的值。
(3)在批處理中聲明兩個局部變量@ssex和@sdept並對它們賦值,對Student表進行查詢,要求兩局部變量在SELECT 語句的 WHERE 子句中被使用,查詢的要求是性別爲‘女’或所在係爲‘IS’系的那些學生。
(4)查詢當前數據庫服務器名(提示:用全局變量@@ SERVERNAME)。
(5)查詢當前數據庫管理系統版本。(提示:用全局變量@@ VERSION)
(6)在student表中執行所有學生年齡加1歲語句,並用@@ROWCOUNT 來檢測是否有發生更改的行。
在這裏插入圖片描述
2. 函數的使用
(1) 數學函數的使用
分別用函數求出-3的絕對值,16的平方根。
(2) 字符串函數的使用
1)分別將字符串’china’、‘MACHINE’轉換成大寫、小寫字母;
2)去掉字符串’ machine '左邊的空格,右邊與’press’連接起來;
(3) 日期、時間函數的使用
1)返回系統當前日期並以整數形式返回當前日期的年份、月份、日;
2)返回給定日期“1997-7-1”與當前日期相差的天數。
在這裏插入圖片描述
3.編寫較複雜的Transact-SQL程序
1)在 SELECT 語句中,CASE 搜索函數允許根據比較值在結果集內對值進行替換。要求仿照《數據庫概論》的sc表,根據學生的成績範圍將成績(grade 列)顯示爲文本註釋。(要求:<60分,文本註釋爲“不及格”,60-70,“及格”,70-80,“中”,80-90,“良”,90-100,“優”)。
2)修改sc表中計算機系的學生成績直到平均分超過80分,修改規則如下:<60分,加10分,60-80:加5分,80-90:加3分)
用Transact-SQL語言編寫程序計算1~100之間所有能被7整除的數的總和。
在這裏插入圖片描述
在這裏插入圖片描述
三、實驗要求
1.寫出正確的Transact-SQL命令。
2.無須記錄正確的查詢結果。但要求記錄實驗過程中發生的有學習意義的錯誤及錯誤信息。
3.寫好實驗小結。
4.下課後提交實驗報告。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章