當前位置:首頁 » 數據倉庫 » 資料庫說課ppt
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫說課ppt

發布時間: 2023-06-14 18:00:17

資料庫邏輯模型

資料庫關系模型(資料庫邏輯模型)是將數據概念模型轉換為所使用的資料庫管理系統(DBMS)支持的資料庫邏輯結構,即將E-R圖表示成關系資料庫模式。資料庫邏輯設計的結果不是唯一的,需利用規范化理論對資料庫結構進行優化。

在關系模型中,資料庫的邏輯結構是一張二維表。在資料庫中,滿足下列條件的二維表稱為關系模型:

1)每列中的分量是類型相同的數據;

2)列的順序可以是任意的;

3)行的順序可以是任意的;

4)表中的分量是不可再分割的最小數據項,即表中不允許有子表;

5)表中的任意兩行不能完全相同。

由此可見,有序的航空物探測量剖面數據不滿足資料庫關系模型條件第3條「行的順序可以是任意的」,因此,不能簡單地直接利用關系資料庫(如Oracle,sql Server,Sybase等)來管理剖面數據,需將數據在資料庫中的存儲方式改為大欄位存儲,確保不因資料庫數據的增加和刪除等操作改變剖面數據有序特性。

一、大欄位存儲

(一)大欄位存儲技術

大欄位LOB(Large Object)技術是Oracle專門用於存放處理大對象類型數據(如多媒體材料、影像資料、文檔資料等)的數據管理技術。LOB包括內部的和外部的兩種類型。內部LOB又分CLOB(字元型)、BLOB(二進制型)等3種數據類型,其數據存儲在資料庫中,並且支持事務操作;外部LOB只有BFILE類型,其數據存儲在操作系統中,並且不支持事務操作。LOB存放數據的長度最大可以達到4G位元組,並且空值列(沒有存放數據)不佔空間(圖2-6)。

圖2-6 大欄位存儲示意圖

由於外部LOB存放在操作系統文件中,其安全性比內部LOB差一些。此外,大欄位的存儲支持事務操作(批量提交和回滾等),而外部LOB不支持事務操作。所以,航空物探測量剖面數據採用BLOB來存儲。對於BLOB類型,如果數據量小於4000位元組,資料庫通常採用行內存儲,而數據量大於4000位元組採用行外存儲。分析航空物探測量剖面數據,每個場值數據佔4個位元組(單精度),目前航磁數據采樣率為10次/s,4000位元組只能存儲100s數據;一般情況下航空物探測量每條測線飛行時間至少在10min以上,每條測線數據量遠遠大於4000位元組。所以,航空物探測量剖面數據採用行外存儲方式,即大欄位列指定「Disable Storage In Row」的存儲參數。

由於大欄位類型長度可變,最大可到4G。假設測線飛行時間為T,場值采樣率為n次/s,測線場值數據量為4Tn,所以有4Tn≤4G。單條測線飛行時間T不會超過10h(36000s,航空物探測量1架次至少飛行1個往返2條測線),則場值的采樣率n≤4G/4T=4×1024×1024×1024/4×36000次/s=29826次/s。採用大欄位來存儲測量數據,不僅能夠減少數據表的記錄數,提高查詢效率,而且使得采樣率的擴展不受限制。

(二)大欄位存儲技術應用

由於航空物探數據的數據量較大,現有的航磁測量數據按基準點方式(點存儲)存儲可達幾億個數據記錄。若按磁場數據采樣點存儲方式(簡稱「場值存儲方式」),則記錄條數=(磁場數據采樣率/坐標采樣率)點存儲方式的記錄數,達幾十億條數據記錄,且隨著數據采樣率的擴展、測點的加密,航空物探測量數據量隨著時間的推移呈現快速增長之勢。顯然,如果採用常規的表結構來存儲,勢必造成數據的存儲、管理、檢索、瀏覽和提取都非常困難。另一方面,從航空物探專業應用需求來說,很少對單個測點的場值數據進行運算、分析等操作,一般至少是對一條測線或以上測線,多數時候是需要對整個測區的場值數據進行化極、上延、正反演擬合等。

因此,在航空物探資料庫表結構設計時,改變過去將基準點或場值點數據記錄作為資料庫最小管理對象的理念,採用了大欄位存儲技術,將測線作為資料庫最小管理對象,將測線上的測量數據,如坐標數據和磁場、重力場數據分別存儲在相應大欄位中。在航空物探資料庫建設中,大量採用資料庫的大欄位存儲技術(詳見《航空物探信息系統資料庫結構設計》)。

(三)大欄位存儲效率

以航磁測量數據為例分析大欄位存儲技術優勢。如果以場值存儲方式存儲測線數據,則每條記錄包含架次號、測線號、基準號、地理坐標、投影坐標、磁場數據等,由於坐標數據采樣率2次/s,磁場數據采樣率10次/s,每5個磁場數據中,只有第1個磁場數據有坐標數據,其他4個坐標數據是內插出來,因此在測線記錄中會產生大量冗餘的數據坐標數據。採用點存儲方式存儲的測線數據記錄數等於線上基準點數,若採用大欄位存儲方式,一條測線數據只存儲為1條數據記錄(圖2-7),一般一條測線的測點數近萬個,甚至更多,可見採用大欄位存儲大大減少測線數據存儲記錄數,提高數據的存取效率。

