体.(p4)
3数据库管理系统(DBMS):它对数据进行统一的控制和管理,把所有的应用程序中使用的相关数据汇集起来按照统一的数据模型、已记录为单位用文件方式存储在数据库中,为各个应用程序提供方便的快捷的查询和使用。(数据库管理系统(database management system)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称dbms。--百科上的解释)(p4)
4数据模型:data model)是现实世界中数据特征的抽象,他表现为一些相关数据组织的集合。包括概念模型,逻辑模型和物理模型。(p8) 5概念模型:(conceptual model)也被称为信息模型,是按用户观点对数据和信息进行建模,描述现实世界的概念化结构。(p8)
6物理模型:用以描述数据在物理存储介质上的组织结构与具体的DBMS操作系统和硬件有关。(p9)
7 E-R图:是用一种直观的图形方式建立现实世界中实体及其联系模型的工具,也是设计数据库的一种基本工具。E-R模型:用矩形表示现实世界中的实体,用椭圆表示实体的属性,用菱形表示实体间的联系,实体名属性名和联系名分别写在相应的框内,并用线段将各框连起来。
8 1NF:当关系R的所有属性都不能再分解为更基本的数据元素时,即R的所有属性均满足原子特征时,称为第一范式。简记为1NF。
9 2NF:如果关系模式R满足第一范式,并且R的所有非主属性都完全依赖于R的每一个候选关键属性称R满足第2范式,简记为2NF
10 3NF:设R是一个满足1NF的关系模式,X是R的任意属性组,如果X非传递依赖于R的任意一个候选关键字,称R满足第3范式,简记为3NF。(p30) 11实体:是现实世界中任何可区分可识别的事物。 12实体属性:实体的特征成为属性(p9)。区别于关系属性:二维表的每一列在关系中称为属性(p22)。
13关键字:关系中能够唯一区分确定不同元组的单个属性或属性组合称为该关系的一个关键字。又被称为键或码(key)(P22)
14外部关键字:如果关系中某个属性或属性组合并非本关系中的关键字但却是另一个关系中的关键字,这样的属性或属性组合被称为本关系中的外部关键字或外键(FOREIGN KEY,FK)(P22)
15关系模型:采用二维表描述实体的静态特征及其相互联系。用表的行描述实体对象用元素描述对象的相应属性。有关系运算规则和完整性约束规则来限制。 16数据约束:是SQL Server提供的自动保持数据库中数据完整性的一种机制它定义了可输入表或表的单个列中的数据限制条件。(p20)
17数据操作:对数据创建管理维护包括对数据的插入删除更新等的操作使数据信息的使用完整方便快捷(作者自己的定义)。
18属性间函数的依赖:设X、Y、Z是关系模式R的不同属性集,若X→Y(并且Y→X不成立)Y→Z,称X传递决定Z或称Z传递函数依赖于X。(p29) 三、问答题。
1什么是数据库、数据库管理系统、以及数据库系统?它们之间有什么联系? 答:数据库是指数据库系统中按照一定的方式组织的,存储在外部存储设备上的能为多个用户共享的、与应用程序和互相独立的相关数据集合。数据库管理系统(database management system)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称dbms。
6
数据库系统是基于数据库的计算机应用系统。也是由计算机系统数据库及其描述机构,数据管理系统和有关人员组成的具有高度组织性的总体.(p4)
联系:数据库系统包括数据库管理系统,和数据,数据库管理系统是数据库系统的核心软件之一。
2实体间的联系有哪几种?分别举例说明。
答:一对一联系1:1,一对多联系1:m,多对多联系m:n。 例子:1:1一个厂只有一个厂长,一个厂长只在一个厂任职。 1:m一个公司只有多个职员,一个职员只能在一个公司就职。
m:n一个读者可以读多种图书,任何一种图书可以为多个读者借阅。
3什么是数据模型?目前数据的逻辑模型主要有哪几种?它们各有什么特点? 答:数据模型是对现实世界中数据的抽象,它表现为一些关系数据组织的集合。种类:概念模型,逻辑模型,物理模型。
特点,概念模型:按用户观点对数据和信息进行建模,描述现实的概念化结构;逻辑模型按计算机观点对数据进行建模服务于DBMS的应用实现;物理模型数据库在物理存储介质上的组织结构。 4简述下列3条语句的异同
(1)Drop table order(2)Delete orders(3)Truncate orders 答:共同点:在数据库中都是用以删除数据的语句。
不同点:(1)用以删除表即删除行,可以删除数据库,删除时组成该数据的所有磁盘文件将被同时删除;(2)用以删除所有列,删除一次在事务日志中记录一次;(3)用以删除列,每次删除都不记录事务日志只记录删除释放,(3)比(2)删除的速度快。
5在Sales数据库的Sell_order表中cost(费用)列允许为空。当一个NULL值和一个货币类型被填入到某两行的cost列后,试比较这两个cost值的大小。 答:不能比较大小,因为NULL是未定值不是没有值,而货币类型是一个实际数据,故不能比较大小。
6主键约束和唯一性约束的异同点是? 答:相同点:均是为数据添加约束。 区别:唯一性约束用于非主键的一列或列的组合;一个表可以定义多个唯一性约束,而只能定义一个主键约束;唯一性约束可用于定义允许为空的列,而主键约束不能用于定义允许为空的列。
四、应用题P128(必考题型)
1.使用语句创建学生基本信息表,student
(s_on,s_name,s_sex,birthday,polity)和学生成绩表
sco(s_on,c_no,score),针对这两个表利用select语句实现以下六个操作: use students go
create table student1 (
s_no char(6) not null primary key, s_name varchar(20) not null, s_sex char(2) not null,
7
birthday datetime, polity char(10) )
create table sco (
s_no char(6) not null
foreign key (s_no) references student1(s_no) on delete no action on update cascade, c_no char(6) not null, score float null )
insert student1
values('450005','ae','女','1994-5-4','团员')
insert sco
values('450005','03',94)
/*增加列的唯一性约束*/ alter table sco
add constraint u_s_no unique(s_no) /*增加表的主键约束*/ alter table sco
add constraint pk_s_c primary key(s_no,c_no)
使用SQL语句创建学生基本信息表,(student(s_no,s_name,s_sex,
birthday,polity),学生成绩表sco(s_no,c_no,score))利用这两个表实现以下语句:
--(1)所有学生的基本信息,并按学号排序 select * from student1 order by s_no
--(2)所有女生的信息和女生的人数 select * from student1 where s_sex = '女'
select count(*) as '女生人数' from student1 where s_sex = '女'
select *
from student1
where s_sex = '女'
8
order by s_sex
compute count(s_no) by s_sex
--(2)所有男生的姓名、出生日期、年龄
select s_name,birthday,year(getdate())-year(birthday) as age from student1
where s_sex = '男'
--(4)所有学生的姓名、出生日期、年龄、选修的课程和成绩。 select s_name,birthday,year(getdate())-year(birthday) as age,c_no,score
from student1 s inner join sco c on s.s_no = c.s_no
--(5)某个指定姓名学生的成绩。 select s_name,score
from student1 s join sco c on s.s_no = c.s_no where s_name = 'ae'
--(6)不及格学生的姓名。 select s_name,score
from student1 s join sco c on s.s_no = c.s_no where score < 60
--(7)按性别进行分组查询,查询男女生的平均成绩。 select s_sex,avg(score) as average from student1 s join sco c on s.s_no = c.s_no
--where c.c_no = 1 --查询指定课程的平均成绩 group by s_sex /* 2. 使用如下个表,写出操作语句。 部门:部门号,部门名,负责人,电话
职工:部门号,职工号,姓名,性别,出生日期 工资:职工号,基本工资,津贴,奖金,扣除 (1) 查询职工的实发工资。 (2) 查询年月日出生的职工信息。 (3) 查询每个部门年龄最长者的信息,要求显示部门名称和最长者的出生日期。 (4) 查询所有目前年龄在岁以上(不含岁)的职工姓名、性别和年龄。 (5) 查询有名以上(含名)职工的部门名称和职工人数,并按职工人数降序排
9
序。 */
create database test use test go
create table 部门 (
部门号char(2) not null, 部门名char(40) not null, 负责人char(10) not null, 电话char(11) )
create table 职工 (
部门号char(2) not null, 职工号char(6) not null, 姓名char(10) not null, 性别char(2) not null, 出生年月datetime )
create table 工资 (
职工号char(6) not null, 基本工资float not null, 津贴float not null, 奖金float, 扣除float )
--(1)查询职工的实发工资。
select 职工号,基本工资+津贴+奖金-扣除as 实发工资 from 工资
--(2)查询年月日出生的职工信息。 select * from 职工
where 出生年月='1962-10-27'
--(3)查询每个部门年龄最长者的信息,要求显示部门名称和最长者的出生日期。
select 部门名,min(出生年月) as 最长者出生日期 from 职工zg join 部门bm on zg.部门号=bm.部门号 group by 部门名
--(4)查询所有目前年龄在岁以上(不含岁)的职工姓名、性别和年龄。
10
select 姓名,性别,year(getdate())-year(出生年月) as 年龄 from 职工
where year(getdate())-year(出生年月)>35
--(5)查询有名以上(含名)职工的部门名称和职工人数,并按职工人数降序排序
select 部门号,count(部门号) from 职工
group by 部门号
having count(部门号)>1
order by count(部门号) desc
select 部门名,count(zg.部门号) as 人数 from 职工zg join 部门bm on zg.部门号=bm.部门号 group by 部门名
having count(zg.部门号)>1
order by count(zg.部门号) desc
11