【数据库基础】知识点复习

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.诊断与解除

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值