SQL实验的题目和答案全解

SQL实验的题目和答案全解
SQL实验的题目和答案全解

数据库实验总汇

二、使用SQL Server 工具

在管理数据库系统和运行SQL查询的两个主要工具是企业管理器和查询分析器

三、实验目的

1.熟悉数据库的交互式SQL工具。

2.熟悉通过SQL对数据库进行操作。

3.完成上机练习。

四、实验内容(打※为选做题)

Part A

1.使用CREATE语句创建数据库

2. 使用CREATE语句创建基本表

3.更改基本表的定义,增加列,修改列的数据类型。

4.创建表的索引,取消表的索引

1、数据库的建立

使用SQL 语句建立关系数据库schooldemo

2、基本表的建立

在数据库schooldemo下,使用SQL 语句建立关系数据库表:人员表PERSON(Pno,Pname, Page),房间表ROOM(Rno,Rname,Rarea),表PR(Pno,Rno,Date).其中,表PERSON :Pno(CHAR(8),主码,非空,唯一),Pname(CHAR(20),非空),Page(INT);表ROOM:Rno(CHAR(8),主码,非空,唯一),Rname(CHAR(20)),Rarea(FLOAT (10));表PR:Pno(CHAR(8),非空,唯一),Rno(CHAR(8),非空,唯一),Date (DATETIME);

(三个表之间有联系)

3、更改基本表的定义,增加列,删除列,修改列的数据类型。

更改表PERSON,增加属性Ptype(类型是CHAR ,长度为10),把表ROOM中的属性Rname的数据类型改为长度为40。

4、创建表的索引,取消表的索引

为ROOM表创建按Rno降序排列的索引

创建PERSON表按Pname升序排列的唯一性索引

取消PERSON表Pname升序索引

5、删除表ROOM

实验过程(1.a)

1、数据库的建立

使用SQL 语句建立关系数据库schooldemo

create database schooldemo

on

(name=schooldemo,

filename='e:\123\school_data.mdf',

size=5mb,

maxsize=15mb,

filegrowth=10%)

log on

(name=schooldemo_log,

filename='e:\123\schooldemo.ldf',

size=5mb,

maxsize=15mb,

filegrowth=4mb)

2、基本表的建立

在数据库schooldemo下,使用SQL 语句建立关系数据库表:

人员表PERSON(Pno,Pname, Page),房间表ROOM(Rno,Rname,Rarea), 表PR(Pno,Rno,Date).其中,表PERSON :Pno(CHAR(8),主码,非空,唯一),

Pname(CHAR(20),非空),Page(INT);表ROOM:Rno(CHAR(8),主码,非空,唯一),

Rname(CHAR(20)),Rarea(FLOAT(10));表PR:Pno(CHAR(8),非空,唯一),

Rno(CHAR(8),非空,唯一),Date(DATETIME);

(三个表之间有联系)

create table person(

pno char (8)primary key,

pname char (20),

page int);

create table room(

rno char (8) primary key,

rname char(20),

rarea float(10));

create table pr(

pno char (8),

rno char (8),

date datetime,

primary key(pno,rno),

foreign key(pno) references person(pno),

foreign key(rno) references room(rno));

3、更改基本表的定义,增加列,删除列,修改列的数据类型。

更改表PERSON,增加属性Ptype(类型是CHAR ,长度为10),把表ROOM中的属性Rname的数据类型改为长度为40。

alter table person add ptype char(10);

alter table room alter column rname char (40);

4、创建表的索引,取消表的索引

为ROOM表创建按Rno降序排列的索引

创建PERSON表按Pname升序排列的唯一性索引

取消PERSON表Pname升序索引

create index rorno on room(rno desc);

create unique index pepname on person(pname asc);

drop index person.pepname

5、删除表ROOM

drop table room(要先删约束条件)

Part B

对School 数据库为例,在该数据库中存在四张表格,分别为:

●表STUDENTS(sid,sname,email,grade);

●表TEACHERS(tid,tname,email,salary);

●表COURSES(cid,cname,hour);

●表CHOICES(no,sid,tid,cid,score)。

在数据库中,存在这样的关系:学生可以选择课程。在表CHOICES中保存学生的选课记录。

要求对数据库进行查询操作:

(1)查询年级为2001的所有学生的名称并按照编号升序排列

(2)※查询学生的选课成绩合格的课程的成绩,并把成绩换算成为积点(60分对应积点为1分,每增加1分,积点增加0.1)

(3)查询课时是48或64的课程的名称

(4)查询所有课程记录中含有data的课程编号

(5)查询所有选课记录的课程号(要求不重复显示)

(6)统计所有老师的平均工资

(7)查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩降序排列

(8)统计各个课程的选课人数和平均成绩

(9)查询至少选修了三门课程的学生编号

(10)查询编号800009026的学生所选的全部课程的课程名和成绩

(11)查询所有选了database的学生的编号

(12)求出至少被两个学生选修的课程编号

(13)※查询选修了编号800009026的学生所选的某个课程的学生编号

(14)查询学生的基本信息及选修课程编号和成绩

(15)查询学号850955252的学生的姓名和选修的课程名称及成绩

(16)查询与学号850955252的学生同年级的所有学生资料

(17)查询所有有选课的学生的详细信息

(18)查询没有学生选的课程的编号

(19)查询选修了课程名为C++的学生学号和姓名

(20)找出选修课程成绩最好的选课记录。

(21)找出和课程UML或课程C++的课时一样的课程名称

(22)查询所有选修编号10001的课程的学生的姓名

(23)※查询选修了所有课程的学生姓名

(24)※利用集合运算,查询选修课程C++或课程Java的学生的学号

(25)※利用集合交运算,查询既选修课程C++又选修课程Java的学生的学号

(26)※利用集合减运算,查询选修课程C++而没有选修课程Java的学生的学号

实验过程(1.b)

(1)查询年级为2001的所有学生的名称并按照编号升序排列

Select sname

from students

where grade='2001'

order by sid;

(2)※查询学生的选课成绩合格的课程的成绩,并把成绩换算成为积点(60分对应积点为1分,每增加1分,积点增加0.1)

Select cid,score,1+0.1*(score-60) jidian

from choices

where score>='60';

(3)查询课时是48或64的课程的名称

select cname

from courses

where hour='48'or hour='64';

(4)查询所有课程记录中含有data的课程编号

select cid

from courses

where cname like'%data%';

(5)查询所有选课记录的课程号(要求不重复显示)

select distinct cid

from choices;

(6)统计所有老师的平均工资

select avg(salary)

from teachers;

(7)查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩降序排列答案:(241917)

select tid,avg(score)

from choices

GROUP BY tid ,cid

order by avg(score) desc;

(8)统计各个课程的选课人数和平均成绩

select cid,count(distinct sid),avg(score)

from choices

group by cid;

(9)查询至少选修了三门课程的学生编号

select sid

from choices

group by sid

having count(cid)>=3;或having count(*)>2;

(10)查询编号800009026的学生所选的全部课程的课程名和成绩

select distinct cname ,score

from courses,choices

where sid='800009026'and courses.cid=choices.cid;

(11)查询所有选了database的学生的编号

select sid

from choices ,courses

where cname='database'and choices.cid=courses.cid;

(12)求出至少被两个学生选修的课程编号

select cid

from choices

group by cid

having count(distinct sid)>=2;

(13)※查询选修了编号800009026的学生所选的某个课程的学生编号答案:(16481)

