数据库复习点

数据库的三级模式:
  • 模式:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有的用户的公共数据视图。
  • 外模式:也称子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
  • 内模式:也称存储模式,一个数据库只有一个内模式。它是数据物理结构的存储方式的描述,是数据在数据库内部的组织方式。

传统的集合运算是二目运算,包括并、差、交、笛卡尔积4中运算

连接分为3种:内连接、自然连接、外连接
  • 内连接和自然连接的区别:自然连接必须两个表进行比较的列必须同名相同属性,内连接则不需要列同名。
  • 内连接和外连接的区别:两种连接取出两张表中匹配到的数据,内连接匹配不到的不保留;外连接匹配不到的也保留,其值设置为NULL。
  • 外连接分为左外连接和右外连接:
    • 左外连接:保存左边的悬浮元组
    • 右外连接:保存右边的悬浮元组
      自然连接

      外连接

SQL的数据定义
操作对象 创建 删除 修改
模式 CREATE SCHEMA DROP SCHEMA
CREATE TABLE DROP TABLE ALTER TABLE
视图 CREATE VIEW DROP VIEW
索引 CREATE INDEX DROP INDEX ALTER INDEX

SQL的数据定义语句

SQL定义表的基本格式:

CREATE TABLE <表名> (<列名> <数据类型> [列级完整性约束条件]
 ,<列名> <数据类型> [列级完整性约束条件]
 ,<列名> <数据类型> [列级完整性约束条件]
 ,[表级完整性约束条件]);

SQL定义表示例:

 CREATE TABLE SC
 (Cno CHAR(9) PRIMARY KEY,
 Cname CHAR(40) NOT NULL,
 Cpno CHAR(4),
 Ccredit INT,
 FOREIGN KEY (Cpno) REFERENCES Course(Cno)
 );
索引

当数据量比较大的时候,查询比较耗时。简历索引是加快查询速度的有效手段。(类似于图书后面的索引)

数据库索引类型

  • 顺序文件上的索引:是针对按指定属性值升序或降序存储的关系,在该属性上简历一个顺序索引文件,索引文件由属性值和相应的元组指针组成。
  • B+树索引:是将索引属性组织成B+树的形式,B+树的叶节点为属性值和相应的元组指针。B+树索引具有动态平衡的优点。
  • 散列索引:是建立若干个桶,将索引按照其散列函数值映射到相应桶中,桶中存放索引属性值和相应的元组指针。散列索引具有查找速度快的优点。
  • 位图索引:是用位向量记录索引属性中可能出现的值,每个位向量对应一个可能的值。
数据查询

SQL的SELECT语句基本格式:

FROM <表名或试图名> [,<表名或试图名>...] | (SELECT语句) AS <别名>
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]]
[GROUP BY <列名2> [ASC|DESC]];

左外连接SQL示例:

SELECT Student.Sno,Sname,Ssex,Sage,Cno
FROM Student LEFT OUTER JOIN SC ON (Student.Sno=SC.Sno);

GROUP BY子句将查询结果按一列或多列的值分组,值相等的为一组。

WHERE和HAVING的区别:作用对象不同。

  • WHERE子句作用于基本表或视图,从中选择满足条件的元组。
  • HAVING短语作用于组,从中选择满足条件的组。

嵌套查询示例:

    SELECT Sname
    FROM Student, SC, Course
    WHERE Student.Sno=SC.Sno=SC.Sno AND SC.Cno=Course.Cno

数据库谓词有:IN 、ANY、SOME、ALL、EXISTS

视图

视图是从一个或多个基本表导出的表。是一个虚表。
建立视图的一般格式:

CREATE VIEW <视图名> [(<列名> [,<列名>] ...)]
AS <子查询>
[WITH CHECK OPTION];
SQL四种语言
  • DDLData Definition Language数据库定义语言

DDL是SQL语言的四大功能之一。
用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、>>安全控制等约束
DDL不需要commit.
CREATE、ALTER、DROP、TRUNCATE、COMMENT、RENAME

  • DML(Data Manipulation Language)数据操纵语言

由DBMS提供,用于让用户或程序员使用,实现对数据库中数据的操作。
DML分成交互型DML和嵌入型DML两类。
依据语言的级别,DML又可分成过程性DML和非过程性DML两种。
DML需要commit.
SELECT、INSERT、UPDATE、DELETE、MERGE、CALL、EXPLAIN PLAN、LOCK TABLE

  • DCL(Data Control Language)数据库控制语言授权,角色控制

GRANT 授权
REVOKE 取消授权

  • TCL(Transaction Control Language)事务控制语言

SAVEPOINT 设置保存点
ROLLBACK 回滚
SET TRANSACTION

SQL主要分成四部分:
  • 数据定义(SQL DDL)用于定义SQL模式、基本表、视图和索引的创建和撤消操作。
  • 数据操纵(SQL DML)数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作
  • 数据控制 包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。
  • 嵌入式SQL的使用规定 涉及到SQL语句嵌入在宿主语言程序中使用的规则。
参照完整性策略
  • 拒绝(NO ACTION)执行
  • 级联(CASCADE)操作
  • 设置为空值
数据库存取方式

存取方式是快速存取数据库中数据的方式,常用的存取方法为索引方法聚簇方法
B+树索引hash索引是数据库中经典的存取方法,使用最普遍。

实现查询操作的算法示例

选择操作的实现:

  • 简单地全表扫描算法
  • 索引扫描算法

连接操作的实现:

  • 嵌套循环算法
  • 排序-合并算法
  • 索引连接算法
  • hash join算法
事务

事务概念:事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元。
事务的ACID特性:

  • 原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包括的操作要么都做要么都不做。
  • 一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。例如某公司有A,B两个账户,A取出一万元存入B账户。那么可以定义为一个事务,该事务包括两个操作,这两个操作要么全做,要么全不做,否则就会破坏一致性。
  • 隔离性(Isolation):一个事务的执行不能被其他事务干扰。即一个事务的内部操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能相互干扰。即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。
  • 持续性(Durability):也叫永久性。指的是一个事务一旦提交,对数据库的数据的改变就是永久性的,接下来的其他操作或故障不应该对其执行结果有影响。

在不考虑事务的隔离性时,并发操作会带来的数据的不一致性:

  • 脏读:脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据。当一个事务正在多次修改某个数据,而在这个事务中这多次的修改都还未提交,这时一个并发的事务来访问该数据,就会造成两个事务得到的数据不一致。
  • 不可重复读:不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了。
    例如事务T1在读取某一数据,而事务T2立马修改了这个数据并且提交事务给数据库,事务T1再次读取该数据就得到了不同的结果,发送了不可重复读。
      不可重复读和脏读的区别是,脏读是某一事务读取了另一个事务未提交的脏数据,而不可重复读则是读取了前一事务提交的数据。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342