计算机数据结构系统原理——知识点总结

自用,不全

目录 :

   1)逻辑记录和物理记录

   2)索引

   3)数据库的四种隔离等级

   4)关系型数据库与非关系型数据库

1. 逻辑记录和物理记录

记录是文件存取操作的基本单位。

逻辑记录:是按用户观点的基本存取单位。

物理记录:是按外存设备观点的基本存取单位。

通常逻辑记录和物理记录之间存在三种关系:一对一、一对多、多对多

       (1)一个物理记录存放一个逻辑记录;

       (2)一个物理记录包含多个逻辑记录;

       (3)多个物理记录表示一个逻辑记录。

 

2. SQL 索引、主键、唯一索引。

(1)索引(Index):是一种特殊的文件,它们包含数据表里的所有记录的引用指针。索引的遵照原则:

                   (a) 最左侧原则:表的最左侧一列,往往数据不会发生改变,不影响其他列的数据

                   (b) 命名短小原则:索引命名过长会使索引文件变大,损耗内存。

(2)普通索引(Normal Index)(由关键字 KEY或 INDEX 定义得到的索引):加快数据的查询速度

(3)唯一索引(Unique Index)(由关键字 UNIQUE 把它定义为唯一索引):保证数据的唯一性

(4)主键(Primary Key):一种特殊的唯一索引,一张表中只能定义一个主键索引,用来标识唯一一条数据,用 PRIMARY KEY 创建

(5)联合索引:索引可以覆盖多个数据列,如像 INDEX 索引就是联合索引

索引可以极大的提高查询访问速度,但是会降低插入,删除,更新表的速度,应为在执行写的操作的时候还要操作索引文件。

3. 事务隔离级别

 在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别

3个并发访问问题:

  1)脏读:B事务读取到了A事务尚未提交的数据
  2)不可重复读:一个事务中两次读取的数据的内容不一致

  3)幻读:一个事务中两次读取的数据的数量不一致

在标准SQL规范中,定义了4个事务隔离级别:

  1)未授权读取,也称为读未提交(read uncommitted);

  2)授权读取,也称为读提交(read committed):解决1

  3)可重复读取(repeatable read):解决1和2

  4)序列化(serializable):解决1和2和3

Mysql的隔离级别默认是:3 - 可重复读

Oracle和SQL Server的默认隔离级别是:2 - read-commit

具体信息:https://blog.csdn.net/weixin_41835916/article/details/81455953

 

2 触发器的作用(触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。)

3 存储过程优缺点(创建一次,多次使用。调用简单,可提供部程序调用。缺点:移植性差)

4 索引作用、优缺点、底层(优点:加速对数据的索引。缺点:降低数据库录入速度,占空间,后期维护等,B+树)

5 事务的特性、并发问题、隔离级别(ACID:A原子性、C一致性、I隔离性、D持久性。并发问题:脏读、不可重复读、幻读。 隔离级别:读未提交、读已提交、可重复读、串行化)

6 视图和游标(视图:是一种虚拟的表,具有和物理表相同的功能。游标:是对查询出来的结果集作为一个单元来有效的处理)

7 视图优缺点(优点:选择性的读取数据库、通过简单查询的得到一些原本需要复杂查询才能得到的结果、维护数据的独立性,试图可从多个表检索数据、对于相同的数据可产生不同的视图。缺点:查询视图时,必须把视图的查询转化成对基本表的查询)

8 数据库查询语句很慢,如何优化(索引、优化sql尽量不做全表查询、减少表关联、优化查询字段等等)

9 数据库三范式(1NF:确保每一列的原子性 2NF:非键字段必须依赖于键字段 3NF:在1NF基础上,除了主键以外的其它列都不传递依赖于主键列,或者说: 任何非主属性不依赖于其它非主属性
(在2NF基础上消除传递依赖))

10 union和union all有什么不同(union:合并去重、union all :只是合并,一般没有重复数据用union all 因为更快)

11 SQL语言共分为四大类(数据查询语言DQL:select /from/where,数据操纵语言DML:insert/update/delete,数据定义语言DDL:create/drop/truncate/alert,数据控制语言DCL:grant/rollback)

12 drop、delete、truncate区别(不带where的delete和truncate只删除表的数据,不会删除表的结构。速度drop> truncate > delete,delete是dml要等事务生效 、drop和truncate属于ddl理解生效)

13 数据库的乐观锁和悲观锁(乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作)

14 mysql设置隔离级别(语句:set session transaction isolation level read uncommitted 可选参数:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE)

15 SQL约束(NOT NULL不为空、UNIQUE唯一、PRIMARY KEY主键、FOREIGN KEY外键、CHECK控制字段范围)

16 Mysql数据库引擎MyISAM和InnoDB(MyISAM:表锁、不支持事务、不支持外键、全文索引、快、内存利用低,InnoDB:行锁、外键、事务)

17 varchar和char(varchar可变长度、char长度固定)

18 数据库锁分类(按锁的粒度分:表锁、行锁、页级锁 。按锁的级别划分:共享锁、排他锁 。按加锁方式分:自动锁、显示锁。按操作划分:DML锁、DDL锁 。按使用方式分:悲观锁、乐观锁)

19 常用数据库默认隔离级别(mysql:可重复读 oracle:读已提交 SQLServer:读已提交)

20 Oracle高水位理解(Oracle段(segments)就像水库记录历史水位,一般不会下降,使用truncate命令可以置零)

21 内连接外连接区别(内:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件 外:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接)

22 查询语句有like(尽量避免%XXX%,用不到索引,单侧%能用到索引)

23 mysql数据库优化(explain写的SQL、只要一行数据用limit 1、使用enum而不是varchar、固定长度的表会更快、分库分表)

24 oracle数据库优化(调整数据结构设计、调整操作系统参数、调整数据库sql语句、调整服务器内存分配、调整硬盘I/O)
 
25 关系运算 和 集合运算
关系运算包括选择、投影、连接以及除法。
集合运算是二目运算,包括并、差、交、广义笛卡尔积四种运算。
 
26 数据查询语言DQL 数据操纵语言DML 数据定义语言DDL 数据控制语言DCL
27 SQL约束
NOT NULL : 用于控制字段的内容一定不能为空(NULL)。 

UNIQUE : 控制字段内容不能重复,一个表允许有多个 Unique 约束。

PRIMARY KEY: 也是用于控制字段内容不能重复,但它在一个表只允许出现一个。

FOREIGN KEY: FOREIGN KEY 约束用于预防破坏表之间连接的动作,FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

CHECK: 用于控制字段的值范围。

DEFAULT: 用于设置新记录的默认值。

 28 完整性规定

1.实体完整性/实体完整性约束/主键约束:主键只能有一个,取值既不能重复,也不能为空
2.参照完整性:外键的取值必须是另一表中对应主键的取值之一
3.用户定义完整性/区域完整性:根据数据的含义对数据所做的限定 如 性别:{男 ,女}
29 执行顺序:from,where,group by,having,select,order by
posted @ 2019-03-01 12:18  森淼clover  阅读(283)  评论(0编辑  收藏  举报