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

合集下载

数据库上机实验

数据库上机实验

创建数据表与数据输入Part I. 使用SQL Server Management Studio创建数据表和输入数据1. 在SQL Server Management Studio中创建数据表P69 1.(1)-(6)2. 为数据表输入数据P76 4.(1)-(4)3. 数据浏览P77 1. (1)-(2)2. (1)-(3)Part II. 使用SQL语句创建数据表和输入数据1. 使用SQL语句创建数据表P72. 例3-22.使用SQL语句输入数据P82. 例3.8习题:P.105 (1)(2)insert数据操作Insert、Update、Delete P105 3. 上机练习题(2)(4)Insert(100001, 1000, 2002-12-18 0:00:00) (100002, 2000, 2010-3-20 0:00:00)Update(100001, 1500, 2002-12-18 0:00:00) (100002, 2000, 2012-9-25 0:00:00)Delete1.将teaching数据库中score表的studentno列设置为引用表student的外键。

ALTER TABLE ScoreADD CONSTRAINT FK_score_student FOREIGN KEY (studentno)REFERENCES student(studentno)2.将teaching数据库中class表的classname创建UNIQUE约束。

ALTER TABLE classADD CONSTRAINT UQ_class UNIQUE(classname)执行如下插入语句,查看提示信息INSERT INTO class VALUES(‘090602’, ’计算机0902’, ’计算机学院’, ’马文斐’) 3. 为teaching数据库中student表的birthday列创建CHECK约束,规定学生的年龄在17-25岁之间。

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

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

数据库上机实验内容及要求(第二部分)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盘。

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

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

试用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下列说法中正确的是:( D )A 、 SQL 中局部变量可以不声明就使用B 、 SQL 中全局变量必须先声明再使用C 、 SQL 中所有变量都必须先声明后使用D 、 SQL 中只有局部变量先声明后使用;全局变量是由系统提供的用户不能自己建立。

2.哪个关键字用于测试跟随的子查询中的行是否存在( B )。

A.MOV B.EXISTSC.UNION D.HAVING3 .下列哪些语句用于创建存储过程( A )?A、CREATE PROCEDUREB、CREATE TABLEC、DROP PROCEDURED、其他5.在SQL中,SELECT语句的“SELECT DISTINCT”表示查询结果中 ( C )。

A.属性名都不相同B.去掉了重复的列C.行都不相同D.属性值都不相同语言集数据查询、数据操作、数据定义和数据控制功能于一体,语句INSERT、DELETE、UPDATA实现下列哪类功___A_____。

A. 数据查询B. 数据操纵C. 数据定义D. 数据控制Server 2000 采用的身份验证模式有( D )。

(A)仅Windows身份验证模式(B)仅SQL Server身份验证模式(C)仅混合模式(D)Windows身份验证模式和混合模式Server 2000 企业版可以安装在操作系统上。

( C )(A)Microsoft Windows 98(B)Microsoft Windows 2000 Professional(C)Microsoft Windows 2000 Server(D)Microsoft Windows XPServer是一个( C )的数据库系统。

(A)网状型(B)层次型(C)关系型(D)以上都不是语言中,删除一个视图的命令是( B )。

A. DELETEB. DROPC. CLEARD. REMOVE语言中,删除记录的命令是( A )。

A. DELETEB. DROPC. CLEARD. REMOVE14.以下触发器是当对[employee表]进行( D )操作时触发。

数据库系统上机实验题

数据库系统上机实验题

数据库系统上机实验题一、学生学习系统的基本表学生:s(sno,sname,sex,age,dept);表中属性分别为:学号,姓名,性别,年龄和系名。

课程:c(cno,cname,tname);表中属性分别为:课号,课名,教师名。

选课:sc(sno,cno,grade);表中属性分别为:学号,课号和成绩。

要求:利用sql语句创建上面三个基本表,包括:主键,外键定义。

有针对性地输入一些实验数据。

二、利用sql语句,在上面三个基本表,顺利完成如下的功能1.查找学号2至10号学生的学号、姓名和系名。

2.查找女同学的人数。

3.搜寻学号2至10号学生中,女同学的人数。

4.查找男、女同学各有多少人(注:输出性别和人数)。

5.搜寻‘cs’系则中,男、女同学各存有多少人(备注:输入性别和人数)6.搜寻年龄在18至20岁之间的所有男同学的学号、姓名和系名。

7.搜寻所有学生报读课程的门数。

