数据库上机实验四答案

合集下载

数据库原理及应用书后上机实验答案

数据库原理及应用书后上机实验答案

数据库原理及应用——崔巍_书后上机实验程序源代码:--1CREATE DATABASE test1ON(NAME=test1_dat,FILENAME='f:\DB\data\test1dat.mdf',SIZE= 10,MAXSIZE= 50,FILEGROWTH= 5 )LOG ON(NAME=order_log,FILENAME='f:\DB\data\test1log.ldf',SIZE= 5MB,MAXSIZE= 25MB,FILEGROWTH= 5MB)--2create database test2onprimary(name=test2_dat1,filename='f:\DB\data\test2dat1.mdf'),(name=test2_dat2,filename='f:\DB\data\test2dat2.ndf'),(name=test2_dat3,filename='f:\DB\data\test2dat3.ndf')log on(name=test2_log1,filename='f:\DB\data\test2log1.ldf'),(name=test2_log2,filename='f:\DB\data\test2log2.ldf')--3create database test3onprimary(name=test3_dat1,filename='f:\DB\data\test3dat1.mdf'),(name=test3_dat2,filename='f:\DB\data\test3dat2.mdf'),filegroupg2(name=test3_dat3,filename='d:\DB\data\test3dat3.ndf'),(name=test3_dat4,filename='d:\DB\data\test3dat4.ndf'),filegroupg3(name=test3_dat5,filename='e:\DB\data\test3dat5.ndf'),(name=test3_dat6,filename='e:\DB\data\test3dat6.ndf')log on(name=test3_log,filename='f:\DB\data\test3log.ldf')--4alter database test1add file(name=test1new_dat,filename='f:\DB\data\test1newdat.ndf',size=5MB)--5alter database test1modify file(name=test1_dat,size=15MB)--6dropdatabasetest3四、实验数据、结果分析:若没有指定size,则默认为1MB,没有指定Maxsize,文件可以增长到磁盘满为止,没有指定Filegrowth,则默认为10%。

数据库上机实验

数据库上机实验

实验一数据表的建立一、实验目的:熟悉Access 2000的操作环境,并了解关系数据库中关系在Access 2000中的表示——数据表,同时掌握数据表建立的不同方法。

二、实验要求:1.掌握Access 2000的启动和退出;2.了解Access 2000的特性;3.熟悉Access 2000的操作界面、窗口组成各元素;4.掌握Access 2000中建立、保存数据库的方法;5.掌握Access 2000中打开数据库的方法;6.掌握在Access 2000数据库中建立数据表的方法;7.掌握数据表中字段属性的设置和修改;8.掌握数据表中数据的输入、修改、添加、删除;9.掌握在Access 2000数据表的两种视图。

三、实验内容:1、启动Access 2000;2、打开已有的数据库文件(如“罗斯文示例数据库”);3、熟悉Access的操作环境,了解其窗口组成各元素;4、通过帮助了解Access 2000的功能和新特性;5、在Access 2000中新建一个SPJ数据库,并在其中用三种不同的方法(数据表视图、表向导、设计视图)新建S、P、J、SPJ四个数据表,各表结构及内容见下页;6、根据表中数据设置各字段的类型及大小,并设置S、P、J表的主键分别为SNO、PNO、JNO,SPJ表的主键为SNO+PNO+JNO,这些字段不能取空值、而且各记录的值互不相同;7、为S表的CITY字段设置有效性规则,限定其输入的城市只能为“天津”、“北京”、“上海”之一;为SPJ表的QTY字段设置有效性规则,限定其输入的数量在100~900之间;8、按表格所示内容输入各表数据;9、练习表中记录的浏览、修改、插入、删除;10、退出Access。

四、实验步骤:1、启动Access 2000在Windows中单击“开始/程序/Microsoft Access”命令即可启动Access,如图1-1所示。

启动Access后,即可看到一个初始对话框出现,如图1-2所示。

数据库实验四答案

数据库实验四答案

数据库实验四答案--实验四----1.定义“IS”系学生基本情况视图V_IS 并查询结果;create view V_ISasselect *from Swhere Sdept='IS'with check option;select *from V_IS;--2.将S,C,SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G并查询结果;create view V_S_C_Gasselect S.Sno,Sname,o,Cnamefrom S,C,SCwhere S.Sno=SC.Sno and o=o;select *from V_S_C_G;--3.将各系学生人数,平均年龄定义为视图V_NUM_AVG并查询结果; create view V_NUM_AVGasselect count(Sno) DeptNum ,avg(Sage) DeptAvgAge,Sdeptfrom Sgroup by Sdept;select *from V_NUM_AVG;--4.定义一个反映学生出生年份的视图V_YEAR并查询结果;create view V_YEARasselect Sno,2012-Sage birthdayfrom S;select *from V_YEAR;--5.将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G并查询结果;create view V_AVG_S_Gasselect SC.Sno,count(o) CountCno,avg(Grade) AvgGradefrom S,C,SCwhere S.Sno=SC.Sno and o=ogroup by SC.Sno;select *from V_AVG_S_G;--6.将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G并查询结果; create view V_AVG_C_Gasselect count(SC.Sno) Cnum,avg(Grade) AvgGradefrom S,C,SCwhere S.Sno=SC.Sno and o=ogroup by o;select *from V_AVG_C_G;--7.查询平均成绩为90分以上的学生学号、姓名和成绩;select SC.Sno,Sname,avg(Grade) AvgGradefrom S,SCwhere S.Sno=SC.Snogroup by SC.Sno,Snamehaving avg(Grade) >90;--8.查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩;create view V_AVGasselect o,avg(Grade) AvgGradefrom C,SCwhere o=ogroup by o;selectdistinct S.Sno,Sname,o,Gradefrom S,SC,C,V_AVGwhere S.Sno=SC.Sno and o=V_o and Grade >V_AVG.AvgGrade ;--9.按系统计各系平均成绩在80分以上的人数,结果按降序排列;select Sdept,count(AvgGrade) Numfrom S,V_AVG_S_Gwhere S.Sno=V_AVG_S_G.Sno and AvgGrade > 80group by Sdeptorder by Num desc;--10通过视图V_IS,分别将学号为“S1”和“S4”的学生姓名更改为“S1_MMM”,”S4_MMM”并查询结果;insert into S(Sno,Sname,Ssex,Sage,Sdept) values('200215121','三毛','男',21,'IS');insert into S(Sno,Sname,Ssex,Sage,Sdept) values('200215124','紫薇','女',19,'IS');update V_IS set Sno='S1_MMM' where Sno='200215121'; update V_IS set Sno='S4_MMM' where Sno='200215124'; select *from V_IS;--11.通过视图V_IS,新增加一个学生记录('S12','YAN XI',19,'IS'),并查询结果;insert into V_IS(Sno,Sname,Sage,Sdept) values('S12','YAN XI',19,'IS');select *from V_ISwhere Sno='S12';--11.通过视图V_IS,新增加一个学生记录('S13','YAN XI',19,'MA'),并查询结果;insert into V_IS(Sno,Sname,Sage,Sdept) values('S13','YAN XI',19,'MA');-- Tip:由于该学生是MA系的,当有check约束时将会产生更新错误。

数据库原理及应用最全上机实验及实验答案

数据库原理及应用最全上机实验及实验答案

实验一 SQL Server 2005 的安装和环境介绍一.实验目的与要求:1.掌握SQL Server 2005 服务器的安装方法2.了解SQL Server 2005 的环境3.了解数据库及其对象二.实验准备1.了解SQL Server 2005的版本2.了解SQL Server 2005各版本对硬件和软件的需求三.实验要求1.写出SQL SERVER 2005的功能与特点, 使用方法, 应用状况的报告2.完成SQL SERVER 2005的安装、启动、登录。

四.实验内容1.安装SQL Server 2005实验一 SQL Server 2005 的安装和环境介绍●实验指导——安装SQL Server 20051.根据安装机器软硬件的要求,选择一个合适的版本,以下以开发版为例2.将 SQL Server 2005 DVD 插入 DVD 驱动器。

如果DVD驱动器的自动运行功能无法启动安装程序无法启动安装程序,请导航到 DVD 的根目录然后启动splash.hta。

3.在自动运行的对话框中,单击“运行 SQL Server 安装向导”。

4.在“最终用户许可协议”页上,阅读许可协议,再选中相应的复选框以接受许可条款和条件。

接受许可协议后即可激活“下一步”按钮。

若要继续,请单击“下一步”若要结束安装程序,请单击“取消”。

如下图:5.在“SQL Server 组件更新”页上,安装程序将安装 SQL Server 2005 的必需软件。

有关组件要求的详细信息,请单击该页底部的“帮助”按钮。

若要开始执行组件更新,请单击“安装”。

更新完成之后若要继续,请单击“完成”。

6.在 SQL Server 安装向导的“欢迎”页上,单击“下一步”以继续安装。

7.在“系统配置检查 (SCC)”页上,将扫描安装计算机,以检查是否存在可能妨碍安装程序的条件。

8.在“注册信息”页上的“姓名”和“公司”文本框中,输入相应的信息。

东华大学数据库系统原理上机实验答案

东华大学数据库系统原理上机实验答案

《数据库系统原理》上机实验答案实验三SQL语言的DDL3.CREATE TABLE aa(Bb1 VARCHAR(30),Bb2 INT,Bb3 DECIMAL(6,2))4.ALTER TABLE aa ADD Bb4 varchar(20)5. DROP TABLE AA6.CREATE VIEW ReaderView(借阅者)AS SELECT DISTINCT 读者编号FROM 借阅7.Drop View ReaderView。

8. CREATE INDEX INDEX1 ON 读者(姓名ASC,单位ASC)CREATE INDEX INDEX3 ON 借阅(借阅日期DESC)9.DROP INDEX 读者.INDEX1CREATE INDEX INDEX1 ON 读者(姓名ASC)实验四SQL语言的DML初步1.CREATE DEFAULT ZEROVALUE AS 0sp_bindefault ZEROVALUE, '图书.借出否'CREATE DEFAULT CURTIME AS getdate()sp_bindefault CURTIME, '借阅.借阅日期'2.CREATE RULE gender_ruleAS @value in ('男','女')EXEC sp_bindrule 'gender_rule', '读者.性别'CREATE RULE lenddate_ruleAS @value > '2004-1-1'EXEC sp_bindrule 'lenddate_rule', '借阅.归还日期'3.用INSERT语句对“图书”表插入6条记录INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)VALUES('0001','计算机类','清华出版社','严蔚敏','数据结构', 20.11) INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)VALUES('0002','计算机类','清华出版社','苗雪兰','数据库技术及应用',29.00)INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)VALUES('0003','计算机类','清华出版社','李建中','软件工程',48.00) INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)VALUES('0004','计算机类','电子工业出版社','汤惟','WEB技术',32.00)INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)VALUES('0005','自动化类','机械工业出版社','胡寿松','自动控制原理',52.00)INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)VALUES('0006','自动化类','机械工业出版社','郑大钟','线性控制理论',32.00)用INSERT语句对“读者”表插入4条记录INSERT INTO 读者(读者编号,姓名,单位,性别,电话)VALUES('10001','张三','东华大学','男','67792312')INSERT INTO 读者(读者编号,姓名,单位,性别,电话)VALUES('10002','李四','东华大学','女','67792312')INSERT INTO 读者(读者编号,姓名,单位,性别,电话)VALUES('10003','王五','东华大学','男','67792312')INSERT INTO 读者(读者编号,姓名,单位,性别,电话)VALUES('10004','李明','东华大学','女','67792312')用INSERT语句对“借阅”表插入7条记录INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)VALUES('0001','10001','2006-04-19 09:58:03','2006-05-19 8:38:23')INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)VALUES('0006','10002','2006-07-01 15:28:12','2006-07-18 9:14:02')INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)VALUES('0002','10002','2006-07-01 15:28:30','2006-07-17 19:10:32')INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)VALUES('0002','10003','2006-07-03 15:28:30','2006-08-09 15:28:30')INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)VALUES('0004','10002','2007-05-01 11:28:24','2007-08-01 8:09:04')INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)VALUES('0005','10002','2007-11-01 10:43:12','2007-12-01 14:09:56')INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)VALUES('0003','10004','2007-12-01 16:06:02','2007-12-29 13:17:09') 4.UPDATE 借阅SET 借阅日期='2006-08-03 15:28:30'WHERE 读者编号='10003' AND借阅日期 BETWEEN '2006-07-03' AND '2006-07-04' AND 书号='0002' 5.DELETE FROM 借阅WHERE 借阅日期<'2006-06-01'1.SELECT 书号,书名as 名称,定价as 价格FROM 图书WHERE 类别='自动化类'2.方法1:SELECT * FROM 图书WHERE 类别='计算机类'UNIONSELECT * FROM 图书WHERE 出版社='电子工业出版社'方法2:SELECT * FROM 图书WHERE 类别='计算机类' OR 出版社='电子工业出版社' 3.SELECT * INTO 计算机图书表FROM 图书WHERE 类别='计算机类'4.SELECT DISTINCT 读者.* FROM 读者,借阅WHERE 读者.读者编号=借阅.读者编号5.SELECT 读者.读者编号,姓名,单位,图书.书号,书名,借阅日期FROM 读者,借阅,图书WHERE 读者.读者编号=借阅.读者编号AND 图书.书号=借阅.书号6.SELECT 图书.书号,书名,类别,借阅日期FROM 读者,借阅,图书WHERE 读者.读者编号=借阅.读者编号AND 图书.书号=借阅.书号AND 姓名='张三'ORDER BY 借阅日期DESC7.SELECT 读者.读者编号,姓名,书名,DATEDIFF(day,借阅日期,归还日期) as 借阅时间FROM 读者,借阅,图书WHERE 读者.读者编号=借阅.读者编号 AND 图书.书号=借阅.书号AND DATEDIFF(day,借阅日期,归还日期)>20order by 借阅时间8.SELECT * FROM 读者WHERE NOT EXISTS(SELECT * FROM 图书WHERE 类别='自动化类' and NOT EXISTS(SELECT * FROM 借阅WHERE 读者编号=读者.读者编号and 书号=图书.书号))1.SELECT 类别,COUNT(*) AS 数量, AVG(定价) AS 平均价格,SUM(定价) AS 总价FROM 图书GROUP BY 类别ORDER BY 类别2.SELECT YEAR(借阅日期) as 年份,书号,COUNT(*) AS 借阅次数FROM 借阅GROUP BY YEAR(借阅日期),书号ORDER BY 借阅次数DESC3.SELECT 读者.读者编号,COUNT(书号) AS 借阅次数FROM 读者LEFT JOIN(SELECT * FROM 借阅WHERE 借阅日期BETWEEN '2006-7-1' AND '2007-10-1') A ON 读者.读者编号=A.读者编号GROUP BY 读者.读者编号4.SELECT 读者编号,COUNT(*) AS 次数FROM 借阅,图书WHERE 借阅.书号=图书.书号AND 书名='数据库技术及应用'GROUP BY 读者编号ORDER BY 次数DESC5.方法1:SELECT MAX(次数) AS 最多,MIN(次数) AS 最少,A VG(次数*1.0) AS 平均FROM(SELECT 图书.书号,COUNT(*) AS 次数FROM 图书,借阅WHERE 图书.书号=借阅.书号AND 类别='计算机类'GROUP BY 图书.书号) A方法2:SELECT 图书.书号,COUNT(*)*1.0 AS 次数FROM 图书,借阅WHERE 图书.书号=借阅.书号AND 类别='计算机类'GROUP BY 图书.书号COMPUTE MAX(COUNT(*)*1.0),MIN(COUNT(*)*1.0),AVG(COUNT(*)*1.0) 6.SELECT 类别FROM 图书GROUP BY 类别HA VING MAX(定价)>=ALL(SELECT 2*AVG(定价) FROM 图书GROUP BY 类别) 7.SELECT 书号,书名,定价,出版社FROM 图书WHERE 类别='计算机类'ORDER BY 出版社DESCCOMPUTE COUNT(书号) BY 出版社COMPUTE COUNT(书号)实验七存储过程、触发器和数据库恢复1.(1)CREATE PROCEDURE 借阅情况@Readerno V ARCHAR(8)ASSELECT 读者.读者编号,姓名,图书.书号,书名,借阅日期, 借出否AS 归还否FROM 读者,借阅,图书WHERE 读者.读者编号=借阅.读者编号AND 图书.书号=借阅.书号AND 读者.读者编号=@ReadernoEXEC 借阅情况‘10004’(2)CREATE PROCEDURE 借出情况@Bookno V ARCHAR(10)ASSELECT 书名,姓名,借阅日期,归还日期FROM 读者,借阅,图书WHERE 读者.读者编号=借阅.读者编号AND 图书.书号=借阅.书号AND 图书.书号=@BooknoEXEC 借出情况'0004'2.CREATE TRIGGER lendbookinsert ON 借阅FOR INSERTASIF (SELECT 借出否FROM 图书WHERE 书号IN(SELECT 书号FROM INSERTED) )=1BEGINPRINT '该书已经借出'ROLLBACK TRANSACTIONENDELSEBEGINUPDATE 图书SET 借出否=1WHERE 书号IN (SELECT 书号FROM INSERTED)END[由4037()编辑部整理推出]。

同济大学数据库实验四答案

同济大学数据库实验四答案

