当前位置:首页 » 编程语言 » sql数据库实训三答案
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql数据库实训三答案

发布时间: 2022-04-30 23:40:59

sql Server数据库系统实训(sos!!!)把在sqlcmd中执行的命令拷贝至题目下方即可。求解任何三题,谢谢!

第三题。素数那是个老题了,用oracle的方法是这么写的
declare
counter int:=0;
begin
for i in 1..100 loop
for j in 1..i loop
if(mod(i,j)=0) then
counter:=counter+1;
--dbms_output.put_line(i|| '--' || j ||' counter='||counter);
end if;
end loop;
if(counter=2) then
dbms_output.put_line(i);
end if;
counter:=0;
end loop;
end;

第一题。
alter table dept add constraint pk_d primary key (deptno); --给dept表加主键
alter table emp add constraint fk_e foreign key(deptno) references dept(deptno); --给emp表加外键指向dept表中的deptno列。
至于那个目标视图,我不清楚SQL_SERVER里面有什么视图了,oracle的dba_constraints视图只能查询到你上面要求的一部分
select r_constraint_name from dba_constraints where table_name='emp';

第二题。
oracle里面装载了数据库的情况下貌似不能创建database了,给你一个创建表空间的数据文件的语句吧
create tablespace flash datafile 'd:\myoracle\flash.dbf' size 50m reuse;

⑵ 数据库技术与应用 sql server 2005教程实训答案

顺着你的思路说:现在是按VV1,VV2,VV3,VV4,VV5排序(适用于任意类型的字段):
select no=
(select count(1) from aaa t where
t.vv1<o.vv1 or --一个字段排序到此为止,但把<换成<=
t.vv1=o.vv1 and t.vv2<o.vv2 or--两个到此为止,但把最后的<换成<=
t.vv1=o.vv1 and t.vv2=o.vv2 and t.vv3<o.vv3 or--三个、四个以此类推
t.vv1=o.vv1 and t.vv2=o.vv2 and t.vv3=o.vv3 and t.vv4<o.vv4 or
t.vv1=o.vv1 and t.vv2=o.vv2 and t.vv3=o.vv3 and t.vv4=o.vv4 and t.vv5<=o.vv5
),*
from aaa o
order by vv1,vv2,vv3,vv4,vv5
------------------------------
看出来了吧?有多少个变量排序,就写多少层,书写起来麻烦,但查询起来,一个和多个速度基本是一样的,没有多大差别。

按照规律书写也并不麻烦,
规律总结一下,就是,
一层层复制,稍作修改。每层长出一组
每层最后一个符号是小于号(<),其余都是等号。
所有层的最后一个符号是小于等于(<=)。

如果按排序字段(本例为VV1,VV2,VV3,VV4,VV5)进行了索引,查询速度会大大加快。

⑶ SQL数据库(简单)简答题

Microsoft SQL Server 2000 简答题及其答案
1.在安装SQL Server 2000时,“仅客户端工具”、“服务器和客户端工具”及“仅连接”等安装定义有什么差别?

答:仅客户端工具:仅安装客户端工具。服务器和客户端工具:同时安装服务器和客户端工具。仅连接:仅安装客户端连接。

2.一个数据库中包含哪几种文件?

答:主数据库文件,辅助数据文件,事务日志文件。

3.事务文件和数据文件分开存放有什么好处?

答:因为利用事务日志备份可以将数据库恢复到特定的即时点(如输入不想要的数据之前的那一点)或故障发生点。在媒体恢复策略中应考虑利用事务日志备份。

4.什么是批处理?使用批处理有何限制?

答:包含一个或多个T-SQL语句的组,从应用程序将一次性发送到SQL Server执行,SQL Server批处理语句作为整体编译成一个可执行单元。

限制:如不能够在同一个批处理中更改表,然后引用新列。如在一个批处理程序中,有两条语句。第一条语句用来在一张表中插入一个字段,如在User表中插入员工的出生年月;第二条语句则用来引用这个列,如根据身份证号码来推算出这个员工的出身年月并把这个值赋值给这个第一条语句创建的出身年月字段。