select distinct sid

from choices

where cid in (select cid

from choices

where sid='800009026')and sid<>'800009026';

(14)查询学生的基本信息及选修课程编号和成绩

select students.sid,sname,email,grade,cid,score

from students,choices

where students.sid=choices.sid;

(15)查询学号850955252的学生的姓名和选修的课程名称及成绩

select sname,cname,score

from students,courses,choices

where choices.sid='850955252'and students.sid=choices.sid and

courses.cid=choices.cid;

(16)查询与学号850955252的学生同年级的所有学生资料

法一:select *

from students

where grade=(select grade

from students

where sid='850955252');

法二:select students.*

from students

where grade in

(select grade

from students

where sid in

(select sid

from students

where sid='850955252'));

(17)查询所有有选课的学生的详细信息

select students.sid,sname,email,grade,no ,cid,score

from students,choices

where cid is not null and students.sid=choices.sid;

(18)查询没有学生选的课程的编号答案:(空)

select cid

from choices

group by cid

having count(sid)=0;

(19)查询选修了课程名为C++的学生学号和姓名

法一:select students.sid,students.sname

from students,courses,choices

where choices.sid in(select choices.sid

from choices

where courses.cid=(select courses.cid

from courses

where cname='c++'and students.sid=choices.sid

and courses.cid=choices.cid));

法二:select sid,sname

from students

where sid in