以某測區的兩條航跡線為例,分別採用3種方式測試資料庫的數據存儲效率。磁場數據的采樣率10次/s,坐標數據采樣率2次/s,兩條測線上共有基準點8801個。以場值方式存儲先內插坐標信息,使得每個場值數據都擁有自己的坐標,然後存入資料庫,共有數據記錄44005條,寫入資料庫時間為57.22s,讀取時間為1.03s。第二種方式是以采樣點的方式進行存儲,共有8801條記錄,寫入資料庫時間為9.47s,讀取需要0.91s。第三種方式是以大欄位的形式存儲,只有2條記錄,寫入資料庫1.03s,讀取時間為0.44s(表2-2)。大欄位數據存儲記錄數最少,存取效率最高。用整個測區數據測試效果更加明顯。

表2-2 三種數據存儲方法的存取效率比較

圖2-7 大欄位存儲方式示意圖

二、聯合主鍵

主外鍵是關系型資料庫建立表間關系的核心。在航空物探空間資料庫建設過程中,要素類與要素類之間、要素類與對象類之間,以及對象類與對象類之間的關系的描述有3種形式,即拓撲關系——描述要素類與要素類之間結點、鄰接和聯通關系;疊加關系——描述要素類與要素類之間的相交、包含與分類關系;隸屬關系——描述對象類與對象類之間的派生關系。前兩種關系是採用空間數據模型建立的關系,而隸屬關系是通過主鍵建立的對象類與對象類之間的關系。在建立一對一、一對多的表間關系時,需要在整個資料庫表中確定具有唯一性的一個欄位作為主鍵(主關鍵字)。

按照傳統的航空物探數據的檔案管理模式,每個項目分配一個自然數作為檔案號,項目的所有資料均與此檔案號相聯系。勘查項目和科研項目的檔案號是獨立編號的,且均從001開始。加之人工管理的原因,存在1個項目2個檔案號和2個項目1個檔案號的情況,因此現行的檔案號與項目之間的對應關系不具備唯一性,不能作為項目的唯一標識,即不能作為資料庫表的主鍵。項目編號也不能作為資料庫表的主鍵,項目編號也只是近十年的事,以前的項目沒有項目編號。

綜合考慮上述因素和項目具有分級、分類的特點,提出了構造項目唯一標識碼(簡稱「項目標識」)的方法,並以此碼作為資料庫表的主鍵。

項目標識(主鍵):AGS+項目類別(2位)+項目起始年份(4位)+檔案號(6位)

標識含義:AGS——航空物探的縮位代碼;

項目類別——2位代碼,01代表勘查項目、02代表科研項目;

起始年份—4位代碼,項目開始年號;

檔案號—6位代碼,為了與傳統的項目管理方式相銜接,後面3~4位是

項目檔案管理模式下的檔案號,不足部分補零。

以上15位編碼是一級項目的項目標識,二級及其以下級別的項目標識是在上一級項目標識基礎上擴展2位數字代碼,中間用「.」號隔開,數字為該級項目的序號。項目標識定義為30位編碼,適用於六級以內的項目。例如:AGS022004000576.08.04.02,表示該項目為2004年開展的檔案號為576的航空物探科研項目(一級項目)的第8課題(二級項目)第4子課題(三級項目)的第2專題。由此可見,該項目標識不僅僅是一個建立表間關系的關鍵字,同時還表達了不同級別項目間的隸屬關系。在系統軟體開發時,利用此關系生成了項目的分級樹形目錄,用戶對項目的層次關系一目瞭然,便於項目查詢。

資料庫的主鍵一經確定,相應地需要確定聯合主鍵的組成及其表達方式。所謂聯合主鍵就是數據資料的唯一標識,在一個資料庫表中選擇2個或者2個以上的欄位作為主鍵。由於航空物探數據絕大部分與項目標識有關,加之數據的種類較多,分類復雜,單憑主鍵確定資料庫表中記錄的唯一性,勢必需要構建極其復雜的主鍵,這種方法既不利於主鍵的數據操作,又會造成大量的數據冗餘,合理地使用聯合主鍵技術可以很好地解決資料唯一問題。以項目提交資料為例,提交的資料分為文字類資料、圖件類資料和媒體類資料,我們對資料進行分類和編號,例如100代表文字資料(110——World文檔,120——PDF文檔),200代表圖件資料(210——基礎地理資料、220——基礎地質資料,230——航跡線圖,240——剖面圖,250——等值線圖等),300代表媒體資料(310——PPT文檔,320——照片等),第1位(百位)表示該資料的類型,第2~3位表示該類資料的序號。

在資料庫管理和項目資料查詢時,採用項目標識與資料分類編號作為聯合主鍵(圖2-8),可以高效地實現復雜數據的查詢。在整個資料庫系統中多處(項目查詢、數據提取等模塊)使用聯合主鍵技術。

圖2-8 聯合主鍵實例

三、信息標准化

為了實現數據共享,在航空物探資料庫建模過程中,參考和引用了近百個國家信息化標准,編制了4個中心信息化標准和1個圖件信息化工作指南。

(一)引用的國家信息化標准

1)地質礦產術語分類代碼:地球物理勘查,地球化學勘查,大地構造學,工程地質學,結晶學及礦物學,礦床學,水文地質學,岩石學,地質學等。