5.数据检索时,COMPUTE和COMPUTE BY产生的结果有何不同?

答:Compute:第一个为明细行 第二个为聚合函数的合计 Compute by:第一个为明细行第二个为聚合函数的小计

6.什么是索引?索引分为哪两种?各有什么特点?

答:1、数据库中的索引与书籍中的目录类似。在一本书中,利用目录可以快速查找所需信息,无须阅读整本书。在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。 2、聚集索引和非聚集索引。

3、聚集索引的特点:行的物理位置和行在索引中的位置是相同的,每个表只能有一个聚集索引,聚集索引的平均大小大约为表大小的5%左右。

非聚集索引特点:若未指定索引类型,则默认为非聚集索引,叶节点页的次序和表的物理存储次序不同,每个表最多可以有249个非聚集索引,在非聚集索引创建之前创建聚集索引。

7.创建索引有什么优点和缺点?

答:优点:索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。

使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。

缺点:索引需要占用数据表以外的物理存储空间。创建索引和维护索引要花费一定的时间。当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。

8.什么是视图?使用视图的优点和缺点是什么?

答:视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

优点:1隐蔽数据库的复杂性2控制用户提取数据3简化数据库用户管理 4简化查询

缺点:1性能:SQL Server必须把视图的查询转化成对基本表的查询,如果这个视图是由,一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,SQL Server也,把它变成一个复杂的结合体,需要花费一定的时间。2修改限制:当用户试图修改视图的某些行时,SQL Server必须把它转化为对基本,表的某些行的修改。对于简单视图来说,这是很方便的,但是,对于比较复杂的,视图,可能是不可修改的。

9. 修改视图中的数据会受到哪些限制?

答:1、必须有权限 2、单表视图直接改

3、多表可在视图中定义 instead of 触发器.

4、对由多表连接成的视图修改数据时,不能同时影响一个以上的基表,也不能删除视图中的数据

5、对视图上的某些列不能修改,这些列是:计算列,内置函数列和行集合函数列

6、对具有NOT NULL 的列进行修改时可能会出错。通过视图修改或者插入数据时,必须保证未显示的具有NOT NULL 属性的列有值,可以是默认值,IDENTITY 等,否则不能像视图中插入数据行。

7、如果某些列因为规则或者约束的限制不能接受从视图插入的数据时,则插入数据可能会失败

8、删除基表并不删除视图,建议采用与表明显不同的名字命名规则

10. 什么是数据完整性?如果数据库不实施数据完整性会产生什么结果?

答:数据完整性是指数据的精确性和可靠性。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。

11.数据完整性有哪几类?如何实施?

答:1、数据完整性分为四类:实体完整性、域完整性、参照完整性、用户定义的完整性。

2、数据库采用多种方法来保证数据完整性,包括外键、束约、规则和触发器。系统很好地处理了这四者的关系,并针对不同的具体情况用不同的方法进行,相互交叉使用,相补缺点。

12. 什么是主键约束?什么是惟一约束?两者有什么区别?

答:主键约束:有一列或列的组合,其值能唯一的标识表中的每一行。

唯一约束:不允许数据库表在指定列上具有相同的值,但允许有空值。

区别:一个表可以定义多个唯一约束,只能定义一个主键约束;空值得列上可以定义唯一约束,不能定义主键约束。

13.什么是外键,怎样建立外键约束?

答:外键是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。

14.什么是存储过程?使用存储过程有什么好处?

答:1、是存储在服务器上的 Transact-SQL 语句的命名集合,是封装重复性任务的方法,支持用户声明变量、条件执行以及其他强有力的编程特性。

2、存储过程封装了商务逻辑,确保一致的数据访问和修改。若规则或策略有变化,则只需要修改服务器上的存储过程,所有的客户端就可以直接使用

屏蔽数据库模式的详细资料。用户不需要访问底层的数据库和数据库内的对象