8.查找学号2至15号学生中,英语成绩超过80分的学生学号和姓名。

9.查找没有学习‘物理’课程的学生姓名和系名。

10.查找‘王明’同学所学课程的门数。

11.统计数据‘王明’同学所学各门课程的平均值分数。

12.统计数据英语成绩低于该课程平均值成绩的人数。

13.查找查找至少选修了‘王一’和‘王二’老师所授课程的学生学号与姓名。

14.查找‘cs’系比‘ma’系的学生年龄都小的学生姓名和系名。

15.统计每个学生的总分,输出学生的学号和总分,总分按降序排列。

16.查找学号比‘王一’同学大,而年龄比他小的学生学号、姓名和年龄。

17.查找年龄大于女同学的平均年龄的男同学的姓名与年龄。

18.查找只选修了一门课程的同学的学号和姓名。

19.搜寻‘cs’系则学生中,没报读‘王一’老师课程的学号、姓名和系名。

20.搜寻至少报读了3门课程的学生学号和姓名。

21.搜寻每门课程的最高分和最低分。

(备注:输入课号、最高分和最低分)22.使用查阅视图方式顺利完成21题的功能:利用视图方式的步骤:创建视图,例如:gdf(cno,max,min)属性:课号、最高分和最低分。

数据库上机实验

数据库上机实验

实验一数据表的建立一、实验目的:熟悉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所示。

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

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

数据库上机实验题目和答案试用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课程的学生的平均分。

数据库期末上机试题参考答案

数据库期末上机试题参考答案

公司数据库由下面三个表组成:上机测试题目:要求完成以下操作:一、使用SQL命令创建名为‘corporation’的公司数据库(参数自己定义)。

(5分)CREATE DATABASE corporationON(name=CP_dat,filename="'+ @data_path+'saledat.mdf",size=8,maxsize=10,filegrowth=1)LOG ON(name=sales_log,filename ="'+@data_path +'salelog.ldf",size=1mb,filegrowth=1mb)二、分别将公司数据库中雇员、部门、工作三个表命名为Employee、Department、work。

按照上述表格内容创建这三个数据表(列名使用汉语拼音),并向三个数据表输入数据。

(5分)USE corporationGO--创建雇员表CREATE TABLE Employee (emp_no char(3) NOT NULL,emp_name char(6) NULL,age INT NULL,address nchar(2) NULL,sal INT NULL)INSERT INTO Employee V ALUES('E01', 'tom', 35, '广州',8000)INSERT INTO Employee V ALUES('E02', 'dennis',24,'顺德',5000)INSERT INTO Employee V ALUES('E03', 'john ',20,'广州',4000)INSERT INTO Employee V ALUES('E04', 'rick',41,'顺德',7000)INSERT INTO Employee V ALUES('E05', 'bill',45,'河源',7500)INSERT INTO Employee V ALUES('E06', 'frank',35,'广州',6000)INSERT INTO Employee V ALUES('E07', 'jank',25,'佛山',3000)INSERT INTO Employee V ALUES('E08', 'mike',23,'佛山',3500)--创建部门表CREATE TABLE Department (dep_no char(3) NOT NULL,dep_name nvarchar(2) NULL,dep_manager char(3) NULL)INSERT INTO Department V ALUES('D01','人事','E04')INSERT INTO Department V ALUES('D02','信息','E01')INSERT INTO Department V ALUES('D03','销售','E05')INSERT INTO Department V ALUES('D04','财务','E06')--创建工作表CREATE TABLE work (emp_no char(3) NULL,dep_no char(3) NULL,dep_year INT NULL)INSERT INTO work V ALUES('E01','D02',6)INSERT INTO work V ALUES('E01','D03',1)INSERT INTO work V ALUES('E01','D04',2)INSERT INTO work V ALUES('E02','D01',2)INSERT INTO work V ALUES('E02','D04',0)INSERT INTO work V ALUES('E03','D02',0)INSERT INTO work V ALUES('E04','D01',4)INSERT INTO work V ALUES('E04','D02',1)INSERT INTO work V ALUES('E05','D03',2)INSERT INTO work V ALUES('E06','D04',4)INSERT INTO work V ALUES('E07','D04',1)INSERT INTO work V ALUES('E08','D03',2)三、用SQL语句完成下列查询,上机验证之后将SQL语句按题号保存。

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

试用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课程的学生的平均分。

select avg(grade) 'c04平均成绩'from scwhere cno='c04'8.求每个学生平均成绩。