2)國家基礎信息數據分類與代碼,國土基礎信息數據分類與代碼,地球物理勘查技術符號,地面重力測量規范,地面磁勘查技術規程,地面高精度磁測技術規程,大比例尺重力勘查規范,地理信息技術基本術語,地理點位置的緯度、經度和高程的標准表示法,地名分類與類別代碼編制規則。

3)地球空間數據交換格式;數學數字地理底圖數據交換格式;數字化地質圖圖層及屬性文件格式。

(二)本系統建立的信息化標准

編寫了「航空物探空間數據要素類和對象類劃分標准」,「航空物探項目管理和資料管理分類代碼標准」,「航空物探勘查分類代碼標准」,「航空物探信息系統元數據標准」,「航空物探圖件信息化工作指南」,以便與其他應用系統進行信息交換,實現資料庫資料共享。

航空物探空間數據要素類和對象類劃分標准:根據物探方法、數據處理過程以及推斷解釋方法和過程,把與GIS有關的數據劃分為不同類型的要素類-對象類數據,按專業、比例尺、數據內容對要素類和對象類進行統一命名,使空間資料庫中的每個要素類和對象類的命名具有唯一性,防止重名出現。規定要素類-對象類資料庫表結構及數據項數值類型。

航空物探項目管理和資料管理分類代碼標准:規定了航空物探項目管理和資料管理的相關內容,包括航空物探勘查項目和科研項目的項目立項、設計、實施、成果、評審、資料匯交等項目管理的全過程中的內容,以及項目成果資料和收集資料的歸檔、發送、銷毀、借閱等資料管理與服務過程中的內容和數據項代碼。

航空物探勘查分類代碼標准:在「地質礦產術語分類代碼地球物理勘查」(國家標准GB/T9649.28—1998)增加了航磁、航重專業方面所涉及的數據採集、物性參數、方法手段、儀器設備、資料數據解釋及成圖圖件等內容和數據項代碼。

航空物探信息系統元數據標准:規定了航空物探空間數據管理與服務的元數據(數據的標識、內容、質量、狀況及其他有關特徵)的內容。

四、航跡線數據模型

(一)航跡線模型的結構

航空物探測量是依據測量比例尺在測區內布置測網(測線和切割線)。當飛機沿著設計的測線飛行測量時,航空物探數據收錄系統按照一定的采樣率採集采樣點的地理位置、高度和各種地球物理場信息。採用屬性數據分置的方法,將測線地理位置信息從航空物探測量數據中分離出來,形成航跡線要素類表,在此表中只存儲與航跡線要素類有關的數據,如項目標識、測區編號、測線號、測線類型(用於區分測線、切割線、不同高度線、重復線等)、坐標、高度值等;將航跡線的對象類數據(磁場、重力場基礎數據)分別以大欄位形式存儲在各自的二維表中,它們共享航跡線,解決了多源有序不同采樣率的航空物探測量數據的數據存儲問題,在滿足要素類空間查詢的同時,統一數據的存儲方式(圖2-9)。航跡線要素類隸屬於測區要素類,它們之間為空間拓撲(包含)關系。測區從屬於勘查項目,每個勘查項目至少有一個測區,它們之間為1對多關系。有關項目信息存放在項目概況信息對象類表中,各種表之間通過項目標識進行聯接。

圖2-9 航跡線數據模型結構

(二)航跡線的UML模型

統一建模語言UML(Unified Modeling Language)是一種定義良好、易於表達、功能強大且普遍適用的建模語言。它溶入了軟體工程領域的新思想、新方法和新技術。UML是面向對象技術領域內佔主導地位的標准建模語言,成為可視化建模語言的工業標准。在UML基礎上,ESRI定義了空間資料庫建模的ArcGIS包、類庫和擴展原則。

圖2-10 與航跡線有關的資料庫表邏輯模型結構圖

在確定航跡線數據模型後,以它為基礎,使用UML完成與航跡的有關的項目概況信息、測區信息、原始數據等資料庫表邏輯模型設計(圖2-10)。

由UML模型生成Geodatabase模式時,模型中的每個類都對應生成一個要素類或對象類。類的屬性映射為要素類或對象類的欄位。基類屬性中包含的欄位,在繼承類中不需重復創建。例如,每個類都包括項目標識等欄位,可以創建一個包含公共屬性的基類,其他類從該類繼承公共的屬性,而無需重復建基類中包含的屬性。因為基類沒有對應的要素類或對象類,所以將基類設置為抽象類型。要素類之間的關系採用依賴關系表示。

五、資料庫邏輯模型

關系資料庫的邏輯結構由一組關系模式組成,因而從概念結構到關系資料庫邏輯結構的轉換就是將概念設計中所得到的概念結構(ER圖)轉換成等價的UML關系模式(圖2-11)。在UML模型圖中,要素數據集用Geodatabase工作空間下的靜態包表示。要素集包不能互相嵌套,為了容易組織,在生成物理模型後,在要素數據集包中自定義嵌套。要素數據集與空間參考有關,但是空間參考不能在UML中表達。要素類和二維表都是以類的形式創建的,區別是要素類繼承Feature Class的屬性,而二維表繼承Object屬性。為了表達每種元素的額外屬性,比如設置字元型屬性欄位的字元串長度,設置要素類的幾何類型(點、線或面)需要使用Geodatabase預定義的元素標記值。

圖2-11 邏輯設計關系轉換

基於航空物探數據的內在邏輯關系進行分析,使用統一建模語言(UML)構建數據實體對象間的關系類,定義了航空物探資料庫的邏輯模型(圖2-12)。

