当前位置:首页 >> 信息与通信 >>

数据库系统原理及应用实验报告


《数据库系统原理及应用》 实验报告

院系:计算机学院 班级:计科1102班 姓名:杨康 学号:04111043 序号:7号

实验二

定义表和数据库完整性

1. 使用T-SQL语句在数据库Market中创建客户基本信息表

customers,货品信息表goods,订单信息表orders。
create table customers ( customerid int identity(1,1) primary key, cname varchar(8) not null, address varchar(50), city varchar(10), tel varchar(20) unique, company varchar(50), birthday datetime, type tinyint default 1 ); create table goods ( goodsid int constraint c1 primary key, goodsname varchar(20) not null, price money, description varchar(200), storage int, provider varchar(50), status tinyint default (0) ); create table orders ( orderid int identity(1,1) constraint c2 primary key, goodsid int not null references goods(goodsid) on delete cascade, customerid int not null foreign key(customerid) references customers(customerid) on delete no action, quantity int not null constraint c3 check(quantity>0), ordersum money not null, orderdate datetime default (getdate()) );

创建表:

实验三 表数据的插入、修改和删除
1.向表中输入数据,结果如下图所示:
customers表:

goods表:

orders表:

2.在表中完成删除、修改数据操作
删除数据:
delete from orders where orderid='2';

结果如图:

修改数据:
update orders set quantity=100 where goodsid in (select goodsid from goods where goodsid='3');

结果如图:

实验四 数据库的简单查询和连接查询
1.查找所有西安客户的信息. 语句:
select * from customers where city='西安';

结果:

2.查找所有商品的名称、库存量、价格以及折价25%后的价格,并使 用别名“Dicount”标识折扣价,结果按价格由低到高排序. 语句:

select goodsname ,storage,price,0.75*price Discount from goods order by price asc;

结果:

3.查找2013年5月9日至2013年5月20日期间,订货金额大于80的所有 订单的客户姓名,商品名称、单价、订货数量和订货金额。 语句:
select cname,goodsname,price,quantity,ordersum from customers,goods,orders where customers.customerid=orders.customerid and goods.goodsid=orders.goodsid and orderdate>'2013-5-9' and orderdate<'2013-5-20' and ordersum>80;

结果:

实验五 数据库的复杂查询
1.查找订单编号、 商品编号和客户编号, 要求按日期对订单进行分组, 并只显示订单数量超过50的订单信息。 语句:
select * from orders where quantity>=50 order by orderdate;

结果:

2.查找所有西安客户的订单信息,要求用不相关子查询完成。 语句:
select * from orders where customerid in (select customerid from customers where city='西安');

结果:

3.查找所有杭州客户的相关信息以及他们的订单情况。 语句:
select orders.customerid,cname,city,address,company,birthday,orderdate,o rdersum,quantity from customers,orders where city='杭州' and customers.customerid=orders.customerid;

结果:

实验六 索引和视图
1.请为成都客户建立一个订单情况的视图, 包括订单编号、 商品名称、

订货数量、客户编号、客户名称。 语句:
create view c_customer as

select orderid,goodsname,quantity,orders.customerid,cname from orders,goods,customers where city='成都' and orders.customerid=customers.customerid and orders.goodsid=goods.goodsid with check option;

结果:

2.针对1中定义的视图,完成查询,查找客户周俨的所有订单信息。 语句:
select * from c_customers where cname='周俨';

结果: 无信息,已被删除。

实验七 存储过程
1.编写存储过程sp_beijing,查看北京客户的信息 语句:
create procedure sp_beijing as select * from customers where city='北京'; execute sp_beijing;

结果:

2.编写存储过程goods,查看指定商品的信息,商品编号作为输入参 数。

语句:
create procedure goods @goodsid int as select * from goods where goodsid=@goodsid; execute goods @goodsid=1;

结果:

