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

合集下载

数据库上机实验题目和答案

数据库上机实验题目和答案

试用SQL的查询语句表达下列查询:1.检索王丽同学所学课程的课程号和课程名。

select Cno ,Cname from c where Cno in(select cno from sc where sno in (select sno from s where sname='王丽' ))2.检索年龄大于23岁的男学生的学号和姓名。

select sno,sname from swhere sex='男' and age>233.检索‘c01’课程中一门课程的女学生姓名select sname from swhere sex='女' and sno in(select sno from sc where cno='c01')4.检索s01同学不学的课程的课程号。

select cno from cwhere cno not in (select cno from sc where sno ='s01')5.检索至少选修两门课程的学生学号。

select sc.sno from s,scwhere s.sno=sc.snogroup by sc.snohaving count(o)>=26.每个学生选修的课程门数。

解法一:select so.sno sno,ount,s.snamefrom(select sc.sno sno,count(sc.sno) ccountfrom sc,swhere s.sno=sc.snogroup by sc.sno ) so,swhere s.sno=so.sno解法二:select sc.sno sno,s.sname,count(sc.sno) ccountfrom sc,swhere s.sno=sc.snogroup by sc.sno,sname7.求选修C4课程的学生的平均分。

数据库上机实验1

数据库上机实验1

实验七:数据完整性实验(SQL SERVER)实验目的:加深对数据完整性的理解。

实验内容:数据库的完整性设置。

实验步骤:1)可视化界面的操作方法:一、实体完整性1.将student表的“sno”字段设为主键:在表设计界面中,单击左边的行选定块,选定“sno”字段,单击工具按钮设置主键。

如图6-1所示:图6-11.将“sc”表的“sno”和“cno”设置为主键:在表设计界面中,单击并拖动左边的行选定块,选定sno和cno字段,单击工具按钮设置主键。

如图6-2所示:图6-2二、域完整性3. 将“ssex”字段设置为只能取“男”,“女”两值:在表设计界面,点击图4-3箭头所指按钮,出现属性(Property)对话框,选择新建(New)按钮,然后在约束表达式(Constraint expression)框中输入“ssex in ('男','女') ”。

如图6-3所示。

图6-3三、参照完整性4.利用数据库关系图来完成参照完整性见图6.4。