1selectStudent.Snum,Student.Sname,um,ame, from Student inner join SC on Student.Snum=sc.snum inner join Sections on sc.secnum=Sections.Secnum inner join course on um=umwhere sc.score<602select distinct Student.Sname,YEAR(GETDATE())-YEAR(birthday)as年龄from Student inner join SC on Student.Snum=sc.snum inner join Sections on sc.secnum=Sections.Secnum inner join course on um=umwhere course.dept ='计算机系'3select distinct Student.Sname,Student.deptfrom Student inner join SC on Student.Snum=sc.snum inner join Sections on sc.secnum=Sections.Secnum inner join course on um=umwhere ame='数据库技术'4select snum,snamefrom studentwhere snum in(select snum from scgroup by snum having count(*)>=(select count(*)from course))5select snum,snamefrom studentwhere snum not in(select distinct snum from sc where sc.score<=80)6select snum,snamefrom studentwhere snum not in(select distinct snum from sc where sc.score<=80)and snum in(select snum from scgroup by snum having avg(score)>=90)7select Student.Snum,Student.Sname,sc.scorefrom Student inner join SC on Student.Snum=sc.snum inner join Sections on sc.secnum=Sections.Secnum inner join course on um=um where ame like'大学英语'order by sc.score desc8select um ,选课人数from(select cnum,COUNT(snum)as选课人数from sc join sectionson sc.secnum =sections.secnumgroup by all cnum)as a9(select student.sname,student.deptfrom Student inner join SC on Student.Snum=sc.snum inner join Sections on sc.secnum=Sections.Secnum inner join course on um=um and cname like'数据库技术')EXCEPT(select student.sname,student.deptfrom Student inner join SC on Student.Snum=sc.snum inner join Sections on sc.secnum=Sections.Secnum inner join course on um=um and cname like'高等数学')10select cnamefrom coursewhere textbook like'%高等教育出版社'11select um as课号,max(score)as最高成绩, min(score)as最低成绩,avg(score)as平均成绩from sc inner join sections onsc.secnum=sections.secnumgroup by um12select cnum,COUNT(snum)as选课人数,SUM(1-score/60) as不及格人数from sc join sectionson sc.secnum =sections.secnumgroup by all cnum。

数据库上机实验(有答案)

数据库上机实验(有答案)

数据库上机实验内容及要求(第二部分)1.建立工厂管理数据库工厂(包括厂名和厂长名)需要建立一个管理数据库存储以下信息:(1)一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和联系电话;(2)一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种;(3)一个车间生产多种产品,产品有产品号和价格;每种产品只能由一个车间生产;(4)一个车间制造多种零件,一种零件也可能为多个车间制造。

零件有零件号、重量和价格;(5)一种产品可由多种零件组成,一种零件也可以装配出多种产品;(6)产品和零件均存入仓库;(7)厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。

根据以上需求分析结果,按照下述要求,设计并建立工厂管理数据库。

◆分析实体及联系,设计E-R图。

◆将E-R图转换成关系模式,并规范化到3NF。

◆在Microsoft SQL Server2000中基于“企业管理器”建立数据库及相关对象(主码,外码,索引,约束等)。

◆测试数据入库2.基于“查询分析器”,完成并保存下述题目的SQL脚本(1)建立“工种”是“钳工”的所有职工详细信息的视图;create view View_工人_钳工asselect*from职工表where工种='钳工'with check option(2)建立“车间号”是“CJ01”的钳工详细信息的视图;create view View_钳工_CJ01asselect*from View_工人_钳工where车间号='CJ01'(3)建立使用了“零件号”是“LJ0002”的所有产品详细信息的视图;create view View_产品_零件LJ0002asselect产品表.产品号,价格,车间号,仓库号from装配表,产品表where装配表.产品号=产品表.产品号and零件号='LJ0002'(4)对零件表按照“零件号”建立唯一索引;create unique index Index_U_零件号on零件表(零件号)(5)对职工表按照“性别”建立聚簇索引;create clustered index Index_C_性别on职工表(性别)(6)查询使用了“零件号”是“LJ0002”的产品的生产车间号;select车间号from装配表,产品表where装配表.产品号=产品表.产品号and零件号='LJ0002'(7)查询“职工号”是“ZG0001”的职工所在车间的“车间主任姓名”和“联系电话”;select车间主任姓名,联系电话from职工表,车间表where职工表.车间号=车间表.车间号and职工号='ZG0001'(8)查询使用了“零件号”是“LJ0002”的所有产品的生产车间的“车间主任姓名”和“联系电话”;(连接查询、嵌套查询实现)select车间主任姓名,联系电话from产品表,装配表,车间表where产品表.产品号=装配表.产品号and产品表.车间号=车间表.车间号and装配表.零件号='LJ0002'select车间主任姓名,联系电话from车间表where车间号in(select车间号from产品表where产品号in(select产品号from装配表where零件号='LJ0002'))(9)查询使用了“零件号”是“LJ0002”的所有产品的“产品号”和“零件数量”,且查询结果按照“零件数量”降序排列;select产品号,零件数量from装配表where零件号='LJ0002'order by零件数量desc(10)查询使用了“零件号”是“LJ0002”的产品数;select count(*)as产品数from装配表where装配表.零件号='LJ0002'(11)查询“LJ0002”号零件装配产品的使用总量;select sum(零件数量)as使用总数from装配表where零件号='LJ0002'(12)查询使用了3种以上零件的产品号;select产品号from装配表group by产品号having count(*)>=3【注意】:下机时保存数据库文件(.mdf和.ldf)及SQL脚本文件到U盘。

(完整版)数据库张上机实验点评及参考答案

(完整版)数据库张上机实验点评及参考答案

上机实验三——基本表的建立和修改三、实习内容:1.启动MSSQL Server服务,打开Enterprise Manager和Query Analyzer。

2.在Query Analyzer中用CREATE TABLE命令在实验二创建的GradeManager数据库中定义基本表:学生表(Student)、课程表(Course),利用EnterpriseManager的图形化功能建立班级表(Class)以及成绩表(Grade)。