select s.sno,s.sname,avg(sc.grade) '平均成绩'from sc,swhere s.sno=sc.snogroup by s.sno,s.sname9.统计每门课程的学生选修人数(超过3人的课程才统计)。

询结果按人数降序排列,若人数相同,按课程号升序排列。

select o,ame,count(o) numberfrom c,scwhere o=ogroup by o,o,amehaving count(*)>3order by number desc,o10.检索学号比王丽同学大,而年龄比他小的学生姓名。

select sno,sname from swhere sno>(select sno from s where sname='王丽') andage<(select age from s where sname ='王丽')11.检索姓名以王打头的所有学生的姓名和年龄。

select sname,age from swhere sname like '王%'12.在SC中检索成绩为空值的学生学号和课程号。

select sno,cno from scwhere grade is NULL13.输出c01 课程的成绩单,要求成绩按从高到低排序。

select sname,grade 'c01成绩' from sc,swhere s.sno=sc.sno and cno='c01'order by grade desc14.查询姓名为‘X国X’同学。

select sname from swhere sname like '_国_'15.查询没有选修c02,c03,c04的同学的学号。

select snofrom swhere not exists(select snofrom scwhere s.sno=sc.sno and cno in('c02','c03','c04'))16.查询没有参加考试的同学的学号。

select snofrom swhere exists(select *from scwhere s.sno=sc.sno and grade is null)17.检索计算机系开课程的课程号和课程名。

select cno,cname from cwhere dept in(select dept from d where dname='计算机')18.检索至少选修计算机系所开课程2门以上的女学生姓名select snamefrom s,sc,c,dwhere s.sex='女'and s.sno=sc.sno and o=o and dname='计算机' and d.dept=c.deptgroup by snamehaving count(s.sno)>219.检索王丽同学不学的课程的课程号。

select cno from c where cno not in(select cno from sc where sno in (select sno from s where sname='王丽'))20.检索选修计算机系所开全部课程的学生的学号与姓名。

select s.sno,snamefrom s,sc,c,dwhere s.sno=sc.sno and o=o and d.dname='计算机' and d.dept=c.dept group by sname,s.sno21.检索选修C语言且成绩大于80分的计算机系的学生的姓名与学号。

select sname,s.snofrom sc,s,d,cwhere dname='计算机' and s.dept=d.dept and ame='C语言' and o=o and s.sno=sc.sno and sc.grade>8022.查询选修3门以上课程且平均成绩大于80的学生的学号、姓名、所在系名。

select s.sno,sname,dname from sc,s,d where s.sno=sc.sno and s.dept=d.dept group by s.sno,sname,dnamehaving count(cno)>3 and avg(sc.grade)>8023.求计算机系所开课程的每门课程的学生平均成绩,按平均成绩从高到低排序输出。

select o,avg(sc.grade)from sc, d,cwhere d.dname='计算机' and o=o and c.dept=d.deptgroup by oorder by avg(sc.grade) desc24.检索缺考2门以上的学生姓名。

select s.snamefrom s,scwhere s.sno=sc.sno and sc.grade is nullgroup by snamehaving count (*)>225.检索缺考或不及格们数3门以上的学生学号和姓名。

select distinct s.sno,s.snamefrom s,scwhere s.sno=sc.sno and (sc.grade<60 or sc.grade is null) and s.sname in( select s.snamefrom s,scwhere s.sno=sc.sno and (sc.grade<60 or sc.grade is null) and s.sname in( select s.snamefrom s,scwhere s.sno=sc.sno and (sc.grade<60 or sc.grade is null)group by s.snamehaving count (*)>3))26.检索每个学生的总学分select s.sno,sum(c.credit) '总学分'from s,c,scwhere s.sno=sc.sno and o=ogroup by s.sno27.查询既选修了‘数据库’又选修了‘操作系统’的学生的姓名及学号from s,sc,cwhere ame='数据库'and s.sno=sc.sno and o=o and s.sno in( select s.snofrom s,sc,cwhere ame='操作系统'and s.sno=sc.sno and o=o)28.查询即没有选修‘数据库’又没有选修‘操作系统’的学生的姓名及学号。

select sname,s.snofrom s,sc,cwhere s.sno=sc.sno and o=o and s.sno not in(select s.snofrom s,sc,cwhere ame='操作系统'and s.sno=sc.sno and o=o or s.sno in( select s.snofrom s,sc,cwhere ame='数据库'and s.sno=sc.sno and o=o))。

相关文档
最新文档