数据库原理及应用实验二参考答案

一.实验内容及要求

1.创建数据库和数据表(在相应位置贴上SQL语句)

(1)利用资源管理器,在D盘建立以自己的姓名为名称的文件夹,以便保存数据库。

(2)登录并连接到SQL Server 服务器。

(3)利用SQL语句建立名称为Study的数据库文件,主文件名为Study_Data.mdf,日志文件名为Study_Log.ldf,它们的保存路径在第(1)步中建立的文件夹。

create database Study

on

primary(name=Study_Data,

filename='F:\Study_Data.mdf',

size=5MB,

maxsize=50MB,

filegrowth=5MB)

log on(

name=Study_Log,

filename='F:\Study_Log.ldf',

size=2MB,

maxsize=50MB,

filegrowth=5MB)

go

数据库名

文件名

初始大小

最大大小

增长方式

文件组

Study

Study_Data

5MB

50MB

5MB

Primary

Study_Log

2MB

50MB

5MB

MyLog

 

(5)利用对象资源管理器在已经建立的Study数据库中分别建立以下六个数据表。

① 学生基本情况数据表Student,结构如下

 

字  段  名

字 段 类 型

约 束 控 制

字段含义说明

s_no

char(6)

primary key

学号

class_no

char(6)

not null

班级号

s_name

varchar(10)

not null

学生姓名

s_sex

char(2)

‘男’或‘女’

性别

s_birthday

datetime

 

出生日期

 

② 班级数据表Class,结构如下:

 

字  段  名

字 段 类 型

约 束 控 制

字段含义说明

class_no

char(6)

primary key

班级号

class_name

char(20)

not null

班级名称

class_special

varchar(20)

 

所属专业

class_dept

char(20)

 

系别

 

③ 课程数据表Course,结构如下:

 

字  段  名

字 段 类 型

约 束 控 制

字段含义说明

course_no

char(5)

primary key

课程号

course_name

char(20)

not null

课程名称

course_score

numeric(6,2)

 

学分

 

④ 选修课程情况数据表Choice,结构如下:

 

字  段  名

字 段 类 型

约 束 控 制

字段含义说明

s_no

char(6)

 

学号

course_no

char(5)

 

课程号

score

numeric(6,1)

 

成绩

 

⑤ 教师数据表Teacher,结构如下:

 

字  段  名

字 段 类 型

约 束 控 制

字段含义说明

t_no

char(6)

primary key

教师号

t_name

varchar(10)

not null

教师姓名

续表   

字  段  名

字 段 类 型

约 束 控 制

字段含义说明

t_sex

char(2)

‘男’或‘女’

性别

t_birthday

datetime

 

出生日期

t_title

char(10)

 

职称

 

⑥ 教师任课情况表Teaching,结构如下:

 

字  段  名

字 段 类 型

约 束 控 制

字段含义说明

couse_no

char(5)

 

课程号

t_no

char(6)

 

教师号

use Study;

 

create table Student(

s_no char(6) primary key,

class_no char(6) not null,

s_name varchar(10) not null,

s_sex char(2) check(s_sex in('','')),

s_birthday datetime)

go

create table Class(

class_no char(6) primary key,

class_name char(20) not null,

class_special varchar(20),

class_dept char(20))

go

create table Course(

cours_no char(5) primary key,

course_name char(20) not null,

course_score numeric(6,2))

go

create table Choice(

s_no char(6),

course_no char(5),

score numeric(6,1))

go

create table Teacher(

t_no char(6) primary key,

t_name varchar(10) not null,

t_sex char(2) check(t_sex in('','')),

t_birthday datetime,

t_title char(10))

go

create table Teaching(

course_no char(5),

t_no char(6))

go

 

 

(5)在Study数据库中,向以上建立的六个数据表中分别输入以下内容。

① 学生基本情况数据表Student的内容如下:

 

s_no

class_no

s_name

s_sex

s_birthday

991101

js9901

张彬

1981-10-1

991102

js9901

王蕾

1980-8-8

991103

js9901

李建国

1981-4-5

991104

js9901

李平方

1981-5-12

991201

js9902

陈东辉

1980-2-8

991202

js9902

葛鹏

1979-12-23

991203

js9902

藩桃芝

1980-2-6

991204

js9902

姚一峰

1981-5-7

001101

js0001

宋大方

1980-4-9

001102

js0001

许辉

1978-8-1

001201

js0002

王一山

1980-12-4

001202

js0002

牛莉

1981-6-9

002101

xx0001

李丽丽

1981-9-19

002102

xx0001

李王

1980-9-23

use Study

insert