提供了安全性机制。用户可以被赋予执行存储过程的权限,而不必在存储过程引用的所有对象上都有权限

改善性能。预编译的 Transact-SQL 语句,可以根据条件决定执行哪一部分

减少网络通信量。客户端用一条语句调用存储过程,就可以完成可能需要大量语句才能完成的任务,这样减少了客户端和服务器之间的请求/回答包

15.什么是触发器?触发器分有什么作用?

答:触发器是一类特殊的存储过程,不能被直接调用,也不传递或接受参数

作用:1、维护不可能在表创建时刻通过声明性约束进行的复杂的完整性约束限制。

2、通过记录所进行的修改以及谁进行了修改来审计表中的信息。

3、当表被修改的时候,自动给其他需要执行操作的程序发信号。

⑷ SQL Server 实用教程(第3版)课后实验答案 郑阿奇主编的 邮箱[email protected]

--查询全体学生的学号和姓名.
select Sno,Sname from Student

--查询全体学生的详细记录.
select * from Student

--查询所有选修课程的学生学号.
select distinct Sno from SC

--查询考试有不及格的学生学号.
select distinct Sno from SC where Grade<60

--查询不是信息系(is)、计算机系(cs)的学生性别、年龄、系别。
select Ssex,Sage,Sdept from Student where Sdept not in('is','cs')

--查询选修了4号课的学生学号和成绩,结果按成绩降序排列.
select Student.Sno,Grade from Student,SC where Cno='004' order by Grade desc

--查询每个课程号和相应的选课人数.
select Cno,count(Sno)选课人数 from SC group by Cno

--查询计算机系(cs)的学生姓名、年龄、系别。
select Sno,Sage,Sdept from Student where Sdept in('cs')

--查询年龄18~20岁的学生学号、姓名、系别、年龄。
select Sno,Sname,Sdept,Sage from Student where Sage between 18 and 20

--查询姓刘的学生的情况.
select * from Student where Sname like '刘%'

--查询既选修1号课程,又选修2号课程的学生学号.
select Sno from SC where Cno='001' and Cno='002'
select sno from SC where Cno='001' and Sno in (select Sno from SC where Cno='002')
select sno from SC where Cno='001' intersect select Sno from SC where Cno='002'

--查询学生的姓名和出生年份(今年2008年)
select Sname,2008-Sage as 出生年份 from student

--查询没有成绩的学生学号和课程号。
select Sno,Cno from sc where grade is null

--查询总成绩大于200分的学生学号。
select Sno from sc group by sno having sum(grade)>200

--查询每门课程不及格学生人数。
select cno,count(sno) 不及格人数 from sc where grade<60 group by cno

--查询不及格课程超过3门的学生学号。
select Sno from sc where grade<60 group by sno having count(grade)>3

--查询年龄为10~19岁的学生信息。
select * from student where Sage between 10 and 19

--查询全体学生情况,按所在系升序排列,同一个系的学生按年龄降序排列。
select * from student order by sdept, sage desc

--查询选了1号课程的学生平均成绩。
select avg(grade) from sc where cno='001'

--查询选了3号课程的学生的最高分。
select max(grade) from sc where cno='003'

--查询每个同学的总成绩。
select sno,sum(grade) 总成绩 from sc group by sno

---实验五

--查询每个学生及其选课情况。
select student.*,sc.*,course.* from student,sc,course where student.sno=sc.sno and sc.cno=course.cno
--select * from sc,student,course

--查询每门课程的间接选修课。
select first.cno,second.cpno from course first,course second where first.cpno=second.cno;

--将STUDENT,SC进行右连接。
select * from student,sc
select student.*,sc.* from student right join sc on student.sno=sc.sno

--查询有不及格学生的姓名和所在系。
select Sname,Sdept from student,sc where grade<60 and student.sno=sc.sno

