数据库概论复习笔记

目录 数据库理论关系数据库

									数据库理论
  1. 数据库常用数据模型

    • 层次模型(树)
      1. 有且只有一个结点没有双亲结点,这个结点为根节点
      2. 根节点以外的结点有且只有一个根节点
    • 网状模型
      1. 允许一个以上的结点无双亲
      2. 一个结点可以有多于一个的双亲
    • 关系模型
      1. 关系:一个关系对应通常所说的一张表。
      2. 元组:表中的一行即为一个元组
      3. 属性:表中的一列为一个属性,属性名为列名
      4. 码(key):也称作码键,表中的某个属性组,他可以确定一个元组,即表中主键Id,每一个Id都可以唯一确定一个元组,Id即为key
      5. 域(domain):属性的取值范围
      6. 关系模式:对关系的描述,一般写法为 关系名(属性名1,属性名2…),即 表名(列名…)
    • 面向对象模型
    • 对象关系模型
  2. 数据库系统的三级模式结构

    • 模式:也称逻辑模式,是数据库中所有数据的逻辑结构和特征的描述,是所有用户的公共数据视图,它是数据库系统模式结构的中间层,既不涉及数据的物理储存细节和硬件环境,也与具体的应用程序,所使用的应用开发工具及高级程序设计语言无关。
      也就是说,模式仅仅是针对此数据库中所有数据的关系、逻辑、特征的描述。
    • 外模式:也称子模式或用户模式,是数据库用户能看到和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是有关某个应用的数据的逻辑显示。
      也就是说,外模式只是针对某个用户而言,某个用户只能看到所属于他的那部分的数据,对其余数据不可见,是保证数据库安全性的一个有力措施。
    • 内模式:也称存储模式,一个数据库只有一个内模式,他是数据物理结构和存储方式的描述,是数据再数据库内部的表达方式。
      也就是说,内模式是指数据再这个数据库的储存方式,是一种储存的物理结构。
  3. 对于数据库系统三级模式中的两层映像

    • 外模式 / 模式映像:对于外模式和模式的定义而言,一个模式可以有多个外模式,对于每一个外模式,数据库系统都有一个外模式 / 模式映像,它定义了该外模式与模式之间的对应关系,这些映像定义通常包含在外模式的描述中。
      当模式改变时(例如增加新的关系,新的属性,改变属性的数据类型等),由数据库管理员对各个外模式 / 模式的映像做相应改变,可以使外模式保持不变,由于应用程序时依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性,即需要修改数据库的关系时,可以不用改变外模式,只改变映像关系,就可以避免修改应用程序,即逻辑独立性
    • 模式 / 内模式 映像:数据库只有一个模式,也只有一个内模式,所以模式 / 内模式映像是唯一的,它定义了数据全局逻辑结构与储存结构之间的对应关系。具有物理独立性
  4. SQL的特点

    • 综合统一
    • 高度非过程化
    • 面向集合的操作方式
    • 以同一种语法结构提供多种使用方式
    • 语言简洁,易学易用
  5. SQL基本概念

    • 外模式对应视图(View)和部分基本表(Base Table),模式对应于基本表,内模式对应于储存文件。
    • 基本表是本身独立存在的表,在SQL中一个关系就对应一个基本表,一个(或多个)基本表对应一个储存文件,一个表可以带若干索引,索引也存放在存储文件中。
    • 储存文件的逻辑结构组成了关系数据库的内模式,储存文件的物理结构是任意的,对用户是透明的。
    • 视图是从一个或几个基本表导出的表,它本身不独立存储在数据库中,即数据库中只存放视图的定义而不存放视图对应的数据,视图在概念上与基本表等同,用户可以在视图的定义上再定义视图。
  6. 数据定义

    • 模式的定义
      create schema <模式名> authorization <用户名>
      如果没有指定 <模式名>,那么<模式名>隐含为 <用户名>
      要创建模式,调用该命令的用户必须拥有DBA权限,或者获得了DBA授予的 CREATE SCHEMA 得权限
    • 删除模式
      drop schema <模式名> <cascade|restrict>
      其中cascade和restrict必须二选一
      cascade:级联,表示在删除模式的同时把该模式所有的数据库对象一起删除。
      restrict:限制,表示如果该模式中已经定义了下属的数据库对象,则拒绝该删除语句的执行,只有当该模式下没有任何下属的对象数据时才能执行删除操作。
  7. 基本表的定义、删除、修改

    • 定义基本表

      create table <表名> (<列名> <数据类型> [约束条件]);
      //
      create table student
      (sno char(9) primary key,
      sname char(20) unique
      )

    • 定义模式
      方法一:在表名中明显给出模式名
      create table “s-t”.student(…);/*student所属的模式是 s-t */
      方法二:在创建模式语句中同时创建表
      create schema test authorization zhang
      create table tab1(…);
      /在为zhang用户创建一个test的模式并在该模式下创建了表table/

    • 修改基本表
      用 alter table 修改基本表
      alter table <表名>
      [add <新列名><数据类型>[完整性约束]]
      [drop <完整性约束>]
      [alter column <列名><数据类型>]
      其中,表名是要修改的基本表,add 用于增加新列和新的完整性约束条件,drop 用来删除指定的完整性约束条件,alter column 用来修改原有的列定义,包括修改列名和数据类型。

    • 删除基本表
      drop table <表名> [restrict|cascade]
      restrict :要删除的基本表内不能被其他表的约束所引用(cheak,foreign key等),不能有视图,不能有触发器不能有储存过程和函数等,如果存在则不能被删除。(默认选中 resticr)
      cascade:直接删除,包括相关的依赖全部被删除

    • 索引的建立
      create [unique][cluster]index <索引名>
      on <表名>(<列名>[<次序>][,<列名>[<次序>]]… )
      <表名>是要建立索引的基本表的名字,索引可以建立在该表的一列或多列上,各列之间用逗号分隔。每个<列名>还可以用次序指定索引值得排列是升序(ASC)或降序(ASC),默认ASC
      UNIQUE 表明此索引的每一个索引值只对应唯一的数据记录
      CLUSTER 表示要建立的索引是聚簇索引,即索引项的顺序与记录的物理顺序一致的索引组织

    • 索引的删除
      使用drop index
      drop index <索引名>
      删除索引时,系统会同时从数据字典中删去有关该索引的描述

  8. 数据查询

    select <列名>,<列名> from 表名;/*查询某列下的数据*/
    select * from 表名 /*查询该表下的所有数据*/
    select 算术表达式 from 表名; /*列名可以用算术表达式的结果*/
    select distinct 列名 from 表名 /*查询某列下的数据并删除列名下重复的数据*/
    select 列名 from  表名 where 条件表达式
    

    条件表达式

    • 比较大小 :=、>、<、>=、<=、!=、!>、!<
    • 确定范围:(not) between 范围下限 and 范围上限
    • 确定集合:in 可以用来查找属性值属于指定集合的元组
      select 列名 from 表名 where 列名 (not) in (列名集合)
      字符匹配:
    • like:%匹配任意长度的字符(可以为0)的字符串,_ 匹配任意单个字符
      select 列名 from 表名 where 列名 like ‘%00_%’
      order by :按照升序(ASC)或降序排列(DESC)
      select 列名 from 表名 order by 列名 desc(ASC)/表示按照列的数据降序或者升序排列/
      注意:where子句在order by子句前
      聚集函数:
      count(*) /统计元组个数/
      count(列名) /统计一列中值得个数/
      sum(列名) /计算一列值的总和(必须是数值型)/
      avg(列名) /计算一列值的平均值(必须是数值型)/
      max(列名) /计算一列值的最大值(必须是数值型)/
      min(列名) /计算一列值的最小值(必须是数值型)/

    group by:将查询的结果按照某一列或多列的值分组,值相等的为一组
    select * from 表名 group by 列名 /在该列下相同的数据分为一组/

    连接查询
    即多表联查
    select 表1.列名,表2.列名 from 表1,表2 where 表1.列名 = 表2.列名

    嵌套查询:即把一个查询语句块当做另一个查询语句块的条件,但是子查询中的select语句不能使用order by语句,order by语句只能给最终的结果排序
    集合查询
    并(UNION),交(INTERSECT)、差(EXCEPT)

    select * from 表名  union (all)select * from 表名/*将结果合并起来,自动去除重复元组,若要保留重复元组,使用UNION ALL操作符*/
    
    select * from 表名 intersect select * from 表名 /*求两个结果的交集*/
    
  9. 数据更新

    • 插入数据
      insert into 表名 (列名) values (对应的数据)
      insert into 表名 values(根据列名所对应的数据,插入空值写为 null )
    • 修改数据
      update 表名 set 列名 = 数据 …where 条件
    • 删除数据
      delete from 表名 where 条件
  10. 视图
    视图是从一个或几个基本表(或视图)导出的表,它是一个虚表,并不存在,数据库中只存放视图的定义,而没有视图的所对应的数据,它的数据来源于其他表或者视图。

    • 定义视图
      create view 视图名 (列名) as (子查询)
      其中,子查询可以是任意复杂的select语句,但通常不允许有order by语句和 distinct短语,即把子查询结果当做一个视图,并定义视图名,如果不加列名,则此视图的列名为原列名
    • 查询视图
      select 列名 from 视图名 where 条件
      视图的查询和普通表查询方法一致
    • 更新视图
      insert into 视图 (列名) values (对应的数据)
      insert into 视图 values(根据列名所对应的数据,插入空值写为 null )
      update 视图 set 列名 = 数据 …where 条件
      delete from 视图 where 条件
    • 视图的作用:
      • 简化用户操作,将注意力集中在自己所需要的数据上
      • 多种角度看待统一数据
      • 提供一定的逻辑独立性
      • 对机密数据提供安全保护
      • 更清晰的表达查询