(select sid

from choices

where cid in

(select cid

from courses

where cname='c++'

);

(20)找出选修课程成绩最好的选课记录。(好)

select *

from choices

where score in

(select max(score)

from choices

);

(21)找出和课程UML或课程C++的课时一样的课程名称答案:(7门)

select cname

from courses

where hour in(select hour

from courses

where cname='c++ 'or cname='c++');

(22)查询所有选修编号10001的课程的学生的姓名

法一:select sname

from students

where sid in

(select sid

from choices

where cid='10001'

)

法二:

select students.sname

from choices,students

where cid='10001' and students.sid=choices.sid;

& (23)※查询选修了所有课程的学生姓名

select sname

from students

where not exists

(select*

from courses

where not exists

(select *

from choices

where sid=students.sid and cid=courses.cid

)

);

(24)※利用集合运算,查询选修课程C++或课程Java的学生的学号

select sid

from choices

where sid in

(select sid

from courses

where cname='c++'

)

union

select sid

from choices

where sid in

(select sid

from courses

where cname='java'

)

(25)※利用集合交运算,查询既选修课程C++又选修课程Java的学生的学号答案:(306)

Select distinct sid

From choices,courses

Where courses.cid=choices.cid

And https://www.360docs.net/doc/fd2681860.html,ame=’c++’

And sid in(

Select distinct sid

From choices,courses

Where courses.cid=choices.cid and https://www.360docs.net/doc/fd2681860.html,ame=’java’)

select sid

from choices

where sid in

(select sid

from courses

where cname='c++'

)

intersect

select sid

from choices

where sid in

(select sid

from courses

where cname='java')

(26)※利用集合减运算,查询既选修课程C++而没有选修课程Java 的学生的学号答案:(5570)

Select distinct sid

From choices,courses

Where courses.cid=choices.cid

And https://www.360docs.net/doc/fd2681860.html,ame=’c++’

And sid not in(

Select distinct sid

From choices,courses

Where courses.cid=choices.cid and https://www.360docs.net/doc/fd2681860.html,ame=’java’)

select sid

from choices

where sid in

(select sid

from courses

where cname='c++'

)

except

select sid

from choices

where sid in

(select sid

from courses

where cname='java')

Part C

数据更新:

1 使用语句向STUDENTS表里插入元组(编号:700045678,名字:LiMing。EMAIL:LX@https://www.360docs.net/doc/fd2681860.html,, 年级:1992)

2对每个课程,求学生的选课人数和学生的平均成绩,并把结果存入数据库。使用INSERT INTO子查询的方法实现

3在STUDENTS表中使用SQL语句将姓名为LiMing的学生的年级改为2002

4在TEACHERS表中使用SQL与将所有教师的工资加500元

5将姓名为zapyv的学生的课程C的成绩加上5分

6在STUDENTS表中使用SQL语句删除姓名为LiMing的学生信息

7删除所有选修课程java的选课记录

8对COURSES 表做删去时间<48的元组的操作,讨论其操作

视图:

1、要求创建一个行列子集视图CS,给出选课成绩合格的序号、学生编号、所选课程

号、及课程成绩。

2、创建基于多个基表的视图SCT,这个视图由学生姓名和他所选修的课程名及讲授该

课程的教师姓名构成

3、创建带表达式的视图SCC,由学生姓名及所选课程名和所有课程成绩都比原来多5

分这几个属性组成

4、创建分组视图,将学生的学号及他的平均成绩定义为一个视图

5、创建一个基于视图的视图,基于(1)中建立的视图,定义一个包括学生编号、学

生所选课程数目和平均成绩的视图

6、查询所有选修课程software engineering的学生姓名

7、插入元组(600000000,823069829,10010,59)到视图CS中。若是在视图的定义中

存在WITH CHECK OPTION子句对插入操作有什么影响

8、将视图CS(包含定义WITH CHECK OPTION)中,所有课程编号为10010的课

程的成绩都减去5分。这个操作数据库是否会正确,为什么?如果加上5分(原来95分以上的不变)呢?

9、在视图CS(包含定义WITH CHECK OPTION)删除编号804529880学生的记录,

会产生什么结果?

10、取消视图SCT和视图CS

实验过程(1.c)

Part C

数据更新:

1 使用语句向STUDENTS表里插入元组(编号:700045678,名字:LiMing。

EMAIL:LX@https://www.360docs.net/doc/fd2681860.html,, 年级:1992)

insert

into students(sid,sname,email,grade)

values('700045678','liming','LX@https://www.360docs.net/doc/fd2681860.html,','1992');

2 对每个课程,求学生的选课人数和学生的平均成绩,

并把结果存入数据库。使用INSERT INTO子查询的方法实现

create table s_a(

rs int,

avg_scores float(10) primary key);

insert

into s_a(rs,avg_scores)

select count(distinct sid),avg(score)

from choices

group by cid;

3 在STUDENTS表中使用SQL语句将姓名为LiMing的学生的年级改为2002

update students

set grade='2002'

where sname='liming';

4 在TEACHERS表中使用SQL与将所有教师的工资加500元

update teachers

set salary=salary+500;

5 将姓名为zapyv的学生的课程C的成绩加上5分

update choices

set score=score+5

where sid+cid in(select sid,cid

from students,courses,choices

where sname='zapyv'and cname='c'and

students.sid=choices.sid and

courses.cid=choices.cid);

update choices

set score=score+5

where sid in(select sid

from students

where sname='zapyv')and

cid in(

select cid

from courses

where cname='c');

6 在STUDENTS表中使用SQL语句删除姓名为LiMing的学生信息

delete

from students

where sname='LiMing';

7 删除所有选修课程java的选课记录

delete

from choices

where cid in

(select cid

from courses

where cname='java');

8 对COURSES 表做删去时间<48的元组的操作,讨论其操作

delete

from courses

where hour<=48;

视图:

1、要求创建一个行列子集视图CS,给出选课成绩合格的序号、学生编号、所选课程号、及课程成绩。

create view cs(no,sid,cid,score)

as

select no,sid,cid,score

from choices

where score>='60'

with check option

2、创建基于多个基表的视图SCT,这个视图由学生姓名和他所选修的课程名

及讲授该课程的教师姓名构成

create view sct(sname,cname,tname)

as

select sname,cname,tname

from courses,students,choices,teachers

where courses.cid=choices.cid and

students.sid=choices.sid and

teachers.tid=choices.tid

with check option

3、创建带表达式的视图SCC,由学生姓名及所选课程名和所有课程成绩都

比原来多5分这几个属性组成

create view scc(sname,cname, chengji)

as

select sname,cname,score+5

from students,courses,choices

where students.sid=choices.sid and

courses.cid=choices.cid

with check option

4、创建分组视图,将学生的学号及他的平均成绩定义为一个视图

create view s_g(sid,avg_score)

as

select sid,avg(score)

from choices

group by sid

5、创建一个基于视图的视图,基于(1)中建立的视图,定义一个包括学生编号、

学生所选课程数目和平均成绩的视图

create view s_cs(sid,courses_shu,avg_score)

as

select sid,count(cid),avg(score)

from cs

group by sid

6、查询所有选修课程software engineering的学生姓名

select distinct sname

from sct

where cname='software engineering';

7、插入元组(600000000,823069829,10010,59)到视图CS中。若是在视图的定义中存在WITH CHECK OPTION子句对插入操作有什么影响

insert

into cs

values('600000000','823069829',10010,59);

服务器: 消息550,级别16,状态1,行 1

试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了WITH CHECK OPTION,而该操作的一个或多个结果行又不符合CHECK OPTION 约束的条件。

语句已终止。

8、将视图CS(包含定义WITH CHECK OPTION)中,所有课程编号为10010的课程的成绩都减去5分。

这个操作数据库是否会正确,为什么?如果加上5分(原来95分以上的不变)呢?

update cs

set score=score-5

where cid='10010';

服务器: 消息550,级别16,状态1,行 1

试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了WITH CHECK OPTION,而该操作的一个或多个结果行又不符合CHECK OPTION 约束

的条件。

语句已终止。

update choices

set score=score-5

where cid='10010';

(所影响的行数为6027 行)

update cs

set score=score+5

where cid='10010';

(所影响的行数为4170 行)

update choices

set score=score+5

where cid='10010';

(所影响的行数为6027 行)

update cs

set score=score+5

where cid='10010'and score<95;

(所影响的行数为3586 行)

总结:因为cs中的检查条件是成绩》=60,故当score-5时会出现score《60的情况,所以不能执行,

而对choices的操作是直接在表中操作,就不用检查视图中的条件,而在视图上增删改数据就要检查,

视图定义中的条件。

9、在视图CS(包含定义WITH CHECK OPTION)删除编号804529880学生的记录,会产生什么结果?

delete

from cs

where sid='804529880';

(所影响的行数为 5 行)

10、取消视图SCT和视图CS

drop view SCT

drop view cs

实验 2 数据库安全性控制

一、实验目的

本实验的目的是通过实验加深对数据安全性的理解,并掌握SQL Server中有关用户登录认证以及管理的方法。同时能够使用SQL语句来向用户授予和收回权限,熟悉角色管理。

二、实验内容

A、在SQL Server 企业管理器中,设置SQL Server 的安全认证模式

操作:在企业管理器窗口总展开服务器组,用鼠标右击需要设置的SQL服务器,在弹出的菜单中选择“属性”项,则出现SQL Server属性对话框,选择“安全性”选项卡,在“身份验证”一栏选择“SQL Server 和Windows”单选按钮。之后,在企业管理器展开服务组后,用鼠标单击“安全性”文件夹右侧的‘+’,用鼠标右击“登录”,在弹出的菜单中选择“新建登录”项,则出现新建登录对话框。

新建登录对话框有常规,服务器角色和数据库访问三个选项卡进行设置:

?在常规选项卡中输入用户名为“USER1”,选择SQL Server安全验证,输入用户口令

?在服务器角色选项卡中,需要确定用户所属的服务器角色,在本例中采用默认

?在数据库访问选项卡中,需要指定次登录可以访问的数据库(School)和Public的数据库角色

?单击“确定”按钮,则完成了登录用户的工作

B、在数据库School中建立三个用户USER1、USER2、USER3,它们在数据库中的角色是PUBLIC。请按以下要求,分别以管理员身份或这三个用户的身份登录到数据库中,进行操作。

(1)授予所有用户对表COURSES的查询权限

(2)授予用户USER1对表STUDENTS插入和更新的权限,但不授予删除权限,并且授予用户USER1传播这两个权限的权利。

(3)允许用户USER2在表CHOICES中插入元组,更新SCORE列,可以查询除了sid 以外的所有列

(4)用户USER1授予用户USER2 对表STUDENTS插入和更新的权限,并且授予用户USER2传播插入和更新操作的权利

(5)收回对用户USER1对表COURSES查询权限的授予

(6)由上面(2)和(4)的授权,再由用户USER2对用户USER3授予表STUDENTS 插入和更新的权限,并且授予用于USER3传播插入和更新操作的权利。这个时候如果由USER3对USER1授予表STUDENTS的插入和更新的权利是否能够成功?

如果由DBA取消USER1的权限,对USER2有什么影响。

(7)通过SQL Server企业管理器,创建一个数据库角色OP_of_students,它代表一个可以对STUDENTS表进行操作的操作员,对角色的权限进行设置,并将用户USER1

添加到这个角色中。

(8)创建在选课表CHOICES上的视图CS_View,授权给计算机系的开计算机科学这门课程(课程号:10010)的数据库用户USER1,让他具有视图上的select权限。(9)对视图上的score属性列的update权限授予用户USER1,让他可以修改学生的成绩,但是不能对学生的基本信息,如学号、选课号进行修改。

实验3 数据库完整性控制

一、实验目的

本实验的目的是学习建立外键,以及利用FOREIGN…REFERENVES子句以及各种约束保证参照完整性;学习用户自定义约束,并实践用户自定义完整性;创建和使用触发器。

二、实验内容(打※为选做题)

(1) 建立表S tu_Union(sno CHAR(5)非空唯一,sname CHAR(8),ssex CHAR(1),sage INT,

sdept CHAR(20), CONSTRAINT PK_Stu_Union PRIMARY KEY(sno));建立表Course(cno CHAR(4)非空唯一,cname CHAR(50) 非空, cpoint INT, CONSTRAINT PK PRIMARY KEY(cno)),并在Stu_Union中插入数据。

(2) 建立表SC,令sno和cno分别为参照表S tu_Union和Course的外键,设定为级联删

除,并令(sno,cno)为其主键,属性grade INT类型。在不违反参照完整性的前提下,插入数据。

(3) 演示违反参照完整性的插入数据。

(4)在S tu_Union中删除数据,演示级联删除。

(5)在Course中删除数据,演示级联删除。

(6)为了演示多重级联删除,建立S tu_Card,令stu_id为参照Students表的外键, 令card_id

为其主键,属性restored_money为d ecimal(10,2)类型, 并插入数据。

(7)为了演示多重级联删除,建立ICBC_Card,令stu_card_id为参照Stu_Card表的外键,

令bank_id 为其主键,属性remained_money为decimal(10,2)类型, 并插入数据。

(8)通过删除Students表中的一条记录,演示三个表的多重级联删除用户。(先修改Choices)

(9)创建worker表,并自定义2个约束U1以及U2,其中U1规定Name字段唯一,U2

规定sage(级别)字段的上限是28。

sql数据库期末考试题及答案

一、单选题(共 10 道试题,共 50 分。)V 1. SQL Server中,保存着每个数据库对象的信息的系统表是( C)。 A. sysdatabases B. Syscolumns C. Sysobjects D. Syslogs 2. 在存在下列关键字的SQL语句中,不可能出现Where子句的是(D )。 A. Update B. Delete C. Insert D. Alter 3. 在查询语句的Where子句中,如果出现了“age Between 30 and 40”,这个表达式等同于(A )。 A. age>=30 and age<=40 B. age>=30 or age<=40 C. age>30 and age<40 D. age>30 or age<40 4. 如果要在一张管理职工工资的表中限制工资的输入范围,应使用(D )约束。 A. PDRIMARY KEY B. FOREIGN KEY C. unique D. check 5. 记录数据库事务操作信息的文件是(D )。 A. 数据文件 B. 索引文件 C. 辅助数据文件 D. 日志文件 6. 要查询XSH数据库CP表中产品名含有“冰箱”的产品情况,可用( C)命令。 A. SELECT * FROM CP WHERE 产品名称 LIKE ‘冰箱’ B. SELECT * FROM XSH WHERE 产品名称 LIKE ‘冰箱’ C. SELECT * FROM CP WHERE 产品名称 LIKE ‘%冰箱%’ D. SELECT * FROM CP WHERE 产品名称=‘冰箱’ 7. 储蓄所有多个储户,储户能够在多个储蓄所存取款,储蓄所与储户之间是(D )。 A. 一对一的联系 B. 一对多的联系 C. 多对一的联系 D. 多对多的联系 8. SQL的聚集函数COUNT、SUM、AVG、MAX、MIN不允许出现在查询语句的( D)子句之中。 A. SELECT B. HAVING C. GROUP BY… HAVING D. WHERE 9. 列值为空值(NULL),则说明这一列( C)。 A. 数值为0

数据库SQL实验题目

实验一数据定义操作 实验目的 1.掌握数据库和表的基础知识 2.掌握使用创建数据库和表的方法 3.掌握数据库和表的修改、查看、删除等基本操作方法 实验内容和要求 一、数据库的创建 在开始菜单中,启动SQl Server 程序中的“SQL Server Management Studio”,在对象资源管理器窗口中,右键单击“数据库”,选择“新建数据库”,创建成绩管理数据库Grademanager,要求如下表所示: Grademanager数据库参数表 参数参数值参数参数值 存储的数据文件路 径 D:\db\ 存储的日志文件路径D:\db\ 数据文件初始大小5MB 日志文件初始大小2MB 数据文件最大值20MB 日志文件最大值15MB 数据文件增长量原来10% 日志文件增长量2MB 二、表的创建、查看、修改和删除 1.表的创建 在Grademanager数据库中,右键单击“表”,选择“新建表”命令,创建如下表所示的表:(1)Student表的表结构 字段名称数据类型长度精度小数位数是否允许 Null值 说明 Sno Char 10 0 0 否学号,主码 Sname Varchar 8 0 0 是姓名 Ssex Char 2 0 0 是性别,取值:男或女 Sbirthday Date 8 0 0 是出生日期 Sdept Char 16 0 0 是系名 Speciality Varchar 20 0 0 是专业名 特别注意: 为属性Ssex设置约束,需选中属性Ssex行,然后单击菜单中的“表设计器”,选择“CHECK 约束”命令,然后按照图1进行设置。

图1 设置性别的约束 (2)Course表(课程名称表)的表结构 字段名称数据类型长度精度小数位数是否允许Null值说明 Cno Char 5 0 0 否课程号,主码Cname Varchar 20 0 0 否课程名 (3)SC表(成绩表)的表结构 字段名称数据类 型 长 度 精 度 小数位 数 是否允许Null值说明 Sno Char 10 0 0 否学号,外码 Cno Char 5 0 0 否课程号,外码 Degree Decimal 5 5 1 是成绩,0~100之间 特别注意: ①为属性Degree 约束,可参照属性Ssex进行设置,“CHECK约束对话框”中的表达式为Degree>=1 And Degree<=100 ②为SC表设置外键Sno和Cno的方法: 右键单击表SC,选择“设计”命令,然后选择菜单“表设计器”中的“关系”命令,打开“外键关系”窗口,选择“添加”按钮,然后单击“表和列规范”后的按钮,按照图2进行设置,即可将SC表中的Cno属性设置为外键。按照相同的方法,将属性Sno也设置为外键。

数据库实验四:SQL数据查询

数据库实验四:SQL数据查询 一、实验目的与要求: 1.实验目的 熟练掌握SQL SELECT语句,能运用查询语句完成各种查询。 实验内容: 在实验三和实验四的基础上完成查询操作,将题目中的x, y等具体化: 1、一般简单查询 (1)不带条件的查询指定字段(考虑去掉和不去掉重复值两种情况)。 (2)查询某个表中的所有记录。 (3)使用单个条件的简单查询。 (4)使用多个条件(AND关系)的查询。 (5)使用多个条件(OR关系)的查询。 (6)使用多个条件(混合AND和OR关系)的查询。 (7)使用带NOT运算的查询。 (8)使用BETWEEN···AND···的查询。 (9)使用NOT···BETWEEN···AND···的查询。 (10)使用LIKE运算符的字符串匹配查询。 (11)使用LIKE运算符的模板匹配查询。 (12)查询空值和非空值的查询 (13)结果要求排序的查询 (14)查询结果按多列排序,并分别要求升序和降序的查询。 (15)使用TOP显示前若干记录的查询。 (16)使用TOP显示前若干记录的查询,如果有满足条件的并列记录一并显示。 2、连接查询 (17)两个关系的连接查询。

(18)带其他查询条件的两个关系的连接查询。 (19)多个关系(三个以上)的连接查询。 (20)两个关系的广义笛卡尔积运算结果。 (21)根据两个关系的广义笛卡尔积运算结果得到两个关系进行自然连接的结果。 (22)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段。 (23)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中列出所有教师信息(即包括不是任 何课程责任教师的教师信息)。 (24)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中能够反映目前没有确定责任教师的 课程信息。 (25)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中既能够反映目前不是责任教师的教 师信息,又能反映目前没有确定责任教师的课程信息。 提示:(22)~(25)分别用内连接、左连接、右连接完成,分析它们的效果。 3、嵌套查询(注意使用ANY、ALL和EXISTS) (26)使用IN运算的简单嵌套查询。 (27)使用NOT IN运算的简单嵌套查询。 (28)使用关系运算(如等于)的简单嵌套查询。 (29)使用ANY或SOME的简单嵌套查询。 (30)使用ALL的简单嵌套查询。 (31)查询院系名称含“计算机”、职称为教授、所负责教程为必修课的教师姓名、职称、课程名称和课程学时等信息(分别用嵌套查询和连接 查询完成,分析各自的效率)。 (32)设计两个内外层互相关的嵌套查询。

数据库SQLServer实验3答案教辅教材

实验3 SQL Server数据表管理 一、实验目的 1.学会使用SQL Server管理平台和Transact-SQL语句CREATE TABLE 和ALTER TABLE创建和修改表。 2.学会在SQL Server管理平台中对表进行插入、修改和删除数据操作。 3.学会使用Transact-SQL语句对表进行插入、修改和删除数据操作。 4.了解SQL Server的常用数据类型。 二、实验内容 1.启动SQL Server管理平台,在对象资源管理器中展开“studentsdb数据库文件夹。 2.在studentsdb数据库中创建数据表《学生表》、《课程表》、《成绩表》,数据结 构如图3-1、图3-2和图3-3所示。 图3-1 学生表 图3-2 课程表

图3-3 成绩表3.在SQL Server管理平台中创建《学生表》、《课程表》。 4.在SQL Server管理平台中,将《学生表》的学号列设置为主键,非空。 5.使用Transact-SQ语句CREATE TABLE在studentsdb数据库中创建《成绩表》。 6.《学生表》、《课程表》、《成绩表》中的数据如图3-4、图3-5和图3-6所示。 7.在SQL Server管理平台中为《学生表》、《课程表》、《成绩表》添加数据。

(注意:在添加数据是必须逐行输入,否则系统将会报错,显示“出错信息为:键列信息不足或不正确。更新影响到多行”,产生原因是由于相同记录所造成)。 8.使用Transact-SQL语句INSERT NTTO …VALUES向studentsdb数据库的《成绩表》插入以下数据: 学号课程编号成绩 0004 0001 80

sql数据库期末考试题及答案

一、单选题(共10 道试题,共50 分。) 1. SQL Server中,保存着每个数据库对象的信息的系统表是(C)。 A. sysdatabases B. Syscolumns C. Sysobjects D. Syslogs 2. 在存在下列关键字的SQL语句中,不可能出现Where子句的是(D)。 A. Update B. Delete C. Insert D. Alter 3. 在查询语句的Where子句中,如果出现了“age Between 30 and 40”,这个表达式等同于(A)。 A. age>=30 and age<=40 B. age>=30 or age<=40 C. age>30 and age<40 D. age>30 or age<40 4. 如果要在一张管理职工工资的表中限制工资的输入范围,应使用(D)约束。 A. PDRIMARY KEY B. FOREIGN KEY C. unique D. check 5. 记录数据库事务操作信息的文件是(D)。 A. 数据文件 B. 索引文件 C. 辅助数据文件 D. 日志文件 6. 要查询XSH数据库CP表中产品名含有“冰箱”的产品情况,可用(C)命令。 A. SELECT * FROM CP WHERE 产品名称LIKE …冰箱? B. SELECT * FROM XSH WHERE 产品名称LIKE …冰箱? C. SELECT * FROM CP WHERE 产品名称LIKE …%冰箱%? D. SELECT * FROM CP WHERE 产品名称=…冰箱? 7. 储蓄所有多个储户,储户能够在多个储蓄所存取款,储蓄所与储户之间是(D)。 A. 一对一的联系 B. 一对多的联系 C. 多对一的联系 D. 多对多的联系 8. SQL的聚集函数COUNT、SUM、AVG、MAX、MIN不允许出现在查询语句的(D)子句之中。 A. SELECT B. HAVING C. GROUP BY… HAVING D. WHERE 9. 列值为空值(NULL),则说明这一列(C)。 A. 数值为0 B. 数值为空格 C. 数值是未知的 D. 不存在 10. 数据库的数据一般存放在(D)中。 A. 内存 B. CPU C. 寄存器 D. 磁盘 二、判断题(共10 道试题,共50 分。)V 1. 如果定义视图的FROM子句包括多张表,并且视图中列来自多张表,则不能用DML语句通过视图操纵数据。 A. 错误 B. 正确 2. 在sysdatabases中,还记录着存储过程中每个参数的信息。A A. 错误 B. 正确 3. 在SELECT语句中,当使用ORDER BY子句时,一定要使用GROUP BY 子句。A A. 错误 B. 正确 4. 由于索引是独立的,删除表时,与该表相关的索引并不被删除。A A. 错误 B. 正确 5. 日志文件用于存放恢复数据库用的所有日志信息,每个数据库至少拥有一个日志文件,也可以拥有多个日志文件,扩展名ldf B A. 错误 B. 正确 6. 使用INSERT命令一次只能插入一行数据。A A. 错误 B. 正确

数据库-SQL语言的实验

北华航天工业学院《数据库原理与应用》 实验报告 报告题目:SQL语言 作者所在系部:计算机系 作者所在专业:网络工程 作者学号:20114052233 作者姓名: 张旭刚 指导教师姓名:李建义 完成时间:20134.24 北华航天工业学院教务处制

SQL语言 一、实验目的 1、理解数据库以及数据表的设计; 2、熟悉SQLServer2005中的数据类型; 3、熟悉使用SQL语句创建和删除模式和索引; 4、掌握使用SQL语句创建、修改和删除数据表; 5、掌握使用SQL语句查询表中的数据; 6、掌握使用SQL语句插入、修改和删除数据表中的数据; 7、掌握使用SQL语句创建、删除、查询和更新视图。 二、实验内容 (一)创建数据库和模式 1、通过SQL语句创建图书信息管理数据库,命名为“db_Library”,数据文件和日志文件放在D盘下以自己学号和姓名命名的文件夹中,数据文件的逻辑名为db_Library_data,数据文件的操作系统名为db_Library_data.mdf,文件初始大小为10MB,最大可增加至300MB,增幅为10%;日志文件的逻辑名为db_Library_log,日志文件的操作系统名为db_Library_data.ldf,文件初始大小为5MB,最大可增加至200MB,增幅为2MB。 2、通过SQL语句在该数据库中创建模式L-C。 (二)创建和管理数据表 要求为各数据表的字段选择合适的数据类型及名称;为各数据表设置相应的完整性约束条件。 1、通过SQL语句将以下数据表创建在L-C模式下: 课程信息表(tb_course)——课程编号、课程名、先修课、学分 2、通过SQL语句将以下数据表创建在该数据库的默认模式dbo下: 图书类别信息表(tb_booktype)——类别编号、类别名称 图书信息表(tb_book)——图书编号、类别编号、书名、作者、出版社、定价、库存数 读者信息表(tb_reader)——读者编号、姓名、性别、学号、班级、系部 借阅信息表(tb_borrow)——图书编号、读者编号、借阅日期、归还日期 3、通过SQL语句对读者信息表进行修改:删除系部字段、添加所在系字段。 4、通过SQL语句对图书信息表进行修改:将定价的数据类型改为REAL。 5、通过SQL语句删除课程信息表。 (三)创建和删除索引 1、使用SQL语句在图书信息表上创建一个非聚簇索引IX_S_QUANTITY,要求按照该表中库存数字段的降序创建。 2、使用SQL语句在读者信息表上创建一个唯一的非聚簇索引IX_S_NAME,要求按照该表中的姓名字段的升序创建。 3、使用SQL语句删除之前创建的两个索引。 (四)数据库及数据表设计 根据周围的实际应用情况,自选一个小型的数据库应用项目进行研究,完成该系统的设计。要求2人一组,通过需求分析,列出系统的主要功能,并完成该系统数据库的逻辑结构设计。例如可选择学籍管理系统、企业进销存管理系统、人事管理系统或在线考试系统等。

SQL-Server-期末考试题目及答案

SQL Server 期末考试题目及答案 一、单选题 1. Microsoft公司的SQL Server2000数据库管理系统一般只能运行于()。 A. Windows平台 B. UNIX平台 C. LINX平台 D. NetWare平台 2. 当一条SELECT语句访问一大表里的有限几行数据时,SQL Server2000通常会()。 A. 为数据加上页级锁 B. 为数据加上行级锁 C. 需要用户的干涉和参与 D. 使用户独占数据库 3. 当采用Windows认证方式登录数据库服务器时,SQL Server2000客户端软件会向操作系统请求一个()。 A. 信任连接 B. 集成 C. 并发控制 D. 数据转换服务 4. 以下对SQL Server2000描述不正确的是()。 A. 支持XML B. 支持用户自定义函数 C. 支持集成 D. 支持网状数据模型 5. 如果在SQL Server2000上运行一个非常大的数据库,为取得较好效果应选用安装()。 A. 企业版 B. 标准版 C. 个人版 D. 开发版 6. 提高SQL Server2000性能的最佳方法之一是()。 A. 增大硬盘空间 B. 增加存 C. 减少数据量 D. 采用高分辨率显示器 7. SQL Server2000标准版不支持的操作系统是()。 A. Windows 2000 Server B. Windows NT Server C. Windows98 D. Windows 2000 Advanced Server 8. 如果希望完全安装SQL Server2000,则应选择()。 A. 典型安装 B. 最小安装 C. 自定义安装 D. 仅连接 9. 要想使SQL Server2000数据库管理系统开始工作,必须首先启动()。 A. SQL Server服务器 B. 查询分析器 C. 网络实用工具 D. 数据导入和导出程序 10. 用于配置客户端网络连接的工具是()。 A. 企业管理器 B. 客户端网络实用工具 C. 查询分析器 D. 联机帮助文档 11. SQL Server2000的物理存储主要包括3类文件()。 A. 主数据文件、次数据文件、事务日志文件 B. 主数据文件、次数据文件、文本文件 C. 表文件、索引文件、存储过程 D. 表文件、索引文件、图表文件 12. 当数据库损坏时,数据库管理员可通过何种方式恢复数据库()。 A. 事务日志文件 B. 主数据文件 C. DELETE语句 D. 联机帮助文件 13. SQL Server2000系统中的所有系统级信息存储于哪个数据库()。 A. master B. model C. tempdb D. msdb 14. 下面关于tempdb数据库描述不正确的是()。 A. 是一个临时数据库 B. 属于全局资源 C. 没有权限限制 D. 是用户建立新数据库的模板

SQL SERVER2005期末考试试题

一、单选题(每小题1分,共20分) 1.下列数据类型,在定义时需要指出数据长度的是() Aint B text C char D money 2.若定义一个学生的出生日期,则应该选用( )类型。 A datetime B char C int D text 3.若定义一个职工姓名,最多4个汉字,则最舒适的类型定义为()。 A char(10) B text C varchar(8) D int 4.如果想求最高成绩,可以使用()函数。 A.SUM B.COUNT C.MIN D.MAX 5.下列哪个不是数据库对象?() A 数据模型 B 视图 C 表 D 用户 6.下列哪个既不是SQL数据文件也不是日志文件的后缀() A .mdf B .ldf C .ndf D .docx 7.下面字符串能与通配符表达式“China%”进行匹配的是。() A ina B C_hina C ChinaXIAN D Chin%F 8.SQLserver安装程序创建了四个系统数据库,下列哪个不是系统数据库?() A STUD B B master C model D msdb 9.若想限定某列在表中不允许出现重复的数据且不能为空值,应当使用()约束完成。 A CHECK B PRIMARY KEY C FOREIGN KEY D UNIQUE 10.每个数据库有且只有一个()。 A 主要数据文件 B 次要数据文件 C 日志文件 D 索引文件 11.数据库系统的日志文件可用于记录下述哪类内容() A 程序运行结果 B 数据查询操作 C 数据更新操作 D 以上全部操作 12.以下关于外键和相应的主键之间的关系正确的是() A 外键不一定要与相应的主键同名 B 外键一定要与相应的主键同名 C 外键一定与相应的主键同名且唯一 D 外键一定与相应主键同名,但不一定唯一 13.在SQL查询语句中,from子句中可以出现() A 数据库名 B 表名 C 列名 D 表达式 14.在使用聚合函数时,把空值计算在内的函数是() A COUNT(*) B SUM C MAX D A VG 15.关于索引的说法错误的是()。 A 索引可以加快数据的检索速度,但降低了数据维护的速度。 B 非聚集索引应该在聚集索引被创建之前建立 C 在默认情况下所建立的索引是非聚集索引 D 建立主键约束时会自动建立唯一性索引 16.在一个表可以建立()个聚集索引 A 4 B 3 C 2 D 1 17.关于视图说法错误的是( ) A 视图不是真实存在的基础表而是一个虚拟表

SQL数据库实验报告 实验二

实验2 SQL Server数据库的管理 1.实验目的 (1)了解SQL Server 数据库的逻辑结构和物理结构的特点。 (2)掌握使用SQL Server管理平台对数据库进行管理的方法。 (3)掌握使用Transact-SQL语句对数据库进行管理的方法。 2.实验内容及步骤 (1)在SQL Server管理平台中创建数据库。 ①运行SQL Server管理平台,在管理平台的对象资源管理器中展开服务器。 ②右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。在新建数据库对话框的数据库名称文本框中输入学生管理数据库名studentsdb,单击“确定”按钮。 (2)选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文件组”、“选项”、“权限”和“扩展属性”等页面。 (3)打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改studentsdb数据文件的“分配的空间”大小为2MB。指定“最大文件大小”为5MB。修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。 (4)单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL 语句CREATE DA TABASE创建studb数据库。然后通过系统存储过程sp_helpdb查看系统中的数据库信息。 (5)在查询设计器中使用Transact-SQL语句ALTER DATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。 (6)在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。 (7)使用SQL Server管理平台将studb数据库的名称更改为student_db。 (8)使用Transact-SQL语句DROP DATABASE删除student_db数据库。 3.实验思考 (1)数据库中的日志文件是否属于某个文件组? (2)数据库中的主数据文件一定属于主文件组吗? (3)数据文件和日志文件可以在同一个文件组吗?为什么? (4)删除了数据库,其数据文件和日志文件是否已经删除?是否任何人都可以删除数据库? (5)能够删除系统数据库吗?

数据库SQL语句实验报告

《数据库原理及应用》实验报告 SQL语句部分 总成绩:

实验一熟悉SQL SERVER,数据定义实验 实验一成绩: 一、实验目的 1、利用查询分析器创建数据库 2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作 二、实验步骤及内容 在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。 1.创建学生课程数据库 3.创建课程关系表C : 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 7、删除表S的“年龄”属性列。 8、删除S姓名列的唯一值约束。 9、修改SC表成绩属性列为精确数字型。 10、在表S上,按“Sno”属性列的唯一值方式建立索引。 11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。 12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。 三、实验结果: 1.创建学生课程数据库 create database Studend; create table S ( Sno CHAR(9)PRIMARY KEY, Sname CHAR(20)UNIQUE, Ssex CHAR(2), Sage smallint, Sdept char(20), );

3.创建课程关系表C : 课程号课程名先行课学分 Cno Cname Cpno ccredit create table C ( Cno char(4)primary key, Cname CHAR(40), Cpno char(4), Ccredit SMALLINT, ); 4.创建课程关系表SC : 学号课程号成绩 Sno Cno grade create table SC ( Sno char(9), Cno char(4), Grade smallint, ); 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 alter table S add Sbirthday datetime; 7、删除表S的“年龄”属性列。 alter table S drop column Sage;

数据库sqlserver实验报告

实验一熟悉常用的 DBMS:SQL SERVER2008、Oracle 试验内容及要求: (1)了解不同数据库管理系统及不同版本的相应功能特点 目前,商品化的数据库管理系统以关系型数据库为主导产品,技术比较成熟。面向对象的数据库管理系统虽然技术先进,数据库易于开发、维护,但尚未有成熟的产品。国际国内的主导关系型数据库管理系统有Oracle、Sybase、INFORMIX和INGRES。这些产品都支持多平台,如UNIX、VMS、Windows,但支持的程度不一样。IBM的DB2也是成熟的关系型数据库。但是,DB2是内嵌于IBM的AS/400系列机中,只支持OS/400操作系统。 1.MySQL MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家基于MySQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。 MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass- deployed)的软件中去。与其他数据库管理系统相比,MySQL具有以下优势: (1)MySQL是一个关系数据库管理系统。 (2)MySQL是开源的。 (3)MySQL服务器是一个快速的、可靠的和易于使用的数据库服务器。 (4)MySQL服务器工作在客户/服务器或嵌入系统中。 (5)有大量的MySQL软件可以使用。 2.SQL Server SQL Server是由微软开发的数据库管理系统,是Web上最流行的用于存储数据的数据库,它已广泛用于电子商务、银行、保险、电力等与数据库有关的行业。 目前最新版本是SQL Server2005,它只能在Windows上运行,操作系统的系统稳定性对数据库十分重要。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。 SQL Server 提供了众多的Web和电子商务功能,如对XML和Internet标准的丰富支持,

数据库期末考试试题及答案2

数据库期末考试试题 ━━━━━━━━━━━━━━━ 一、填空共30题(共计30分) ━━━━━━━━━━━━━━━ 第1题(1.0分)题号:2385 ORDER BY 子句实现的是【1】. 答案: =======(答案1)======= 排序 第2题(1.0分)题号:2374 如果列上有约束,要删除该列,应先删除【1】 答案: =======(答案1)======= 相应的约束 第3题(1.0分)题号:2394 在每次访问视图时,视图都是从【1】中提取所包含的行和列. 答案: =======(答案1)======= 基表 第4题(1.0分)题号:2372 1.在增加数据文件时,如果用户没有指明文件组,则系统将该数据文件增加到【1】文件组. 答案: =======(答案1)======= 主 第5题(1.0分)题号:2371 查看XSCJ数据库信息的存储过程命令是【1】 答案: =======(答案1)======= sp_helpdb

第6题(1.0分)题号:2392 创建视图定义的T-SQL语句的系统存储过程是【1】. 答案: =======(答案1)======= sp_helptext 第7题(1.0分)题号:2379 1. 表的外键约束实现的是数据的【1】完整性. 答案: =======(答案1)======= 参照 第8题(1.0分)题号:2390 要进行模糊匹配查询,需要使用【1】关键字来设置查询条件. 答案: =======(答案1)======= LIKE 第9题(1.0分)题号:2380 定义标识列的关键字是【1】. 答案: =======(答案1)======= identity 第10题(1.0分)题号:2383 在进行多表查询是,必须设置【1】条件. 答案: =======(答案1)======= 连接 第11题(1.0分)题号:2363 联系两个表的关键字称为【1】

北邮数据库实验二用SQL Server实现数据库设计

实验二用SQL Server实现数据库设计 实验目的: 1.掌握使用企业管理器创建和管理SQL Server数据库及相关数据库对象。 2.掌握使用SQL语言中的SELECT命令实现查询功能。 上机准备: 1.复习有关关系数据库的基本知识和概念; 2.复习有关SQL语言中SELECT命令的使用; 3.了解有关SQL Server系统的组成; 4.复习有关SQL Server服务器的使用和管理; 5.复习有关企业管理器的基本操作; 6.复习有关查询分析器的基本操作; 7.了解有关SQL Server服务器的登陆账号,密码; 实验内容: 本实验将建立一个学校教学管理数据库,在这个数据库中,存储以下信息: 1.有关学生的信息,包括学生的学号,姓名,班级,性别,出生时间,政治面貌,籍贯,入学时间,联系电话,简历; Student(Sno,Sname, Ssex,Classno,Sbirth,Status,Hometown,Enrollment,Telephone,Resume) 2.有关班级的信息,包括班级的班名,专业,年级,人数,班主任; SClass(ClassNo,ClassName,Major,Grade,Number,Advisor)

3.有关课程的信息,包括课程编号,课程名称,课程类别(是指该课程为必修,指选还是任选),适用专业,适用年级,开课时间(是指在每个学年的第一学期,还是第二学期),学分,周学时; Course(CourseNo,CourseName,Category,Major,Grade,StartTM,Credits, WeekHours) 4.有关学年课程安排的信息,包括课程编号,开设课程的学年(例如:2002学年),开设课程的班级,任课教师; Schedule(CourseNo,StartYear,ClassNo,Teacher)

sql数据库期末考试题及答案完整版

s q l数据库期末考试题 及答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

一、单选题(共 10 道试题,共 50 分。)V 1. SQL Server中,保存着每个数据库对象的信息的系统表是( C)。 A. sysdatabases B. Syscolumns C. Sysobjects D. Syslogs 2. 在存在下列关键字的SQL语句中,不可能出现Where子句的是(D )。 A. Update B. Delete C. Insert D. Alter 3. 在查询语句的Where子句中,如果出现了“age Between 30 and 40”,这个表达式等同于(A )。 A. age>=30 and age<=40 B. age>=30 or age<=40 C. age>30 and age<40 D. age>30 or age<40 4. 如果要在一张管理职工工资的表中限制工资的输入范围,应使用(D )约束。 A. PDRIMARY KEY B. FOREIGN KEY C. unique D. check 5. 记录数据库事务操作信息的文件是(D )。 A. 数据文件 B. 索引文件 C. 辅助数据文件 D. 日志文件 6. 要查询XSH数据库CP表中产品名含有“冰箱”的产品情况,可用( C)命令。 A. SELECT * FROM CP WHERE 产品名称 LIKE ‘冰箱’ B. SELECT * FROM XSH WHERE 产品名称 LIKE ‘冰箱’ C. SELECT * FROM CP WHERE 产品名称 LIKE ‘%冰箱%’ D. SELECT * FROM CP WHERE 产品名称=‘冰箱’ 7. 储蓄所有多个储户,储户能够在多个储蓄所存取款,储蓄所与储户之间是(D )。 A. 一对一的联系 B. 一对多的联系 C. 多对一的联系 D. 多对多的联系 8. SQL的聚集函数COUNT、SUM、AVG、MAX、MIN不允许出现在查询语句的( D)子句之中。 A. SELECT B. HAVING C. GROUP BY… HAVING D. WHERE

数据库SQL语句实验报告

《数据库原理及应用》实验报告SQL语句部分 :绩成总

实验一熟悉SQL SERVER,数据定义实验 实验一成绩: 一、实验目的 1、利用查询分析器创建数据库 2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作 二、实验步骤及内容 在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。 1.创建学生课程数据库 2.创建学生关系表S : 3.创建课程关系表C : 课程名学分先行课课程号Cno ccreditCname Cpno 4.创建课程关系表SC : 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 7、删除表S的“年龄”属性列。 8、删除S姓名列的唯一值约束。 9、修改SC表成绩属性列为精确数字型。 10、在表S上,按“Sno”属性列的唯一值方式建立索引。 11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。 12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。 三、实验结果: 1.创建学生课程数据库 ; Studend create database2.创建学生关系表S : S create table(, 9Sno CHAR()PRIMARYKEY UNIQUE,)(Sname CHAR20CHAR Ssex (2), smallint Sage ,

char Sdept 20(), ); .创建课程关系表C 3: 课程号课程名先行课学分 ccredit Cpno CnoCname table C create (primary key,) Cno char(4Cname CHAR(40 ),char(), 4Cpno ,Ccredit SMALLINT); 4.创建课程关系表SC : 学号课程号成绩 grade Sno Cno createtable SC(9),Sno char(),char Cno (4, Grade smallint); 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 ;datetimeadd Sbirthday alter table S 7、删除表S的“年龄”属性列。

数据库SQL期末考试复习题修改版汇编

2012-2013 SQL数据库期末考试复习题 一、数据库操作题: 1.为学生选课管理系统创建名为“stuCourse”的数据库。 (1)主数据库文件和日志文件的逻辑分别为stuCourse _data和stuCourse _log。 (2)物理文件存放在d:\data文件夹中。 create database stuCourse on PRIMARY( name= stuCourse_data, filename='d:\data\stuCourse_data.mdf' ) log on ( name= stuCourse_log, filename='d:\data\stuCourse_log.ldf', ) 2.为学生选课管理系统数据库(stuCourse)创建表,表结构如下。 (1)用SQL语句创建学生表,学生(学号,姓名,性别,年龄,系别),并设置约束:性别=‘男’或“女”。 (2)创建选课表,选课(学号,分数,课程编号,教师编号)。 3. 设计其E-R图,并标示出实体的主码。 4.用SQL语句插入数据,数据如表4-21~表4-25所示。 表4-21 学生表数据 表4-22选课表数据

5、对stuCourse数据库进行以下查询: 1.查询全体学生的学号、姓名和年龄。 select学号,姓名,年龄from学生表 2.查询选修了课程的学生号。 select distinct学号from选课表 3.查询选修课程号‘C3’的学号和成绩。 select学号,分数from选课表where课程编号='C3' 4.查询成绩高于85分的学生的学号、课程号和成绩。 select学号,课程编号,分数from选课表where分数>85 5.查询选修了C1或C2且分数大于等于85分的学生和学号、课程号和成绩。 select学号,课程编号,分数from选课表 where分数>85 and课程编号='C1'or课程编号='C2' 6.查询选修C1或C2的学生的学号、课程号和成绩。 select学号,课程编号,分数from选课表 where课程编号='C1'or课程编号='C2' 7.查询所有姓张的学生的学号和姓名。 select学号,姓名from学生表where姓名like'张%' 8.查询选修C1的学生姓名和成绩,并按成绩降序排列。 select s.姓名,x.分数 from学生表as s,选课表as x where x.课程编号='C1'and s.学号=x.学号 order by x.分数desc 9.查询与学生"宋江"相同系学生的学号和姓名。 select学号,姓名 from学生表 where系别=(select系别from学生表where姓名='宋江') 10.在分组查询中使用HA VING条件,查询平均成绩大于85的学生学号及平均成绩。 select avg(分数)as平均分 from选课表 group by学号 HAVING avg(分数)>85

数据库 实验报告5 ESQL

实验内容: 编写嵌入式C 程序,编程实现了对“学生课程数据库”的访问和操作:对Student 表中的年龄进行更新。系统每输出一个学生记录,询问用户是否更新。如果要更新,就输入新的年龄。 一. 实验环境介绍。 实验五是在之前完成的实验一的基础上进行的。 系统配置为:CPU: P3 800 内存:512MB 硬盘:30G 软件系统:WINDOWS 2000 ADV ANCED SERVER 。 在实验一中,我们已经成功安装了KingbaseES V4.1,形成本实验所需要的环境。其中安装路径为C:\Program Files 目录下。 二.编写含嵌入式C 程序test ,扩展名为.pc 。 EXEC SQL BEGIN DECLARE SECTION; /*说明主变量deptname ,HSno ,HSname , char deptname[20]; *HSsex ,HSage ,NEWAGE 。*/ char HSno[9]; char HSname[20]; char HSsex[2]; int HSage; int NEWAGE; EXEC SQL END DECLARE SECTION; /*声明部分结束*/ long SQLCODE; EXEC SQL INCLUDE sqlca; /*定义SQL 通信区*/ int main(void) { int count = 0; char yn; /*变量yn 代表yes 或者no*/ printf("Please choose the department name(CS/MA/IS): "); /*为主变量deptname 赋值*/ scanf("%s", &deptname); EXEC SQL CONNECT TO 学生课程数据库@localhost:54321 USER "SYSTEM"/"MANAGER"; /*连接数据库TEST*/ EXEC SQL DECLARE SX CURSOR FOR /*说明游标,为查询和更新做准备*/ SELECT Sno, Sname, Ssex, Sage FROM Student WHERE SDept = :deptname; EXEC SQL OPEN SX; /*打开游标。*/ for ( ; ; ) /*用循环结构逐条处理结果集的记录*/ { 《数据库系统概论》实验报告 题目:实验五 通过嵌入式SQL 访问数据库 姓名 Vivian 日期 2006-1-1

SQL-SERVER数据库实验报告(详细)

数据库原理及应用实验报告 学号:姓名: 实验1 一、实验目的: 熟悉SQL Server使用界面,掌握使用SSMS和SQL语句创建并设置数据库。 二、实验原理: 1.使用SSMS创建数据库 2.创建数据库语句: CREATE DATABASE 数据库名 [ON [PRIMARY] //指定一个文件为主要文件 [<文件格式>[,…n]] [,<文件组格式>[,…n]] ] [LOG ON {<文件格式>[,…n]}] <文件格式>::= ([NAME=逻辑文件名,] FILENAME=‘操作系统下的文件名和路径’ [,SIZE=文件初始容量] [,MAXSIZE={文件最大容量|UNLIMITED}] [,FILEGROWTH=递增值])[,…n] <文件组格式>::=FILEGROUP 文件组名<文件格式>[,…n] 3.修改数据库语句: ALTER DATABASE 数据库名 {ADD FILE <文件格式>[,…n] [TO FILEGROUP 文件组名] |ADD LOG FILE<文件格式>[,…n] |REMOVE FILE 逻辑文件名 |ADD FILEGROUP 文件组名 |REMOVE FILEGROUP 文件组名 |MODIFY FILE<文件格式> |MODIFY FILEGROUP 文件组名文件组属性} ::= (NAME=逻辑文件名 [,FILENAME=‘实际文件名和路径’] [,SIZE=容量] [,MAXSIZE={最大容量|UNLIMITED}] [,FILEGROWTH=递增量]) 三、实验内容: 1. 使用SQL语句完成下题 (1)使用CREATE DATABASE语句创建一个名为“st”数据库,要求①主要数据文件:逻辑文件名为“stdata1”,实际文件名为“stdata1.mdf”②事务日志文件:逻 辑文件名为“stlog1”,实际文件名为“stlog1.ldf”③初始容量均为3MB,最 大容量均为10MB,递增量均为1MB。

相关文档
最新文档