⑵ 如何在ppt幻燈片中插入資料庫

插入 對象 選擇文件 粘貼

⑶ 什麼是資料庫

1.什麼是資料庫呢?

每個人家裡都會有冰箱,冰箱是用來干什麼的?冰箱是用來存放食物的地方。
同樣的,資料庫是存放數據的地方。正是因為有了資料庫後,我們可以直接查找數據。例如你每天使用余額寶查看自己的賬戶收益,就是從資料庫讀取數據後給你的。
你可能會問了:我的數據就存放在自己電腦的excel表裡就可以了,為什麼還要搞個資料庫呢?

這是因為資料庫比excel有更多的優勢。資料庫可以存放大量的數據,允許很多人同時使用裡面的數據。
舉個例子你就明白了,excel好比是一個移動硬碟,你使用了這個移動硬碟其他人就用不了了。
資料庫好比是網盤,很多人可以同時訪問裡面里的數據。
而且網盤比移動硬碟能放更多的數據。
2.資料庫是如何存放數據的?

資料庫有很多種類,這里我們重點學習使用最廣泛的關系資料庫。
關系資料庫是由多個表組成的。如果你用過Excel,就會知道Excel是一張一張的二維表。每個表都是由行和列組成的。
同樣的,關系資料庫里存放的也是一張一張的表,只不過各個表之間是有聯系的。所以,簡單來說:
關系資料庫=多張表+各表之間的關系
應的,學會關系資料庫我們只要掌握兩點就可以:
1)多張表裡面,每一張表的結構
2)各表之間的關系
我們接下來分別來看看這兩個知識點。
1) 表的結構
表的結構是指要了解關系資料庫中每張表長什麼樣。
每個表由一個名字標識。表包含帶有列名的列,和記錄數據的行。我們舉個具體的例子就一目瞭然了。
下面圖片里的表名是:學生表,記錄了每個學生的信息。
表中每一列都有一個名字來標識出該列,這個表裡有4列,列名分別是學號,姓名,出生日期,性別。從列名上你也可以知道這一列對應記錄的是什麼數據。

表的每一行里記錄著數據。這里的一行表示該名學生的信息,比如第2行是學號0002學生的信息,他的姓名是猴子,出生日期是1990-12-21,性別是女。
2)各表之間的關系

關系資料庫是由多張表組成的,圖片里是存放在學校資料庫里的4張表。
你能發現下面這4張表之間有什麼關系嗎?
什麼是關系呢?
你是你爸爸的兒子,你是你的兒子的爸爸,這就是生活中的關系。其實,數據之間也是有關系的。關系資料庫里各個表之間如何建立起關系呢?
我們來看圖中「學生表」,「成績表」這兩個表之前的關系。
這兩張表通過」學號」關聯起來,為了更清楚的看到這兩個表的關系,PPT里我用相同顏色代表同一個學生的信息。

例如我想知道學生表裡學號「0001」 的成績是多少?那麼我就可以在成績表裡去查找「學號」值是0001的行,最後在成績表裡發現有3行數據的學號都是「0001」 ,對應的就找到了該學生的三門課程的成績。
通過這個例子你應該對表之間的關系有了大概的了解。關系就是數據能夠對應的匹配,在關系資料庫中正式名稱叫聯結,對應的英文名稱叫做join。

聯結是關系型資料庫中的核心概念,務必記住這個概念,後面會在多表查詢中具體學到。
3.什麼是資料庫管理系統?

前面講的都是關系資料庫原理方面的基本理論。理論有了,當然的就的有對應的軟體實現才能用起來,不然再強大的理論都是一堆無用的東東。這就好比,建築師如果只有設計草圖是無法蓋起樓房的,得有具體的建築人員才能蓋起樓房。
所以,上面講的關系資料庫原理就是「設計草圖」,那麼對應的「建築人員」是誰呢?
實現資料庫原理的「建築人員」就是資料庫管理系統,用來管理資料庫的計算機軟體。
關系資料庫管理系統有很多種,比如MySQL、Oracle、SQL Server等都是實現上面理論的關系資料庫。
4.什麼是sql?

建築施工人員通過使鏟子,拉土機等工具來蓋房子。
那麼,我們通過什麼工具來操作資料庫里的數據呢?
這個工具就是SQL。
SQL是為操作資料庫而開發的一種語言,它可以對資料庫里的表進行操作,比如修改數據,查找數據。
之前我在社群里舉過一個例子,我覺得可以很好的說明白資料庫和sql是什麼關系。
把資料庫比如一碗米飯,裡面放的米是數據。現在我們要吃碗里的米飯,怎麼取出碗里的米飯呢?
這時候我們拿一雙筷子,用筷子操作碗里的米飯。這里的筷子就是SQL,用來操作資料庫里的數據。
5.總結

1)什麼是資料庫?
資料庫用於存放數據,
關系資料庫=多張表+各表之間的關系
2)關系資料庫表長什麼樣?

關系資料庫中每個表由一個名字標識。表包含帶有列名的列,和記錄數據的行。
主鍵是關系資料庫中重要的概念,用來標識數據的唯一性。
3)關系資料庫里各個表之間如何建立聯系呢?

關系資料庫中,如果一張表要關聯其他表,通過對應的列產生了關系。這個關系叫做聯結。
4)什麼是關系資料庫管理系統?