将要形成参照完整性的数据库加入将student表作为主键表,sc表作为外键表形成参照完整性,将鼠标参照完整性放在student 表的sno上,按左键不放,拖至sc表的sno放开修改下面中insert 和update 选项,对student 表和sc 表的sno 字段进行插入和修改操作,看有何区别同理,将course表作为主键表,sc表作为外键表形成参照完整性最后如下图2)命令方式操作方法:一、实体完整性1.将“student”表的“sno”字段设为主键:当“student”表已存在则执行:alter table student add constraint pk_sno primary key (sno)当“student”表不存在则执行:Create table student(sno CHAR(5) primary key ,sname CHAR(10),ssex CHAR(2),sage int,sdept CHAR(4))注:可用命令“drop table student”删除“student”表2. 添加一身份证号字段,设置其惟一性.(注: 操作前应删除表中的所有记录)Alter table student add id char(18) unique (id)3. 将“sc”表的“sno”和“cno”设置为主键:当“sc”表已存在则执行:alter table sc add constraint PK_SnoCno primary key (sno,cno) 当“sc”表不存在则执行:Create table sc(sno CHAR(5),cno CHAR(2),grade INT NULL,constraint PK_SnoCno primary key (sno,cno))二、域完整性4. 将“ssex”字段设置为只能取“男”,“女”两值:当“student”表已存在则执行:alter table student add constraint CK_Sex check (ssex in ('男' ,'女')) 当“student”表不存在则执行:Create table student(sno CHAR(5) primary key ,sname CHAR(10),ssex CHAR(2) check (ssex in ('男' ,'女')) ,sage int, sdept CHAR(4))5. 设置学号字段只能输入数字:alter table student add constraint CK_Sno_Format check (sno like'[0-9][0-9][0-9][0-9][0-9]')6. 设置身份证号的输入格式:alter table student add constraint CK_ID_Format check ((id like'[0-9][0-9][0-9][0-9][0-9][0-9][1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]_') OR (id like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]'))7. 设置18位身份证号的第7位到第10位为合法的年份(1900-2050)alter table student add constraint CK_ID_Format2 check ( not len(id)=18 or( (convert(smallint,substring(id,7,4) )>=1900) and(convert(smallint,substring(id,7,4) )<=2050)) )三、参照完整性9. 设置男生的年龄必须大于22, 女生的年龄必须大于20.Alter table student add constraint CK_age check (sex='男' and sage>=22 or sex='女' and sage>=20 )10. 将“student”表和“sc”表中的“sno”字段设为参照:当“sc”表已存在则执行:alter table sc add constraint FP_sno foreign key (sno) references student(sno )当“sc”表不存在则执行:Create table sc(sno CHAR(5) constraint FP_snoforeign key references student(sno),cno CHAR(2),grade I NT NULL,constraint PK_SnoCno primary key (sno,cno) )四、完整性验证1.实体完整性:在“student”表数据浏览可视化界面中输入学号相同的两条记录将会出现错误如下图所示:图6-5或者在命令窗口输入下面两条命令也会出现错误提示:insert into student values('95001','张三','男',20,'CS') insert into student values('95001','李四','女',18,'CS')图6-6 下面的语句用来验证“sc”表中的实体完整性:insert into sc values('95002', '10',65)insert into sc values('95002', '10',90)图6-72. 域完整性:使用下面的语句验证“ssex”字段的域完整性:insert into student values('95009','张匀','大',20,'CS')3.参照完整性:使用下面的语句“验证”sc表中的“sno”字段的域完整性(假设student表中没有学号为“95998”的学生记录):insert into sc values('98998', '10',98)思考:1.建立课程的实体完整性, 和课程号cno的参照完整性;2.建立年龄的域完整性, 约束条件为“年龄在15到30岁之间”3*. 在学生表中添加“出生日期”和“身份证号”字段,设置一完整性规则,确保身份证号中的关于出生日期的数字与“出生日期”字段的值相匹配。

数据库上机实验报告

数据库上机实验报告

数据库实验(第三次)题目1 实验内容:1. 检索上海产的零件的工程名称;2. 检索供应工程J1零件P1的供应商号SNO;3. 检索供应工程J1零件为红色的供应商号SNO;4. 检索没有使用天津生产的红色零件的工程号JNO;5. 检索至少用了供应商S1所供应的全部零件的工程号JNO;6. 检索购买了零件P1的工程项目号JNO及数量QTY,并要求对查询的结果按数量QTY降序排列。

1select jnamefrom jwhere jno in(select jnofrom spjwhere sno in(select snofrom swhere city ='上海'));2select snofrom spjwhere jno ='j1'and pno ='p1'3selectdistinct snofrom spjwhere pno in(select pnofrom pwhere color='红'and pno in (select pnofrom spjwhere jno ='j1'));4selectdistinct jnofrom spjwhere pno notin(select pnofrom pwhere color ='红'and pno in (select pnofrom spjwhere sno in(select snofrom swhere city ='天津')))5select jnofrom spjwhere sno ='s1'6select jno,qtyfrom spjwhere pno ='p1'orderby qty desc四﹑思考题1. 如何提高数据查询和连接速度。

建立视图2. 试比较连接查询和嵌套查询有些嵌套查询是可以用连接来代替的,而且使用连接的方式,性能要比嵌套查询高出很多当查询涉及多个关系时,用嵌套查询逐步求解结构层次清楚,易于构造,具有结构化程序设计的优点。

数据库上机实验

数据库上机实验

实验一数据表的建立一、实验目的:熟悉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.掌握SQLSERVER中数据的导入、导出方法2.掌握SQLSERVER数据的备份、还原方法3.掌握表中主键、外键的建立方法,并理解其作用。

实验内容及步骤:1.ACCESS中数据中的数据导入SqlServer中1)新建一个数据库,如:T0012)新建数据库节点上,右键菜单“所有任务-》导入数据”3)点击“下一步”4)数据源选择“Microsoft Access”,文件名选择“jiaowu.mdb”,然后点击“下一步”5)点击“下一步”6)点击“下一步”7)下图中,勾选中“源”列中的表,然后点击“下一步”8)点击“下一步”9)点击“完成”10)数据导入成功,点击“确定”11)点击“完成”12)展开数据库节点,“表”节点上,右键菜单“刷新”,显示出导入的数据表。

2. Sqlserver导出到Access1) 新建一个ACCESS空文件,文件名任意,如“p001.mdb”2)选择一个需要导出数据的数据库节点,如:sqlserver自带的样例数据库pubs3) 点击下一步4)在该窗口中,选择需要导出数据的数据库,默认为刚才选中的数据库节点,直接点击下一步即可。

5)目的类型,选择“Microsoft Access”,表示需要导出到access数据中文件名:选择第一步新建的access空文件然后,点击下一步。

7)该窗口中勾选中需要导出的数据表,在第一列打勾,然后点击下一步。

9)点击完成10)点击完成11)打开p001.mdb 查看导出的数据。

3. EXCEL文件导入SQLSERVER1) 新建一个excel文件,文件名任意,如:xuesheng.xls2) 打开该文件,输入数据如下,并保存该数据。

3) 数据导入的步骤和导入access文件相同,当出现“选择数据源”窗口时,数据源选择Microsoft Excel 97-2000类型,表示需要导入excel数据。

数据库上机实验题目和答案

数据库上机实验题目和答案

数据库上机实验题目和答案试用SQL的查询语句表达下列查询:1.检索王丽同学所学课程的课程号和课程名。

select Cno ,Cname from c where Cno in(select cno from sc where sno in (select sno from s where sname='王丽' ))2.检索年龄大于23岁的男学生的学号和姓名。

select sno,sname from swhere sex='男' and age>233.检索‘c01’课程中一门课程的女学生姓名select sname from swhere sex='女' and sno in(select sno from sc where cno='c01')4.检索s01同学不学的课程的课程号。

select cno from cwhere cno not in (select cno from sc where sno ='s01')5.检索至少选修两门课程的学生学号。