into  Student(s_no,class_no,s_name,s_sex,s_birthday)

values ('991101','js9901','张彬','','1981-10-1')

insert

into  Student(s_no,class_no,s_name,s_sex,s_birthday)

values ('991102','js9901','王蕾','','1980-8-8')

insert

into  Student(s_no,class_no,s_name,s_sex,s_birthday)

values ('991103','js9901','李建国','','1981-4-5')

insert

into  Student(s_no,class_no,s_name,s_sex,s_birthday)

values ('991104','js9901','李平方','','1981-5-12')

insert

into  Student(s_no,class_no,s_name,s_sex,s_birthday)

values ('991201','js9902','陈东辉','','1980-2-8')

insert

into  Student(s_no,class_no,s_name,s_sex,s_birthday)

values ('991202','js9902','葛鹏','','1979-12-23')

insert

into  Student(s_no,class_no,s_name,s_sex,s_birthday)

values ('991203','js9902','藩桃芝','','1980-2-6')

insert

into  Student(s_no,class_no,s_name,s_sex,s_birthday)

values ('991204','js9902','姚一峰','','1981-5-17')

insert

into  Student(s_no,class_no,s_name,s_sex,s_birthday)

values ('001101','js0001','宋大方','','1980-4-9')

insert

into  Student(s_no,class_no,s_name,s_sex,s_birthday)

values ('001102','js0001','许辉','','1978-8-1')

insert

into  Student(s_no,class_no,s_name,s_sex,s_birthday)

values ('001201','js0002','王一山','','1980-12-4')

insert

into  Student(s_no,class_no,s_name,s_sex,s_birthday)

values ('001202','js0002','牛莉','','1981-6-9')

insert

into  Student(s_no,class_no,s_name,s_sex,s_birthday)

values ('002101','xx0001','李丽丽','','1981-9-19')

insert

into  Student(s_no,class_no,s_name,s_sex,s_birthday)

values ('002102','xx0001','李王','','1980-9-23')

 

go

② 班级数据表Class的内容如下:

 

class_no

class_name

class_special

class_dept

js9901

计算机99-1

计算机

计算机系

js9902

计算机99-2

计算机

计算机系

js0001

计算机00-1

计算机

计算机系

js0002

计算机00-2

计算机

计算机系

xx0001

信息00-1

信息

信息系

xx0002

信息00-2

信息

信息系

use Study

 

insert

into Class(class_no,class_name,class_special,class_dept)

values('js9901','计算机99-1','计算机','计算机系')

insert

into Class(class_no,class_name,class_special,class_dept)

values('js9902','计算机99-2','计算机','计算机系')

insert

into Class(class_no,class_name,class_special,class_dept)

values('js0001','计算机00-1','计算机','计算机系')

insert

into Class(class_no,class_name,class_special,class_dept)

values('js0002','计算机00-2','计算机','计算机系')

insert

into Class(class_no,class_name,class_special,class_dept)

values('xx0001','信息00-1','信息','信息系')

insert

into Class(class_no,class_name,class_special,class_dept)

values('xx0002','信息00-2','信息','信息系')

go

③ 课程数据表Course的内容如下:

 

course_no

course_name

course_score

01001

计算机基础

3

01002

程序设计语言

5

 

续表   

course_no

course_name

course_score

01003

数据结构

6

02001

数据库原理与应用

6

02002

计算机网络

6

02003

微机原理与应用

8

use Study

 

insert into Course(course_no,course_name,course_score)

values('01001','计算机基础',3)

insert into Course(course_no,course_name,course_score)

values('01002','程序设计语言',5)

insert into Course(course_no,course_name,course_score)

values('01003','数据结构',6)

insert into Course(course_no,course_name,course_score)

values('02001','数据库原理与应用',6)

insert into Course(course_no,course_name,course_score)

values('02002','计算机网络',6)

insert into Course(course_no,course_name,course_score)

values('02003','微机原理与应用',8)

go

④ 选修课程情况数据表Choice的内容如下:

 

s_no

course_no

score

991101

01001

88.0

991102

01001

 

991103

01001

91.0

991104

01001

78.0

991201

01001

67.0

991101

01002

90.0

991102

01002

58.0

991103

01002

71.0

991104

01002

85.0

 

use Study

 

insert into Choice(s_no,course_no,score)

values('991101','01001',88.0)

insert into Choice(s_no,course_no)

values('991102','01001')

insert into Choice(s_no,course_no,score)

values('991103','01001',91.0)

insert into Choice(s_no,course_no,score)

values('991104','01001',78.0)

insert into Choice(s_no,course_no,score)

