第一篇:数据库实验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值的选项的关注也让我意识到在以后的实际操作过程中需要注意对于库里数据的处理。
第二篇:重庆邮电大学数据库实验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
山东建筑大学 计算机学院 实验报告
班级: 姓名: 学号: 实验成绩:
课程:数据库系统概论 同组者: 实验日期: 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 程中,有的看不懂题意,通过询问同学解决了,也有的不会做,答案也看不懂,最后询问老师,然后自己认真看看,最后解决问题了。
第五篇:数据库实验5报告
广东工业大学实验报告
自动化学院 学院
网络工程 专业 班
学号 3111001381 姓名
何宇航
成绩评定_______ 教师签名 黄永慧 实验
题目
数据查询和连接查询
课程名称
数据库原理及应用实验
一.实验目的
使学生熟练掌握简单表的数据查询、数据连接查询以及数据排序的操作方法,并加深对Transact-SQL语言的查询语句的理解。
二.实验软件环境
SQL Server 2000 三.实验内容
(一)实验要求:
使用SQL Server 2000查询分析器,并用SELECT语句及WHERE查询条件进行简单查询及连接查询实验,其次使用ORDER BY排序子句实现输出结果的排序。主要内容包括:
1)简单查询操作 包括投影、选择条件、数据排序等。
2)连接查询操作 包括等值连接、自然连接、外连接、内连接、左连接和右连接等。(二)要求完成以下查询要求:
1)将计算机类的书存入永久计算机图书表。
2)将借书日期在05年以前的借阅记录存入临时超期借阅表。3)查询发生了借阅关系的借书证号,并按借书证号降序排列。4)查询“清华大学出版社”出版的图书情况。
5)查询目前被借出去的书籍的书号、借书证号以及借出日期,并按借出日期排序。6)查询“程军”老师所借阅的书籍的书名。
7)查询借书者的编号、姓名、单位、所借书号、书名和借阅日期,并按读者编号排序。
四.实验的结果及分析
1)将计算机类的书存入永久计算机图书表 CREATE TABLE Computer_Book(bno
char(8)NOT NULL PRIMARY KEY,category
varchar(10),title
varchar(40)NOT NULL,press
varchar(30)NOT NULL,book_year
Int NOT NULL,author
varchar(20),price
decimal(7,2)NOT NULL,book_total Int NOT NULL)
INSERT INTO Computer_Book SELECT *FROM Book WHERE category='计算机'
广东工业大学实验报告
自动化学院 学院
网络工程 专业 班
学号 3111001381 姓名
何宇航
成绩评定_______ 教师签名 黄永慧 实验
题目
数据查询和连接查询
课程名称
数据库原理及应用实验
2)将借书日期在05年以前的借阅记录存入临时超期借阅表。CREATE TABLE Overdue_Borrow(cno
char(7)NOT NULL FOREIGN KEY(CNO)REFERENCES Card(cno),bno
char(8)NOT NULL FOREIGN KEY(BNO)REFERENCES Book(bno),borrow_date smalldaetime NOT NULL DEFAULT GETDATE(),CONSTRAINT CBB_PRIM PRIMARY KEY(cno,bno,borrow_date))INSERTINTO Overdue_Borrow SELECT *Borrow WHERE YEAR(borrow_date)<2005
3)查询发生了借阅关系的借书证号,并按借书证号降序排列。SELECT DISTINCT cno FROM Borrow ORDER BY cno DESC 4)查询“清华大学出版社”出版的图书情况。SELECT *FROM Book WHERE press='清华大学出版社'
5)查询目前被借出去的书籍的书号、借书证号以及借出日期,并按借出日期排序。SELECT bno,cno,borrow_date FROM Borrow WHERE return_date IS NULL ORDER BY borrow_date
6)查询“程军”老师所借阅的书籍的书名。SELECT title FROM Book,Card,Borrow WHERE(Card.cno=Borrow.cno)and(Borrow.bno=Book.bno)and(name='程军')
7)查询借书者的编号、姓名、单位、所借书号、书名和借阅日期,并按读者编号排序。SELECT Borrow.cno,name,department,Borrow.bno,title,borrow_date FROM Borrow,Card,Book WHERE(Card.cno=Borrow.cno)and(Borrow.bno=Book.bno)ORDER Borrow.cno
五.实验心得体会
通过本实验基本学会如何进行简单表的数据查询、数据联接查询以及数据排序,并加深对SQL和Transact-SQL语言的查询语句的理解,这比光看书跟容易理解,能够跟好的掌握书本上的知识。