3.创建一个存储过程 g_orders.查看任何指定货品的订单情况, 包括订单号、订货客户的姓名以及订货数量等 语法:
create procedure g_orders @goodsid int as select orders.orderid,cname,quantity from orders,customers where goodsid=@goodsid and orders.customerid=customers.customerid; execute g_orders @goodsid=2;

结果:

实验八 触发器
1.在customers表上建立删除触发器, 实现customers表和orders表的 级联删除。
create trigger cusdelete on customers after delete as delete from orders where customerid in (select deleted.customerid from deleted);

2.在 orders 表上建立触发器,当向表中添加一条订货记录时,若订单 中的商品状态为整理(status=1),则不能插入该条记录。
create trigger orinsert on orders after insert as if(select status from goods,inserted where goods.goodsid=inserted.goodsid)=1 begin print '商品正在整理,不能插入该记录!' rollback transaction end;

3.在orders表上建立触发器,不允许订单日期进行修改
create trigger orupdate on orders after update as if update(orderdate) begin print '订货日期不能修改!' rollback transaction end;

实验总结
本次实验,让我有很大的进步,之前对这个不是很了解,在 做完实验之后,发现对数据库有了更深入的理解,特别是在执行 调试后才会知道其细节和原理。 不过做实验室才发现出现了好多 问题,语法不严谨不简洁,而且自己也不太细心,导致许多小问 题出现。不过要感谢老师的耐心指导,在实验过程中,让我能一 步一步克服这些问题, 请教老师或同学最终完满顺利的完成了本 次试验。

实验源代码
create database Market; create table customers ( customerid int identity(1,1) primary key, cname varchar(8) not null, address varchar(50), city varchar(10), tel varchar(20) unique, company varchar(50), birthday datetime, type tinyint default 1 ); create table goods ( goodsid int constraint c1 primary key, goodsname varchar(20) not null, price money, description varchar(200), storage int, provider varchar(50), status tinyint default (0) ); create table orders ( orderid int identity(1,1) constraint c2 primary key, goodsid int not null references goods(goodsid) on delete cascade, customerid int not null foreign key(customerid) references customers(customerid) on delete no action, quantity int not null constraint c3 check(quantity>0), ordersum money not null, orderdate datetime default (getdate()) ); insert into customers(cname,address,city,tel,company,birthday,type) values('杨康','东长安街','西安','18725264783','航天所 ','1991-12-12',1); insert into customers(cname,address,city,tel,company,birthday,type) values('周俨','高新立交','成都','18300349756','大庆油田 ','1992-3-11',1); insert into customers(cname,address,city,tel,company,birthday,type)

values('李云涯','西单','北京','18777342565','哇哈哈总公司 ','1993-5-19',1); insert into customers(cname,address,city,tel,company,birthday,type) values('冯佳欣','西湖东路','杭州','18717524670','中国银行 ','1993-8-28',1); insert into goods values(1,'集成电路板',70,'电子产品',300,'联想',1); insert into goods values(2,'风扇',45,'家用电器',600,'格力',1); insert into goods values(3,'蚊帐',20,'生活用品',500,'温家',1); insert into goods values(4,'月饼',10,'食品',400,'米琪',1); insert into orders(goodsid,customerid,quantity,ordersum,orderdate) values(2,4,20,900,'2013-5-10'); insert into orders(goodsid,customerid,quantity,ordersum,orderdate) values(1,3,30,2100,'2013-5-15'); insert into orders(goodsid,customerid,quantity,ordersum,orderdate) values(4,2,100,1000,'2013-5-19'); insert into orders(goodsid,customerid,quantity,ordersum,orderdate) values(3,1,10,200,'2013-5-20'); delete from orders where orderid='2'; update orders set quantity=100 where goodsid in (select goodsid from goods where goodsid='3');

select * from customers where city='西安'; select goodsname,storage,price,0.75*price Discount from goods order by Price asc; select cname,goodsname,price,quantity,ordersum

