第一篇:数据库实验报告
课 程 实 验 报 告
课程名称:
数据库系统概论
专业班级:
计科1207班
学
号:
U201215002
姓
名:
李文勇
指导教师:
江胜
报告日期:
2015年6月8日
计算机科学与技术学院
目 录 实验一 基本SQL操作.........................................................................1 1.1 实验目的.......................................................................................1 1.2 实验内容.......................................................................................1 1.3 实验环境.......................................................................................2 1.4 实验步骤.......................................................................................2 1.5 实验中遇到的问题及解决...........................................................8 2 实验二 DBMS综合运用......................................................................9 2.1 实验目的.......................................................................................9 2.2 实验内容及步骤...........................................................................9 2.3 实验中遇到的问题.....................................................................12 3 实验心得与体会..................................................................................13 4 附录.......................................................................................................13 实验一 基本SQL操作
1.1 实验目的
1)熟悉一种DBMS软件(Microsoft SQL Server、MySQL等)的安装和使用; 2)熟悉并掌握SQL语言,会进行基本的SQL操作,包括表的创建、数据的增加、修改以及查询等操作。
1.2 实验内容
1)数据定义
参照下面的内容建立自己实验所需的关系数据创建三个关系: 商品表【商品名称、商品类型】
GOODS【GNAME char(20),GTYPE char(10)】
主关键字为(商品名称),商品类型为(电器、文具、服装„„)
商场表【商场名称,所在地区】
PLAZA【PNAME char(20),PAREA char(20)】
主关键字为商场名称,所在地区为(洪山、汉口、汉阳、武昌„„)
销售价格表【商品名称、商场名称、当前销售价格、目前举办活动类型】 SALE【GNAME char(20),PNAME char(20),PRICE FLOAT,ATYPE char(10)】
主关键字为(商品名称、商场名称),举办活动类型为(送券、打折),也可为空值,表示当前未举办任何活动。表中记录如(„哈森皮靴‟,„亚贸广场‟,200,„打折‟),同一商场针对不同的商品可能采取不同的促销活动。
2)数据更新
将SALE表中的打折记录插入到新表SALE_CHEAP中,并基于SALE_CHEAP表创建一个统计每个商场各自打折商品平均价格的视图。
3)用SQL语句完成下述查询需求
(1)查询价格在200~500元之间的商品名称、所在的商场名称、价格,结果按照商场名称排序;
(2)查询每种商品的最低价格、商品名称;
(3)查询以“送券”方式销售的商品总数超过30种的商场名称;
(4)查询以“送券”方式销售的商品总数超过30种的商场所在地区;(5)查询价格为下列取值之一的商品名称、所在商场名称、目前举办活动的类型,(88、188、288、388、488、588、888);
(6)查询以“老”字开头的所有商品的名称;(7)查询同时销售“剃须刀”和“电池”的商场名称;(8)查询不举办任何活动的商场。
1.3 实验环境
Windows8.1 x64系统; Microsoft SQL Server 2012 1.4 实验步骤
1)数据更新
(1)创建三个关系表:GOODS、PLAZA、SALE。
打开并连接SQL Server 2012,依次新建数据库和新建查询,然后分别输入和执行以下语句即可创建三个关系表:
CREATE TABLE GOODS(GNAME CHAR(20)PRIMARY KEY,GTYPE CHAR(10));
CREATE TABLE PLAZA(PNAME CHAR(20)PRIMARY KEY,PAREA CHAR(20));
CREATE TABLE SALE(GNAME CHAR(20),PNAME CHAR(20),PRICE FLOAT,ATYPE CHAR(10),PRIMARY KEY(GNAME,PNAME),FOREIGN KEY(GNAME)REFERENCES GOODS(GNAME),FOREIGN KEY(PNAME)REFERENCES PLAZA(PNAME));然后分别在每个表中导入Excel文件,即完成了数据的添加。接着执行相应的插入、修改、删除语句(按照课本3.5节的格式)
(2)将SALE表中的打折记录插入到新表SALE_CHEAP中,并基于SALE_CHEAP表创建一个统计每个商场各自打折商品平均价格的视图。
首先执行下列语句,创建一个SALE_CHEAP表:
CREATE TABLE SALE_CHEAP(GNAME CHAR(20),PNAME CHAR(20),PRICE FLOAT,ATYPE CHAR(10),PRIMARY KEY(GNAME,PNAME),FOREIGN KEY(GNAME)REFERENCES GOODS(GNAME),FOREIGN KEY(PNAME)REFERENCES PLAZA(PNAME));
然后执行下面的语句,将SALE表中的打折记录插入新表SALE_CHEAP:
INSERT INTO SALE_CHEAP(GNAME,PNAME,PRICE,ATYPE)SELECT GNAME,PNAME,PRICE,ATYPE FROM SALE WHERE ATYPE='打折';
结果见图1.1。
图 1.1 SALE_CHEAP表
最后执行下列语句,创建统计商场打折商品平均价格的视图:
GO CREATE VIEW A_PRICE(PNAME,AVG_PRICE)AS SELECT PNAME,AVG(PRICE)FROM SALE_CHEAP GROUP BY PNAME GO
统计结果见图1.2。
图 1.2 打折商品平均价格
2)数据查询
(1)查询价格在200~500元之间的商品名称、所在的商场名称、价格,结果按照商场名称排序。
执行下列语句:
SELECT GNAME,PNAME,PRICE FROM SALE WHERE PRICE BETWEEN 200 AND 500 ORDER BY PNAME;
结果见图1.3。
图 1.3 价格在200~500元之间的商品
(2)查询每种商品的最低价格、商品名称。执行下列语句:
SELECT GNAME, MIN(PRICE)FROM SALE GROUP BY GNAME;
结果见图1.4。
图 1.4
每种商品最低价
(3)查询以“送券”方式销售的商品总数超过30种的商场名称。执行下列语句:
SELECT PNAME FROM SALE
WHERE ATYPE='送券'
GROUP BY PNAME HAVING COUNT(*)>30;
结果如下:
(4)查询以“送券”方式销售的商品总数超过30种的商场所在地区。执行下列语句:
SELECT PAREA FROM PLAZA
WHERE PLAZA.PNAME IN(SELECT SALE.PNAME FROM SALE
WHERE ATYPE='送券'
GROUP BY SALE.PNAME HAVING COUNT(*)>30);
结果如下:
(5)查询价格为下列取值之一的商品名称、所在商场名称、目前举办活动的类型,(88、188、288、388、488、588、888)。
执行下列语句:
SELECT GNAME,PNAME,ATYPE FROM SALE WHERE PRICE IN(88,188,288,388,488,588,888);
结果见下图:
(6)查询以“老”字开头的所有商品的名称; 执行下列语句:
SELECT* FROM GOODS WHERE GNAME LIKE '老%';
结果如下:
(7)查询同时销售“剃须刀”和“电池”的商场名称; 执行下列语句:
SELECT PNAME FROM SALE WHERE GNAME='剃须刀' AND PNAME IN(SELECT PNAME FROM SALE WHERE GNAME='电池');
结果如下:
(8)查询不举办任何活动的商场。执行下列语句:
SELECT DISTINCT PNAME FROM SALE WHERE ATYPE IS NULL;
结果如下:
1.5 实验中遇到的问题及解决
(1)在做基于SALE_CHEAP表创建一个统计每个商场各自打折商品平均价格的视图时,虽然语句能够执行,但在语句上显示“错误的语法:‘CREATE VIEW’必须是批处理中仅有的语句。”
后来在网上查找原因,才知道批处理必须以CREATE语句开始。也就是说一个查询分析器里面只有一个批处理语句才是规范的语法。CREATE VIEW 语句不能在批处理中与其他语句组合使用。所有跟在该批处理后的其他语句将被解释为第一个 CREATE 语句定义的一部分。
最后解决方法是在该语句前后加上关键字GO进行分批处理。
(2)在做查询同时销售“剃须刀”和“电池”的商场名称时,刚开始用的下面这种方法:
SELECT S1.PNAME FROM SALE S1,SALE S2 WHERE S1.PNAME=S2.PNAME AND S1.GNAME='剃须刀' AND S2.GNAME='电池';结果也是有语法错误,后来改成了
SELECT PNAME FROM SALE WHERE GNAME='剃须刀' AND PNAME IN(SELECT PNAME FROM SALE WHERE GNAME='电池');解决了问题。实验二 DBMS综合运用
2.1 实验目的
在第1次实验的基础上,使用Microsoft SQL Server或其他DBMS进行用户管理、权限配置等操作,进一步熟悉DBMS的运用。
2.2 实验内容及步骤
1)学习系统的身份、权限配置操作。
(1)当SQL Server 2012在Windows 上运行时,sysadmin固定服务器角色成员可以指定下面两种身份验证模式之一:
a、Windows 身份验证模式
只进行Windows身份验证。用户不能指定SQL Server 2012登录ID。这是 SQL Server 2012的默认身份验证模式。不能为在 Windows 98上运行的SQL Server实例指定Windows身份验证模式,因为此操作系统不支持Windows身份验证。
说明:如果用户试图通过提供空白登录名称连接到SQL Server的实例,SQL Server将使用Windows身份验证。此外,如果用户试图使用特定的登录连接到配置为Windows身份验证模式的SQL Server实例,则将忽略该登录并使用 Windows身份验证。
b、混合验证模式
如果用户在登录时提供了SQL Server 2012登录ID,则系统将使用SQL Server身份验证对其进行验证。如果没有提供SQL Server 2014登录ID或请求 Windows身份验证,则使用Windows身份验证对其进行身份验证。
当用户用指定的登录名称和密码从非信任连接进行连接时,SQL Server通过检查是否已设置SQL Server登录帐户,以及指定的密码是否与以前记录的密码匹配,自己进行身份验证。如果SQL Server未设置登录帐户,则身份验证将失败,而且用户收到错误信息。
提供SQL Server身份验证是为了向后兼容性,因为为SQL Server 7.0版或更早的版本编写的应用程序可能要求使用SQL Server登录和密码。另外,当SQL Server实例在Windows 98上运行时,必须使用SQL Server身份验证,因为在 Windows 98上不支持Windows身份验证模式。因此,SQL Server在Windows 98 上运行时使用混合模式(但只支持SQL Server身份验证)。
尽管建议使用Windows 身份验证,但对于Windows NT 4.0和Windows客户端以外的其它客户端连接,可能需要使用SQL Server身份验证。
(2)设置SQL Server 2012的身份验证模式:
打开Microsoft SQL Server Management Studio,右键对象资源管理器,选择“属性”,如下图所示。
在出来的窗口点击左边的“安全性”,如下图所示:
在“服务器身份验证”选项中,第1个即为Windows身份验证模式,第2个即为混合验证模式。
(3)权限配置操作
SQL Server 2012可以新建一个用户并对其配置权限,当时我新建用户后,使用SQL Server验证方式登录总是登录错误,所以不能验证是否正确实现了权限的配置。
2)了解SQLSERVER的存储过程、触发器、函数实现过程。
通过查看SQLSERVER的联机帮助文档和示例,体会存储过程、函数和触发器的原理,尝试编制具备基本功能的存储过程、触发器和函数的实际例子,查看其执行效果。
(1)创建一个存储过程,其中包含插入和删除操作,经验证存储结果,过程生效。
CREAT PROCEDURE MyProcedure
AS
Begin
SET
NOCOUNT
ON;
SET XACT_ABORT ON;
BEGIN TRAN
DELETE FROM
GOODS WHERE GNAME='书包';
INSERT INTO
PLAZA VALUES('中百仓储','洪山区');
COMMIT TRAN
END
(2)创建一个级联删除触发器,使得在SALE中删除一个货物时删除GOODS表中同种货物。
CREATE TRIGGER GOODS_SALE ON SALE AFTER DELETE AS DELETE FROM GOODS WHERE GNAME IN(SELECT GNAME FROM DELETED);
然后执行:
DELETE FROM SALE WHERE GNAME=‟茶几‟;
结果如下:
可以看到GOODS表和SALE表中的“茶几“已经被删除、(3)创建一个函数查询GOODS表所有内容 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION se_goods()RETURNS TABLE AS RETURN(SELECT *from goods);GO
SELECT 选择该函数,由于是表值函数所以用 select * from[dbo].[se_goods]()调用,选择goods表内容,有结果可以看出,该函数执行成功。
再执行SELECT *FROM [dbo].[se_goods]();与直接执行函数体 SELECT *from goods 的结果是一样的。
2.3 实验中遇到的问题
遇到的最大问题就是新建用户后以SQL Server验证方式登录总是失败,这个问题一直到最后也没解决,希望以后能更加深入的学习数据库,解决目前存在的问题。实验心得与体会
通过这次实验,学到了许多课堂上没有深入了解的东西。包括在SQL Server 2012下如何建表、导入数据、查询、插入等。对SQL语言也有了更加透彻的了解,巩固了课本上学到的知识,提高了动手能力和思维能力。
SQL Server数据库的实验学习使我对数据库的学习有了新的进步,数据库是很重要的一门课程,以后会再接再厉,不只是懂得运用数据库,还要争取去优化所用的数据库。附录
各题的SQL语句:
1)创建关系表GOODS、PLAZA、SALE:
CREATE TABLE GOODS(GNAME CHAR(20)PRIMARY KEY,GTYPE CHAR(10));
CREATE TABLE PLAZA(PNAME CHAR(20)PRIMARY KEY,PAREA CHAR(20));
CREATE TABLE SALE(GNAME CHAR(20),PNAME CHAR(20),PRICE FLOAT,ATYPE CHAR(10),PRIMARY KEY(GNAME,PNAME),FOREIGN KEY(GNAME)REFERENCES GOODS(GNAME),FOREIGN KEY(PNAME)REFERENCES PLAZA(PNAME));
2)第一部分第2题数据更新第(3)小题:
CREATE TABLE SALE_CHEAP(GNAME CHAR(20),PNAME CHAR(20),PRICE FLOAT,ATYPE CHAR(10),PRIMARY KEY(GNAME,PNAME),FOREIGN KEY(GNAME)REFERENCES GOODS(GNAME),FOREIGN KEY(PNAME)REFERENCES PLAZA(PNAME));
INSERT INTO SALE_CHEAP(GNAME,PNAME,PRICE,ATYPE)SELECT GNAME,PNAME,PRICE,ATYPE FROM SALE WHERE ATYPE='打折';GO CREATE VIEW A_PRICE(PNAME,AVG_PRICE)AS SELECT PNAME,AVG(PRICE)FROM SALE_CHEAP GROUP BY PNAME GO
3)第一部分第3题数据查询第(3)小题:
SELECT GNAME,PNAME,PRICE FROM SALE WHERE PRICE BETWEEN 200 AND 500 ORDER BY PNAME;
4)第一部分第3题数据查询第(4)小题:
SELECT GNAME, MIN(PRICE)FROM SALE GROUP BY GNAME;
5)第一部分第3题数据查询第(5)小题:
SELECT PNAME FROM SALE
WHERE ATYPE='送券'
GROUP BY PNAME HAVING COUNT(*)>30;
6)第一部分第3题数据查询第(6)小题:
SELECT PAREA FROM PLAZA
WHERE PLAZA.PNAME IN(SELECT SALE.PNAME FROM SALE
WHERE ATYPE='送券'
GROUP BY SALE.PNAME HAVING COUNT(*)>30);
7)第一部分第3题数据查询第(7)小题:
SELECT GNAME,PNAME,ATYPE FROM SALE WHERE PRICE IN(88,188,288,388,488,588,888);
8)第一部分第3题数据查询第(8)小题:
SELECT* FROM GOODS WHERE GNAME LIKE '老%';
9)第一部分第3题数据查询第(9)小题:
SELECT PNAME FROM SALE
WHERE GNAME='剃须刀' AND PNAME IN(SELECT PNAME FROM SALE WHERE GNAME='电池');
10)第一部分第3题数据查询第(10)小题:
SELECT DISTINCT PNAME FROM SALE
WHERE ATYPE IS NULL;
11)第二部分第5小题
CREAT PROCEDURE MyProcedure AS Begin SET
NOCOUNT
ON;SET XACT_ABORT ON;BEGIN TRAN DELETE FROM GOODS WHERE GNAME='书包';INSERT INTO
PLAZA VALUES('中百仓储','洪山区');COMMIT TRAN END;创建存储过程
CREATE TRIGGER GOODS_SALE ON SALE AFTER DELETE AS DELETE FROM GOODS WHERE GNAME IN(SELECT GNAME FROM DELETED);级联删除触发器
DELETE FROM SALE WHERE GNAME=’茶几’;
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION se_goods()RETURNS TABLE AS RETURN(SELECT *from goods)GO 查询函数
第二篇:数据库实验报告
数据库实验报告
一、题目要求
某银行准备开发一个银行业务管理系统,通过调查,得到以下的主要需求:
银行有多个支行。各个支行位于某个城市,每个支行有唯一的名字。银行要监控每个支行的资产。银行的客户通过其身份证号来标识。银行存储每个客户的姓名及其居住的街道和城市。客户可以有帐户,并且可以贷款。客户可能和某个银行员工发生联系,该员工是此客户的贷款负责人或银行帐户负责人。银行员工也通过身份证号来标识。员工分为部门经理和普通员工,每个部门经理都负责领导其所在部门的员工,并且每个员工只允许在一个部门内工作。每个支行的管理机构存储每个员工的姓名、电话号码、家庭地址及其经理的身份证号。银行还需知道每个员工开始工作的日期,由此日期可以推知员工的雇佣期。银行提供两类帐户——储蓄帐户和支票帐户。帐户可以由2个或2个以上客户所共有,一个客户也可有两个或两个以上的帐户。每个帐户被赋以唯一的帐户号。银行记录每个帐户的余额、开户的支行以及每个帐户所有者访问该帐户的最近日期。另外,每个储蓄帐户有其利率,且每个支票帐户有其透支额。每笔贷款由某个分支机构发放,能被一个或多个客户所共有。每笔贷款用唯一的贷款号标识。银行需要知道每笔贷款所贷金额以及逐次支付的情况(银行将贷款分几次付给客户)。虽然贷款号不能唯一标识银行所有为贷款所付的款项,但可以唯一标识为某贷款所付的款项。对每次的付款需要记录日期和金额。
二、需求分析
这一部分主要是根据实验需求对银行系统需求中的实体、实体属性以及实体之间的关联进行确认,以便画出正确的概念模型。
2.1 实体确认
根据需求分析确认实体:银行员工、银行支行、客户、账户(其中:储蓄账户、支票账户是继承实体账户而来)、贷款、支付(弱实体)。
2.2 实体属性确认
银行员工:身份证号(pi)、姓名、电话号码、家庭地址、开始工作日期 银行支行:支行名、资产、城市
客户:身份证号、姓名、街道、所在城市 账户:账户号、余额、最近访问日期 支票账户:透支额 储蓄账户:利率 2.3 实体关系确认
账户和支行:N:1定义关系为Relationship_accout_bank 客户和贷款:M:N定义关系为Relationship_client_loan 客户和员工:M:1 定义关系为 Relation_client_staff 贷款和支行:1:N 定义关系为 Relationship_loan_bank 客户和账户:M:N 定义关系为 client__accout 贷款发放信息和贷款:N:1 定义关系为 Relationship_loan_pay 支行和员工:1:N 定义关系为Relationship_staff_bank
员工和员工:1:N 定义关系为 Relationship_lead
三、概念模型(CDM)
根据sybase power designer画出概念模型(CDM),如下图所示:
四、物理模型(PDM)
根据概念模型转化成物理模型(PDM),如下图所示:
第三篇:数据库实验报告
实验4SQL高级应用
【实验目的】
1、掌握在SQL SERVER 2005下进行数据还原的方法。
2、掌握SQL语句的查询统计功能和数据更改功能。
【实验内容】
1.还原factory数据库。
2.在factory数据库上,完成如下各题。
(1)删除factory数据库上各个表之间建立的关系。(2)*显示各职工的工资记录和相应的工资小计。
(3)*按性别和部门名的所有组合方式列出相应的平均工资。
(4)在worker表中使用以下语句插入一个职工记录。职工号:20;姓名:陈立;性别:女;出生日期:55/03/08;党员否: 1;参加工作:75/10/10;部门号:4。
在depart表中使用以下语句插入一个部门记录。部门号:5;部门名:设备处。对worker和depart表进行全外连接显示职工的职工号、姓名和部门名,然后删除这两个插入的记录。
(5)显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。(6)显示最高工资的职工所在的部门名。
(7)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。(8)*采用游标方式实现(6)小题的功能。(9)*采用游标方式实现(7)小题的功能。
(10)*先显示worker表中的职工人数,开始一个事务,插入一个职工记录,再显示worker表中的职工人数,回滚该事务,最后显示worker表中的职工人数。
【实验报告要求】
1.第(1)写出操作步骤。
2.其他各题写出实现要求的命令/程序,并列出执行结果。
【操作步骤】
1.还原factory数据库。
2.在factory基础上,有
(1)删除factory数据库上各个表之间建立的关系。
(2)*显示各职工的工资记录和相应的工资小计。
Select 职工号,姓名,工资from salary Order by 职工号
Compute sum(工资)by 职工号
(3)*按性别和部门名的所有组合方式列出相应的平均工资。
select worker.职工号,worker.性别,depart.部门名,avg(工资)as'平均工资' from worker inner join depart on worker.部门号=depart.部门号 inner join salary on worker.职工号=salary.职工号
group by worker.职工号,worker.性别,depart.部门名
order by worker.职工号
(4)在worker表中使用以下语句插入一个职工记录。职工号:20;姓名:陈立;性别:女;出生日期:55/03/08;党员否: 1;参加工作:75/10/10;部门号:4。
insert into worker values('20','陈立','女','1955-03-08','1','1975-10-10',4)
在depart表中使用以下语句插入一个部门记录。部门号:5;部门名:设备处。
Insert into depart Values('5','设备处')对worker和depart表进行全外连接显示职工的职工号、姓名和部门名,然后删除这两个插入的记录。
use factory Select b.部门号,c.姓名
from salary a,departb,worker c delete from worker where 职工号=20 delete from depart where 部门号=5(5)显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。
Use factory Select b.部门名,c.职工号,c.姓名,b.部门名,a.日期,a.工资 from salary a,departb,worker c Where 工资in(select max(a.工资)from salary a)and a.职工号=c.职工号and b.部门号=c.部门号(6)显示最高工资的职工所在的部门名。
Use factory Select b.部门名from salary a,departb,worker c Where 工资in(select max(a.工资)from salary a)and c.部门号=b.部门号and a.职工号=c.职工号
(7)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。
Use factory Select a.职工号,a.姓名,avg(b.工资)as平均工资from worker a,salary b where a.职工号=b.职工号 group by a.职工号,a.姓名
having avg(工资)<(select avg(工资)from salary)
第四篇:数据库实验报告
南华大学
计算机科学与技术学院
实验报告
(2013 ~2014 学
第二学期)
课程名称 实验名称
数据库原理与技术
姓名 张涛 学号 20124350230
专业 软件工程
班级 02班
地点
教师 刘征海 实验1 认识DBMS 一.实验题目
认识DBMS 二.实验要求
1.利用管理工具创建数据库、表和表间关系。
实验目的和注意事项 基本操作,进一步理解数 据库、表、表间关系的概念。
注意事项:创建数据库和数据表时应认真,如果出现错误,应相应地修改结构或删除。三.实验代码(内容)
(1)利用SQL Server Management Studio 创建数据库,名称为【学生选课
YYXXXX】。其中YY为专业代号,计算机为JS,软件工程为RJ,网络为WL,数媒为
SM;XXXX为各位同学的学号中的最后四位 实验目的:熟悉SQL Server Management Studio
(2)在【学生选课YYXXXX】中建立数据表,表的定义如下所示。
学生YYXXXX(学号,姓名,性别,出生日期,院系名称,备注);
课程YYXXXX(课程号,课程名,先行课,学分); 选修YYXXXX(学号,课程号,分数)。
要求定义每张表的主码,为属性选择合适的数据类型,决定是否允许为空,为【性别】和【学分】属性定义默认值。
(3)定义表之间的关系。
(4)分别为表录入几行数据记录,同时练习数据的修改和删除操作
2.利用SQL 语句创建数据库、表和表间关系 实验目的和注意事项
实验目的:熟悉创建数据库和数据表的SQL 语句。
注意事项:输入SQL 语句时应注意,语句中均使用西文操作符号。
实验内容
在SQL Server Management Studio 中新建查询,实现以下操作。(1)用SQL 语句创建数据库,名称为“StudentCourseYYXXXX”。其中YYXXXX 为各位同学的学号中的最后四位。
(2)用SQL 语句创建StudentCourseYYXXXX 中的3 张表,同时指定主码、外 码、默认值等。
(3)直接在表数据窗口中录入表数据记录。
实验 2 交互式 SQL(1)
一、数据库单表查询 实验目的和注意事项
实验目的:掌握单表查询SELECT、FROM、WHERE 的用法,特别要掌握比较运 算符、逻辑运算符的使用。注意事项:子句WHERE<条件>表示元组筛选条件;子句HAVING<条件>表示元
组选择条件;子句HAVING<条件>必须和GROUP BY 子句配合使用;注意输入SQL语句时均应使用西文操作符号。实验内容
(1)创建查询窗口,设置查询环境。(2)单表查询 实验步骤
(1)选择要查询的数据库,右击【新建查询】,或者选择系统菜单中的【文
件】|【新建】|【使用当前连接查询】命令,或者单击标准工具栏中的【新建查
询】按钮,即可新建一个查询窗口。如果查询数据库不是StudentCourseYYXXXX,则可在可用数据库下拉列表中进行选择,或用USE 语句调用。
(2)在查询窗口中输入SELECT 查询语句,对StudentCourseYYXXXX 数据库 进行查询操作。
① 查询计算机系全体学生的信息
② 查询姓“李”的学生的学号和姓名。
③ 查询课程表中先行课为空的课程名。
④ 查询考试成绩有不及格的学生的学号。
⑤ 求选修了C1 课程或C2 课程的学生的学号及成绩。
⑥ 查询全体计算机系学生的姓名及其年龄。
⑦ 查询计算机系在1986-1987 年之间出生的学生的姓名。
⑧ 查询姓“李”的前两个学生的学号和姓名。
⑨ 查询选修了两门以上课程的学生学号与课程数。
⑩ 查询选修课程数大于等于2 的学生的学号、平均成绩和选课门数,并按平均成绩降序排列。
二、数据库多表连接查询 实验目的和注意事项
实验目的:理解多表查询的概念;掌握多表查询的SELECT、FROM、WHERE、JOIN子句的用法,特别要求比较内连接、外连接的结果。
注意事项:内连接、左外连接和右外连接的含义及表达方法;注意输入SQL 语 句时均应使用西文操作符号。实验内容
(1)创建查询窗口,设置查询环境。(2)多表复杂查询。实验步骤
新建查询窗口,选择StudentCourseYYXXXX 为当前数据库,输入如下SELECT 查询语句并执行,对数据库进行多表连接查询操作。(1)查询选修了【数据库原理】的计算机系的学生学号和姓名。
(2)查询每一门课的间接先行课(即先行课的先行课)。
(3)查询学生的学号、姓名、选修课程的名称和成绩。
(4)查询选修了课程的学生姓名。
(5)查询所有学生的信息和所选修的课程。
(6)查询已被选修的课程的情况和所有课程的名字。
(7)列出学生所有可能的选修情况。
(8)查找计算机系的学生选修课程数大于2 的学生的姓名、平均成绩和选课 门数,并按平均成绩降序排列。
实验 3 交互式 SQL(2)数据库嵌套查询和组合查询 实验目的和注意事项
实验目的:掌握查询中嵌套查询和组合查询的操作方法,进一步加深对 SELECT 语句的理解。
注意事项:子句的使用;注意语句的层次嵌套关系和括号的配对使用问题;
注意输入SQL 语句时均应使用西文操作符号。实验内容(1)创建查询窗口,设置查询环境。(2)分组查询。(3)统计查询。(4)嵌套查询。实验步骤
新建查询窗口,选择StudentCourseYYXXXX 为当前数据库,输入如下SELECT 查询语句并执行,对数据库进行嵌套查询和组合查询操作。
(1)统计选修了【数据库原理】课程的学生人数。
(2)查询没有选修【数据库原理】课程的学生信息。
(3)查询其他系中比计算机系学生年龄都小的学生。
(4)查询被0602001 学生或0602002 学生所选修的课程的课程号(用UNION 组合查询与IN 条件查询两种方法实现)。
(5)查询0602001 学生和0602002 学生同时选修的课程的课程号(用
INTERSECT 组合查询与EXISTS 嵌套子查询两种方法实现)。
(6)查询被0602001 学生选修,但没有被0602002 学生所选修的课程的课程
号(用EXCEPT 组合查询与NOT EXISTS 嵌套子查询两种方法实现)。
实验 4 交互式 SQL(3)数据的更新 实验目的和注意事项
实验目的:熟悉插入、修改和删除SQL 语句的用法。注意事项:对于INSERT 语句,要求理解默认值约束、空值约束在插入时所 起的作用。实验内容
(1)使用INSERT 语句在数据库的表中插入几行记录。(2)使用UPDATA 语句修改某个数据。(3)使用DELETE 语句删除某行记录。实验步骤
(1)新建查询窗口,选择StudentCourseYYXXXX 为当前数据库。
(2)在已建立StudentCourseYYXXXX 数据库和StudentsYYXXXX、CoursesYYXXXX、SCYYXXXX 3 个表的基础上,向StudentCourseYYXXXX数据库中 的表更新数据。
① 向表StudentsYYXXXX 中插入(0601001,赵林, 男,1985-09-08,计算机)的记录。
② 向SCYYXXXX 表中添加一个学生的选课记录,学号为0601001,所选的课
程号为C2。SC表中有Sno、Cno、Grade 这3 个列。这里只知道学号和课程号,不知道成绩值。
③ 向表StudentsYYXXXX 中插入(0601002,张修雨,default)记录,该记录 的数据中default 表示默认值‘男’,其他数据表示空值。
④ 用CREATE 语句建立表StudentBAK1YYXXXX,包含(与Students 的Sno、Sname、Sdept 相同)3 个字段,然后用INSERT SELECT 语句实现向
StudentBAK1YYXXXX 添加StudentsYYXXXX 表中的计算机系学生的学号、姓名、所在系的信息。
⑤ 用 SELECT...INTO 语句实现把StudentsYYXXXX 表中1986 年后(包含
1986 年)出生的学生的学号、姓名存储到一个新表StudentBAK2YYXXXX。
⑥ 将姓名为【赵林】的同学的所在系改为【机电系】,爱好改为【足球】。
⑦ 将选修了课程名为【数据库原理】的学生成绩加5 分。⑧ 将StudentCourseYYXXXX
数据库的StudentBAK1YYXXXX 表中所有姓赵的 同学删除。
⑨ 删除计算机系选修成绩不及格的学生选修记录。⑩ 将除。StudentCourseYYXXXX
数据库的StudentBAK2YYXXXX 表中的所有行删
四.实验总结
实验一要注意创建数据库和数据表时应认真,如果出现错误,应相应地修改结构或删除。输入SQL 语句时应注意,语句中均使用西文操作符号;实验二应注意注意group和having以及where的搭配使用的情况;实验三注意注意输入SQL 语句时均应使用西文操作符号,子句的使用,注意语句的层次嵌套关系和括号的配对使用问题;实验四注意输入SQL 语句时均应使用西文操作符号,对于INSERT 语句,要求理解默认值约束、空值约束在插入时所起的作用。注意插入,修改,新建表,删除语句的写法,并且掌握把原表中的数据转存到新表中的语句写法。
第五篇:数据库实验报告
10包三 李雅 100910306
实验报告
一、实验题目:
数据库基本操作实验
二、实验目的:
掌握数据库的建立、表的设计基本方法,通过实际操作熟练掌握数据库的基本操作——数据的输入与导入,表的设计。
三、实验内容:
建立课程管理数据库,要求:
1.输入老师、开设课程、选课表、学生基本数据等,并输入一些学生不同课程的考试成绩。
2.建立查询表,分别是成绩查询、学分查询、不及格学生查询。
3.建立窗体,分别显示不及格学生的姓名、课程名称、成绩和班级ID。在成绩查询中显示学生姓名及各科成绩。在教师基本信息中显示编号、职称、工资、院系、等。同时建立开设课程表和学生基本信息的窗体查询。提供用户一个简单的应用程序界面,方便用户操作使用。
4.制作报表。包括教师的授课报表,课程名称及课程类别。学生的总成绩报表,包括课程名称、成绩和学分。
注:课程及考试成绩可以任意输入。选课按照班级确定。
四、实验过程:
1、数据库表设计
在表格内填入教师基本信息、开始课程、课程基本信息、选课表、学生基本信息。
教师基本信息:
开设课程:
/ 7
10包三 李雅 100910306
课程基本信息:
选课表:
/ 7
10包三 李雅 100910306
学生基本信息:
2、查询表: 成绩查询:
/ 7
10包三 李雅 100910306
学分查询:
不及格学生查询:
/ 7
10包三 李雅 100910306
3、窗体设计: 不及格学生信息查询:
成绩查询:
教师基本信息查询:
开设课程信息查询:
/ 7
10包三 李雅 100910306
学生基本信息查询:
4、报表: 教师的授课报表:
/ 7
10包三 李雅 100910306
学生的总成绩:
/ 7