實現資料庫原理的「施工團隊」就是,用來管理資料庫的計算機軟體叫做資料庫管理系統。
常用的關系資料庫管理系統有mysql,orcale,sql server為了方便描述,我們後面說到資料庫,都是指資料庫管理系統。
5)什麼是SQL?

資料庫裡面放著數據,SQL是用來操作資料庫里數據的工具。
現在我們可以理解支付寶的背後的運行原理了,用戶把錢存放到支付寶資料庫里,當用戶查看支付寶余額的時候,後台使用SQL這個工具操作支付寶的資料庫,把裡面的數據查找出來,然後返回給用戶,這樣用戶就可以看到存放到支付寶里的錢和每天的收益了。

⑷ 誰可以幫忙做下這個題目呀 資料庫課程設計

資料庫課程設計報告
計網0831資料庫課程設計
1、數據的導入和導出今天是資料庫實習的第一天,對於我們來說資料庫雖然是今年剛剛學過的課程,但是我們已經考試完一段時間了,所以也很久沒有翻書本了,很多知識在剛剛做的時候還是很陌生的,不得不翻一下書本,下面就是在第一天實習中所產生的問題報告和分析結果。
在做實訓前,老師先給我們講了資料庫如何導入EXCL表,在老師的指導下我們學會了,為創建表提供了方便。
首先我們是建立了一個新的KCSJ資料庫,建立的數據語句如下:
用SQL語句在D:\KCSJ下創建課程設計資料庫(KCSJ)
(一)CREATE DATABASE KCSJ
ON
(NAME=KCSJ_DATA,
FILENAME='D:\KCSJ_DATA.MDF')
LOG ON
(NAME=KCSJ_LOG,
FILENAME='D:\KCSJ_LOG.LDF')
將KCSJ.XLS文件中的數據導入KCSJ資料庫中。導入後在資料庫中將生成以下五個基本表:
學生(學號,姓名,性別,年齡,入學成績,班級,籍貫)
成績(學號,課程號,成績)
課程(課程號,課程名,教師名)
三角形(a,b,c,s)
迴文數(A1,A2)
其中:a> 學生、成績、課程、三角形、迴文數是表的名字。
b> 學號、姓名、性別、班級、籍貫、課程名和教師名為字元型,長度分別為10 、10、2、6、8、20、10;
c> 入學成績為整型。
d> 年齡、課程號和成績為整型或微整型。
e> A1為整型;A2為字元型,長度為2。
f> a、b、c為float類型,代表三角形的三邊,s為float類型,代表三角形的面積。
在導入資料庫中KCSJ.XLS文件的數據導入的時候是在所有任務--導入數據—數據源為excel97-2000- 文件位置—導入表中的數據—修改類型和長度 最後確定。
用企業管理器創建資料庫(JW0831),將KCSJ資料庫中的五個表導入該資料庫中。
打開所有任務 導入數據源 選擇KSCJ 資料庫 下一步 再選擇jw0831資料庫 選擇所有 確定 就可以將KCSJ資料庫中的五個表導入該資料庫中。
簡單的結構化查詢
--(1)查詢學生的詳細記錄
select*from 學生
--(2)查詢學生表中前兩個班級(班級名稱不能重復)
select top 2 班級 from 學生
group by 班級
在做本題的時候,由於想的比較復雜,外加題意有點模糊,所以轉了很大一個圈,並在老師的側外指導下通過group by分組才把本題做了出來。
--(3)顯示把 成績表中各科學生的成績加 20 分後的信息
select*from 成績
where 成績='成績'+20
在做本題的時候,由於題意理解錯誤,所以我先用updata語句來進行更新,但是在做到其它題的時候,聽到老師在指導其它同學的時候,把題意一說,我才恍然大悟,自己的方向又錯了。然後又重新思考,接著就做出了上面的答案。
--(4)查詢來自「寧波」 學生的學號、姓名、籍貫
select 學號,姓名,籍貫 from 學生
where 籍貫='寧波'
--(5)查詢選修4號課程且考試成績在70分以上的學生的學號以及所選修的課程號和成績,顯示前3條結果記錄
select top 3*from 成績
where 成績>=70 and 課程號='4'
--(6)查詢入學成績在 300-400 分之內的學生的詳細情況,並按入學成績降序排序 ( 用兩種方法完成 )
select * from 學生
where 300<入學成績 and 入學成績<400 order by 入學成績 desc
select * from 學生
where 入學成績 between 300 and 400 order by 入學成績 desc
--(7)統計學生表中的學生人數
select count(*)from 學生
對於今天的題目做的多了,忽然發現很多題的類型都差不多,都是運用基本的書本知識,然後融會貫通,舉一反三,然後不費吹灰之力就做出來了,我說的不費吹灰之力是簡單的,但是有些還是費了好大一番功夫的。
--(8)查詢學生表中姓李,姓名列包含兩個字的學生的基本情況
select * from 學生
where 姓名 like '李_'
--(9)查詢名字中第 2 個字為『北'的學生的基本信息
select * from 學生
where 姓名 like '_北%
在做這幾道題的時候,我解決了並也明白了—和%得區別和用途
--(10)查詢選修 4 號課程,成績在 80-90 分之間的學生學號和成績
select*from 成績
where 80<=成績 and 成績<90 and 課程號='4'
--(11)查詢 JW0831 班和 JW0551 班學生的姓名、性別及班級(用謂詞查詢 in )
select 姓名,性別,班級 from 學生 where 班級 in('JW0831','JW0551')
group by 姓名,性別,班級
對於本道題拿到的時候,還是愣了一下的,因為我忽然不知道什麼是,對於用謂詞查詢 in,自己不會用,在翻書翻了一遍並且詢問了同學才發現如何去用它。
--(12)查詢缺少成績的學生的學號和相應的課程號
select 學號,課程號 from 成績
where 成績 is NULL
--(13)統計選修了4號課程學生人數
SELECT COUNT(*)AS'人數' FROM 成績 where 課程號='4'
--(14)查詢JW0831班家在河北學生的學號、姓名、性別
select 學號,姓名,性別 from 學生
where 籍貫='河北'and 班級='JW0831'
--(15)檢索劉志生老師所授課程的課程號和課程名。
select 課程號,課程名 from 課程
where 教師名='劉志生'
---(16)檢索年齡大於23歲的男學生的學號和姓名。
select 學號,姓名 from 學生
where 性別='男' and 年齡>23
--(17)查詢學生表中姓李的學生的基本情況
select *from 學生
where 姓名 like '李%'
--(18) 統計學生表中所有學生「入學成績」的平均分、最高分、最低分
select AVG(入學成績) as'平均成績',max(入學成績) as'最高分',min(入學成績) as'最低分'from 學生
--(19)查詢選修了1號或者3號課程,成績及格的學生的學號和成績
select 學號,成績 from 成績
where 成績>=60 and 課程號 in (1,3)
--(20)統計學生表中所有男女生人數
SELECT 性別, COUNT(性別)AS'人數' FROM 學生
group by 性別
對於今天的題除了自己不太熟悉課本知識和同學討論出來的那些分析外,對於其他的題已經沒有什麼問題了,因為我把今天的題做完之後,把報告寫完的同時,對於明天的題我也進行了一番思考,並且還幫助其他同學解決了一些不會的問題。
星期二 天氣 冷 心情 good