from customers,goods,orders where customers.customerid=orders.customerid and goods.goodsid=orders.goodsid and orderdate>'2013-5-9' and orderdate<'2013-5-20' and ordersum>80; select * from orders where quantity>=50 order by orderdate; select orders.customerid,cname,city,address,company,birthday,orderdate,o rdersum,quantity from customers,orders where city='杭州' and customers.customerid=orders.customerid

create view c_customer as select orderid,goodsname,quantity,orders.customerid,cname from orders,goods,customers where city='成都' and orders.customerid=customers.customerid and orders.goodsid=goods.goodsid with check option; select * from c_customers where cname='周俨';

create procedure sp_beijing as select * from customers where city='北京'; execute sp_beijing;

create procedure goods @goodsid int as select * from goods where goodsid=@goodsid;

execute goods @goodsid=1;

create procedure g_orders; @goodsid int as select orders.orderid,cname,quantity from orders,customers where goodsid=@goodsid and orders.customerid=customers.customerid; execute g_orders @goodsid=2;

create trigger cusdelete on customers after delete as delete from orders where customerid in (select deleted.customerid from deleted);

create trigger orinsert on orders after insert as if(select status from goods,inserted where goods.goodsid=inserted.goodsid)=1 begin print '商品正在整理,不能插入该记录!' rollback transaction end; create trigger orupdate on orders after update as if update(orderdate) begin print '订货日期不能修改!' rollback transaction end;


相关文章:
数据库系统原理实验报告五
数据库系统原理实验报告五_计算机软件及应用_IT/计算机_专业资料。贵州大学实验报告 学院: 姓名 实验时间 实验课程名称 实验项目名称 实验目的实验仪器 专业: 班级:...
数据库系统原理-实验报告-数据库的基本查询
数据库系统原理-实验报告-数据库的基本查询_计算机软件及应用_IT/计算机_专业资料。成绩评定 教师签名 计算机学院 数据库系统原理实验报告 课程名称: 数据库系统原理...
数据库系统原理实验报告手册(新)
数据库系统原理实验报告手册(新)_计算机软件及应用_IT/计算机_专业资料。学生实验...二、熟悉数据库的组成 1、系统数据库 (1)master 数据库 master 数据库存储 ...
数据库系统原理实验报告-基本操作
数据库系统原理实验报告-基本操作_计算机软件及应用_IT/计算机_专业资料。SQLServer数据库基本操作 成绩评定 教师签名 计算机学院 数据库系统原理实验报告 课程名称: ...
数据库系统原理实验报告-数据定义
数据库系统原理实验报告-数据定义_计算机软件及应用_IT/计算机_专业资料。数据库数据定义实验报告 成绩评定 教师签名 计算机学院 数据库系统原理实验报告 课程名称: ...
数据库系统原理实验报告册
数据库系统原理实验报告册_计算机软件及应用_IT/计算机_专业资料。实验四 T-SQL 程序设计一、实验学时 2 学时 二、实验目的(1)掌握查询的概念和方法。 (2)掌...
《数据库原理及应用》实验报告_图文
数据库原理及应用实验报告 - 本科生实验报告 实验课程 学院名称 专业名称 学生姓名 学生学号 指导教师 实验地点 实验成绩 数据库原理及应用 成都理工大学 信息...
数据库系统原理实验报告三
数据库系统原理实验报告三_计算机软件及应用_IT/计算机_专业资料。贵州大学实验报告 学院: 姓名 实验时间 实验课程名称 实验项目名称 实验目的实验 专业: 班级: ...
河南工程数据库系统原理实验报告册答案
河南工程数据库系统原理实验报告册答案_计算机软件及应用_IT/计算机_专业资料。河南工程数据库系统原理实验报告册答案河南工程学院 数据库系统原理 实验报告册 学课专...
数据库系统原理-实验报告4-计算机科学与技术
数据库系统原理-实验报告4-计算机科学与技术 - 课程实验报告 课程名称 数据库系统原理 实验名称 数据更新操作 专业班级 学姓号名 2017 年 2 月 实验报告 4 ...
更多相关标签: