第一篇:數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告
數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告
目錄
一 實(shí)驗(yàn)?zāi)康?......................................................................................3 二 實(shí)驗(yàn)內(nèi)容.......................................................................................3 1 數(shù)據(jù)庫系統(tǒng)概述...........................................................................3 1.1PowerBuilde的基礎(chǔ)..................................................................4 1.2 PowerBuilde的工作環(huán)境.........................................................5 1.3 PowerBuilder工具欄................................................................6 1.4 畫板........................................................................................7 1.5 Windows 客戶應(yīng)用程序的建立...............................................8 2 建立數(shù)據(jù)庫..................................................................................9 2.1 建立ASA數(shù)據(jù)庫...................................................................10 2.2建立ODBC數(shù)據(jù)源.................................................................11 2.3 創(chuàng)建表..................................................................................14 三 實(shí)驗(yàn)心得.....................................................................................16 一 實(shí)驗(yàn)?zāi)康?/p>
了解數(shù)據(jù)庫系統(tǒng),熟悉PowerBuilder集成開發(fā)環(huán)境,學(xué)會(huì)使PowerBuilder以及數(shù)據(jù)庫的建立、連接和數(shù)據(jù)庫表的操作。二 實(shí)驗(yàn)內(nèi)容 1 數(shù)據(jù)庫系統(tǒng)概述
1.數(shù)據(jù)庫(DataBase,簡稱DB)
數(shù)據(jù)庫是指相互關(guān)聯(lián)的數(shù)據(jù)集合。它是一組長期存儲(chǔ)在計(jì)算機(jī)內(nèi),有組織的、共享的、具有明確意義的數(shù)據(jù)集合。數(shù)據(jù)庫可以人工建立、維護(hù)和使用,也可以通過計(jì)算機(jī)建立、維護(hù)和使用。數(shù)據(jù)庫并非“存放數(shù)據(jù)倉庫”的簡稱,在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)倉庫實(shí)際是存放歷史數(shù)據(jù)的倉庫。2.?dāng)?shù)據(jù)庫管理系統(tǒng)(DataBase Management System,簡稱DBMS)能夠?qū)?shù)據(jù)庫進(jìn)行有效管理的一組計(jì)算機(jī)程序稱為數(shù)據(jù)庫管理系統(tǒng)。它是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,是一個(gè)通用的軟件系統(tǒng)。數(shù)據(jù)庫管理系統(tǒng)通常由語言處理、系統(tǒng)運(yùn)行控制和系統(tǒng)維護(hù)三大部分組成,給用戶提供了一個(gè)軟件環(huán)境,允許用戶快速方便地建立、維護(hù)、檢索、存取和處理數(shù)據(jù)庫中的信息。我們熟悉的數(shù)據(jù)庫管理系統(tǒng)有SQLServer、Oracle、Visual ForPro等 3. 數(shù)據(jù)庫系統(tǒng)(Data Base System,簡稱DBS)
數(shù)據(jù)庫系統(tǒng)是指具有管理和控制數(shù)據(jù)庫功能的計(jì)算機(jī)系統(tǒng)。它 通常由5部分組成: 硬件系統(tǒng)、數(shù)據(jù)庫、軟件支持系統(tǒng)、數(shù)據(jù)庫管理員和用戶。它們之間的關(guān)系如圖1.1所示。數(shù)據(jù)庫應(yīng)用系統(tǒng): 為特定應(yīng)用開發(fā)的數(shù)據(jù)庫應(yīng)用軟件。例如,基于數(shù)據(jù)庫的數(shù)據(jù)庫管理系統(tǒng)、決策支持系統(tǒng)等。
數(shù)據(jù)庫系統(tǒng)是一個(gè)復(fù)雜的系統(tǒng),它是采用了數(shù)據(jù)庫技術(shù)的計(jì)算機(jī)系統(tǒng),又是一個(gè)實(shí)際可運(yùn)行的,按照數(shù)據(jù)庫方法存儲(chǔ)、維護(hù)和向應(yīng)用系統(tǒng)提供數(shù)據(jù)支持的系統(tǒng)。它由硬件系統(tǒng)、數(shù)據(jù)庫、軟件支持系統(tǒng)、數(shù)據(jù)庫管理員和用戶組成。
1.1PowerBuilde的基礎(chǔ)
PowerBuilder是一種可視化的、面向?qū)ο蟮目焖賾?yīng)用開發(fā)工具,它提供了對(duì)面向?qū)ο缶幊痰娜嬷С郑闪说谒拇?GL)編程語言,內(nèi)置了多種對(duì)象類,可以方便地對(duì)數(shù)據(jù)庫進(jìn)行訪問。PowerBuilder應(yīng)用系統(tǒng)可以運(yùn)行在Windows9x/2000/XP/2003、Macintosh、Sun solaris等多種平臺(tái)上,并支持跨平臺(tái)的開發(fā)和分布。例如:在Windows上開發(fā)的PowerBuilder應(yīng)用程序可以分布到UNIX平臺(tái)上運(yùn)行。
PowerBuilder與數(shù)據(jù)庫的連接是通過接口進(jìn)行的(ODBC通用接口和專用接口)。通過ODBC接口,PowerBuilder可以實(shí)現(xiàn)與大部分?jǐn)?shù)據(jù)庫管理系統(tǒng)(Oracle、Sybase、Informix、MS SQL SERVER、FOXPRO、Access、Excel等)相連接。為了提高訪問效率,PowerBuilder還提供了與某些數(shù)據(jù)庫管理系統(tǒng)(Oracle,MS SQL SERVER,SYBASE等 數(shù)據(jù)庫管理系統(tǒng))的專用接口。
面向?qū)ο蟮某绦蛟O(shè)計(jì)方法的精髓是將要處理的信息抽象成對(duì)象,每個(gè)對(duì)象都能響應(yīng)外界的刺激并進(jìn)行相應(yīng)的動(dòng)作。PowerBuilder應(yīng)用程序由多種對(duì)象組成,并對(duì)每個(gè)對(duì)象提供了方便好用的開發(fā)工具。其中,畫板、事件、腳本、函數(shù)和庫是PowerBuilder中開發(fā)應(yīng)用程序的基本工具。另外,PowerBuilder還附帶有多種實(shí)用工具軟件。如Adaptive Server Anywhere 9.0、PowerBuilder Runtime Packager等實(shí)用工具軟件,對(duì)數(shù)據(jù)庫應(yīng)用的開發(fā)與部署提供了強(qiáng)有力的支持。.2 PowerBuilde的工作環(huán)境
圖1 PowerBuilde集成開發(fā)環(huán)境
它是一個(gè)典型的帶幫助的多文檔窗口(MDI Help),包括頂部的菜 單欄和工具欄、左邊的系統(tǒng)樹(System Tree)和Clip窗口、底部的輸出窗口。可以將經(jīng)常使用的文本拷貝或拖拉到Clip窗口中并起一個(gè)名字,以后需要時(shí)可以隨時(shí)再拷貝到合適的地方。如果不是特別需要,Clip窗口和輸出欄一般可以關(guān)閉,這樣使得系統(tǒng)樹窗口可以顯示更多內(nèi)容,用戶工作區(qū)更大一些。對(duì)于所示的工作環(huán)境,涉及兩個(gè)必要的步驟:建立工作空間(WorkSpace)和目標(biāo)(Target)WorkSpace使得應(yīng)用系統(tǒng)開發(fā)人員可以在多個(gè)應(yīng)用或組件上進(jìn)行開發(fā),為構(gòu)建復(fù)雜應(yīng)用提供了方便;Target用于描述WorkSpace中的應(yīng)用或組件,包括Window客戶、EAServer組件和WEB站點(diǎn)三類。在8.0以上的版本中,只有打開或建立了WorkSpace并在其中加入一個(gè)已存在的Target或定義一個(gè)新的Target之后才能進(jìn)行有效工作??梢哉f,在PowerBuilder 8.0以上版本中,WorkSpace和Target是應(yīng)用系統(tǒng)開發(fā)的中心。
1.3 PowerBuilder工具欄
圖2 PowerBuilde 10.0的工具欄
由三個(gè)部分組成:PowerBar、PaiterBar和StyleBar,PowerBar用于打開PowerBuilder的各種畫板;PaiterBar包含操作當(dāng)前畫板的圖標(biāo)按鈕,它只有在打開某個(gè)畫板后才會(huì)出現(xiàn);StyleBar用于改變文本的字體、字號(hào)和屬性,它只在對(duì)文本進(jìn)行操作時(shí)才出現(xiàn)。在PowerBuilder 10.x中,PowerBar通常位于菜單之下和其它Painter工具欄之上
1.4 畫板 新建畫板 該畫板用于創(chuàng)建各種對(duì)象,單擊后彈出如圖3 所示的對(duì)話框
圖3 New 畫板
在圖中單擊workspace 圖標(biāo),建立工作空間,命名為examp
圖4 建立workspace 1.5 Windows 客戶應(yīng)用程序的建立
單擊圖5 中的第一項(xiàng)“Application”出現(xiàn)如圖6的對(duì)話框
圖5 target 畫板
圖6 建立應(yīng)用對(duì)話框 建立數(shù)據(jù)庫
PowerBuilder作為數(shù)據(jù)庫應(yīng)用的前端開發(fā)工具,在使用數(shù)據(jù)庫中的數(shù)據(jù)之前,數(shù)據(jù)庫必須是建立好的,而且還要通過專用或通用數(shù)據(jù)庫連接工具與數(shù)據(jù)庫建立連接。這一節(jié)我們利用PowerBuilder自帶的Adaptive Server Anywhere數(shù)據(jù)庫創(chuàng)建工具建立一個(gè)實(shí)驗(yàn)用數(shù)據(jù)庫,這是PowerBuilder環(huán)境下能夠建立的唯一一個(gè)數(shù)據(jù)庫。而且,在PowerBuilder環(huán)境下對(duì)數(shù)據(jù)庫的管理功能較弱,對(duì)于ASA數(shù)據(jù)庫的全面管理,可以使用Sybase Central實(shí)用工具。
ASA數(shù)據(jù)庫與PowerBuilder運(yùn)行在同一臺(tái)機(jī)器上,構(gòu)成了Client/Server體系結(jié)構(gòu)。ASA數(shù)據(jù)庫在功能上基本具備了大型數(shù)據(jù)庫 的特點(diǎn),是一個(gè)完整的DBMS,使得應(yīng)用軟件研制人員在單機(jī)環(huán)境下就能完成網(wǎng)絡(luò)環(huán)境下C/S模式數(shù)據(jù)庫應(yīng)用系統(tǒng)的大部分開發(fā)任務(wù)。PowerBuilder同時(shí)也提供了很好的數(shù)據(jù)庫應(yīng)用系統(tǒng)發(fā)布與安裝工具。2.1 建立ASA數(shù)據(jù)庫
在PowerBar上單擊DB Profile圖標(biāo)或者從菜單欄點(diǎn)擊“Tools”菜單項(xiàng),再從Tools的下拉菜單中選擇執(zhí)行“Database Profile…”子菜單選項(xiàng),此時(shí)出現(xiàn)圖7所示的對(duì)話框
圖7 Database profiles 對(duì)話框
打開數(shù)據(jù)庫畫板 雙擊 creat ASA database 出現(xiàn)如圖 8 的對(duì)話框
圖8 創(chuàng)建ASA數(shù)據(jù)庫 對(duì)話框
2.2建立ODBC數(shù)據(jù)源
ODBC數(shù)據(jù)源是指要連接的數(shù)據(jù)庫、相關(guān)網(wǎng)絡(luò)軟件、操作系統(tǒng)軟件等支持環(huán)境的總稱。如果與網(wǎng)絡(luò)數(shù)據(jù)庫服務(wù)器連接,應(yīng)該先調(diào)通網(wǎng)絡(luò)、安裝必要的客戶端軟件等,在PB中建立ODBC數(shù)據(jù)源的操作步驟如下
圖9 創(chuàng)建數(shù)據(jù)源
單擊下一步 進(jìn)行ODBC的配置
圖 10 配置ODBc
圖 11 輸入用戶名和口令
選擇所要連接的數(shù)據(jù)庫
圖12 當(dāng)ODBC、login、dasebase三個(gè)選項(xiàng)都配置好之后,回到ODBC選項(xiàng)。測試一下能付與數(shù)據(jù)庫連接上,如果可以連接說明數(shù)據(jù)源已經(jīng)配置好了,如果連接失敗,表明配置錯(cuò)誤,需要重新配置。2.3 創(chuàng)建表 選擇table 選項(xiàng),單擊鼠標(biāo)右鍵,執(zhí)行NEW table 子菜單項(xiàng) 如圖 13
圖13
單擊 如圖14 所示操作區(qū)的 Isql session 選項(xiàng)卡
圖 14 依次輸入SQL語句 建立三張表 庫存表(storage):
CREATE TABLE “dba”.“storage”(“barcode” numeric(10,0)NOT NULL, “mc” varchar(24)NOT NULL , “rkdj” numeric(8,2)NOT NULL, “ckdj” numeric(8,2)NOT NULL, “numb” numeric(6,0)NOT NULL, “gg” varchar(20)DEFAULT NULL, “cjbh” varchar(10)NOT NULL, “scrq” date NOT NULL, “inrq” timestamp NOT NULL, “czy” varchar(8)NOT NULL , PRIMARY KEY(“barcode”));供應(yīng)商表(producer):
CREATE TABLE “dba”.“producer”(“cjbh” varchar(10)NOT NULL, “cjmc” varchar(24)NOT NULL , “cjaddr” varchar(24)NOT NULL, “yb” char(6)NOT NULL, “tel” varchar(16)NOT NULL, “bz” varchar(24)DEFAULT NULL, PRIMARY KEY(“cjbh”));銷售表(sale_all):
CREATE TABLE “dba”.“sale_all”(“xh” numeric(10,0)NOT NULL, “barcode” numeric(10,0)NOT NULL, “sl” integer NOT NULL, “ckdj” numeric(8,2)NOT NULL, “mc” varchar(24)NOT NULL, “fplsh” numeric(12,0)DEFAULT NULL, “xsrq” timestamp NOT NULL, “czy” varchar(8)DEFAULT NULL , PRIMARY KEY(“xh”));以上三張表的關(guān)聯(lián)關(guān)系即實(shí)體完整性(主鍵)、參照完整性(外鍵)如圖15所示
圖 15 三張表
三 實(shí)驗(yàn)心得
通過本次實(shí)驗(yàn),我初步掌握了數(shù)據(jù)庫的開發(fā)步驟,熟悉了建立表的步驟和技巧,通過這個(gè)小系統(tǒng)的建立過程,我對(duì)數(shù)據(jù)庫的興趣得到了加強(qiáng)。在實(shí)驗(yàn)過程中我了解了數(shù)據(jù)庫的建立和連接,表的建立和表中內(nèi)外鍵的建立,熟悉了pb的開發(fā)環(huán)境,通過實(shí)驗(yàn)牢固了書本知識(shí)的掌握。但由于是第一次運(yùn)用pb進(jìn)行數(shù)據(jù)庫的開發(fā),難免有這樣那樣的錯(cuò)誤,通過在實(shí)驗(yàn)過程中老師的講解和同學(xué)們的幫助,慢慢的改正了那些錯(cuò)誤,逐漸的開始上手了。通過實(shí)驗(yàn)使我理論聯(lián)系實(shí)際的重要性,在今后的時(shí)間里,應(yīng)該多多做些實(shí)驗(yàn),熟練地掌握書本上的知識(shí)并能做到舉一反三。
第二篇:數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告
數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告
一、題目要求
某銀行準(zhǔn)備開發(fā)一個(gè)銀行業(yè)務(wù)管理系統(tǒng),通過調(diào)查,得到以下的主要需求:
銀行有多個(gè)支行。各個(gè)支行位于某個(gè)城市,每個(gè)支行有唯一的名字。銀行要監(jiān)控每個(gè)支行的資產(chǎn)。銀行的客戶通過其身份證號(hào)來標(biāo)識(shí)。銀行存儲(chǔ)每個(gè)客戶的姓名及其居住的街道和城市。客戶可以有帳戶,并且可以貸款??蛻艨赡芎湍硞€(gè)銀行員工發(fā)生聯(lián)系,該員工是此客戶的貸款負(fù)責(zé)人或銀行帳戶負(fù)責(zé)人。銀行員工也通過身份證號(hào)來標(biāo)識(shí)。員工分為部門經(jīng)理和普通員工,每個(gè)部門經(jīng)理都負(fù)責(zé)領(lǐng)導(dǎo)其所在部門的員工,并且每個(gè)員工只允許在一個(gè)部門內(nèi)工作。每個(gè)支行的管理機(jī)構(gòu)存儲(chǔ)每個(gè)員工的姓名、電話號(hào)碼、家庭地址及其經(jīng)理的身份證號(hào)。銀行還需知道每個(gè)員工開始工作的日期,由此日期可以推知員工的雇傭期。銀行提供兩類帳戶——儲(chǔ)蓄帳戶和支票帳戶。帳戶可以由2個(gè)或2個(gè)以上客戶所共有,一個(gè)客戶也可有兩個(gè)或兩個(gè)以上的帳戶。每個(gè)帳戶被賦以唯一的帳戶號(hào)。銀行記錄每個(gè)帳戶的余額、開戶的支行以及每個(gè)帳戶所有者訪問該帳戶的最近日期。另外,每個(gè)儲(chǔ)蓄帳戶有其利率,且每個(gè)支票帳戶有其透支額。每筆貸款由某個(gè)分支機(jī)構(gòu)發(fā)放,能被一個(gè)或多個(gè)客戶所共有。每筆貸款用唯一的貸款號(hào)標(biāo)識(shí)。銀行需要知道每筆貸款所貸金額以及逐次支付的情況(銀行將貸款分幾次付給客戶)。雖然貸款號(hào)不能唯一標(biāo)識(shí)銀行所有為貸款所付的款項(xiàng),但可以唯一標(biāo)識(shí)為某貸款所付的款項(xiàng)。對(duì)每次的付款需要記錄日期和金額。
二、需求分析
這一部分主要是根據(jù)實(shí)驗(yàn)需求對(duì)銀行系統(tǒng)需求中的實(shí)體、實(shí)體屬性以及實(shí)體之間的關(guān)聯(lián)進(jìn)行確認(rèn),以便畫出正確的概念模型。
2.1 實(shí)體確認(rèn)
根據(jù)需求分析確認(rèn)實(shí)體:銀行員工、銀行支行、客戶、賬戶(其中:儲(chǔ)蓄賬戶、支票賬戶是繼承實(shí)體賬戶而來)、貸款、支付(弱實(shí)體)。
2.2 實(shí)體屬性確認(rèn)
銀行員工:身份證號(hào)(pi)、姓名、電話號(hào)碼、家庭地址、開始工作日期 銀行支行:支行名、資產(chǎn)、城市
客戶:身份證號(hào)、姓名、街道、所在城市 賬戶:賬戶號(hào)、余額、最近訪問日期 支票賬戶:透支額 儲(chǔ)蓄賬戶:利率 2.3 實(shí)體關(guān)系確認(rèn)
賬戶和支行:N:1定義關(guān)系為Relationship_accout_bank 客戶和貸款:M:N定義關(guān)系為Relationship_client_loan 客戶和員工:M:1 定義關(guān)系為 Relation_client_staff 貸款和支行:1:N 定義關(guān)系為 Relationship_loan_bank 客戶和賬戶:M:N 定義關(guān)系為 client__accout 貸款發(fā)放信息和貸款:N:1 定義關(guān)系為 Relationship_loan_pay 支行和員工:1:N 定義關(guān)系為Relationship_staff_bank
員工和員工:1:N 定義關(guān)系為 Relationship_lead
三、概念模型(CDM)
根據(jù)sybase power designer畫出概念模型(CDM),如下圖所示:
四、物理模型(PDM)
根據(jù)概念模型轉(zhuǎn)化成物理模型(PDM),如下圖所示:
第三篇:數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)4SQL高級(jí)應(yīng)用
【實(shí)驗(yàn)?zāi)康摹?/p>
1、掌握在SQL SERVER 2005下進(jìn)行數(shù)據(jù)還原的方法。
2、掌握SQL語句的查詢統(tǒng)計(jì)功能和數(shù)據(jù)更改功能。
【實(shí)驗(yàn)內(nèi)容】
1.還原factory數(shù)據(jù)庫。
2.在factory數(shù)據(jù)庫上,完成如下各題。
(1)刪除factory數(shù)據(jù)庫上各個(gè)表之間建立的關(guān)系。(2)*顯示各職工的工資記錄和相應(yīng)的工資小計(jì)。
(3)*按性別和部門名的所有組合方式列出相應(yīng)的平均工資。
(4)在worker表中使用以下語句插入一個(gè)職工記錄。職工號(hào):20;姓名:陳立;性別:女;出生日期:55/03/08;黨員否: 1;參加工作:75/10/10;部門號(hào):4。
在depart表中使用以下語句插入一個(gè)部門記錄。部門號(hào):5;部門名:設(shè)備處。對(duì)worker和depart表進(jìn)行全外連接顯示職工的職工號(hào)、姓名和部門名,然后刪除這兩個(gè)插入的記錄。
(5)顯示最高工資的職工的職工號(hào)、姓名、部門名、工資發(fā)放日期和工資。(6)顯示最高工資的職工所在的部門名。
(7)顯示所有平均工資低于全部職工平均工資的職工的職工號(hào)和姓名。(8)*采用游標(biāo)方式實(shí)現(xiàn)(6)小題的功能。(9)*采用游標(biāo)方式實(shí)現(xiàn)(7)小題的功能。
(10)*先顯示worker表中的職工人數(shù),開始一個(gè)事務(wù),插入一個(gè)職工記錄,再顯示worker表中的職工人數(shù),回滾該事務(wù),最后顯示worker表中的職工人數(shù)。
【實(shí)驗(yàn)報(bào)告要求】
1.第(1)寫出操作步驟。
2.其他各題寫出實(shí)現(xiàn)要求的命令/程序,并列出執(zhí)行結(jié)果。
【操作步驟】
1.還原factory數(shù)據(jù)庫。
2.在factory基礎(chǔ)上,有
(1)刪除factory數(shù)據(jù)庫上各個(gè)表之間建立的關(guān)系。
(2)*顯示各職工的工資記錄和相應(yīng)的工資小計(jì)。
Select 職工號(hào),姓名,工資from salary Order by 職工號(hào)
Compute sum(工資)by 職工號(hào)
(3)*按性別和部門名的所有組合方式列出相應(yīng)的平均工資。
select worker.職工號(hào),worker.性別,depart.部門名,avg(工資)as'平均工資' from worker inner join depart on worker.部門號(hào)=depart.部門號(hào) inner join salary on worker.職工號(hào)=salary.職工號(hào)
group by worker.職工號(hào),worker.性別,depart.部門名
order by worker.職工號(hào)
(4)在worker表中使用以下語句插入一個(gè)職工記錄。職工號(hào):20;姓名:陳立;性別:女;出生日期:55/03/08;黨員否: 1;參加工作:75/10/10;部門號(hào):4。
insert into worker values('20','陳立','女','1955-03-08','1','1975-10-10',4)
在depart表中使用以下語句插入一個(gè)部門記錄。部門號(hào):5;部門名:設(shè)備處。
Insert into depart Values('5','設(shè)備處')對(duì)worker和depart表進(jìn)行全外連接顯示職工的職工號(hào)、姓名和部門名,然后刪除這兩個(gè)插入的記錄。
use factory Select b.部門號(hào),c.姓名
from salary a,departb,worker c delete from worker where 職工號(hào)=20 delete from depart where 部門號(hào)=5(5)顯示最高工資的職工的職工號(hào)、姓名、部門名、工資發(fā)放日期和工資。
Use factory Select b.部門名,c.職工號(hào),c.姓名,b.部門名,a.日期,a.工資 from salary a,departb,worker c Where 工資in(select max(a.工資)from salary a)and a.職工號(hào)=c.職工號(hào)and b.部門號(hào)=c.部門號(hào)(6)顯示最高工資的職工所在的部門名。
Use factory Select b.部門名from salary a,departb,worker c Where 工資in(select max(a.工資)from salary a)and c.部門號(hào)=b.部門號(hào)and a.職工號(hào)=c.職工號(hào)
(7)顯示所有平均工資低于全部職工平均工資的職工的職工號(hào)和姓名。
Use factory Select a.職工號(hào),a.姓名,avg(b.工資)as平均工資from worker a,salary b where a.職工號(hào)=b.職工號(hào) group by a.職工號(hào),a.姓名
having avg(工資)<(select avg(工資)from salary)
第四篇:數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告
南華大學(xué)
計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院
實(shí)驗(yàn)報(bào)告
(2013 ~2014 學(xué)
第二學(xué)期)
課程名稱 實(shí)驗(yàn)名稱
數(shù)據(jù)庫原理與技術(shù)
姓名 張濤 學(xué)號(hào) 20124350230
專業(yè) 軟件工程
班級(jí) 02班
地點(diǎn)
教師 劉征海 實(shí)驗(yàn)1 認(rèn)識(shí)DBMS 一.實(shí)驗(yàn)題目
認(rèn)識(shí)DBMS 二.實(shí)驗(yàn)要求
1.利用管理工具創(chuàng)建數(shù)據(jù)庫、表和表間關(guān)系。
實(shí)驗(yàn)?zāi)康暮妥⒁馐马?xiàng) 基本操作,進(jìn)一步理解數(shù) 據(jù)庫、表、表間關(guān)系的概念。
注意事項(xiàng):創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表時(shí)應(yīng)認(rèn)真,如果出現(xiàn)錯(cuò)誤,應(yīng)相應(yīng)地修改結(jié)構(gòu)或刪除。三.實(shí)驗(yàn)代碼(內(nèi)容)
(1)利用SQL Server Management Studio 創(chuàng)建數(shù)據(jù)庫,名稱為【學(xué)生選課
YYXXXX】。其中YY為專業(yè)代號(hào),計(jì)算機(jī)為JS,軟件工程為RJ,網(wǎng)絡(luò)為WL,數(shù)媒為
SM;XXXX為各位同學(xué)的學(xué)號(hào)中的最后四位 實(shí)驗(yàn)?zāi)康模菏煜QL Server Management Studio
(2)在【學(xué)生選課YYXXXX】中建立數(shù)據(jù)表,表的定義如下所示。
學(xué)生YYXXXX(學(xué)號(hào),姓名,性別,出生日期,院系名稱,備注);
課程YYXXXX(課程號(hào),課程名,先行課,學(xué)分); 選修YYXXXX(學(xué)號(hào),課程號(hào),分?jǐn)?shù))。
要求定義每張表的主碼,為屬性選擇合適的數(shù)據(jù)類型,決定是否允許為空,為【性別】和【學(xué)分】屬性定義默認(rèn)值。
(3)定義表之間的關(guān)系。
(4)分別為表錄入幾行數(shù)據(jù)記錄,同時(shí)練習(xí)數(shù)據(jù)的修改和刪除操作
2.利用SQL 語句創(chuàng)建數(shù)據(jù)庫、表和表間關(guān)系 實(shí)驗(yàn)?zāi)康暮妥⒁馐马?xiàng)
實(shí)驗(yàn)?zāi)康模菏煜?chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表的SQL 語句。
注意事項(xiàng):輸入SQL 語句時(shí)應(yīng)注意,語句中均使用西文操作符號(hào)。
實(shí)驗(yàn)內(nèi)容
在SQL Server Management Studio 中新建查詢,實(shí)現(xiàn)以下操作。(1)用SQL 語句創(chuàng)建數(shù)據(jù)庫,名稱為“StudentCourseYYXXXX”。其中YYXXXX 為各位同學(xué)的學(xué)號(hào)中的最后四位。
(2)用SQL 語句創(chuàng)建StudentCourseYYXXXX 中的3 張表,同時(shí)指定主碼、外 碼、默認(rèn)值等。
(3)直接在表數(shù)據(jù)窗口中錄入表數(shù)據(jù)記錄。
實(shí)驗(yàn) 2 交互式 SQL(1)
一、數(shù)據(jù)庫單表查詢 實(shí)驗(yàn)?zāi)康暮妥⒁馐马?xiàng)
實(shí)驗(yàn)?zāi)康模赫莆諉伪聿樵僑ELECT、FROM、WHERE 的用法,特別要掌握比較運(yùn) 算符、邏輯運(yùn)算符的使用。注意事項(xiàng):子句WHERE<條件>表示元組篩選條件;子句HAVING<條件>表示元
組選擇條件;子句HAVING<條件>必須和GROUP BY 子句配合使用;注意輸入SQL語句時(shí)均應(yīng)使用西文操作符號(hào)。實(shí)驗(yàn)內(nèi)容
(1)創(chuàng)建查詢窗口,設(shè)置查詢環(huán)境。(2)單表查詢 實(shí)驗(yàn)步驟
(1)選擇要查詢的數(shù)據(jù)庫,右擊【新建查詢】,或者選擇系統(tǒng)菜單中的【文
件】|【新建】|【使用當(dāng)前連接查詢】命令,或者單擊標(biāo)準(zhǔn)工具欄中的【新建查
詢】按鈕,即可新建一個(gè)查詢窗口。如果查詢數(shù)據(jù)庫不是StudentCourseYYXXXX,則可在可用數(shù)據(jù)庫下拉列表中進(jìn)行選擇,或用USE 語句調(diào)用。
(2)在查詢窗口中輸入SELECT 查詢語句,對(duì)StudentCourseYYXXXX 數(shù)據(jù)庫 進(jìn)行查詢操作。
① 查詢計(jì)算機(jī)系全體學(xué)生的信息
② 查詢姓“李”的學(xué)生的學(xué)號(hào)和姓名。
③ 查詢課程表中先行課為空的課程名。
④ 查詢考試成績有不及格的學(xué)生的學(xué)號(hào)。
⑤ 求選修了C1 課程或C2 課程的學(xué)生的學(xué)號(hào)及成績。
⑥ 查詢?nèi)w計(jì)算機(jī)系學(xué)生的姓名及其年齡。
⑦ 查詢計(jì)算機(jī)系在1986-1987 年之間出生的學(xué)生的姓名。
⑧ 查詢姓“李”的前兩個(gè)學(xué)生的學(xué)號(hào)和姓名。
⑨ 查詢選修了兩門以上課程的學(xué)生學(xué)號(hào)與課程數(shù)。
⑩ 查詢選修課程數(shù)大于等于2 的學(xué)生的學(xué)號(hào)、平均成績和選課門數(shù),并按平均成績降序排列。
二、數(shù)據(jù)庫多表連接查詢 實(shí)驗(yàn)?zāi)康暮妥⒁馐马?xiàng)
實(shí)驗(yàn)?zāi)康模豪斫舛啾聿樵兊母拍?;掌握多表查詢的SELECT、FROM、WHERE、JOIN子句的用法,特別要求比較內(nèi)連接、外連接的結(jié)果。
注意事項(xiàng):內(nèi)連接、左外連接和右外連接的含義及表達(dá)方法;注意輸入SQL 語 句時(shí)均應(yīng)使用西文操作符號(hào)。實(shí)驗(yàn)內(nèi)容
(1)創(chuàng)建查詢窗口,設(shè)置查詢環(huán)境。(2)多表復(fù)雜查詢。實(shí)驗(yàn)步驟
新建查詢窗口,選擇StudentCourseYYXXXX 為當(dāng)前數(shù)據(jù)庫,輸入如下SELECT 查詢語句并執(zhí)行,對(duì)數(shù)據(jù)庫進(jìn)行多表連接查詢操作。(1)查詢選修了【數(shù)據(jù)庫原理】的計(jì)算機(jī)系的學(xué)生學(xué)號(hào)和姓名。
(2)查詢每一門課的間接先行課(即先行課的先行課)。
(3)查詢學(xué)生的學(xué)號(hào)、姓名、選修課程的名稱和成績。
(4)查詢選修了課程的學(xué)生姓名。
(5)查詢所有學(xué)生的信息和所選修的課程。
(6)查詢已被選修的課程的情況和所有課程的名字。
(7)列出學(xué)生所有可能的選修情況。
(8)查找計(jì)算機(jī)系的學(xué)生選修課程數(shù)大于2 的學(xué)生的姓名、平均成績和選課 門數(shù),并按平均成績降序排列。
實(shí)驗(yàn) 3 交互式 SQL(2)數(shù)據(jù)庫嵌套查詢和組合查詢 實(shí)驗(yàn)?zāi)康暮妥⒁馐马?xiàng)
實(shí)驗(yàn)?zāi)康模赫莆詹樵冎星短撞樵兒徒M合查詢的操作方法,進(jìn)一步加深對(duì) SELECT 語句的理解。
注意事項(xiàng):子句的使用;注意語句的層次嵌套關(guān)系和括號(hào)的配對(duì)使用問題;
注意輸入SQL 語句時(shí)均應(yīng)使用西文操作符號(hào)。實(shí)驗(yàn)內(nèi)容(1)創(chuàng)建查詢窗口,設(shè)置查詢環(huán)境。(2)分組查詢。(3)統(tǒng)計(jì)查詢。(4)嵌套查詢。實(shí)驗(yàn)步驟
新建查詢窗口,選擇StudentCourseYYXXXX 為當(dāng)前數(shù)據(jù)庫,輸入如下SELECT 查詢語句并執(zhí)行,對(duì)數(shù)據(jù)庫進(jìn)行嵌套查詢和組合查詢操作。
(1)統(tǒng)計(jì)選修了【數(shù)據(jù)庫原理】課程的學(xué)生人數(shù)。
(2)查詢沒有選修【數(shù)據(jù)庫原理】課程的學(xué)生信息。
(3)查詢其他系中比計(jì)算機(jī)系學(xué)生年齡都小的學(xué)生。
(4)查詢被0602001 學(xué)生或0602002 學(xué)生所選修的課程的課程號(hào)(用UNION 組合查詢與IN 條件查詢兩種方法實(shí)現(xiàn))。
(5)查詢0602001 學(xué)生和0602002 學(xué)生同時(shí)選修的課程的課程號(hào)(用
INTERSECT 組合查詢與EXISTS 嵌套子查詢兩種方法實(shí)現(xiàn))。
(6)查詢被0602001 學(xué)生選修,但沒有被0602002 學(xué)生所選修的課程的課程
號(hào)(用EXCEPT 組合查詢與NOT EXISTS 嵌套子查詢兩種方法實(shí)現(xiàn))。
實(shí)驗(yàn) 4 交互式 SQL(3)數(shù)據(jù)的更新 實(shí)驗(yàn)?zāi)康暮妥⒁馐马?xiàng)
實(shí)驗(yàn)?zāi)康模菏煜げ迦?、修改和刪除SQL 語句的用法。注意事項(xiàng):對(duì)于INSERT 語句,要求理解默認(rèn)值約束、空值約束在插入時(shí)所 起的作用。實(shí)驗(yàn)內(nèi)容
(1)使用INSERT 語句在數(shù)據(jù)庫的表中插入幾行記錄。(2)使用UPDATA 語句修改某個(gè)數(shù)據(jù)。(3)使用DELETE 語句刪除某行記錄。實(shí)驗(yàn)步驟
(1)新建查詢窗口,選擇StudentCourseYYXXXX 為當(dāng)前數(shù)據(jù)庫。
(2)在已建立StudentCourseYYXXXX 數(shù)據(jù)庫和StudentsYYXXXX、CoursesYYXXXX、SCYYXXXX 3 個(gè)表的基礎(chǔ)上,向StudentCourseYYXXXX數(shù)據(jù)庫中 的表更新數(shù)據(jù)。
① 向表StudentsYYXXXX 中插入(0601001,趙林, 男,1985-09-08,計(jì)算機(jī))的記錄。
② 向SCYYXXXX 表中添加一個(gè)學(xué)生的選課記錄,學(xué)號(hào)為0601001,所選的課
程號(hào)為C2。SC表中有Sno、Cno、Grade 這3 個(gè)列。這里只知道學(xué)號(hào)和課程號(hào),不知道成績值。
③ 向表StudentsYYXXXX 中插入(0601002,張修雨,default)記錄,該記錄 的數(shù)據(jù)中default 表示默認(rèn)值‘男’,其他數(shù)據(jù)表示空值。
④ 用CREATE 語句建立表StudentBAK1YYXXXX,包含(與Students 的Sno、Sname、Sdept 相同)3 個(gè)字段,然后用INSERT SELECT 語句實(shí)現(xiàn)向
StudentBAK1YYXXXX 添加StudentsYYXXXX 表中的計(jì)算機(jī)系學(xué)生的學(xué)號(hào)、姓名、所在系的信息。
⑤ 用 SELECT...INTO 語句實(shí)現(xiàn)把StudentsYYXXXX 表中1986 年后(包含
1986 年)出生的學(xué)生的學(xué)號(hào)、姓名存儲(chǔ)到一個(gè)新表StudentBAK2YYXXXX。
⑥ 將姓名為【趙林】的同學(xué)的所在系改為【機(jī)電系】,愛好改為【足球】。
⑦ 將選修了課程名為【數(shù)據(jù)庫原理】的學(xué)生成績加5 分。⑧ 將StudentCourseYYXXXX
數(shù)據(jù)庫的StudentBAK1YYXXXX 表中所有姓趙的 同學(xué)刪除。
⑨ 刪除計(jì)算機(jī)系選修成績不及格的學(xué)生選修記錄。⑩ 將除。StudentCourseYYXXXX
數(shù)據(jù)庫的StudentBAK2YYXXXX 表中的所有行刪
四.實(shí)驗(yàn)總結(jié)
實(shí)驗(yàn)一要注意創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表時(shí)應(yīng)認(rèn)真,如果出現(xiàn)錯(cuò)誤,應(yīng)相應(yīng)地修改結(jié)構(gòu)或刪除。輸入SQL 語句時(shí)應(yīng)注意,語句中均使用西文操作符號(hào);實(shí)驗(yàn)二應(yīng)注意注意group和having以及where的搭配使用的情況;實(shí)驗(yàn)三注意注意輸入SQL 語句時(shí)均應(yīng)使用西文操作符號(hào),子句的使用,注意語句的層次嵌套關(guān)系和括號(hào)的配對(duì)使用問題;實(shí)驗(yàn)四注意輸入SQL 語句時(shí)均應(yīng)使用西文操作符號(hào),對(duì)于INSERT 語句,要求理解默認(rèn)值約束、空值約束在插入時(shí)所起的作用。注意插入,修改,新建表,刪除語句的寫法,并且掌握把原表中的數(shù)據(jù)轉(zhuǎn)存到新表中的語句寫法。
第五篇:數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告
10包三 李雅 100910306
實(shí)驗(yàn)報(bào)告
一、實(shí)驗(yàn)題目:
數(shù)據(jù)庫基本操作實(shí)驗(yàn)
二、實(shí)驗(yàn)?zāi)康模?/p>
掌握數(shù)據(jù)庫的建立、表的設(shè)計(jì)基本方法,通過實(shí)際操作熟練掌握數(shù)據(jù)庫的基本操作——數(shù)據(jù)的輸入與導(dǎo)入,表的設(shè)計(jì)。
三、實(shí)驗(yàn)內(nèi)容:
建立課程管理數(shù)據(jù)庫,要求:
1.輸入老師、開設(shè)課程、選課表、學(xué)生基本數(shù)據(jù)等,并輸入一些學(xué)生不同課程的考試成績。
2.建立查詢表,分別是成績查詢、學(xué)分查詢、不及格學(xué)生查詢。
3.建立窗體,分別顯示不及格學(xué)生的姓名、課程名稱、成績和班級(jí)ID。在成績查詢中顯示學(xué)生姓名及各科成績。在教師基本信息中顯示編號(hào)、職稱、工資、院系、等。同時(shí)建立開設(shè)課程表和學(xué)生基本信息的窗體查詢。提供用戶一個(gè)簡單的應(yīng)用程序界面,方便用戶操作使用。
4.制作報(bào)表。包括教師的授課報(bào)表,課程名稱及課程類別。學(xué)生的總成績報(bào)表,包括課程名稱、成績和學(xué)分。
注:課程及考試成績可以任意輸入。選課按照班級(jí)確定。
四、實(shí)驗(yàn)過程:
1、數(shù)據(jù)庫表設(shè)計(jì)
在表格內(nèi)填入教師基本信息、開始課程、課程基本信息、選課表、學(xué)生基本信息。
教師基本信息:
開設(shè)課程:
/ 7
10包三 李雅 100910306
課程基本信息:
選課表:
/ 7
10包三 李雅 100910306
學(xué)生基本信息:
2、查詢表: 成績查詢:
/ 7
10包三 李雅 100910306
學(xué)分查詢:
不及格學(xué)生查詢:
/ 7
10包三 李雅 100910306
3、窗體設(shè)計(jì): 不及格學(xué)生信息查詢:
成績查詢:
教師基本信息查詢:
開設(shè)課程信息查詢:
/ 7
10包三 李雅 100910306
學(xué)生基本信息查詢:
4、報(bào)表: 教師的授課報(bào)表:
/ 7
10包三 李雅 100910306
學(xué)生的總成績:
/ 7