--查询所有成绩为优秀(大于90)的学生姓名。
select Sname from student where sno in (select sno from sc group by sno having min(grade)>90)and sno not in (select sno from sc where grade is null) --错误
select sname from student,sc where student.sno=sc.sno and student.sno not in(select sno from sc where grade is null) group by sname having min(grade)>=90

--查询既选修了2号课程又选修了3号课程的学生姓名、学号。
select distinct Sname,Sc.Sno from student,sc where student.sno=sc.sno and sc.sno in(select sno from sc where cno='002' and sno in (select sno from sc where cno='003'))

--查询和刘晨同一年龄的学生。
select Sno,sname from student where sage=(select sage from student where sname='刘晨')

--选修了课程名为“数据库”的学生姓名和年龄。
select Sname,Sage from student where sno in(select sno from sc where cno=(select cno from course where cname='数据库'))

--查询其他系比IS系任一学生年龄小的学生名单。
select sname from student where sdept!='is'and sage<(select max(sage) from student where sdept='is')

--查询其他系中比IS系所有学生年龄都小的学生名单。
select Sname from student where sdept!='is' and sage<(select min(sage) from student where sdept='is')

--查询选修了全部课程的学生姓名.
select sname from student where not exists(select * from course where not exists(select * from sc where sno=student.sno and cno=course.cno)) --正确

--查询计算机系学生及其性别是男的学生.
select * from student where sdept='is' or ssex='男'

--查询选修课程1的学生集合和选修2号课程学生集合的差集。
select sc.sno from student,sc where student.sno=sc.sno and cno='001'
except
select sc.sno from student,sc where student.sno=sc.sno and cno='002'
--或者
select sno from sc where cno='001' and sno not in (select sno from sc where cno='002')

--查询李丽同学不学的课程的课程号.
select distinct cno from sc where cno not in (select cno from student,sc where sname='李丽'and student.sno=sc.sno)

--查询选修了3号课程的学生平均年龄.
select avg(sage) from student where sno in(select sno from sc where cno='003')

--求每门课程学生的平均成绩.
select cno,avg(grade) from sc group by cno

--统计每门课程的学生选修人数(超过3人的人统计)。要求输出课程号和选修人数,结果按人数降序排列,若人数相同,按课程号升序排列。

--查询学号比刘晨大,而年龄比他小的学生姓名。
select sname from student where sno>(select sno from student where sname='刘晨')and sage<(select sage from student where sname='刘晨')

--求年龄大于女同学平均年龄的男同学的姓名和年龄。
select sname,sage from student where sage>(select avg(sage) from student where ssex='女')and ssex='男'

--求年龄大于所有女同学年龄的男同学姓名和年龄。
select sname,sage from student where sage>(select max(sage) from student where ssex='女')and ssex='男'

--查询至少选修了08002选修的全部课程的学生号码。
--select cno from sc where sno='08002'
--select sno from sc where cno IN (select cno from sc where sno='08002')
--select * from sc A,sc B where A.SNO=B.SNO
--select * from (select distinct* from sc A,sc B where A.SNO=B.SNO)as e
select distinct sno from sc sc1 where not exists (select * from sc sc2 where sc2.sno='08002' and not exists (select * from sc sc3 where sc3.sno=sc1.sno and sc3.cno=sc2.cno))
--查询08001和08002两个学生都选修的课程的信息。
select course.* from course,sc where sno='08001' and course.cno=sc.cno intersect select course.* from course,sc where sno='08002' and course.cno=sc.cno
--查询跟'08001'同学同姓的学生信息
select * from student where sname like(select left(sname,1) from student where sno='08001')+'%'

⑸ 求sql数据库考试题答案

1.create database Readbook
on
(name=Readbook_data,filename='D:\server\Readbook_data.mdf',size=2mb,maxsize=10mb,filegrowth=1mb)
log on
(
name=Readbook_log,
filename='D:\server\Readbook_log.ldf',size=1mb,maxsize=5mb,filegrowth=1mb
)
go
2.use mybase
go
alter database mybase
add log file
(
name=Readbook2_log,
filename='D:\server\mybase2_log.ldf',size=2mb,maxsize=10mb,filegrowth=1mb
)
go
3.alter database mybase
remove file Readbook2_log

