第一篇:數據庫上機報告
課本:255頁實驗題1,2,3
注明:
課程名稱:access數據庫;
實驗室:信傳樓210;
上機項目:模塊與VBA;
上機時間:12-05;
上機學時:2學時
作業在下周周三(12-11)上多媒體藝術基礎時上交,因要統一裝訂,請大家務必在規定時間內上交。
本次共下發六張實驗報告紙,java兩次,數據庫一次,請大家合理分配。
第二篇:數據庫上機報告
數據庫上機報告
*** 鞏志鑫 5.1 實驗目的
(1)熟練掌握SELECT實現單表查詢
(2)熟練掌握SELECT實現多表查詢(含自身連接,外連接,CROSS連接)(3)熟練掌握SELECT實現明細查詢(COMPUTE BY 的使用)(4)掌握CREATE VIEW創建用戶視圖的方法;
(5)掌握一些查詢結果的特定顯示輸出的技巧和并,交,差查詢的實現。
5.2 實驗環境
Windows Server 2003+SQL Server 2008.5.3 實驗原理及相關知識
數據表的查詢可以使用SQL Server Management Studio 和 T-SQL 語句兩種方法實現。5.3.1 使用SQL Server Management Studio 進行查詢
1.查詢數據表的元組數據
在對象資源管理器中,選擇需要查詢的數據表,用鼠標右鍵單擊該表,從彈出的快捷菜單中選擇“選擇前…….行”命令,這時將顯示該表的元組數據。
2.查詢SQL語句
在對象資源管理器中,選擇需要查詢數據的表,用鼠標右鍵單擊該表,從彈出的快捷菜單中選擇“編寫表腳本為”->SELECT->新查詢編輯器窗口;在窗格中會自動顯示對應的SELECT語句。
5.3.2 使用T-SQL查詢
使用T-SQL查詢,就是使用SELECT語句。SELECT 的語句格式如下。
SELECT [ALL[DISTINCT][TOP n[PERCENT]]< select_list >
[info
FROM
[WHERE < search_condition>]
[GROUP BY [ALL] group_by_expression[,??n][ HAVING
[ORDER BY
[[AS] column_alias]][,??n]
參數說明如下:
(1)SELECT All:默認設置,指定在結果集中可以顯示重復行。(2)DISTINCT:指定在結果集中只能顯示唯一行,空值被認為相等。
(3)TOP n:從查詢結果集中指定輸出前n行,n是0~4294967295的整數。
(4)PERCENT:如果未指定PERCENT,n就是返回的行數,如果指定了PERCENT,n就是返回的結果集行的百分比,n值必須為0~100的數。
(5)<select-list>:為結果選擇的列,選擇列表以逗號分隔。(6)INTO
(7)FROM<table-source>:指定要在Transact_SQL語句中使用的表或者視圖,可在語句中使用多達256個表。
(8)<search-condition>:通過使用謂詞限制結果集內的返回的行,對搜索條件中可以包含的謂詞數量沒有限制。
(9)*:指定在FROM字句內返回所有表和視圖內的所有列,列按照FROM子句中所指定的表或者視圖返回,并按在表或視圖中創建的順序返回。
(10)column-lias:查詢結果集內替換列名的可選別名。(11)column_alias:查詢結果集內替換列名的可選別名。
(12)GROUP BY ALL:包含所有組合結果集,甚至包含哪些任何行都不滿足WHERE子句制定的搜索條件的組合結果集。如果制定了ALL,組中不滿足搜索條件的匯總列將返回空值。(13)group_by_expression:執行分組表達式,也稱分組列。注意,text、ntext和image類型的類型的列不能用于group_by_expression。
(14)HAVING
(15)
Table_name:表名。FROM關鍵字之后的表和視圖的順序并不影響返回的結果集。
[AS]table_alias:table_name、view_name或rowest_fuction的別名,為方便起見而使用,或用于自連接或子查詢中的表或視圖。別名通常是一個縮短了的表名,用于在連接中引用表中的特定列。如果連接的多個表中有相同名稱的列存在,SQL Server要求必須使用表名或別名來限定列名(如果定義了別名則不能使用表名)。
INNER:指定返回每對匹配的行。如果未指定連接類型,則是默認設置。
FULL[OUTER]:指定在結果集中包含左表或右表中不滿足連接條件的行,并將對應于另一個表的輸出列設為NULL。這是對通常由INNER JOIN返回行的所有行的補充。
LEFT[OUTER]: 指定在結果集中包含左表中所有不滿足連接條件的行,且在由內連接返回的所有的行之外,將另外一個表的輸出列設為NULL。RIGHT[OUTER]:指定在結果集中包含右表中所有不滿足連接條件的行,且在由內連接返回的所有的行之外,將另外一個表的輸出列設為NULL。
JOIN:指明所指定的連接操作應在給定的表或視圖之間執行。
ON
四.練習
1.無條件查詢
例5-1 查詢全體學生的詳細記錄。
分析:這是一個無條件的選擇查詢,默認為全體。
例5-2 查詢全體學生的姓名(Sname)、學號(Sno)、所在學院(Sdept)。
分析:這是一個無條件的投影查詢。
例5-3 查詢全體學生的姓名(Sname)、出生年月及學號(Sno)。
分析:出生年月的標題用別名BirthYear顯示,函數YEAR()返回日期時間型參數的年份。
例5-4 查詢選修了課程的學生學號。
分析:雖然20121323001同學選修了4門課程,但DISTINCT去除了重復的學號,所以無論一個學生選了多少門課,在查詢結果中也僅顯示一次。
2.條件查詢
例5-5 查詢SE學院的全體學生學號(Sno)和姓名(Sname)。
例5-6 查詢年齡在18~22歲的學生姓名(Sname)、出生年月以及年齡。
分析:Student表中Sbirthday提供的出生日期是日期時間型數據,因此要計算年齡需用GETDATE()獲取當前年份,然后減去出生年份即可。
注意:在查詢顯示時,為增強可讀性和可理解性,計算列一般都要使用別名來命名。
例5-7 現實學號最后一位為1或者2或者3的學生學號、姓名、性別、年齡和學院名稱。
分析:WHERE子句也可以修改為WHERE SnoLIKE’%[1-3]’。
例5-8 查詢軟件工程學院、人文學院的學生學號(Sno)、姓名(Sname)和性別(Ssex)。
分析:也可以將以上查詢等價寫成以下形式。
例5-9 查詢所有姓“李”的學生姓名(Sname)、學號(Sno)和性別(Ssex)。
例5-10 查詢所有不姓“李”的學生姓名(Sname)和年齡。
例5-11假設某些學生選修課程后沒有參加考試,所以有選課記錄卻沒有考試成績,請查詢缺少成績的學生學號(SNO)和相應的課程號(CNO)
注意WHERE子句中的條件只能使用IS,不能寫成WHERE GRADE=NULL,或者WHERE GRADE=’NULL’,這兩種表的方式都是錯誤的,請大家一定要注意。
例5-12 查詢有課程成績的學生學號(SNO)和課程號(CNO)
例5-13 查詢選修了C002號課程的學生學號(SNO)和成績(GRADE),并按成績升序排列。
例5-14 查詢全體學生情況,查詢結果按所在學院的院名將序排列,同一學院的學生按年齡升序排列。
分析:第一排序按照SDEPT將序排列,然后按照年齡升序排列(其實就是出生日期的降序排列,可以寫成SBIRTHDAY DESC),這里根據計算表達式計算的年齡大小進行排序。
例5-15 查詢所有課程的總學分。
例5-16 查詢選修了課程的學生人數。
例5-17計算選修C001號課程的學生的平均成績。
例5-18 查詢選修了C001號課程的學生的最高分數。
例5-19 查詢各學院的學生數量。
例5-20 查詢各種課程的平均成績。
21.查詢各門課程號(cno)及相應的選課人數
22.查詢每個學院男生和女生人數
分析:查詢首先按學院分小組,再按各學院的男女生分別再進行分組統計;其次根據統計需要,還需要對查詢結果按學院進行排序,這是一個隱式的查詢要求。
23.查詢選修了3門及以上課程的學生學號(sno)
24.查詢平均成績在60以上的課程號及該課的平均成績
25.使用compute子句對中文學院(ch)所有男生的人數進行明細匯總。
26.使用compute by子句按學院對學生進行明細匯總。
27.從student表中查詢所有女生的基本信息,并生成一個新的女生信息表。
28.將總分在200分以上的學生情況(學號,姓名,性別,總成績)存儲到數據表gradelist中,假設表gradelist不存在。
29.查詢學生20121323012選修課程的成績,將其保存在變量grade中。
分析:顯示20121323012最后一門課程車的成績,即83
30.查詢c002號課程成績最高的學生記錄。
注意:如果c002號課程成績存在并列最高,則使用下列SQL語句顯示所有并列成績。
Select top 1 with ties * From sc Where cno=’c002’ Order by grade desc
5-31查詢選修C002號課程的學生姓名
5-32 查詢學號為20121323001的學生姓名、院系、課程號及成績
5-33 查詢所有選修課程編號為C003的學生學號、姓名和成績
5-34 查詢被選修了的課程的課程號、課程名、該課程的學生選修人數及課程平均分
自身連接:一個表與其自己進行連接;此時需要給表起別名已示區別;由于所有屬性名都是同名屬性,因此必須使用別名前綴。
5-35 查詢與“何燕”同一個學院的其他學生的學號、姓名、性別、學院及專業情況
分析:查詢學生“何燕”對應的表別名a,擬查詢學生信息在別名表b中,因此在西安市查詢結果時,只能顯示別名表b中的學生信息。注意,因為學生“何燕”本身也包含在別名表b中,因此查詢結果自然也包含了“何燕”
5-36 查詢學生中年齡相同的學生情況。要求按同齡學生分組顯示其學號、姓名、性別、年齡、籍貫、學院、年級和專業,且能顯示各年齡組人數等信息
分析:查詢首選將年齡YEAR(a.Sbirthday)相同的學生升序排列,然后按同齡學生分組統計。這樣的查詢講出現同齡學生中一個學生重復出現的現象,為解決此問題,使用了去重復子句DISTINCT(Sno)。
5-37 查詢所有選修了課程的學生學號、姓名和成績
外部連接(OUTER JOIN):同時顯示內部連接的匹配行和不匹配行,就要用到外連接。
5-38 查詢所有學生選課情況(包括未選課學生),顯示學生的學號、姓名、課程號及成績
分析 :由執行結果可以看出,李玲,王坤鵬,劉顯榮和何燕4位同學對應的Cno值為NULL,代表他們未選課,其余同學都選修了課程。
5-39 為SE學院的所有學生創建一個學生信息視圖
5-40 為講授“數據結構”課程的教師創建一個DS_Teacher視圖,包括課程編號、課程名稱和教師姓名
五.作業SQL語句
1.查詢軟件工程學院(SE)學生的學號和姓名
2.查詢選修C002課程的學生學號和成績,結果按成績降序排列;如成績相同,則按學號升序排列
4.查詢軟件工程學院(SE)或文學院(CH)姓“張”的學生的信息
3.查詢選修C002課程成績為80~90的學生的學號和成績,并將成績乘以0.9輸出
5.查詢“秦海東”教師擔任的課程總學時數
6.查詢“陳流星”同學所選修課程的任課教師信息
7.查詢總成績在200分以上的學生學號、總成績和平均成績
8.在FROM子句中用INSERT JOIN連接符指定連接條件查詢所有有C002號課程成績的學生學號、姓名和成績
9.查詢選修課程一樣且成績相同的學生的基本情況(使用自身連接)
10.查詢所有考試成績及格的學生成績信息,結果中包含學生的學號、姓名、性別、選修課程編號、成績,并按成績進行降序排列(使用內連接INNER)
11.查詢所有學生的總成績(包括沒有成績的學生),學號和姓名(使用外部連接查詢)
12.查詢某課程成績在90分以上的學生學號和姓名(使用謂詞IN連接子查詢)
13.查詢有課程成績的學生學號和姓名(使用謂詞EXISTS連接子查詢)
14.從COURSE表中查詢課程名稱中包含“數據”的課程信息
15.查詢所有學生及其選修課情況(包含為選修任何課程的學生),顯示學生姓名、課程名稱和課程成績(要求使用外連接)
16.查詢所有學生中平均成績最高的學生學號
17.查詢所有軟件工程學院(SE)的學生學號、選修課程號以及分數(使用EXISTS謂詞)
18.查詢選修了學號20131322001的同學所選修的全部課程的學生姓名,學號,課程名。
19.求選修了C001號課程的學生中,C001課程成績比“陳流星”高的所有同學的學號、姓名和成績。
20.查詢“計算機導論”課程成績比“數據結構”課程成績高的學生姓名、課程名、“計算機導論”課程成績及“數據結構”課程成績。
第三篇:數據庫上機心得體會
數據庫上機心得體會
數據庫的課程結束了,通過對數據庫的學習也初步掌握其各方面的知識,數據庫的功能是強大的,面對目前的信息化社會,在整理、查詢、分析數據方面是一款強有力的工具。
學習的目的在于將知識能合理順利的運用,將書本知識化為自己所用,是一個不知到知道,了解完善應用的過程,尤其是計算機方面的課程更是如此,必要的上機練習是必不可少的。之前的計算機語言、匯編語言等,都是在上機練習中得到順利掌握。面對這學期的數據庫也是如此的過程,在開始對理論知識的學習,然后進行上機練習,目的在于讓我們更好的掌握其知識,熟悉數據庫編程語言等。
當然上機可也不是輕松是課程,在課前還是應該做些相應的準備。首先在理論知識的學習中必須先打好基礎,經過預習、聽課、復習、作業四個環節的學習,對于這門課的理論知識有了一定了解,才便于我們的上機課程,理論與上機的結合這樣才有助于我們更好的掌握知識。
在數據庫上機中主要是用到的SQL(Structured
Query
Language)結構化查詢語言,它是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統。同時也是數據庫腳本文件的擴展名。可以幫我們做到面向數據庫執行查詢、取回數據、插入新的記錄、更新數據庫中的數據、刪除記錄、創建新數據庫、新表和視圖、設置表、存儲過程和視圖的權限,功能非常強大。
學習數據庫的內容是從數據庫、數據表的創建和修改開始的,表是建立關系數據庫的基本結構,用來存儲數據具有已定義的屬性,在表的操作過程中,有查看表信息、查看表屬性、修改表中的數據、刪除表中的數據及修改表和刪除表的操作。從課程中中讓我更明白一些知識,表是數據最重要的一個數據對象,表的創建好壞直接關系到數數據庫的成敗,表的內容是越具體越好,但是也不能太繁瑣,以后在實際應用中多使用表,對表的規劃和理解就會越深刻。在編程方面是需要我們對于編程有邏輯思維能力及一定的編程技巧。在數據庫中插入表、表中的信息等都需要注意,不然很容易出錯。
通過上機練習讓我比較容易的掌握理論知識的難點,以及一些平時不注意的問題,在上機練習的過程中需要對每個細節都要留心,這樣才不至于出錯,這就加強了我們對平時不注意的問題得到回應,從而加深了細節問題的處理方式。在上機的學習之后更加了解了表是數據最重要的一個數據對象,表的創建好壞直接關系到數數據庫的成敗,表的內容應該如何設置比較好一些,需要具體,但是避免繁瑣,對表的概念和應用有了更深的理解。
上機的學習中也了解到數據庫的視圖和查詢。查詢可以通過SQL語言進行完成,這樣加深了查詢語句的基本結構,讓我們能更好的掌握其中語句,方便于我們后面的學習和應用;在視圖的操作中,也了解到了視圖是常見的數據庫對象,是提供查看和存取數據的另一種途徑,對查詢執行的其中一些操作,可以使用視圖來完成。視圖的功能也是強大的,使用視圖不僅可以簡化數據操作,還可以提高數據庫的安全性,不僅可以檢索數據,也可以通過視圖向基表中添加、修改和刪除數據。
在學習過程中也遇到了不少問題,積極詢問老師,和同學共同商討,查詢資料把問題得以解決,培養了解決問題的能力,查閱資料是很好的手段,在今后的學習過程中應該繼續發揚這些能力。數據庫的學習是在學習與探索中度過的,短暫的課程時間的學習是結束了,但其中學到了許多知識,也有諸多的問題需要今后去解決,學習一門課程,學到的是如何學會,而不是隨隨便便的學完,在今后還要自己強化各方面的知識,真正學以致用。通過這次的學習,我了解了數據庫的概念與重要性,還有今后的發展方向,明白數據庫的應用是廣泛的,不可小覷,在今后應該再進行加強學習。
第四篇:數據庫上機實驗報告
蘭州理工大學
學生上機報告
學院計算機與通信學院課程名稱數據庫原理
學生姓名侯予南學號05550204
專業班級基地班05級1班
上機日期2008年4月17日
指導教師李明
上機實驗報告
(一)實驗內容:
1、熟悉SQL Server 2000應用環境;
熟悉查詢分析器的使用方法;
2、運行課堂示例:建立表Teacher , Course ;
進行數據插入、查詢、更新、建立視圖、創建觸發器等操作;
3、完成作業(P108 第5題,P145第5題);
4、完成實驗報告。
實驗環境:
數據庫系統:SQL Server 2000
實驗過程:
在實驗中發現的問題:
小結:
教師評語:
成績:
第五篇:數據庫上機心得體會
心得體會
數據庫的課程結束了,通過對數據庫的學習也初步掌握其各方面的知識,數據庫的功能是強大的,面對目前的信息化社會,在整理、查詢、分析數據方面是一款強有力的工具。
學習的目的在于將知識能合理順利的運用,將書本知識化為自己所用,是一個不知到知道,了解完善應用的過程,尤其是計算機方面的課程更是如此,必要的上機練習是必不可少的。之前的計算機語言、匯編語言等,都是在上機練習中得到順利掌握。面對這學期的數據庫也是如此的過程,在開始對理論知識的學習,然后進行上機練習,目的在于讓我們更好的掌握其知識,熟悉數據庫編程語言等。當然上機可也不是輕松是課程,在課前還是應該做些相應的準備。首先在理論知識的學習中必須先打好基礎,經過預習、聽課、復習、作業四個環節的學習,對于這門課的理論知識有了一定了解,才便于我們的上機課程,理論與上機的結合這樣才有助于我們更好的掌握知識。
在數據庫上機中主要是用到的SQL(Structured Query Language)結構化查詢語言,它是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統。同時也是數據庫腳本文件的擴展名。可以幫我們做到面向數據庫執行查詢、取回數據、插入新的記錄、更新數據庫中的數據、刪除記錄、創建新數據庫、新表和視圖、設置表、存儲過程和視圖的權限,功能非常強大。學習數據庫的內容是從數據庫、數據表的創建和修改開始的,表是建立關系數據庫的基本結構,用來存儲數據具有已定義的屬性,在表的操作過程中,有查看表信息、查看表屬性、修改表中的數據、刪除表中的數據及修改表和刪除表的操作。從課程中中讓我更明白一些知識,表是數據最重要的一個數據對象,表的創建好壞直接關系到數數據庫的成敗,表的內容是越具體越好,但是也不能太繁瑣,以后在實際應用中多使用表,對表的規劃和理解就會越深刻。在編程方面是需要我們對于編程有邏輯思維能力及一定的編程技巧。在數據庫中插入表、表中的信息等都需要注意,不然很容易出錯。
通過上機練習讓我比較容易的掌握理論知識的難點,以及一些平時不注意的問題,在上機練習的過程中需要對每個細節都要留心,這樣才不至于出錯,這就
加強了我們對平時不注意的問題得到回應,從而加深了細節問題的處理方式。在上機的學習之后更加了解了表是數據最重要的一個數據對象,表的創建好壞直接關系到數數據庫的成敗,表的內容應該如何設置比較好一些,需要具體,但是避免繁瑣,對表的概念和應用有了更深的理解。
上機的學習中也了解到數據庫的視圖和查詢。查詢可以通過SQL語言進行完成,這樣加深了查詢語句的基本結構,讓我們能更好的掌握其中語句,方便于我們后面的學習和應用;在視圖的操作中,也了解到了視圖是常見的數據庫對象,是提供查看和存取數據的另一種途徑,對查詢執行的其中一些操作,可以使用視圖來完成。視圖的功能也是強大的,使用視圖不僅可以簡化數據操作,還可以提高數據庫的安全性,不僅可以檢索數據,也可以通過視圖向基表中添加、修改和刪除數據。
在學習過程中也遇到了不少問題,積極詢問老師,和同學共同商討,查詢資料把問題得以解決,培養了解決問題的能力,查閱資料是很好的手段,在今后的學習過程中應該繼續發揚這些能力。數據庫的學習是在學習與探索中度過的,短暫的課程時間的學習是結束了,但其中學到了許多知識,也有諸多的問題需要今后去解決,學習一門課程,學到的是如何學會,而不是隨隨便便的學完,在今后還要自己強化各方面的知識,真正學以致用。通過這次的學習,我了解了數據庫的概念與重要性,還有今后的發展方向,明白數據庫的應用是廣泛的,不可小覷,在今后應該再進行加強學習。