values('991201','01001',67.0)

insert into Choice(s_no,course_no,score)

values('991101','01002',90.0)

insert into Choice(s_no,course_no,score)

values('991101','01002',58.0)

insert into Choice(s_no,course_no,score)

values('991102','01002',71.0)

insert into Choice(s_no,course_no,score)

values('991103','01002',85.0)

go

⑤ 教师数据表Teacher的内容如下:

 

t_no

t_name

t_sex

t_birthday

t_title

000001

李英

1964-11-3

讲师

000002

王大山

1955-3-7

副教授

000003

张朋

1960-10-5

讲师

000004

陈为军

1970-3-2

助教

000005

宋浩然

1966-12-4

讲师

000006

许红霞

1951-5-8

副教授

000007

徐永军

1948-4-8

教授

000008

李桂菁

1940-11-3

教授

000009

王一凡

1962-5-9

讲师

000010

田峰

1972-11-5

助教

 

Use Study

insert into Teacher(t_no,t_name,t_sex,t_birthday,t_title)

values('000001','李英','女','1964-11-3','讲师')

insert into Teacher(t_no,t_name,t_sex,t_birthday,t_title)

values('000002','王大山','男','1955-3-7','副教授')

insert into Teacher(t_no,t_name,t_sex,t_birthday,t_title)

values('000003','张朋','男','1960-10-5','讲师')

insert into Teacher(t_no,t_name,t_sex,t_birthday,t_title)

values('000004','陈为军','男','1970-3-2','助教')

insert into Teacher(t_no,t_name,t_sex,t_birthday,t_title)

values('000005','宋浩然','男','1966-12-4','讲师')

insert into Teacher(t_no,t_name,t_sex,t_birthday,t_title)

values('000006','许红霞','女','1951-5-8','副教授')

insert into Teacher(t_no,t_name,t_sex,t_birthday,t_title)

values('000007','徐永军','男','1948-4-8','教授')

insert into Teacher(t_no,t_name,t_sex,t_birthday,t_title)

values('000008','李桂菁','女','1940-11-3','教授')

insert into Teacher(t_no,t_name,t_sex,t_birthday,t_title)

values('000009','王一凡','女','1962-5-9','讲师')

insert into Teacher(t_no,t_name,t_sex,t_birthday,t_title)

values('000010','田峰','男','1972-11-5','助教')

go

⑥ 教师任课情况表Teaching的内容如下:

 

course_no

t_no

01001

000001

01002

000002

01003

000002

02001

000003

02002

000004

01001

000005

01002

000006

01003

000007

02001

000007

02002

000008

use Study

insert into Teaching(course_no,t_no)

values('01001','000001')

insert into Teaching(course_no,t_no)

values('01002','000002')                  

insert into Teaching(course_no,t_no)

values('01003','000002')

insert into Teaching(course_no,t_no)

values('02001','000003')

insert into Teaching(course_no,t_no)

values('02002','000004')

insert into Teaching(course_no,t_no)

values('01001','000005')

insert into Teaching(course_no,t_no)

values('01002','000006')

insert into Teaching(course_no,t_no)

values('01003','000007')

insert into Teaching(course_no,t_no)

values('02001','000007')

insert into Teaching(course_no,t_no)

values('02002','000008')

go

 

(6)利用对象资源管理器的数据库备份功能,将以上建立的数据库Study备份到所建立的文件夹中,并将备份文件拷贝到U盘中,以备下面的题目使用。

2.修改表结构

(1).为选修课程情况数据表Choice添加主码约束。主码为s_no和course_no

Alter table choice  add  constraint c1 primary key(s_no,couse_no) 

go

(2).为选修课程情况数据表Choice添加外码约束。外码为s_no和course_no

Alter table choice add constraint c2 foreign key(s_no) references Student(s_no)

 go

Alter table choice add constraint c3 foreign key(course_no) references Course(course_no)

go

(3).将数据库中的班号列class_no的字段长度变为8

Alter table class alter column class_no char(8)

(4).为教师数据表Teacher添加一列所属学院t_belong

Alter table Teacher add   t_belong  varchar(20)

go

(5).为学生表Student添加年龄列s_age,默认值18

Alter table Student  add  s_age int default 18

go

3.更新表数据

(1).将学生许辉的性别设为男。

update Student set s_sex='男' where s_name='许辉'   go

(2).将学号为’001101’的学生的姓名设为宋小方.

update Student  set s_name='宋小方'  where s_no='001101'  go

(3).将学生表Student的男生的年龄增加2岁

update Student  set s_age+=2  where s_sex='男'  go

(4).将陈为军老师的职称变为讲师

