数据库学习 - yunfanfan/Notes GitHub Wiki

数据库学习笔记

2020.6.7

通配符

通配符 描述
% 替代 0 个或多个字符
_ 替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist] 或 [!charlist] 不在字符列中的任何单一字符

数据库事务特性

  • 一.什么是事务

    事务是应用程序中一系列逻辑相关的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性:一个事务中的一系列的操作要么全部成功,要么一个都不做。 事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消之前的所有操作。

  • 二.事务的 ACID

    事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持久性( Durability )。这四个特性简称为 ACID 特性。 1 、原子性 事务是数据库的逻辑工作单位,不可分割,事务中包含的各操作要么都做,要么都不做 2 、一致性 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是 不一致的状态。 3 、隔离性 一个事务的执行不能受其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 事务的隔离级别有4级,可以查看这篇博客,关于MySQL的事务处理及隔离级别 4 、持续性 也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的,不能回滚。接下来的其它操作或故障不应该对其执行结果有任何影响。

数据库中完整性(Integrity)一词是指数据的正确性,相容性,防止错误的数据进入数据库。正确性:数据的合法性,例如数值型数据中只能含数字而不能含字母。相容性:表示同一事实的两个数据应相同,不一致就是不相容。

SQL ORDER BY 关键字

ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。

ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。

视图

  1. 好处:集中数据,定制需求;屏蔽数据复杂性,方便管理;提供安全机制,查询指定列;可以保存频繁的select语句,方便查询。
  2. 通过定期的刷新机制来更新实体化视图表中的数据。

truncate、delete、drop区别

drop :数据库定义语言(ddl)立即生效;删除表;列;数据库;释放空间;会删除表的结构(约束(constrain)、触发器(trigger)、索引(index))

delete:DML(数据库操作语言)语句,不会自动提交,不释放空间

truncate:数据库定义语言(ddl)立即生效;仅删数据,不删表;释放空间;不带查询条件;将自动ID置零

速度,一般来说: drop> truncate > delete

安全性:小心使用 drop 和 truncate

常用的数据模型:概念模型、逻辑模型、物理模型

数据模型按不同的应用层次分成三种类型:分别是概念数据模型、逻辑数据模型、物理数据模型。

1、概念模型(Conceptual Data Model),是一种面向用户、面向客观世界的模型,主要用来描述世界的概念化结构,它是数据库的设计人员在设计的初始阶段。

2、逻辑模型(Logical Data Model),是一种面向数据库系统的模型,是具体的DBMS所支持的数据模型。

3、物理模型(Physical Data Model),是一种面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS有关,而且还与操作系统和硬件有关。

常用的逻辑模型:层次模型、网状模型、关系模型

  1. 层次模型将数据组织成一对多关系的结构,层次结构采用关键字来访问其中每一层次的每一部分。
  2. 网状模型用连接指令或指针来确定数据间的显式连接关系,是具有多对多类型的数据组织方式。
  3. 关系模型以记录组或数据表的形式组织数据,以便于利用各种地理实体与属性之间的关系进行存储和变换,不分层也无指针,是建立空间数据和属性数据之间关系的一种非常有效的数据组织方法。

索引

您可以在表中创建索引,以便更加快速高效地查询数据。

用户无法看到索引,它们只能被用来加速搜索/查询。

考虑列的值的分布,列的基数越大,索引的效果越好。

注释:更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引

如果为表分配了别名,那么 Transact-SQL 语句中对该表的所有显式引用都必须使用别名,而不能使用表名。

数据库三级模式体系结构的划分,有利于保持数据库的数据独立性

外模式/模式的映像保证逻辑独立性,模式/内模式的映像则保证物理独立****性

在数据库的三级模式结构中:
模式也称为逻辑模式或概念模式;
外模式也称为用户模式;
内模式也称为物理模式或存储模式。
内模式(也称存储模式):是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,记录的存储方式(顺序存储,按照B树结构存储,按hash方法存储),索引的组织方式,数据是否压缩存储,数据是否加密,数据存储记录结构的规定,一个数据库只有一个内模式。

img

在使用left jion时,on和where条件的区别如下: 1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。 2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉

需求分析阶段的任务是在调查、分析的基础上明确用户对系统的需求。概念设计阶段的任务是设计概念模型,较著名的是E-R图。逻辑设计阶段的任务是把概念模型转化为特定DBMS的逻辑结构(模式和外模式),物理设计阶段的任务是设计合适的物理(存储)数据库结构。