关系数据库

  1. 关系
    • 域:一组具有相同数据类型的值的集合,例如,大于0小于100的整数
    • 笛卡尔积:笛卡尔积是域上面的一种集合运算
      • 笛卡尔积定义:给定一组域D1,D2,D3…Dn,它们的笛卡尔积为D1 x D2…x Dn = {d1,d2…d.}
        d1…dn为所有元素叫做元组,每一个元素叫做分量
        例:D1={A,B,C}
        D2={1,2,3}
        所以D1 x D2 x D3 的笛卡尔乘积为{
        (A,1),(A,2),(A,3)
        (B,1), (B,2), (B,3),
        (C,1), (C,2), (C,3),
        }
        一共有12个元组,A,B,C 1,2,3叫做分量
    • 关系
      D1 x D2…x Dn 的子集叫做在域D1,D2…Dn上的关系,表示为R(D1,D2…Dn)
      这里R表示关系的名字,n表示关系的目或者度
      当 n = 1 时,该关系为一元关系或单元关系
      当 n = 2 时,该关系为二元关系
      关系时笛卡尔积的有限子集
    • 若关系中的某一属性组的值能够唯一地标识一个元组,则称该属性组为候选码。
    • 若一个关系有多个候选码,则选定其中一个为主码
    • 候选码的诸属性称为主属性,不包含在任何候选码中的属性称为非主码属性或非码属性
    • 若关系模式下所有属性是这个关系模式的候选码,则为全码
    • 关系有三种类型:
      • 基本表示实际存在 的表,它是实际储存数据的逻辑表示
      • 查询表是查询结果对应的表
      • 视图表是有基本表或其他视图导出的表,是虚表,不对应实际存储的数据。
发布了29 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42568510/article/details/94443423
今日推荐