1.第一章
1.1
Data:数据库中存储的基本对象。
DB:长期存储于计算机内,有组织,可共享的大量数据集合。
DBMS:位于用户与操作系统之间的一层数据管理系统。
DBS:计算机系统中引入数据库后的系统,由软件与硬件组成的完整系统。
1.2
实体:客观存在,区别事物。
属性:实体某一特性。
码:标明实体属性集。
域:属性取值范围。
联系:实体内部联系和实体之间联系。
数据模型组成:数据结构,数据操作,完整性约束。
1.3
外模式/模式映像:模式改变时,由数据库管理员对各个外模式/模式映像做相应的改变,以使外模式保持不变。逻辑独立性。
模式/内模式映像:模存储结构改变时,由数据库管理员对模式/内模式映像做相应的改变,以使内模式保持不变。物理独立性。
2.第二章
关系的完整性:实体完整性,参照完整性,用户定义的完整性。
3.第三章
3.1 创建数据库
create database name
3.2创建表
create table table name(
column_name datatype column_constraint,
--列名 类型 约束
3.3创建外键
create table goods(
name type primary key,
--名称 类型 主键
foreign key(table_column_name) references table_name(table_column_name)
--外键(表列名) 表名(表列名)
)
3.4表维护
alter table table_name
--添加列
add column_name type constaint
--添加列 列名 类型 约束
drop column column_name
--删除列
alter column column_name type constraint
--修改列
3.5增加约束
alter table table_name
add constraint constraint_name constraint
--添加约束声明 约束名 约束
3.6添加主码
alter table table_name
add constraint pk primary key(column_name)
3.7添加索引
create unique index index_name
on table_name (column_name1 asc,column_name2 desc)
3.8删除索引
drop index index_name on table_name
4.第四章
4.1
select * from table_name
--后c表示column t表示table_name
4.2
select c1,c2,c3 from t
--查询年龄
select sno,sname,year(getdate())-birthyear as age from t
--限制查询
select * from t where sno='sn001' --给c加上限制,常用比较符号或者b a连接
--例如
select * from t where number between 1 and 10
--日期之间
select * from t where time between '2018-1-1' and '2019-1-1'
--编号
select * from t where goodsno in('cn1','cn2')
--匹配查询%
slect * from t where name like '%果汁%'
--排序查询
--1.
select * from student order by birthyear
--2.
select * from t where number>10
order by number asc,producttime desc
4.3聚合函数
--查询商品个数
select count(*) from t
--统计表最多,最少,平均销量
select max(number) MAXSALE,min(number) MINSALE,
avg(number) AVGSALE from t
--统计每个学生购买的商品种类
select sno,count(*) as 商品种类 from t group by sno
--统计每个学生购买的商品种类,种类大于等于3
select sno,count(*) as n1 from t
group by sno
having count(*)>=3
4.4多表查询
select * from t1,t2 where t1.c1=t2.c1
--join on
select * from t1 join t2 on t1.c1=t2.c1
4.5子查询
select c1 from t where c2 in(select c2 from t where c3=1)
and c3<=10
5.第五章
5.1插入元组
insert into t
values('1','2','3')
--例如
insert into student
values('s9','二狗','1999','男','cs','it')
5.2修改数据
update t set c=expression where --更新条件
--例如
--过节,CQ公司降价80%
update goods
set saleprice=saleprice*0.8
from supplier s join goods g on g.supplierno=s.supplierno
where suppliername='CQ'
5.3删除数据
--无条件删除表中所有数据
delete t
--有条件
delete from t where --条件
5.4视图
--创建定义视图
create view v_name as c1,c2,c3 from t where --条件
--删除视图
drop view view_name
--查询视图,与基本表类似
select * from v_name where major='mis'
6.第六章
6.1例题
有关系模式SALE(U),SALE属性由员工编号,日期,销售量,分组,组长等属性组成,U的定义如下:
U={eno,saledate,saleamount,group,gname}
每个员工每天会有一个销售额,每个员工只能属于一个元组,每个分组只有一个组长。
有:
分组有多个员工,一个员工只属于一个组。
每个组只有一个组长。
每个员工每天会有一个销售额。
于是有依赖集F
解:
F={eno→group,group→gname,(eno,saledate)→saleamount}
6.2关系的问题
1.数据冗余 2. 更新异常 3.删除异常
6.3函数依赖
X决定Y,称之为Y依赖于X。
例如:
非平凡函数依赖:(A,B)→C
平凡函数依赖:(A,B)→A
6.4候选码
K→U,则K为R候选码。可能有多个,可能包含全部-全码。
6.5范式
6.5.1第一范式
R的所有属性都是不可分基本项。
6.5.2第二范式
第二范式每个非主属性都完全函数依赖于候选码。
由第一向第二转化方法为消除其中部分函数依赖。
SALE为第一范式
F={eno→group,group→gname,(eno,saledate)→saleamount}
将其分解为二范式为:
S1(sno,saledate,saleamount) eno,saledate
S2(eno,group,gname) eno-候选码
第二范式问题:数据冗余度大,插入异常,删除异常,更新问题。
上有传递依赖eno→group→gname
6.5.3第三范式
每个非主属性都不传递依赖于候选码,只有两个属性必为第三范式。
上可分解为:
s21(eno,group) eno-m码
s22(group,gname) group-码
6.5.4BC范式
非主属性对码完全依赖,主属性对每一个不包含它的码是完全依赖,无属性完全依赖码任何属性。
例如:scr(sno,class,rank)有以下依赖
sno→class,sno→rank,(class,rank)→sno
sno,(class,rank)为码,scr无非主属性,一定属于3NF,3NF→BC方法为消除主属性对码传递与部分依赖。
7.第七章
7.1步骤
需求分析阶段→概念结构设计→逻辑结构设计→物理结构设计→数据库实施→运行与维护
7.2概念模型
实体间一对一,一对多,多对多,实体矩形,关系菱形。
8.第八章
数据库必须提供并发控制机制以保证数据的正确性。
8.1事务
由用户定义一些列操作语句构成,全部执行或全部不执行,是最小的工作单位。
8.2事务特性
8.2.1.原子性
不可分整体,是事务概念本质和体现。
8.2.2.一致性
事务执行后变为操作后的一致性状态,具备正确性与完整性。
8.2.3.隔离性
一个事务的执行不被其他事务干扰。
8.2.4.持续性
事务执行,数据改变为永久,后续操作对结果无影响。
8.2.5.事务特性
事务交叉运行互不干扰其原子性,事务过程被强制取消对数据无影响。
8.3事务处理模型
显式事务:有显式的标记开始与结束。隐式事务:每条操作语句自动生成一事务。
ISO事务处理模型
开始隐式,结束显式。
8.4并发操作问题
丢失更新,读脏数据,不可重复读,并发操作破坏了隔离性出现以上问题。
8.5并发控制方法
主要方法为封锁机制。
事务T对数据加锁使锁释放之前其他事务不能更新此数据对象。
1.排他锁(写)
防止并发事务对数据进行访问。例如T对R上X锁,只允许T读取和更新R,其他事务不可。
2.共享锁(读)
允许并发读取数据。例如T对R上S锁,事务T能读但不能改,其他事务只能加S锁不能加X锁。
3.活锁
t1封锁r,t2封锁r,t2等待,t3封锁r,t3等待,t1解锁,t3封锁,至此t2一直等待。
采用先来服务避免活锁。
4.死锁
t1封锁r1,t2封锁r2,t1封锁r2,t1等待,t2封锁r1,t2等待,t2与t1一直相互等待。
1.一次性封锁法 2.顺序封锁发 3.诊断与解除