第一篇:數據庫實驗2
山東建筑大學 計算機學院 實驗報告
班級: 姓名: 學號: 實驗成績:
課程:數據庫系統概論 同組者: 實驗日期: 2018.04.24
實驗二 數據查詢
一.實驗目的
1.理解數據庫中數據的其他查詢方法和應用; 2.學會各種查詢要求的實現;
3.學會各種查詢的異同及相互之間的轉換方法。
二.實驗內容
1.實驗代碼
--1.查詢供應商號碼為S1的供應商的名稱SNAME,所在城市CITY
Select SNAME,CITY FROM S WHERE SNO='S1';
--2.查詢顏色為紅色的零件號碼 select pno from p where color='紅';
--3.查詢工程所在地為天津的工程名稱JNAME select jname from j where city='天津';
--4.查詢供應商號和名稱,分別用小寫字母和大寫字母表示供應商代碼 select upper(sno)大寫,lower(sno)小寫, sname from s;
--5.查詢零件的詳細信息,用結果屬性名用中文顯示
select pno 零件代碼,pname 零件名,color 顏色, weight 重量 from p;
--6.查詢供應工程J1零件P1的供應商號SNO select sno from spj where jno='j1' and pno='p1';
--7.查詢供應商的名稱和所在城市,并按照所在城市升序排序,同一個城市的按照供應商的名稱降序排序
select sname,city from s order by city ASC,sname DESC;山東建筑大學 計算機學院 實驗報告
班級: 姓名: 學號: 實驗成績:
課程:數據庫系統概論 同組者: 實驗日期: 2018.04.24--8.查詢使用供應商S1所供應零件的工程號碼 select jno from spj where sno='s1';
--9.查詢各種零件的平均重量 select AVG(weight)from p;
--修改貨物表中的P表的weight的數據類型 alter table p alter column weight float;
--10.查詢零件的總個數
select sum(QTY)零件總和 from spj;
--11.from p where pname like '螺%';
--12.查詢各個供應商供應的零件P3總數量
select sum(qty)from spj where pno='p3';
--13.供應工程J1紅色零件的供應商號SNO
select distinct sno from spj, p where p.pno=spj.pno and(jno='j1' and color='紅');
--14.工程項目J2使用的各種零件的名稱及數量
select distinct pname,qty from p, spj where p.pno=spj.pno and jno='j2';
--15.使用上海產的零件的工程的名稱
select distinct jname from s, j, spj where s.city='上海' and(s.sno=spj.sno and j.jno=spj.jno);查詢所有以“螺”字開頭的零件的零件號、零件名和顏色
select pno,pname,color 山東建筑大學 計算機學院 實驗報告
班級: 姓名: 學號: 實驗成績:
課程:數據庫系統概論 同組者: 實驗日期: 2018.04.24--16.所有項目的使用零件的情況(無論有沒有使用零件),包括項目代碼、項目名稱、零件代碼和零件數量
select distinct spj.jno, j.jname, pno, qty from spj, j where spj.jno=j.jno;
--17.供應商S1和S3供應的相同的零件編號
select pno from spj where sno='s1' intersect select pno from spj where sno='s3';
--18.沒有使用天津產的零件的工程號碼
select distinct jno from spj where sno in((select sno from s where city!= '天津'));--19.沒有使用天津供應商生產的紅色零件的工程號
select distinct jno from spj where jno not in(select jno from spj,s,p where(s.city='天津' and p.color='紅')and(s.sno=spj.sno and p.pno=spj.pno));
--20.至少用了供應商S1所供應的全部零件的工程號Jno
select jno from spj where pno='p1' and jno in(select jno
--21.基于學生選課數據庫,驗證課本上數據查詢相關的示例
select *
from spj where pno='p2');山東建筑大學 計算機學院 實驗報告
班級: 姓名: 學號: 實驗成績:
課程:數據庫系統概論 同組者: 實驗日期: 2018.04.24 from student;
select sname,'Year of Birth:',2014-sage,lower(sdept)from student;
--查詢至少選修了學生201215122選修的全部課程的學生號碼--不存在這樣的課程y,學生201215122選修了y,而學生x沒有選 select distinct sno from sc scx where not exists
(select *
select distinct sno from sc scx where not exists
(select scy.cno
--查詢選修了課程名為“信息系統”的學生學號和姓名 select sno,sname from student where sno in(select sno
from sc where cno in(select cno
from course
where cname='信息系統'));
from sc scy
where scy.sno='201215122' and scy.cno not in(select scz.cno from sc scz
where scz.sno=scx.sno));
from sc scy
where scy.sno='201215122' and not exists(select *
from sc scz where scz.sno=scx.sno and scz.cno=scy.cno));山東建筑大學 計算機學院 實驗報告
班級: 姓名: 學號: 實驗成績:
課程:數據庫系統概論 同組者: 實驗日期: 2018.04.24
運行結果 1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、山東建筑大學 計算機學院 實驗報告
班級: 姓名: 學號: 實驗成績:
課程:數據庫系統概論 同組者: 實驗日期: 2018.04.2417、18、21、19、20、1、2、三. 實驗總結
3、通過本次實驗,我了解了理解數據庫中數據的其他查詢方法和應用,學會各種查詢要求的實現,學會各種查詢的異同及相互之間的轉換方法。在實驗過山東建筑大學 計算機學院 實驗報告
班級: 姓名: 學號: 實驗成績:
課程:數據庫系統概論 同組者: 實驗日期: 2018.04.24 程中,有的看不懂題意,通過詢問同學解決了,也有的不會做,答案也看不懂,最后詢問老師,然后自己認真看看,最后解決問題了。
第二篇:重慶郵電大學數據庫實驗2
二叉樹操作 實驗日志
指導教師: 黎貴友 實驗時間: 2010 年 某 月 某 日 學院 : 計算機科學與技術學院 專業: 計算機科學與技術 班級: 3110903 學號 : 2009214458 姓名: 駱瀟龍 實驗室: S331-b 實驗目的:掌握二叉樹的定義、性質及存儲方式,各種遍歷算法。
實驗要求:采用二叉樹鏈表作為存儲結構,完成二叉樹的建立,先序、中序和后序以及按層次遍歷的操作,求所有葉子及結點總數的操作。
實驗主要步驟:
1、分析、理解程序 #include“stdio.h” #include“string.h” #include“stdlib.h” #include“ctype.h” #define Max 20
//結點的最大個數 typedef struct node { char data;
struct node *lchild,*rchild;}BinTNode;
//自定義二叉樹的結點類型 typedef BinTNode *BinTree;
//定義二叉樹的指針
int NodeNum,leaf;
//NodeNum為結點數,leaf為葉子數
//==========基于先序遍歷算法創建二叉樹============== //=====要求輸入先序序列,其中加入虛結點“#”以示空指針的位置===== BinTree CreatBinTree(void){
BinTree T;
char ch;
if((ch=getchar())=='#')return(NULL);
//讀入#,返回空指針
else {
T=(BinTNode *)malloc(sizeof(BinTNode));
//生成結點
T->data=ch;
T->lchild=CreatBinTree();
//構造左子樹
T->rchild=CreatBinTree();
//構造右子樹
{
int hl,hr,max;
if(T){
hl=TreeDepth(T->lchild);
//求左深度
hr=TreeDepth(T->rchild);
//求右深度
max=hl>hr? hl:hr;
//取左右深度的最大值
NodeNum=NodeNum+1;
//求結點數
if(hl==0&&hr==0)
leaf=leaf+1;//若左右深度為0,即為葉子。
return(max+1);
} else return(0);}
//====利用“先進先出”(FIFO)隊列,按層次遍歷二叉樹========== void Levelorder(BinTree T){
int front=0,rear=1;
BinTNode *cq[Max],*p;
//定義結點的指針數組cq
cq[1]=T;
//根入隊
while(front!=rear)
{
front=(front+1)%NodeNum;
p=cq[front];
//出隊
printf(“%c”,p->data);
//出隊,輸出結點的值
if(p->lchild!=NULL)
{
rear=(rear+1)%NodeNum;
cq[rear]=p->lchild;
//左子樹入隊
}
if(p->rchild!=NULL)
{
rear=(rear+1)%NodeNum;
cq[rear]=p->rchild;
//右子樹入隊
} } }
default: exit(1);
}
printf(“n”);} while(i!=0);}
2、調試程序,設計一棵二叉樹,輸入完全二叉樹的先序序列,用#代表虛結點(空指針),如ABD###CE##F##,建立二叉樹,求出先序、中序和后序以及按層次遍歷序列,求所有葉子及結點總數.實驗結果:
1.當輸入測試數據(輸入完全二叉樹的先序序列,用#代表虛結點,如ABD###CE##F##)時(如圖1-1),回車運行時,結果如圖1-2所示;
圖1-1
圖1-2
2.按層次遍歷之前,輸入數字4(如圖2-1,);回車運行時,求出測試數據的深度、結點數及葉子數分別為3,6,3(如圖2-2);
圖2-1
789-
第三篇:數據庫實驗2實驗報告 2
數據庫第二次試驗報告
PB10011020 劉思軼
實驗內容
本實驗有兩個可選題目,旅游出行和藥品免疫庫。本程序即為旅游出行的一個實現。
實驗原題摘要如下 數據關系模式:
航班FLIGHTS(String flightNum, int price, int numSeats, int numAvail, String FromCity, StringArivCity);
賓館房間HOTELS(String location, int price, int numRooms, int numAvail); 出租車CARS(String location, int price, int numCars, int numAvail); 客戶CUSTOMERS(String custName);
預訂情況RESERVATIONS(String resvKey, String custName, int resvType)系統基本功能:
1.航班,出租車,賓館房間和客戶基礎數據的入庫,更新(表中的屬性也可以根據你的需要添加)。
2.預定航班,出租車,賓館房間。
3.查詢航班,出租車,賓館房間,客戶和預訂信息。4.查詢某個客戶的旅行線路。5.檢查預定線路的完整性。6.其他任意你愿意加上的功能。
程序功能
本系統由旅行服務提供商運營,發布在支持PHP + MySQL 的服務器上。系統默認有三個角色,游客、用戶和管理員。它們的權限如下
1、游客
查詢當前航班、旅館和出租車的預訂情況;
2、注冊用戶
游客的所用權限; 查詢當前預訂;
預訂航班、旅館和出租車; 退訂航班、旅館和出租車。打印旅行路線
檢查預定路線的完整性。檢查航班的完備性
3、管理員
注冊用戶的所用權限 添加航班、旅館和出租車信息; 更改航班、旅館和出租車信息; 注冊用戶;
更改用戶密碼和權限; 刪除注冊用戶; 查詢用戶預訂; 取消用戶預訂; 查詢用戶旅行線路。
運行平臺
本系統在Windows 7 32位 下由PHP-now虛擬的網絡運行平臺上測試.所需環境為: PHP Apache MySQL PhmyAdmin 環境搭建
打開集成環境php-now文件夾,點擊init.cmd,會自動安裝所需環境 接著在PHP后臺中載入所需要的表
CREATE TABLE FLIGHTS(flightNum varchar(30), price int(6), numSeats int(6), numAvail int(6), FromCity varchar(30), ArivCity varchar(30), PRIMARY KEY(flightNum));CREATE TABLE HOTELS(location varchar(30), price int(6), numRooms int(6), numAvail int(6), PRIMARY KEY(location));CREATE TABLE CARS(location varchar(30), price int(6), numCars int(6), numAvail int(6), PRIMARY KEY(location));CREATE TABLE CUSTOMERS(custName varchar(30), password varchar(50), type varchar(20), PRIMARY KEY(custName));CREATE TABLE RESERVATIONS(resvKey int(20)AUTO_INCREMENT, custName varchar(30), resvType varchar(20), detail varchar(20), PRIMARY KEY(resvKey));
該程序所實現的功能
1.登錄功能
登陸者身份分為游客和管理員,在數據庫中信息都存放在customer表中,區別為type項不同,管理員為admin,游客為users,決定了權限不同.(1)普通游客登錄后界面
(2)管理員登陸后界面
2.查詢功能
登入http://127.0.0.1 可以選擇查詢航班,旅館和出租車.3.游客-預訂功能
4.游客-管理預訂信息功能
點擊自己的id可進入該功能頁面,可以看到自己的旅游路線和預訂信息,并可以取消預訂.5.游客-檢查線路完整性功能
當游客預訂了從A到B的機票,則必須檢查啊在A定了車(去機場),在B訂了車和旅館(下飛機后坐車和住宿),以此實現完整性檢查.在從nanjing to beijing的旅游路線后面點擊check,會提示游客還需要在nanjing預訂汽車,在beijing預定旅館。
6.管理員-管理航班,旅館和出租車表
可以有insert delete 和update 幾種操作.delete:
直接點擊cancel就可刪除相應的信息。insert & update: 點擊edit后,程序會自動將想要編輯的行的信息填入供管理員編輯,不用再手動輸入。
7.管理員-管理用戶表
可以添加新用戶,對用戶的權限升級,查看用戶信息.用戶的密碼是md5加密保存的。
實驗小結
仍然存在的問題: 1.軟件界面過于簡單,僅僅實現了功能沒有在用戶可用性上多做考慮。
2.新用戶想要登錄該系統預訂必須要由管理員登入信息后才可操作。缺少了游客注冊的功能。
3.不能根據用戶的需求點對點得查詢相應信息,只能羅列出所有的信息。
實驗心得: 1.在搭建PHP環境中遇到了許多問題:如用戶權限不夠,域名已使用使得Apache-20安裝不成功,通過網上查閱資料解決問題。
2.了解到自己對問題的調研還是不足,如旅游系統,各種表之間到底應該怎么建立關系,哪些項是主鍵,自己建的表中的信息是否已經充足了,參照現實中旅游系統才能不斷完善.
第四篇:數據庫實驗2報告
《數據庫系統原理實驗報告》
姓名:疏穎 學號:22920152203909 完成日期:2018年4月6日
實驗環境:SQLServer2008 實驗2.1數據查詢 實驗要求:
以School數據庫為例,在該數據庫中存在四張表格,分別為:
? 表STUDENTS(sid, sname, email, grade);? 表TEACHERS(tid, tname, email, salary);? 表COURSES(cid, cname, hour);? 表CHOICES(no, sid, tid, cid, score)在數據庫中,存在這樣的關系:學生可以選擇課程,一個課程對應一個教師。在表CHOICES中保存學生的選課記錄。
按以下要求對數據庫進行查詢操作: 實驗步驟:
(1)查詢年級為2001的所有學生的名稱并按編號升序排列。
(2)查詢學生的選課成績合格的課程成績,并把成績換算為積點(60分對應積點為1,每增加1分,積點增加0.1)。
(3)查詢課時是48或64的課程的名稱。
(4)查詢所有課程名稱中含有data的課程編號。
(5)查詢所有選課記錄的課程號(不重復顯示)。
(6)統計所有教師的平均工資。
(7)查詢所有教師的編號及選修其課程的學生的平均成績,按平均成績降序
排列。
(8)統計各個課程的選課人數和平均成績。
(9)查詢至少選修了三門課程的學生編號。
(10)查詢編號800009026的學生所選的全部課程的課程名和成績。
(11)查詢所有選修了database的學生的編號。
(12)求出選擇了同一個課程的學生數。
(13)求出至少被兩名學生選修的課程編號。
(14)查詢選修了編號80009026的學生所選的某個課程的學生編號。
(15)查詢學生的基本信息及選修課程編號和成績。
(16)查詢學號850955252的學生的姓名和選修的課程名及成績。
(17)查詢與學號850955252的學生同年級的所有學生資料。
(18)查詢所有有選課的學生的詳細信息。
(19)查詢沒有學生選的課程的編號。
(20)查詢課程名為C++的課時一樣課程名稱。
(21)找出選修課程成績最好的選課記錄。
(22)找出和課程UML或課程C++的課時一樣課程名稱。
(23)查詢所有選修編號10001的課程的學生的姓名。
(24)查詢選修了所有課程的學生姓名。
(25)利用集合運算,查詢選修課程C++或選修課程Java的學生的編號。
(26)實現集合交運算,查詢既選修課程C++又選修課程Java的學生的編號。
(27)實現集合減運算,查詢選修課程C++而沒有選修課程Java的學生的編號。
實驗2.2空值和空集的處理
1.實驗步驟:
(1)查詢所有選課記錄的成績并將它換算為五分制(滿分5分,合格3分),注意SCORE取NULL值的情況。
(2)通過查詢選修編號10028的課程的學生的人數,其中成績合格的學生人數,不合格的學生人數,討論NULL值的特殊含義。
取null值的數據在含有運算操作的選擇語句中不被選擇。
(3)通過實驗檢驗在使用ORDER BY進行排序時,取NULL的項是否出現在結果中?如果有,在什么位置?
取null值的數據會出出現在結果中,按最小值進行排序
(4)在上面的查詢過程中如果加上保留字DISTINCT會有什么效果?
所有的null值選項只會出現一行。
(5)通過實驗說明使用分組GROUP BY對取值為NULL的項的處理。
(6)結合分組,使用集合函數求每個同學的平均分、總的選課侸、最高成績、最低成績和總成績。
(7)查詢成績小于60的選課記錄,統計總數、平均分、最大值和最小值。
(8)采用嵌套查詢的方式,利用比較運算符和謂詞ALL的結合來查詢表COURSES中最少的課時。假設數據庫中只有一個記錄的時候,使用前面的方法會得到什么結果,為什么?
(9)創建一個學生表S(NO,SID,SNAME),教師表T(NO,TID,TNAME)作為實驗用的表。其中NO分別是這兩個表的主鍵,其他鍵允許為空。向S插入元組(1,0129871001,王小明)、(2,0129871002,李蘭)、(3,0129871005,NULL)、(4,0129871004,關紅); 向T插入元組1,100189,王小明)(2,、100180,李小)(3,、100121,NULL)、(4,100128,NULL)。
對這兩個表作對姓名的等值連接運算,找出既是老師又是學生的人員的學生編號和老師編號。
實驗總結:
本次實驗主要考察的是查詢語句,相比于上次的實驗,這次難度有所增加,涉及到了嵌套查詢等查詢方法,having語句和where語句用的最多,有時會混亂,還需要多加練習。實驗二中對于取null值的選項的關注也讓我意識到在以后的實際操作過程中需要注意對于庫里數據的處理。
第五篇:數據庫實驗
實驗1.1 使用SQL Server工具(Microsoft SQL Server Management Studio Express)管理數據庫 實驗內容:
(1)使用SSMS(SQL Server Management Studio)加入實驗數據庫。(2)使用SSMS可視化建立、修改和刪除數據庫、表。(3)使用SSMS對數據庫進行備份和恢復。
(4)使用SSMS對表進行查詢、插入、修改、刪除。實驗步驟:
(1)加入School數據庫。(2)建立Test數據庫。
(3)在數據庫中建立人員表PERSON(P#,Pname,Page)。更改表設置P#為主鍵,增加屬性Ptype(類型是CHAR,長度是10)。
(4)用SSMS的查詢功能(新建查詢)對PERSON表進行查詢、插入、修改、刪除等操作:首先插入兩條記錄;修改第二條記錄;刪除第二條記錄。(5)備份Test數據庫。(6)刪除表PERSON。(7)恢復Test數據庫。(8)刪除Test數據庫。