update Teacher set t_title='讲师'   where t_name='陈为军'   go

实验1 数据库数据定义 1、创建一个名为XSCJ的数据库,其初始大小为5MB,最大大小10MB,允许数据库自动增长,增长方式是按10%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。 2、将以上XSCJ数据库的主数据文件的最大大小改为不限制。 3、参照教材82页例3.5、例3.6、例3.7分别建立Student表、Course表和SC表,并录入数据库表中相应元组。 4、分别采用SQL编程模式和设计模式修改Course表,为其增加一列开课学期,数据类型自行定义。 5、为Course表的Cname列建立一个唯一索引,索引名Cname_idx。 6、分离数据库XSCJ并拷贝文件至U盘保存好,用于下次实验;然后再将其附加上。 7、删除唯一索引Cname_idx。 8、删除基本表Student。 实验2 数据查询 将上次实验课的学生成绩数据库(XSCJ)附加到SQL SERVER中,录入数据后做如下查询。 1) 查询选修了课程的学生的学号; 2) 查询全体学生的姓名和出生年份,并将列别名改为XM和CSNF; 3) 查询年龄在18到20(包括18岁和20岁)之间学生的学号、姓名和系。 4) 查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。 5) 用LIKE查询课程名为DB_ S的课程号和学分。 6) 查所有有成绩的学生学号和课程号。 7) 查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄升序排列 8) 查询选修了课程的学生人数。 9) 计算1号课程的学生平均成绩。 10) 查询有2人以上(含2人)同学选修课程的课程号。 11) 查询1号课程的间接先修课。 12) 查询每个学生的学号、姓名、选修的课程名成绩。 13) 找出每个学生高于他选修课程平均成绩的课程号。 实验3 数据更新和视图 将学生成绩数据库(XSCJ)附加到SQL SERVER中,完成如下实验任务。 1) 将一个新学生元组(学号:95007;姓名:张娜丽;性别:女;所在系:IS;年龄:18岁)插入到Student表中。 2) 插入一条选课记录,插入一条选课记录( '95007','1 ')。 3) 对每一个系,求学生的平均成绩,并把结果存入数据库。 (建立一张表,然后通过子查询将结果插入表中。) 4)将全体学生的年龄增加一岁。 5)将信息系全体学生的成绩置零。 6)删除95001学生的记录。 7)删除信息系所有学生的选课记录。 8)建立计算机学生的视图CS_S。(视图中包括学号,姓名,年龄,系),并要求进行修改和插入操作时仍需保证该视图只有计算机系的学生。(视图中包含的属性名称自拟) 9)向CS_S视图中插入分别插入两条信息,如果不能插入说明原因。 (学号:95002;姓名:李华华;所在系:IS;年龄:18岁) (学号:95003;姓名:王冬冬;所在系:CS;年龄:20岁) 10)利用CS_S视图完成以下查询。 查询计算机学生年龄小于20岁的学生(学号、年龄) 查询计算机系选修了2号课程的学生(学号、姓名)。 实验4 数据库的安全性 实验内容 将学生成绩数据库(XSCJ)附加到SQL SERVER中,完成如下实验任务。 (1)在SQL Server Management Studio中创建三个登录帐户:log1、log2、log3。 (2)利用前面建立的XSCJ数据库,用log1登录,能否操作XSCJ数据库?为什么? (3)将log1、log2、log3映射为XSCJ数据库中的用户。 注意:此映射步骤会为登陆名log1在XSCJ中自动建立同名数据库用户log1。log2和log3同理。 (4)用log1登录,能否访问XSCJ数据库?为什么? (5)授予log1、log2、log3具有对Student、Course、SC三张表的查询权。并且log1有权将查询SC表的权限授予其他用户。 (6)分别用log1、log2、log3登录,对上述三张表执行查询。 (7)分别用log1、log2登陆,在查询分析器中执行以下语句,用来授予log3 对SC表的访问权限,会出现什么情况? 实验5 数据库的完整性 将学生成绩数据库(XSCJ)附加到SQL SERVER中,完成如下实验任务。 (1)录入或变更数据,验证所建立的实体完整性规则其违约处理。 (2)录入或变更数据,验证所建立的参照完整性规则其违约处理。 (3)自行设定某些列,使得其不允许取空值。 (4)自行设定某些列,使得该列值不允许重复。 (5)自行设定某些列的默认值。 (6)用Check短语限定考试成绩的取值范围在0到100之间。 (7)为Student表设计一个触发器,使得新增一个学生时,自动为其分配一个学号。 实验6 数据库编程

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

拾光分享网

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值