数据库原理与 SQL 全部答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
)
LOG ON
(NAME = 'zygl_Log',
FILENAME ='E:\sql\zygl_Log.LDF' ,
SIZE = 3, FILEGROWTH = 1
)
GO
--4
ATLER DATABASE ZYGL
MODIFY FILE
( NAME =ZYGL_DAT,重量,仓库号,数量c)
零件(零件名,规格)
材料(材料编号,名称,仓库号,数量a)
仓库(仓库号,地点,面积,保管员)
产品-零件(产品名,零件名,组装日期b)
零件-材料(材料编号,零件名,生产日期a)
零件-仓库(零件名,仓库号,数量b)
3、一个图书馆理系统中有如下信息:
图书:书号、书名、数量、位置
第一章习题答案
DDCB DADD
2、某医院病房计算机管理中需要如下信息:
一个科室有多个病房、多个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人的主管医生只有一个。
完成:设计该计算机管理系统的E-R图
4.假设某公司的业务规则如下:
(1)公司下设几个部门,如技术部、财务部、市场部等;
手机号码char(11),
工龄tinyint constraint ck_gl check(工龄>=0 and工龄<=35),
备注text
);
go
--3.工资表
create table工资表
(
员工号char(3) null references职员表(员工号),
基本工资decimal(7,2) ,
津贴decimal(5,2),
关系主键:(借书证号,书号)
外键1:借书证号
外键2:书号
第五章二设计题答案
--3.
CREATE DATABASE zygl
ON
(NAME = 'zygl_Data',
FILENAME ='E:\sql\zygl_Data.MDF' ,
SIZE = 1, MAXSIZE = 30, FILEGROWTH = 10%
--1.
create database scd
go
Use scd
Go
CREATE TABLE department
(系号char(3) PRIMARY KEY,
系名char(20) not null unique
)
Go
CREATE TABLE class
(班号char(3) PRIMARY KEY,
Add班长学号char(7) references student(学号)
--上机题答案
--创建数据库ZYCL
create database ZYGL
go
--使用数据库ZYGL
use zygl
go
--创建数据表
--1.部门表
create table部门表
(
部门号char(2) primary key,
方法三、
Select学号
Fromxs_kc
Where课程号=’101’or课程号=’102’
group by学号having count(学号)=2
Insert into department values(‘008’,’经济系‘)
--2)
Delete class where入学年份<2004
--3)
Updatestudentset班号='111'where姓名='张山'
--4)
Update student set年龄=年龄+1
--3.
--1)
Select课程号from xs, xs_kc
Where xs.学号=xs_kc.学号and xs.姓名=’程明’)
10.检索同时选修了课程号为101和102这两门课程的学生学号。
方法一,使用自连接:
Selecta.学号
From xs_kc a , xs_kc b
Where a.学号=b.学号and a.课程号=’101’and b.课程号=’102’
3.查询所有姓“李”同学的基本情况。
Select *
From xs
Where姓名like‘李%’
4.查询至少选修了两门课程的学生学号。
Select学号
From xs_kc
Group by学号
Having count(课程号)>=2
5.将所有学生信息按身高逆序输出。
Select *
From xs
Order by身高desc
6检索平均成绩在75分以上的学生姓名、性别和专业。
方法一:
Select姓名,性别,专业名
Fromxs
Where学号in (
Select学号
From xs_kc
Group by学号
Having avg(成绩)>75)
方法二:
Select姓名,性别,专业名
From xs_kcJOINxsONxs.学号=xs_kc.学号
(2)将E-R图转换为关系模式,并指出函数依赖;
(3)指出转换后的每个关系模式的关系键(主键,外键)。
解答:
(1)
图书关系模式:图书(书号,书名,数量,位置,出版社名)
借书人关系模式:借书人(借书证号,姓名,单位)
出版社关系模式:出版社(出版社名,邮编,地址,电话,E-mail)
借阅关系模式:借阅(借书证号,书号,借书日期,还书日期)
--5
ATLER DATABASE ZYGL
ADD FILE
(NAME =ZYGLBAK ,
FILENAME ='E:\sql\zygl_Data1.NDF' ,
SIZE = 1, MAXSIZE =50, FILEGROWTH = 10%)
--6
DROPDATABASE ZYGL
第六章二设计题答案
课程(课号,课名,学时,学分,开课学期,必修课否)
选修(学号,课号,成绩)
2.工厂生产的每种产品由不同的零件组成,有的零件可用于不同的产品。这些零件由不同的原材料制成,不同的零件所用的材料可以相同。一个仓库存放多种产品,一种产品存放在一个仓库中。零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中(不跨仓库存放)。请用E-R图画出此关于产品,零件,材料,仓库的概念模型,注明联系类型,再将E-R模型转换为关系模型。
constraint df_nl DEFAULT 18, --指定约束名ck_nl和df_nl,以便以后好删除
班号char(3) references class(班号)
)
Insert into department values ('001', '数学');
Insert into department values ('002', '计算机');
专业名char(20),
系名char(20) references department(系名) ,
入学年份int
)
Go
CREATE TABLE student
(学号char(7) PRIMARY KEY,
姓名char(8) NOT NULL,
年龄int constraint ck_nl CHECK(年龄>=15 and年龄<=40)
Insert into student values( '2008103','王玲',17,'111')
Insert into student values( '2008104','李飞',19,'112')
--2.
--1)
Insert into department values(‘006’,’物理系‘)
方法二,使用子查询:
Select学号
From xs
Where学号in (select学号From xs_kc where课程号=’101’)
And学号in ( select学号From xs_kc where课程号=’102’)
Select学号
From xs
Where学号in (select学号From xs_kc where课程号=’101’And学号in ( select学号From xs_kc where课程号=’102’))
Insert into department values ('003', '化学')
Insert into class values ( '101','软件','计算机',2005);
Insert into class values ( '102','微电子','计算机',2006);
Insert into class values ('111','无机化学','化学',2004);
Select姓名
From xs
Where学号in (Select学号
From xs_kc
Where成绩<60
Group by学号
Having count(课程号)=2)
9.检索选修课程包含“程明”同学所选课程之一的学生学号。
Selectdistinct学号
From xs_kc
Where课程号in (
请根据上述规则设计E-R模型。
第3章设计题答案
1.学校有若干个系,每个系有若干班级和教研室,每个教研室有若干教师,每名教师只教一门课,每门课可由多个教师教;每个班有若干学生,每个学生选修若干课程,每门课程可由若干学生选修。请用E-R图画出该学校的概念模型,注明联系类型,再将E-R模型转换为关系模型。
假定:主码____ 或 #
外码或_____
学院(院名,地址,成立日期,教师人数,学生人数)
系(系名,系址,系主任,院名)
班级(班号,专业名,入学年份,学生数,班级导师,系名)
学生(学号,姓名,性别,出生日期,联系电话,籍贯,班号)
教研室(教研室名称,教师人数,电话,办公室编号,系名)
教师(教工号,姓名,性别,出生日期,联系电话,教研室名称,课号)
Insert into class values ('112','高分子化学','化学',2006 )
Insert into student values('2008101','张山',18,'101');
Insert into student values('2008102','李斯',16,'102');
部门名char(10) not null unique,
电话char(4)
);
go
--2.职员表
create table职员表
(
员工号char(3) primary key,
姓名char(8) not null,
性别char(2),
部门号char(2) references部门表(部门号),
出生日期smalldatetime ,
实发工资decimal(7,2)--以后可以用函数调用dbo.fn(员工号)
)
go
第7章习题答案
1.查询“数据库原理”这门课程的学分和开课学期。
Select课程号,开课学期
From kc
Where课程名=’数据库原理’
2.查询身高在175cm以上的男生信息。
Select *
From xs
Where性别=’男’and身高>175
Group by xs.学号,姓名,性别,专业名
Having avg(成绩)>75
7.检索“李林”同学不学的课程号。
Select课程号
Fromkc
Where课程号not in (
Select课程号from xs, xs_kc
Where xs.学号=xs_kc.学号and xs.姓名=’李林’)
8.查询只有两门课不及格的学生姓名。
借书人:借书证号、姓名、单位
出版社:出版社名、邮编、地址、电话、E-mail
其中约定:任何人可以借多种书,任何一种书可以被多个人借,借书和还书时,要登记相应的借书日期和还书日期;一个出版社可以出版多种书籍,同一本书仅为一个出版社所出版,出版社名具有惟一性。
根据以上情况,完成如下设计:
(1)设计系统的E-R图;
三金扣款decimal(7,2),
应发工资as基本工资+津贴,
实发工资as基本工资+津贴-三金扣款
)
go
--4.工资发放表
create table工资发放表
(发放编号int identity(200701,2) ,
发放年月smalldatetime,
员工号char(3) null references职员表(员工号),
--要删除年龄列,应先删除该列上的约束,再删除
Alter table student dropconstraint ck_nl, df_nl
--删除年龄列
Alter table student drop column年龄
Alter table student add出生日期datetime
--2)
Alter table class
(2)每个部门承担多个工程项目,每个工程项目属于一个部门;
(3)每个部门有多名职工,每一名职工只能属于一个部门;
(4)一个部门可能参与多个工程项目,且每个工程项目有多名职工参与施工。根据职工在工程项目中完成的情况发放酬金;
(5)工程项目有工程号、工程名两个属性;部门有部门号、部门名称两个属性;职工有职工号、姓名、性别属性。
LOG ON
(NAME = 'zygl_Log',
FILENAME ='E:\sql\zygl_Log.LDF' ,
SIZE = 3, FILEGROWTH = 1
)
GO
--4
ATLER DATABASE ZYGL
MODIFY FILE
( NAME =ZYGL_DAT,重量,仓库号,数量c)
零件(零件名,规格)
材料(材料编号,名称,仓库号,数量a)
仓库(仓库号,地点,面积,保管员)
产品-零件(产品名,零件名,组装日期b)
零件-材料(材料编号,零件名,生产日期a)
零件-仓库(零件名,仓库号,数量b)
3、一个图书馆理系统中有如下信息:
图书:书号、书名、数量、位置
第一章习题答案
DDCB DADD
2、某医院病房计算机管理中需要如下信息:
一个科室有多个病房、多个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人的主管医生只有一个。
完成:设计该计算机管理系统的E-R图
4.假设某公司的业务规则如下:
(1)公司下设几个部门,如技术部、财务部、市场部等;
手机号码char(11),
工龄tinyint constraint ck_gl check(工龄>=0 and工龄<=35),
备注text
);
go
--3.工资表
create table工资表
(
员工号char(3) null references职员表(员工号),
基本工资decimal(7,2) ,
津贴decimal(5,2),
关系主键:(借书证号,书号)
外键1:借书证号
外键2:书号
第五章二设计题答案
--3.
CREATE DATABASE zygl
ON
(NAME = 'zygl_Data',
FILENAME ='E:\sql\zygl_Data.MDF' ,
SIZE = 1, MAXSIZE = 30, FILEGROWTH = 10%
--1.
create database scd
go
Use scd
Go
CREATE TABLE department
(系号char(3) PRIMARY KEY,
系名char(20) not null unique
)
Go
CREATE TABLE class
(班号char(3) PRIMARY KEY,
Add班长学号char(7) references student(学号)
--上机题答案
--创建数据库ZYCL
create database ZYGL
go
--使用数据库ZYGL
use zygl
go
--创建数据表
--1.部门表
create table部门表
(
部门号char(2) primary key,
方法三、
Select学号
Fromxs_kc
Where课程号=’101’or课程号=’102’
group by学号having count(学号)=2
Insert into department values(‘008’,’经济系‘)
--2)
Delete class where入学年份<2004
--3)
Updatestudentset班号='111'where姓名='张山'
--4)
Update student set年龄=年龄+1
--3.
--1)
Select课程号from xs, xs_kc
Where xs.学号=xs_kc.学号and xs.姓名=’程明’)
10.检索同时选修了课程号为101和102这两门课程的学生学号。
方法一,使用自连接:
Selecta.学号
From xs_kc a , xs_kc b
Where a.学号=b.学号and a.课程号=’101’and b.课程号=’102’
3.查询所有姓“李”同学的基本情况。
Select *
From xs
Where姓名like‘李%’
4.查询至少选修了两门课程的学生学号。
Select学号
From xs_kc
Group by学号
Having count(课程号)>=2
5.将所有学生信息按身高逆序输出。
Select *
From xs
Order by身高desc
6检索平均成绩在75分以上的学生姓名、性别和专业。
方法一:
Select姓名,性别,专业名
Fromxs
Where学号in (
Select学号
From xs_kc
Group by学号
Having avg(成绩)>75)
方法二:
Select姓名,性别,专业名
From xs_kcJOINxsONxs.学号=xs_kc.学号
(2)将E-R图转换为关系模式,并指出函数依赖;
(3)指出转换后的每个关系模式的关系键(主键,外键)。
解答:
(1)
图书关系模式:图书(书号,书名,数量,位置,出版社名)
借书人关系模式:借书人(借书证号,姓名,单位)
出版社关系模式:出版社(出版社名,邮编,地址,电话,E-mail)
借阅关系模式:借阅(借书证号,书号,借书日期,还书日期)
--5
ATLER DATABASE ZYGL
ADD FILE
(NAME =ZYGLBAK ,
FILENAME ='E:\sql\zygl_Data1.NDF' ,
SIZE = 1, MAXSIZE =50, FILEGROWTH = 10%)
--6
DROPDATABASE ZYGL
第六章二设计题答案
课程(课号,课名,学时,学分,开课学期,必修课否)
选修(学号,课号,成绩)
2.工厂生产的每种产品由不同的零件组成,有的零件可用于不同的产品。这些零件由不同的原材料制成,不同的零件所用的材料可以相同。一个仓库存放多种产品,一种产品存放在一个仓库中。零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中(不跨仓库存放)。请用E-R图画出此关于产品,零件,材料,仓库的概念模型,注明联系类型,再将E-R模型转换为关系模型。
constraint df_nl DEFAULT 18, --指定约束名ck_nl和df_nl,以便以后好删除
班号char(3) references class(班号)
)
Insert into department values ('001', '数学');
Insert into department values ('002', '计算机');
专业名char(20),
系名char(20) references department(系名) ,
入学年份int
)
Go
CREATE TABLE student
(学号char(7) PRIMARY KEY,
姓名char(8) NOT NULL,
年龄int constraint ck_nl CHECK(年龄>=15 and年龄<=40)
Insert into student values( '2008103','王玲',17,'111')
Insert into student values( '2008104','李飞',19,'112')
--2.
--1)
Insert into department values(‘006’,’物理系‘)
方法二,使用子查询:
Select学号
From xs
Where学号in (select学号From xs_kc where课程号=’101’)
And学号in ( select学号From xs_kc where课程号=’102’)
Select学号
From xs
Where学号in (select学号From xs_kc where课程号=’101’And学号in ( select学号From xs_kc where课程号=’102’))
Insert into department values ('003', '化学')
Insert into class values ( '101','软件','计算机',2005);
Insert into class values ( '102','微电子','计算机',2006);
Insert into class values ('111','无机化学','化学',2004);
Select姓名
From xs
Where学号in (Select学号
From xs_kc
Where成绩<60
Group by学号
Having count(课程号)=2)
9.检索选修课程包含“程明”同学所选课程之一的学生学号。
Selectdistinct学号
From xs_kc
Where课程号in (
请根据上述规则设计E-R模型。
第3章设计题答案
1.学校有若干个系,每个系有若干班级和教研室,每个教研室有若干教师,每名教师只教一门课,每门课可由多个教师教;每个班有若干学生,每个学生选修若干课程,每门课程可由若干学生选修。请用E-R图画出该学校的概念模型,注明联系类型,再将E-R模型转换为关系模型。
假定:主码____ 或 #
外码或_____
学院(院名,地址,成立日期,教师人数,学生人数)
系(系名,系址,系主任,院名)
班级(班号,专业名,入学年份,学生数,班级导师,系名)
学生(学号,姓名,性别,出生日期,联系电话,籍贯,班号)
教研室(教研室名称,教师人数,电话,办公室编号,系名)
教师(教工号,姓名,性别,出生日期,联系电话,教研室名称,课号)
Insert into class values ('112','高分子化学','化学',2006 )
Insert into student values('2008101','张山',18,'101');
Insert into student values('2008102','李斯',16,'102');
部门名char(10) not null unique,
电话char(4)
);
go
--2.职员表
create table职员表
(
员工号char(3) primary key,
姓名char(8) not null,
性别char(2),
部门号char(2) references部门表(部门号),
出生日期smalldatetime ,
实发工资decimal(7,2)--以后可以用函数调用dbo.fn(员工号)
)
go
第7章习题答案
1.查询“数据库原理”这门课程的学分和开课学期。
Select课程号,开课学期
From kc
Where课程名=’数据库原理’
2.查询身高在175cm以上的男生信息。
Select *
From xs
Where性别=’男’and身高>175
Group by xs.学号,姓名,性别,专业名
Having avg(成绩)>75
7.检索“李林”同学不学的课程号。
Select课程号
Fromkc
Where课程号not in (
Select课程号from xs, xs_kc
Where xs.学号=xs_kc.学号and xs.姓名=’李林’)
8.查询只有两门课不及格的学生姓名。
借书人:借书证号、姓名、单位
出版社:出版社名、邮编、地址、电话、E-mail
其中约定:任何人可以借多种书,任何一种书可以被多个人借,借书和还书时,要登记相应的借书日期和还书日期;一个出版社可以出版多种书籍,同一本书仅为一个出版社所出版,出版社名具有惟一性。
根据以上情况,完成如下设计:
(1)设计系统的E-R图;
三金扣款decimal(7,2),
应发工资as基本工资+津贴,
实发工资as基本工资+津贴-三金扣款
)
go
--4.工资发放表
create table工资发放表
(发放编号int identity(200701,2) ,
发放年月smalldatetime,
员工号char(3) null references职员表(员工号),
--要删除年龄列,应先删除该列上的约束,再删除
Alter table student dropconstraint ck_nl, df_nl
--删除年龄列
Alter table student drop column年龄
Alter table student add出生日期datetime
--2)
Alter table class
(2)每个部门承担多个工程项目,每个工程项目属于一个部门;
(3)每个部门有多名职工,每一名职工只能属于一个部门;
(4)一个部门可能参与多个工程项目,且每个工程项目有多名职工参与施工。根据职工在工程项目中完成的情况发放酬金;
(5)工程项目有工程号、工程名两个属性;部门有部门号、部门名称两个属性;职工有职工号、姓名、性别属性。