3、復雜的結構化查詢
--(1)檢索至少選修劉志生老師所授課程中一門課程的女學生姓名。
select 學生.學號,姓名,性別,課程.課程號 from 學生,成績,課程
where 性別='女' and 課程.課程號 in(select 課程號 from 課程 where 教師名='劉志生')and 學生.學號=成績.學號
and 課程.課程號=成績.課程號
對於今天的課程設計不是像昨天一樣那麼簡單了,簡直是提高了一個很大的層次,簡直是一步三晃啊!不容易啊!就像本題一樣,在查詢的時候要用一個子查詢和三個條件才能把它做出來!
--(2)檢索吳計算同學不學的課程的課程號。
select 課程號 from 課程 where 課程號 not in(select 成績.課程號 from 成績,學生where 姓名='吳計算' and 成績.學號=學生.學號)
在本題中,用的方法還真是一波三折啊!因為如果要查不學的課程,要先查出他學的課程,然後再排掉學過的!充分運用了not in這個語法
--(3)檢索至少選修四門課程的學生學號。
select 學號, count(成績.學號)as '門數' from 成績,課程 where 成績.課程號=課程.課程號
group by 成績.學號
having count(成績.學號)>=4
對於本題的用的是count做統計這個數據語句,外加可以用在group by 語句後的having條件語句。通過本題的聯系,可以很好的運用count 和having語句
--(4)檢索全部學生都選修的課程的課程號與課程名。
select 課程.課程名 ,課程.課程號 from 成績,課程
where 成績.課程號=課程.課程號
group by 課程.課程名,課程.課程號
having count(成績.學號) in (select count(學生.學號)from 學生)
--(5)檢索選修課程包含劉志生老師所授課的學生學號。
select 學號 from 成績,課程
where 教師名='劉志生'and 成績.課程號=課程.課程號
--(6)統計有學生選修的課程門數。
select 學號, count(成績.學號)as '門數' from 成績,課程 where 成績.課程號=課程.課程號
group by 成績.學號
--(7)求選修4號課程的學生的平均年齡。
select AVG(年齡)as'平均年齡',成績.課程號 from 學生,成績
where 課程號='4' and 學生.學號=成績.學號
group by 成績.課程號
--(8)求劉志生老師所授課程的每門課程的學生平均成績。
select avg(成績.成績)as'平均成績',課程.課程號 from 成績,課程
where 教師名='劉志生' and 成績.課程號=課程.課程號
group by 課程.課程號
--(9)統計每門課程的學生選修人數(超過6人的課程才統計)。要求輸出課程號和選修人數,查詢結果按人數降序排列,若人數相同,按課程號升序排列。
select 成績.課程號, count(成績.學號)as '人數' from 成績,課程
where 成績.課程號=課程.課程號
group by 成績.課程號
having count(成績.學號)>=6
order by count(成績.學號) asc
--(10)檢索學號比陸力利同學大,而年齡比他小的學生姓名。
select 學號,姓名 from 學生
where 學號>(select 學號 from 學生 where 姓名='陸力利') and 年齡<(select 年齡 from 學生 where 姓名='陸力利'
--(11)求年齡大於女同學平均年齡的男學生姓名和年齡。
select 姓名,年齡 from 學生
where 性別='男'and 年齡>(select avg(年齡)as'平均年齡'from 學生 where 性別='女')
--(12)統計學生人數超過 5人的班級名稱和對應的人數
select 班級,count(學生.學號)as '人數'from 學生
group by 班級
having count(學生.學號)>=5
--(13)檢索課程號和選修人數,查詢結果按人數升序排列,若人數相同,按課程號降序排列。
select 成績.課程號, count(成績.學號)as '人數' from 成績,課程
where 成績.課程號=課程.課程號
group by 成績.課程號
order by count(成績.學號) asc,成績.課程號 desc
這道題運用很多知識點,不但用了count 統計 還用了 group by 分組 外加排序
--(14)查詢選修課程學生的學號、姓名、所選課程號、取得的成績
select 學生.學號,學生.姓名,成績.課程號,成績.成績 from 學生,成績
where 學生.學號=成績.學號
--(15)查詢學生的學號、課程號和成績等級
select 學號,課程號,成績,(
CASE
WHEN 成績>=90 and 成績<=100 THEN 'A'
WHEN 成績>=80 and 成績<90 THEN 'B'
WHEN 成績>=70 and 成績<80 THEN 'C'
WHEN 成績>=60 and 成績<70 THEN 'D'
ELSE 'E'
END ) as 等級
from 成績
本題運用了一個新的知識點,這個知識點是在老師的ppt課件上找到的,利用這個語句何以很好很方便的為管理系統中的成績分等級,所以在本體中一定要記住本語句的語法如:case when……and then ……else end
今天小結,通過今天一天的課程設計,我覺得我收獲了很多,因為它讓我以前學的不太好的知識點全部都鞏固了一遍,尤其是成績、課程、學生這些表與表的鏈接,每次不是這里連不上就是那裡連不上,但是現在不但可以連上了,還可以幫助其他同學檢查出來錯誤,真是一筆不小的收獲,雖然今天做的題比較難,但是每一次在自己的努力下做出來都會有不小的成就感……
3、復雜的結構化查詢
星期三 天氣 冷 心情 good
外面飄著雪花,美好的一天又已經開始了!實習已經到了一半,離回家的日子也近了很多,所以心情也是越實習越好了!今天的工作當然也完成的比較順利!雖然有的還挺難的!但是相信自己一定就會成功!嘿嘿……看看自己的勞動成果就知道了!
3、復雜的結構化查詢
--(16)查詢選修了英語的學生的姓名和成績;
select 學生.姓名,成績.成績 from 成績,學生,課程
where 課程.課程名='英語'and 學生.學號=成績.學號 and 課程.課程號=成績.課程號
group by 學生.姓名,成績.成績
--(17)分別統計每個班級的男女人數(要求顯示出班級、性別、對應的人數)
SELECT 班級, 性別, COUNT(性別)AS'人數' FROM 學生
group by 班級,性別
--(18)求年齡大於所有女同學年齡的男學生姓名和年齡。
select 姓名,年齡 from 學生
where 性別='男'and 年齡>(select max(年齡) from 學生 where 性別='女')
group by 姓名,年齡

--(19)計算選修了1號課程的學生的平均成績(要求顯示出課程號和對應的平均成績)
select 課程號,avg(成績)as'平均成績'from 成績
where 課程號='1'
group by 課程號

--(20)查詢選修課程學生的學號、姓名、所選課程名、取得的成績
select 學生.學號,姓名,課程.課程名,成績.成績 from 學生,成績,課程
where 學生.學號=成績.學號 and 課程.課程號=成績.課程號
--(21)查詢學生的學號、姓名、性別及所選修各門課程的成績(要求每位學生用一個數據行顯示這些信息)

SELECT 學生.學號, 學生.姓名,學生.性別,
(select 成績 from 成績 where 課程號='1' and 學生.學號=學號) as '數學',
(select 成績 from 成績 where 課程號='2' and 學生.學號=學號) as '英語',
(select 成績 from 成績 where 課程號='3' and 學生.學號=學號) as '計算機基礎',
(select 成績 from 成績 where 課程號='4' and 學生.學號=學號) as '資料庫',
(select 成績 from 成績 where 課程號='5' and 學生.學號=學號) as '政治',
(select 成績 from 成績 where 課程號='6' and 學生.學號=學號) as '體育'

FROM 學生 INNER JOIN 成績 ON 學生.學號=成績.學號
GROUP BY 學生.學號, 學生.姓名,學生.性別
--(22)查詢李路路所學的課程名和對應的成績,並按照成績升序排列。
select 姓名,課程名,成績 from 學生,課程,成績
where 姓名='李路路'and 課程.課程號=成績.課程號 and 學生.學號=成績.學號
order by 成績

--(23)查詢平均成績大於 75 分的課程,要求顯示課程名和平均成績。
select 課程名,avg(成績)as'平均成績' from 課程,成績
where 課程.課程號=成績.課程號
group by 課程名
having avg(成績)>=75
--(24)查詢所選課程平均成績前三名的那些學生的姓名和平均成績。
select top 3 學生.學號,姓名,avg(成績.成績)as'平均成績'from 成績,學生 where 學生.學號=成績.學號 group by 學生.學號,姓名 order by avg(成績.成績) desc

--(25)查詢和李工業在同一個班級的學號和姓名
select 學號,姓名 from 學生
where 班級 in (select 班級 from 學生 where 姓名='李工業')

--(26)查詢JW0831班中入學成績比李里高的學生的姓名
select 姓名 from 學生
where 班級='JW0831' and 入學成績>(select 入學成績 from 學生 where 姓名='李里')

--(27)在學生表中查詢高於入學成績平均分的學生學號、姓名、班級、入學成績
select 學號,姓名,班級,入學成績 from 學生
where 入學成績>(select avg(入學成績)as'平均成績'from 學生)

--(28)查詢沒有選修課程的學生的學號和姓名
select 學生.學號,學生.姓名 from 學生
where 學號 not in(select 學號 from 成績 group by 學號 )

--(29)查詢選修了 5(含5) 門以上課程的學生的姓名。
select 姓名 from 學生,成績,課程 where 成績.課程號=課程.課程號 and 學生.學號=成績.學號
group by 成績.學號,姓名
having count(成績.學號)>=5
--(30)查找同名同姓的學生信息。
select a1.* from 學生 a1,學生 a2
where a1.姓名=a2.姓名 and a1.學號<>a2.學號
星期四 天氣 冷 心情 good
數據管理
--(1)利用學生表創建一個新表(不含數據):優秀(學號,姓名,性別),
--然後在學生表中檢索每一門課程成績都大於等於80分的學生學號、姓名和性別,
--並把檢索到的值送往優秀表中。
select 學號,姓名,性別 into 優秀 from 學生
where 5>6
insert into 優秀 select 學號,姓名,性別 from 學生 where 學號 in (select 學號 from 成績 group by 學號 having min(成績)>=80 )

--(2)把李路路同學的選課和成績全部刪去。
delete from 成績
where 成績 in(select 成績 from 學生,成績 where 學生.學號=成績.學號 and 姓名='李路路')
--(3)把低於總平均成績的女同學成績提高5%。
UPDATE 成績 SET 成績=成績*(1+0.05) WHERE 成績<(select avg(成績.成績)as'平均成績'from 成績) and 學號 in(select 學號 from 學生 where 性別='女')
--(4)把選修數學課不及格的成績全改為空值。
UPDATE 成績 SET 成績=null WHERE 成績<60 AND 課程號=(select 課程號 from 課程 where 課程名='數學')
--(5)在成績表修改4號課程的成績,若成績小於等於75分時提高5%,若成績大於75分時提高4%(用兩個UPDATE語句實現)。
UPDATE 成績 SET 成績=成績*0.5 WHERE 成績<=75 and 課程號='4'
UPDATE 成績 SET 成績=成績*0.4 WHERE 成績>75 and 課程號='4'
--(6)將選修4號課程且成績沒有及格的學生的成績調整為 60 分。
UPDATE 成績 SET 成績=60 WHERE 成績<60 AND 課程號='4'
自定義函數的使用
編寫一函數(hws),判斷一個整數是否為迴文數,若是函數值為「是」,否則為「否」,利用該函數判斷迴文數基本表中A1列的整數是否為迴文數,若是,則A2列的值為「是」,否則為「否」。
create function hws(@A1 int)
returns char(2)
as
begin
declare @y int,@r int,@c char(2),@z int
select @y=0,@z=@A1
while @A1!=0
select @r=@A1%10,@y=@y*10+@r,@A1=@A1/10
if @y=@z
set @c='是'
else
set @c='否'
return @c
end
update 迴文數 set A2=dbo.hws(A1)。
星期五 天氣 冷 心情 good
游標的使用
利用游標可以訪問單獨數據行的特點,逐一對三角形基本表中的數據行(三條邊)進行處理,求三角形的面積。
Declare yb cursor
For
Select*from 三角形
Declare @a float,@b float,@c float,@p float,@s float
Open yb
Fetch next from yb into @a,@b,@c,@s
While @@fetch_status=0
Begin
If @a+@b>@c and @a+@c>@b and @b+@c>@a
select @p=(@a+@b+@c)/2.0,@s=round(sqrt(@p*(@p-@a)*(@p-@b)*(@p-@c)),2)
else
set @s=null
update 三角形 set s=@s where current of yb
fetch next from yb into @a,@b,@c,@s
end
close yb
deallocate yb

心得體會
時光匆匆,一個星期的實習已經接近尾聲了,對於本次的實習心情就是輕松加愉快,收獲也是碩果累累,在老師的安排下,實習的過程是根據每天老師給的任務,按時完成作業然後再把報告寫完根據規劃每天都有條不絮的干著自己的事情,對於我是一個不會安排時間的人,生活中重來沒有規劃,所以事情每次幹完不是緊一陣就是松一陣的,所以通過這次實習中在老師的安排下,自己也懂得了安排時間的重要性,也從中吸取到了一些經驗。
在本次實習中我不僅把本學期學習的資料庫基本知識進行了點到點的復習,也把它進行了鞏固,在原來沒有學好的地方通過本次的實習學的比以前學的更好,不僅如此,我們在做課程設計的時候還學會了獨自的思考和協作,有些知識點我們運用的不是很好,但是後面再老實的幫助和在同學的探討下,最後都把它解決了出來。除此之外,我也感覺到實習並不是因為完成任務而實習,它是為了讓我們更好的掌握知識,並把知識運用到生活中去的,就像藝術一樣,源於生活,而應用於生活一樣。資料庫的學習,也是為了以後生活中方便自己方便他人而學習的。
由於每天緊張的課程,一路都是匆匆來匆匆去,所以一個班同學的交流也是很少的,通過實習所以同學之間交流的機會也就比較多了一點,比才的感覺也因此增進了不少,以上就是本次在實習中所得到的心得,至於沒有感受到的,將在以後的生活中再次的吸取生活中的經驗。來進行學習中的總結。