⑹ 请教sql数据库答案 基础的我忘了 我想知道答案进行操作 谢谢!!

不好意思 寝室要断电了 只能写这么多

/**
*创建student表
**/
create table student
(
SNo int, --学号
SN char(10), --姓名
SA int, --年龄
)
/**
*创建Course表
**/
create table Course
(
Cno int, --课程号
CN char(20), --课程名
CT char(10), --任课教师名
)

/*2 根据题1的学生关系模式,用SQL有关语句*/

--1插入任意三个学生的完整信息
insert into student(SNo,SN,SA)
values(001,'张一',19)
insert into student(SNo,SN,SA)
values(002,'张二',20)
insert into student(SNo,SN,SA)
values(003,'张三',21)

--2修改所有学生的年龄
update student set SA = SA+1 /*表示当前年龄SA+1*/ where SNo=001
update student set SA = SA+1 where SNo=002
update student set SA = SA+1 where SNo=003

⑺ 急求SQL数据库的实训总结,以及在实训中碰到的问题和体会

都差不多吧!我也写过一次,给你吧,希望能够帮到你

这个星期是我们SQL Server 数据库管理课的实训,经过一个星期的实训,让我领会到了许多平时课堂上所没有接受的课外知识,很让人受益匪浅,懂得如何去运用,而进行的一次分析设计综合的训练。而本次实训的目的是让我们掌握数据库系统的原理、技术。将理论与实际相结合,应用现有的数据库管理系统软件,规范、科学地完成一个设计与实现。

这次我们实训的内容是从数据库、数据表的创建和修改开始的,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操作过程中,有查看表信息、查看表属性、修改表中的数据、删除表中的数据及修改表和删除表的操作。从实训中让我更明白一些知识,表是数据最重要的一个数据对象,表的创建好坏直接关系到数数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际应用中多使用表,对表的规划和理解就会越深刻。我们实训的另一个内容是数据库的约束、视图、查询。从中我们了解到查询语句的基本结构,和简单SELECT语句的使用,多表连接查询。而在视图的操作中,也了解到了视图是常见的数据库对象,是提供查看和存取数据的另一种途径,对查询执行的大部分操作,使用视图一样可以完成。使用视图不仅可以简化数据操作,还可以提高数据库的安全性,不仅可以检索数据,也可以通过视图向基表中添加、修改和删除数据。存储过程、触发器也是我们实训的内容之一, 在操作中有建立存储过程,执行存储过程,及查看和修改存储过程,这些都是非常基础的东西,但对用户却是非常重要的呢,只有熟悉了T_SQL语言,才能更好的掌握更多的东西。我们还学习了,SQL管理、数据的导入、导出、备份和还原。有SQL Server 安全访问控制;登录账户的管理;数据库角色的管理;用户权限管理。维护数据库的安全是确保数据库正常运行的重要工作。数据的备份是对SQL Server数据事务日志进行拷贝,数据库备份记录了在进行备份操作的数据库中所有数据的状态。而数据的备份还分为数据库完整备份、差异备份、事务日志备份、文件及文件组备份。做数据备份就是为了以后的数据库恢复用。在实训内容上我们还做了仓库管理数据库,其中的要求包含了许多数据库的对象,综合了我们所学的许多知识,让我们更努力的把所学到的东西运用上去。

实训课是在学习与探索中度过的,短暂的一星期实训是结束了,但其中让我们学到了许多知识,出现许多未知的为什么,如仓库管理数据库的初步设置、数据备份与还原的步骤,如何建立视图、触发器等一系列的问题,正是在老师和同学的共同努力之下,我们才一步步把问题解决了,最终完成了不可能完成的任务。

⑻ 大工19秋《SQL数据库系统及应用》在线作业3(参考答案)

复合索引可以对数据库表中( )字段进行排序
A、11 B、16 C、17 D、1