知识点总结-2020/7/29

  1. 什么是数据模型?数据模型的三要素?

    • 数据模型是数据特征的抽象。从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供了一个抽象的框架。数据模型所描述的内容有三部分:数据结构、数据操作和数据约束
  2. 什么是外键?怎样创建外键?

    • 外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束,用来建立和加强两个表数据之间的连接。
# 添加外键  
alter table `表名` add constraint `外键名` foreign key `本表字段名` references `外表表名` `外表主键名`;  
# 插入、删除数据时外键能保证相同数据在两个表中的完整、统一性
# 修改主表,则外键保证从表中外键关联数据也被修改
# 删除外键
alter table `表名` drop foreign key `外键名`;
  1. 关系模式规范化理论(关系范式)

    • 第一范式(属性不可再分): 列/属性/字段具有原子性,不可再分
    • 第二范式(非主属性完全依赖主属性): 满足第一范式的基础上,表必须拥有主键,且主键外的列/属性/字段必须完全依赖于主键中的
      列/属性/字段,而不能部份依赖
    • 第三范式(非主属性直接依赖主属性): 满足第二范式的基础上,表中非主键列/属性/字段必须直接依赖于主键,而不能传递依赖: 非主键A 依赖 非主键B 依赖主键
  2. 关系数据库特点

    • 数据结构化
    • 高共享、低冗余、易扩充
    • 数据独立性高(物理独立性、逻辑独立性)
    • 数据由DBMS统一管理和控制
  3. 关系数据库“数据独立性”

    • 物理独立性: 数据的存储结构完全由DBMS管理,与上层用户应用程序相互独立
    • 逻辑独立性: 数据的逻辑结构完全由DBMS管理,与上层用户应用程序相互独立
  4. 正则表达式regexp

  5. 不同模型下实体间联系的表示

    • 关系模型: 表
    • 层次模型: 树(指针链接)
    • 网状模型: 图(指针链接)
  6. case函数、case搜索函数
    case...when..then..end

# 执行搜索
select `filed_name1`,  
  {case `filed_name1`
    when `filed__name1_value1` then `filed_name2_value1`
    when `filed__name1_value2` then `filed_name2_value2`
    end
  }`filed_name2`
from `table_name`;
  1. 主键(primary key)、外键(foreign key)区别
  • 主键表示同一关系中各字段数据间的关系(字段/属性间关联)
  • 外键表示两个关系中基于相同主键字段的联系(关系间关联)
  1. 数据库“存储过程”——(例: DAO层接口或Mybatis的mapper.xml)
    存储过程是指一组完成特定任务的SQL语句集,经编译存储在数据库中,用户通过调用对应名称的存储过程并给出参数(如果需要)来执行。

  2. 数据库三级模式结构——外模式、模式、内模式

  • 内模式(Internal Schema, 物理存储模式):
    • 数据物理结构和存储方式的描述(数据怎样存储、索引怎样存储)
    • DBMS的基础(实现数据共享、降低数据冗余、提高存取效率)
    • 具有唯一性(一个数据库只有一个内模式)
  • 模式(Schema,逻辑模式):
    • 以某一种数据模型(关系/网状/层次)为基础
    • 定义了数据的逻辑结构(数据项及其类型/数据之间的联系/安全性和完整性要求)
    • 具有唯一性
  • 外模式(External Schema, 子模式/用户模式):
    • 可以有多个外模式
    • 用户数据视图
    • 保证数据安全性
  1. 数据库关系规范化操作异常
  • 插入异常: 该插入的数据未被插入
  • 删除异常: 不能删除的数据被删除
  • 更新异常: 由于数据冗余带来的更新时为维护完整性、统一性而做的大量操作
  • 数据冗余: 同样的数据大量重复出现在不同文件中
  1. 视图设计的三种方式
  • 自顶向下。先全局框架,然后逐步细化
  • 自底向上。先局部概念结构,再集成为全局结构
  • 由里向外。先核心结构,再向外扩张
  1. 数据操作: 自然连接、投影、选择、交集

  2. SQL插入语句

# 插入新行  
insert into `table_name` (`filed_name1`,...,`filed_name3`) values(....)
# 向表一中插入表二查询结果  
select `filed_name1`...
into `table_name1`
from `table_name2`
where ...
posted @ 2020-07-29 13:49  CodeSPA  阅读(128)  评论(0编辑  收藏  举报