create table Student( Sno char(7) primary key ,Sname varchar(20) not null ,Ssex char(2) not null,Sage Smallint ,Clno char(5)not null);create table Class( Clno char(5) primary key,Speciality varchar(20) not null,Inyear char(4) not null,Number integer ,Monitor char(7) );create table Course(Cno char(1) primary key,Cname varchar(20) not null,Credit Smallint );create table Grade(Sno char(7) references student(sno),Cno char(1) references course(cno),Gmark numeric,Primary key(sno,cno));四、针对以上四个表,用SQL语言完成以下各项操作。

①给学生表增加一属性Nation(民族),数据类型为Varchar(20);②删除学生表中新增的属性Nation;③向成绩表中插入记录(”2001110”,”3”,80);④修改学号为”2001110”的学生的成绩为70分;⑤删除学号为”2001110”的学生的成绩记录;⑥为学生表创建一个名为IX_Class的索引。

数据库系统及应用 实验表4和数据 答案

数据库系统及应用 实验表4和数据 答案
--select * from 产品 where 单价>1000 and 产品名称='显示器'
/*select 客户名称,联系人,电话 from 客户 where 客户号 in
(select 客户号 from 订购单 where 订单号 in
(select 订单号 from 订单名细 where 产品号 in
insert into 客户 values('C07',' 安徽医科大学','丁磊','梅山路','230031','5113422')
insert into 客户 values('C08','中国科大','李永','金寨路','230022','3665872')
insert into 客户 values('C10','新华学院','朱军','null','230035','null')
/*create table 客户(
客户号 char(8) primary key check(客户号 like '[a-z]%'),
客户名称 varchar(40) NOT NULL,
联系人 char(8),
地址 varchar(40),
订购日期 datetime default getdate() )
create table 订单名细(
订单号 char(8) foreign key references 订购单,

数据库实验上机答案整理-中国石油大学-龚安

数据库实验上机答案整理-中国石油大学-龚安

数据库实验上机答案整理-中国石油大学-龚安实验四SQL练习2一、实验目的1.掌握索引的建立、删除及使用;2.掌握单表查询、连接查询、嵌套查询和集合查询;3.掌握插入数据、修改数据和删除数据语句的非常用形式。

二、实验学时2学时三、实验内容1.利用Query Analyzer完成以下操作:⑴在预算日期、结算日期和入账日期上分别建立索引,并在查询操作中体会索引的作用。

⑵在完成第2题的查询操作后,删除预算日期、结算日期和入账日期上的索引。

2.利用Query Analyzer完成以下操作:⑴采油一矿二队2016-5-1到2016-5-28有哪些项目完成了预算,列出相应明细。

⑵采油一矿二队2016-5-1到2016-5-28有哪些项目完成了结算,列出相应明细。

⑶采油一矿二队2016-5-1到2016-5-28有哪些项目完成了结算,列出相应的材料费消耗明细。

⑷采油一矿二队2016-5-1到2016-5-28有哪些项目完成了入账,列出相应明细。

⑸列出采油一矿二队2016-5-1到2016-5-28总的预算金额。

⑹列出采油一矿二队2016-5-1到2016-5-28总的结算金额。

⑺列出采油一矿二队2016-5-1到2016-5-28总的入账金额。

⑻列出采油一矿2016-5-1到2016-5-28总的入账金额。

⑼有哪些人员参与了入账操作。

⑽列出2016-5-1到2016-5-28进行了结算但未入账的项目。

⑾列出采油一矿二队的所有项目,按入账金额从高到低排列。

⑿列出有哪些施工单位实施了项目,并计算各单位所有项目结算金额总和。

⒀找出消耗了材料三且消耗超过了2000元的项目,列出相应消耗明细(利用子查询)。

⒁作业公司二队参与了哪些项目。

⒂作业公司一队和二队参与了哪些项目(利用union)。

⒃采油一矿的油井是哪些作业队参与施工的。

3.利用Query Analyzer完成以下操作:⑴建立数据表(包含3个属性列:★施工单位、★年月、◆结算金额)保存各个施工单位每月的结算金额总和。

第四次上机实验参考答案.doc

第四次上机实验参考答案.doc

第四次上机实验参考答案•第1题:使用Microsoft Access建立一个数据库,命名为“用户”,该数据库包含一张“用户信息”表,结构如表4-1所示:表4-1用户信息表字段名称数据类型字段大小主键用户号数字整型YES用户名文本10所在地文本50街区文本50然后在用户信息表中输入如图4-1所示的5条记录。

图4-1运行界面实验步骤:1、建立数据库使用Access建立“用户”数据库,并创建“用户信息”表,然后在用户信息表中输入如图4-1所示的5条记录。

【创建过程略】。

2、设计用户界面建立一个Windows应用程序,在窗体上添加数据源控件BindingSource 1,实现和“用户”数据库的连接(连接步骤参见教材P240-243例10-3,注意将连接对象设置为“用户”数据库和“用户信息”表);添加DataGridViewl控件,将其与数据源BindingSourcel连接(连接步骤参见教材P243-244例10-4),实现对数据库信息的浏览。

程序界面如图4-2所示。

3、编程给退出按钮编程,可退出应用程序的运行。

【略】V bindingSourcel 通用户DataSet 匚丫用户信息BindingSource '图)用户信息TableAdapter图4-2程序界面设计•第2题:完成教材P245中的“4.编程题”,使用创建一个用户登录界面程序。

要求首先用Access 建立一个用户数据库users,并建立表:userinfo(username,password,address,email), 并输入记录(admin,123,信息系,123@)。

然后设计一个用户登录界面,当用户输入相关信息单击“登录”按钮时,从userinfo表中查找是否有该用户记录,如果有就显示“登录成功”;否则显示“用户名或密码错误”。

用户登录界面如下图所示。

【编程提示】:在Forml_Load事件中编写连接数据库、访问数据库表的代码;在“登录”按钮的单击事件中核对用户登录信息,并在窗体上用标签显示登录成功或失败的信息;在“重置”按钮的单击事件中清空本文框和标签中的显示信息,同时允许重新输入用户名和密码;在“退出”按钮的单击事件中关闭数据库连接,并退出应用程序。

数据库实验四作业及答案

数据库实验四作业及答案

数据库实验四作业及答案实验4数据查询一、实验目的1.掌握使用Tranact-SQL的SELECT语句进行基本查询的方法。

2.掌握使用SELECT语句进行条件查询的方法。

3.掌握嵌套查询的方法。

4.掌握多表查询的方法。

5.掌握SELECT语句的GROUPBY和ORDERBY子句的作业和使用方法。

6.掌握联合查询的操作方法。

7.掌握数据更新语句INSERTINTO、UPDATE、DELETE的使用方法。

二、实验准备1.了解SELECT语句的基本语法格式和执行方法。

2.了解嵌套查询的表示方法。

3.了解UNION运算符的用法。

4.了解SELECT语句的GROUPBY和ORDERBY子句的作用。

5.了解IN、JOIN等子查询的格式。

6.了解INSERTINTO、UPDATE、DELETE的格式与作用。

三、实验内容及步骤0.创建tudentdb数据库及其相应表,并录入数据。

启动查询分析器,运行下面链接的代码即可。

创建数据库代码1.在tudentdb数据库中,使用下列SQL语句将输出什么?(1)SELECTCOUNT(某)FROMgrade(2)SELECTSUBSTRING(姓名,1,2)FROMtudent_info(3)SELECTUPPER('kelly')(4)SELECTReplicate('kelly',3)(5)SELECTSQRT(分数)FROMgradeWHERE分数>=85(6)SELECT2,3,POWER(2,3)(7)SELECTYEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE())2.在tudentdb数据库中使用SELECT语句进行基本查询。

(1)在tudent_info表中,查询每个学生的学号、姓名、出生日期信息。

SELECT某FROMtudent_info(2)查询学号为0002的学生的姓名和家庭住址。

山东大学数据库实验四答案

山东大学数据库实验四答案

山东大学数据库实验四答案实验四1) 4 - 1 统计总成绩create table test4_01 as select * from pub.STUDENT_41alter table test4_01 add sum_score intupdate test4_01set sum_score=(select sum(score)from pub.STUDENT_COURSE,pub.COURSEwhere test4_01.sid=student_course.sid and student_course.cid=COURSE.cidgroup by sid)2) 4 - 2 统计平均成绩alter table test4_02 add avg_score float(int不行)update test4_02set avg_score=(select trim(to_char(avg(score),999999.9))from pub.STUDENT_COURSEwhere test4_02.sid=student_course.sidgroup by sid)3) 4 - 3 统计总学分alter table test4_03 add sum_credit intupdate test4_03set sum_credit=(select sum(credit)from pub.STUDENT_COURSE,pub.COURSEwhere test4_03.sid=student_course.sid and student_course.cid=COURSE.cid and score>=60group by sid)4) 4 - 4 设置院系编号update test4_04set dname= casewhen dname in (select dnamefrom pub.DEPARTMENT) then (select didfrom pub.DEPARTMENTwhere test4_04.DNAME=department.dname)else test4_04.DNAMEend5) 4 - 5 几项内容综合前三项参照前面题目第四项update test4_05set did= casewhen test4_05.dname in (select dnamefrom pub.DEPARTMENT) then (select didfrom pub.DEPARTMENTwhere test4_05.DNAME=department.dname)when test4_05.dname in (select dnamefrom pub.DEPARTMENT_41) then (select didfrom pub.DEPARTMENT_41where test4_05.DNAME=department_41.dname)else '00'end6) 4 - 6 剔除姓名中的空格create table test4_06 as select * from pub.STUDENT_42update test4_06set name= replace(name,' ')7) 4 - 7 规范性别update test4_07set sex= replace(sex,' ')update test4_07set sex= casewhen sex is NULL then NULLwhen length(sex)>1 then substr(sex,1,1)else sexend8) 4 - 8 规范班级update test4_08set class= casewhen class is NULL then NULLwhen length(class)>4 then substr(class,1,4)else classend9) 4 - 9 计算年龄update test4_09set age= casewhen age is NULL then (2012-extract(year from birthday)) else ageend10) 4 - 10 几项内容综合update test4_10setname= replace(name,' ')update test4_10set dname= replace(dname,' ')update test4_10set sez= replace(sex,' ')update test4_10set sex= casewhen sex is NULL then NULLwhen length(sex)>1 then substr(sex,1,1)else sexendupdate test4_10set class= casewhen class is NULL then NULLwhen length(class)>4 then substr(class,1,4)else classendupdate test4_10set age= casewhen age is NULL then (2012-extract(year from birthday)) else ageend。

数据库实验四(含答案)

数据库实验四(含答案)

实验四使用SQL语句创建和删除数据库、表一. 实验目的:1、了解SQL Server 2005数据库的逻辑结构和物理结构。

2、掌握使用SQL 语句创建和删除数据库。

3、学会使用T-SQL语句创建表。

二. 实验准备1.明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。

2.了解用SQL语句创建和删除数据库的基本语法。

3.是用查询分析器,完成用SQL语句创建和删除基本表。

三. 实验要求1、熟练使用查询分析器进行数据库的创建和删除操作。

2、用查询分析器,完成用SQL语句创建和删除基本表。

3、完成实验报告。

四. 实验内容一、数据库1.以下是创建数据库userdb1的SQL语句,create database userdb1on(name=userdb4_data,--数据文件的逻辑名称,注意不能与日志逻辑同名filename='g:\xygl\userdb4.mdf' ,--物理名称,注意路径必须存在size=5,--数据初始长度为5Mmaxsize=10,--最大长度为10Mfilegrowth=1)--数据文件每次增长1Mlog on( name=userdb4_log,filename='g:\xygl\userdb4.ldf ' ,size=2 ,maxsize=5 ,filegrowth=1)运行上诉语句建立数据库userdb12.根据步骤1的sql语句,写出创建实验二中“学生信息”数据库的sql语句,并建立“学生信息”数据库.(.mdf的名字可以修改)3.数据库的修改(alter database 数据库名add file),将一个大小为10MB 的数据文件mrkj添加到userdb1的数据库中,该数据文件的大小为10MB,最大的文件大小为100MB,增长速度为2MB,物理地址与原有的mdf,ldf文件放在一起。

alter database 数据库名 add file()注括号内格式同下:( name=userdb4_log,filename='g:\xygl\userdb4.ldf ' ,size=2 ,maxsize=5 ,filegrowth=1)4.修改文件alter database数据库名modify file()注括号内表示修改后的属性信息,格式同下:( name=userdb4_log,filename='g:\xygl\userdb4.ldf ' ,size=2 ,maxsize=5 ,filegrowth=1)5.删除文件mrkj(alter database数据库名remove file+文件名)6.用SQL语句删除步骤一建立的数据库userdb1。

数据库原理实验报告四(有答案)

数据库原理实验报告四(有答案)

数据库原理实验报告四(有答案)南京晓庄学院《数据库原理与应用》课程实验报告实验四查询设计实验所在院(系):数学与信息技术学院班级:学号:姓名:1.实验目的(1)了解查询的目的,掌握SELECT语句的基本语法和查询条件的表示方法。

(2)掌握数据排序和数据联接查询的方法。

(3)掌握SQL Server查询分析器的使用方法。

2.实验要求(1)针对“TM”数据库,在SQL Server查询分析器中,用T-SQL语句实现以下单表查询操作,并将将调试成功的T-SQL命令,填入实验报告中。

a)查询所有课程的详细情况。

b)查询来自江苏或山东的学生学号和姓名,并以中文名称显示输出的列名。

c)查询选修了课程的学生学号(一人选了多门课程的话,学号只显示一次)。

d)查询选修课程号为07253001的学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。

e)查询所有学生的学号、姓名和年龄。

f)查询选修课程号为07253001的成绩在85-95之间的学生学号和成绩,并将成绩乘以0.7输出。

g)查询数学与信息技术学院(DEPT_ID为07)或物理与电子工程学院(DEPT_ID为09)姓张的学生的信息。

h)查询所有核心课程(课程名中带*的)的情况。

i)查询缺少了成绩的学生的学号和课程号,查询结果按课程号升序排列。

(2)在SQL Server查询分析器中,用T-SQL语句实现下列数据联接查询操作:a)查询每个学生的情况以及他(她)所选修的课程。

b)查询学生的学号、姓名、选修的课程名及成绩。

c)查询选修C语言程序设计且成绩为85分以上的学生学号、姓名及成绩。

d)查询和学生柏文楠是同一个民族的学生(用自身联接实现)。

e)分别用等值联接和内联接查询有授课记录的老师的姓名。

f)用外联接查询所有老师的授课情况,输出老师的工号、姓名、职称、院系、担任的课程号和授课的学期,结果按院系和职称升序排列。

如果该老师没有授课历史,在课程号和授课的学期中显示空值(3)在SQL Server Management Studio中新建查询,完成以上查询命令的同时,熟悉SQL 编辑器工具栏中各快捷按钮的作用。

数据库上机实验报告答案

数据库上机实验报告答案

数据库上机实验报告答案1.建立学生数据库模式学生表:student (sno 学号,sname 姓名,ssex 性别,sage 年龄,sdept 所在系)其中:sno 长度为4的字符串,为主码;sname 长度为8的字符串;ssex 长度为2的字符串,其值只取男、女;sage 整数,其值在0-150之间;sdept 长度为10的字符串。

2.建立课程数据库模式课程表:course ( cno课程号,cname课程名,ccredit学分)其中:cno 长度为4的字符串,为主码cname 长度为10的字符串,不能有重复课程名;ccredit 整数。

3.建立选课数据库模式。

选课表: sc (sno学号, cno课程号, grade成绩)其中:sno 长度为4的字符串,和student表sno外键关联,且级联删除cno 长度为4的字符串,course表cno外键关联,grade 整数,值或空或为0—100之间,(sno, cno) 联合作主码。

(1)创建上述三个表。

(2)将年龄的数据修改为15-30之间。

(3)为Student中sname添加列级完整性约束,不能为空。

(4)为SC建立按学号升序和课程号降序建立唯一索引.(5)在表student的sname字段建立一个升序索引。

(6)删除在表student的sname字段建立的索引。

(7)给student表增加一个地址(address)属性。

(8) 删除student表地址(address)属性。

(9)建立视图view1,要求有sno,sname,cname,grade四个字段。

1) create table studen(sno char(4) primary key,sname char(8),ssex char(2) check( ssex in('男','女')),sage int check(sage between 0 and 150),sdept char(10));create table course(cno char(4) primary key,cname char(10) unique,ccredit intcreate table sc(sno char(4),cno char(4),grade int check(grade between 0 and 100),primary key (sno,cno),foreign key(sno) references student(sno) on delete cascade, foreign key(cno) references course(cno));2) alter table studentadd constraint sage_con check(sage between 15 and 30);3) alter table studentmodify sname not null;4) create unique index index1on sc (sno asc,cno desc);5) create index index2on student(sname asc);6) drop index index2;7) alter table studentadd address char(30);8) alter table studentdrop column address;9) create view view1asselect A.sno,sname,cname,gradefrom student A,course B,sc Cwhere A.sno=C.sno and /doc/287635464.html,o=http://www.doczj .com/doc/287635464.html,o;(1)在上述三个表中输入若干记录。

数据库实验4 及答案

数据库实验4 及答案

实验报告课程名称数据库系统原理专业班级姓名学号电气与信息学院和谐勤奋求是创新实验教学考核和成绩评定办法1.课内实验考核成绩,严格按照该课程教学大纲中明确规定的比重执行。

实验成绩不合格者,不能参加课程考试,待补做合格后方能参加考试。

2.单独设立的实验课考核按百分制评分,考核内容应包括基本理论、实验原理和实验。

3.实验考核内容包括:1)实验预习;2)实验过程(包括实验操作、实验记录和实验态度、表现);3)实验报告;权重分别为0.2 、0.4 、0.4;原则上根据上述三个方面进行综合评定。

学生未取得1)和2)项成绩时,第3)项成绩无效。

4.实验指导教师应严格按照考核内容分项给出评定成绩,并及时批改实验报告,给出综合成绩,反馈实验中出现的问题。

实验成绩在教师手册中有记载。

实验报告主要内容一.实验目的二.实验仪器及设备三.实验原理四.实验步骤五.实验记录及原始记录六.数据处理及结论七.实验体会(可选项)注:1. 为了节省纸张,保护环境,便于保管实验报告,统一采用A4纸,实验报告建议双面打印(正文采用宋体五号字)或手写,右侧装订。

2. 实验类别指验证、演示、综合、设计、创新(研究)、操作六种类型实验。

3. 验证性实验:是指为了使学生巩固课程基本理论知识而开设的强调演示和证明,注重实验结果(事实、概念或理论)的实验。

4. 综合性实验:是指实验内容涉及本课程的综合知识或本课程相关的课程知识的实验。

5. 设计性实验:是指给定实验目的、要求和实验条件,由学生自行设计实验方案并加以实现的实验。

实验题目 数据定义、操纵实验室 电信机房 实验时间2011 年 4 月 日实验类别 验证同组人数 1成 绩指导教师签字:一. 实验目的:掌握数据库、表、索引的创建、修改、删除,以及单表查询。

二. 实验内容:1.设有一数据库GradeManager(成绩管理),包括四个表:学生表(Student ),课程表(Course )、班级表(Class )以及成绩表(Grade )。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一:
嵌套查询:
(1):找出与李勇在同一个班级的学生信息。

select*
from Student
where Clno=--可以使用谓词in
(select Clno
from Student
where Sname='李勇')
select*
from Students1
where exists
(select*
from Students2
where s2.Clno=s1.Clno and
s2.Sname='李勇')
(2):找出所有与李勇有相同选修课的学生信息。

select*
from Student
where Sno in
(select Sno
from Grade
where o in
(select Cno
from Grade
where Sno=
(select Sno
from Student
where Sname='李勇')))and
Sname<>'李勇'
(3):找出年龄介于学生李勇和25岁之间的学生信息。

select*
from Student
where Sage<25 and Sage>
(select Sage
from Student
where Sname='李勇')
union
select*
from Student
where Sage<
(select Sage
from Student
where Sname='李勇')and Sage>25
(4):找出选修了课程操作系统的学生学号和姓名。

select Sno,Sname
from Student
where Sno in
(select Sno
from Grade
where Cno=
(select Cno
from Course
where Cname='操作系统'))
(5):找出所有没有选修1号课程的学生姓名。

select Sname
from Student
where notexists
(select*
from Grade
where Sno=Student.Sno and Cno='1')
(6):找出选修了全部课程的学生姓名。

select Sno,Sname
from Student
where notexists
(select*
from Course
where notexists
(select*
from Grade
where Sno=Student.Sno and Cno=o))
连接查询:
(1):找出与李勇在同一个班级的学生信息。

select s1.*
from Students1,Students2
where s1.Clno=s2.Clno and s2.Sname='李勇'
(2):找出所有与李勇有相同选修课的学生信息。

selectdistinct s2.*
from Students1,Students2,Gradeg1,Gradeg2
where s1.Sno=g1.Sno and s2.Sno=g2.Sno and o=o and s1.Sname='李勇'and s2.Sname<>'李勇'
(3):找出年龄介于学生李勇和25岁之间的学生信息
select s2.*
from Students1,Students2
where s1.Sage<s2.Sage and s2.Sage<25 and s1.Sname='李勇'
(4):找出选修了课程操作系统的学生学号和姓名。

select Student.Sno,Sname
from Student,Course,Grade
where Student.Sno=Grade.Sno and o=o and Cname='操作系统'
(5):找出所有没有选修1号课程的学生姓名。

select Sname
from Student
except
selectdistinct Sname
from Student,Grade
where Student.Sno=Grade.Sno and Cno='1'
(6):找出选修了全部课程的学生姓名。

select Sname
from Student,Grade
where Student.Sno=Grade.Sno and Cno='1' intersect
select Sname
from Student,Grade
where Student.Sno=Grade.Sno and Cno='2' intersect
select Sname
from Student,Grade
where Student.Sno=Grade.Sno and Cno='3' intersect
select Sname
from Student,Grade
where Student.Sno=Grade.Sno and Cno='4' intersect
select Sname
from Student,Grade
where Student.Sno=Grade.Sno and Cno='5' intersect
select Sname
from Student,Grade
where Student.Sno=Grade.Sno and Cno='6' intersect
select Sname
from Student,Grade
where Student.Sno=Grade.Sno and Cno='7'
完成查询:
(1):查询选修了3号课程的学生学号及其成绩,并按成绩的降序排列。

select Sno,Gmark
from Grade
where Cno='3'
orderby Gmark desc
(2):查询全体学生信息,要求查询结果按班级号升序,同一班级学生按年龄降序排列。

select*
from Student
orderby Clno,Sage desc
(3):求每个课程号相应的选课人数。

select Cno,COUNT(Sno)number
from Grade
groupby Cno
(4):查询选修了3门以上课程的学生学号。

select Sno
from Grade
groupby Sno
having COUNT(*)>3
二:
存在量词exists:如果内层查询结果非空,则外层的where子句返回真值,否则返回假值。

存在量词not exists:如果内层查询结果为空,则外层的where子句返回真值,否则返回假值。

三:
当表的结构比较小的时候,两种查询的效率差距并不是很大。

当表的结构比较大的时候,使用嵌套查询比较有效率,因为连接查询需要创建中间过程表,当涉及的表数目较多的时,会消耗空间资源,进而影响查询的效率。

但是,当嵌套次数比较多的时候,会降低查询效率,而用连接查询,仅仅只需一次查询,可以大大提高效率。

相关文档
最新文档