select sc.sno from s,scwhere s.sno=sc.snogroup by sc.snohaving count(/doc/1411529677.html,o)>=26.每个学生选修的课程门数。

解法一:select so.sno sno,/doc/1411529677.html,ount,s.sname from(select sc.sno sno,count(sc.sno) ccountfrom sc,swhere s.sno=sc.snogroup by sc.sno ) so,swhere s.sno=so.sno解法二:select sc.sno sno,s.sname,count(sc.sno) ccountfrom sc,swhere s.sno=sc.snogroup by sc.sno,sname7.求选修C4课程的学生的平均分。

数据库上机实验答案5

数据库上机实验答案5

数据库上机实验答案 5学号:姓名:日期:年月日实验目的:综合练习所学的SQL语言。

学习日期函数。

实验内容:基于提供的食堂交易记录trans表,进行查询,记录SQL语句及查询结果。

食堂交易记录表trans的数据说明如下:trans食堂交易记录(stuID,学生学号posID,刷卡机编号transTime,交易时间transValue,交易金额)1 食物销量大比拼创建一张表格posSummary,表格内容如下: pos机编号,就餐人数,刷卡次数,销售金额,平均每次刷卡金额。

以pos机编号为主键。

利用insert语句填充数据。

选择并展示posSummary中销售金额前10的pos机。

2 评选食堂忠实粉丝创建一个视图stuSummary,视图内容如下:学生ID,刷卡次数,刷卡总金额,刷卡平均金额。

基于创建的视图,分别找出刷卡次数最多、刷卡总金额最多、刷卡平均金额最多的同学。

3 学习日期函数datepart执行如下语句。

将执行结果复制到excel中,绘制散点图。

解释图的意思。

select datepart(hour,transtime)*60+datepart(minute,transtime)as minuteOfDay,count(*) as freq from trans group by datepart(hour,transtime)*60+datepart(minute,transtime) order by datepart(hour,transtime)*60+datepart(minute,transtime)其中,日期函数datepart(hour,transtime)的意思是将transtime中小时的部分取出来。

4 就餐规律研究计算某一天是星期几的方法如下:datepart(weekday,transtime),其计算结果周日为1,周一为2,周六为7。

基于题3中的方法,绘制上课日(周一到周五)学生的就餐规律和休息日(周六、周日)学生的就餐规律图。

数据库实验内容--答案

数据库实验内容--答案

数据库实验内容--答案实验内容:实验一:数据库的操作使用Management Studio和sql语句分别完成以下操作:1.创建一个名为“SM”的数据库,数据文件初始大小为3MB,最大为50MB,数据库自动增长,增长方式按10%;日志文件初始大小为2MB,数据大小不受限制,按1MB增长。

create database sm on (name='smdata',filename='e:\\smdata.mdf', size=3,maxsize=50, filegrowth=10%) log on(name='smlog',filename='e:\\smlog.ldf', size=2,maxsize=unlimited, filegrowth=1)2.修改数据库“SM”,将数据文件名改成“sm_data”,初始大小改成5MB alter database sm modify file( name='smdata', newname='sm_data', size=5)3.分别查看数据库“SM”,该数据库中的文件和文件组。

execsp_helpfilesmexecsp_helpfilegroupsm 4.删除数据库“SM”。

drop database sm实验二:创建表1. 在数据库SM中创建学生表student,课程表course,选课表scstudent(sid,sno,clno,sname,ssex,sage,sbir) 说明:sidint identity(1,1) 序号 sno为主关系键,为字符类型学号 clno字符类型,班级号 sname字符类型,并不为空ssex字符类型,check的值的范围为男女 sbir日期类型出生日期sage int;usesmcreate table student ( sidint identity(1,1),sno char(10) constraint pk_st primary key, clno char(10),sname varchar(20) not null,ssex char(2) constraint ck_ssex check(ssex in('男','女')), sbirdatetime, sageint )course(cno,cname,ccredits,ctno,cpno,ctime)说明:cno字符类型,主关系键 cname字符类型,唯一键ccredits学分,精确数值型,精确长度为2,小数位为1 ctno,cpno字符类型ctime整型create table course(cno char(4) constraint pk_c primary key, cname varchar(20)constaintuk_cname unique, ccredit decimal(2,1), ctno char(2), cpno char(4), ctimetinyint )sc(sno,cno,score)说明:sno+cno为主键,并且sno是student的外部键,cno是course的外部键。

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

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

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

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

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

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

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

◆测试数据入库
2.基于“查询分析器”,完成并保存下述题目的SQL脚本
(1)建立“工种”是“钳工”的所有职工详细信息的视图;
create view View_工人_钳工
as
select*
from职工表
where工种='钳工'
with check option
(2)建立“车间号”是“CJ01”的钳工详细信息的视图;
create view View_钳工_CJ01
as
select*
from View_工人_钳工
where车间号='CJ01'
(3)建立使用了“零件号”是“LJ0002”的所有产品详细信息的视图;
create view View_产品_零件LJ0002
as
select产品表.产品号,价格,车间号,仓库号
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盘。

相关文档
最新文档