zoukankan      html  css  js  c++  java
  • 《数据库系统概论》读书笔记

    一:关系数据库的描述

    1:实体间的联系: 1:1、1:n、m:n

    2:候选码:关系中某一属性组的值能唯一标识一个元组(记录)而其子集不能,则该属性组所包含的属性们称为候选码。

    主码:若有多个候选码,选一个作为主码。

    全码:关系模式的所有属性都是候选码,称为全码。

    二:关系代数

    1:传统集合运算

    并:两种关系R、S的并集由R跟S的记录合并得到;

    差:R-S的表记录由R表中有而S表中没有的记录组成;

    交:R、S的交集由既属于R表又属于S表的记录组成;

    笛卡尔积:若R有k1条记录,S有k2条记录,则R、S的笛卡尔积有k1*k2条记录,每条记录有r+s列,前r列为R的记录,后s列为S的记录。即:遍历R中每一条记录,在其后面依次拼接S表的记录。共循环了k1*k2次。

    2:专门关系运算

    选择:从表中选出符合条件的元组(记录)组成结果表;(行查询)

    投影:从表中选出若干属性列组成结果表;(列查询)

    连接:从两个关系的笛卡尔积中选出属性间满足某条件的元组。

        等值连接:从R、S关系的笛卡尔积中,选取R中某些属性值与S中某些属性值相等的元组;

        自然连接:一种特殊的等值连接,选出R、S中同名的属性组的值相等的元组,并在结果中去掉重复的属系列留下一个即可;

             通过自然连接利用两个关系某相同属性把两个表拼接在了一起,此时会出现以下情况:

             悬浮元组:在R、S通过属性B的值拼接时,如果出现R中的某B属性值bn在S中没有相等值,则此时bn所在元组就会被舍弃,不加入结果表中。

             外连接:如果把悬浮元组也加入结果表中,则把bn属性所在行在另一个表中取不到值的列设为NULL值。

             左外连接:只保留左边关系R的悬浮元组。即:R中bn在S中无等值,把R中bn元组加入结果表,元组中属于S的属性列赋NULL值。

             右外连接:只保留右边关系S的悬浮元组。即:S中的bn在R中无等值,把S中bn所在元组加入结果表,该元组中属性R的属性列赋NULL值。

    三:SQL语言

    1:定义模式(定义数据库):CREATE SCHEMA 模式名(数据库名) AUTHORIZATION 用户名

    2:删除模式(删除数据库):DROP SCHEMA 模式名[CASCADE|RESTRICT] 级联删除或限制不能删除

    3:创建表:CREATE TABLE 表名 (列名 数据类型 约束条件,...);

    4:修改表:ALTER TABLE 表名

                                            ADD 列名 数据类型 约束条件

                                            DROP 列名[CASCADE|RESTRICT]

                                            ALTER COLUMN 列名 数据类型

    5:删除表:DROP TABLE 表名[CASCADE|RESTRICT]

    6:数据查询:SELECT[ALL|DISTINCT] 表达式 FROM 表名 WHERE 表达式 GROUP BY 列名     HAVING 表达式         ORDER BY 列名[ASC|DESC];

                                  去除重复属性                                                                           对groupby结果进一步筛选                       升序|降序

                    WHERE 表达式常用条件:

                                                    比较:=,>,<,<=,>=,!=......

                                                    范围:between...and...

                                                    归属:in、not in

                                                    模糊查询:like 、not like  (%作通配符表示模糊内容)

    7:插入数据:INSERT INTO 表名 属性列名 VALUES(属性值,...,...)

    8:修改数据:UPDATE 表名 SET 列名=修改值 where 条件

    9:删除数据:DELETE FROM 表名 where 条件

    四:视图

    视图不是一个具体的表,它只不过是一个“窗户”,透过它可以看到某个表中某些特定的数据以及变化。

    五:数据库安全

    1:自主存取控制

    通过GRANT、REVOKE赋予用户、角色某些权限或撤销其权限;

    2:强制存取控制

    为用户赋予许可证,为数据设定密级。

    只有当用户许可证级别大于等于数据密级时,才允许读取数据;

    只有当用户许可证级别小于等于数据密级时,才允许写数据;(是写入而不是修改,低等级用户只拥有向表中增加数据的权限,不能查看,不能修改)

    六:完整性约束

    1:定义主键:PRIMARY KEY(属性名)

    2:定义外键:FOREIGN KEY(属性名) REFERENCES 外表名(参考属性名)

    3:自定义约束:自定义某属性的约束条件:Check 条件

    七:触发器

    触发器又叫 事件—条件—动作  规则。即:某事件(数据库的增删查改)发生前/后—符合某条件—执行某动作

    八:关系理论

    第一范式:基本表,表中无表(即属性不可再分)。

    第二范式:在第一范式的基础上,每一个非主属性都可由任意一个主属性推出。

    第三范式:在第二范式基础上,每个非主属性由任意一个主属性直接推出而不传递或部分推出。

    第四范式:每一个主属性都可推出所有非主属性,并且没有任何一个非主属性能推出主属性。

    九:数据库恢复

    1:事务:用户定义的一系列数据库操作,要么全做,要么不做。具有ACID特征:

               原子性:事务不可分割。

               一致性:事务结果使数据库从一个一致性状态变到另一个一致性状态。

               隔离性:事务间相互独立,互不干扰。

               持续性:事务一旦成功提交,对数据库的改变是永久的而不是暂时的。

    十:并发控制

    1:数据库并发操作引起数据不一致:丢失修改、不可重复读、读到“脏”数据

    2:封锁技术:事务T操作某个数据对象前先加锁,然后进行操作。在锁释放期间其他事务不能操作该数据对象。分两种:排它锁(写锁,其他事务不能读不能写)、共享锁(读锁,其他事务也可以读)。

    3:死锁:两个事务互相等待对方释放锁,导致死锁。

    4:处理死锁:选择一个造成死锁的最小代价的事务将其撤销,等待其他事务优先执行完再执行。

  • 相关阅读:
    PHP实现最简单爬虫原型
    xcache 安装与配置
    fckeditor[php]上传文章内容图片插件[提供技术支持]
    使用PHP创建一个REST API(Create a REST API with PHP)
    php错误处理
    PHP二维数组排序
    鼠标指针经过时整行变色的表格
    java net unicode / native2ascii / url decode / url encode / UTF8 / js url code
    java protocol / patent
    framework junit
  • 原文地址:https://www.cnblogs.com/ygj0930/p/6504465.html
Copyright © 2011-2022 走看看