【重要】数据库基础知识学习宝典


1. 数据库管理系统的主要功能

数据定义,数据操作,数据库的运行管理,数据组织、存储与管理,数据库的保护和维护,通信

 

2. 数据库的几种语言

数据查询语言(DQL):用来查询记录。保留字:select、where、order by、group by、having。

数据操作语言(DML):用来操纵数据库记录。保留字:insert、update、delete。

数据定义语言(DDL):用来定义数据库的表、库、列等对象。保留字:create、alter、drop、truncate

数据控制语言(DCL)用来定义访问权限和安全级别。保留字:commit,rollback、savepoint、grant、revoke

3. 什么是存储过程?有哪些优缺点?

简单理解为:存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了

优势:

l 存储过程是一个预编译的代码块,执行效率比较高

一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率

l 可以一定程度上确保数据安全

4. 索引是什么?有什么优缺点?

概念:索引是对数据库表中一或多个列的值进行排序的结构,是帮助MySQL高效获取数据的数据结构

简单理解:索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。

MySQL数据库索引类型:

普通索引、唯一索引、主键索引、全文索引

l 索引加快数据库的检索速度

l 索引降低了插入、删除、修改等维护任务的速度

l 唯一索引可以确保每一行数据的唯一性

l 通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能

l 索引需要占物理和数据空间

5. 什么是事务?

事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。

6. 数据库的悲观锁和乐观锁是什么?

数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。

 

乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。

 

悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作

乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。

7. 使用索引一定能提高查询的性能?为什么

优势:通过索引查询数据比全表扫描要快.

不足:索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时,索引本身也会被修改. 这意味着每条记录的INSERT,DELETE,UPDATE将为此多付出4,5 次的磁盘I/O. 因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢.使用索引查询不一定能提高查询性能,索引范围查询(INDEX RANGE SCAN)适用于两种情况:

基于一个范围的检索,一般查询返回结果集小于表中记录数的30%

基于非唯一性索引的检索

8. dropdeletetruncate的区别是什么?在什么场景下使用?

区别介绍:delete和truncate只删除表的数据不删除表的结构;

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

delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;

如果有相应的trigger,执行的时候将被触发. truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.

应用场景:

l 不再需要一张表的时候,用drop

l 想删除部分数据行时候,用delete,并且带上where子句

l 保留表而删除所有数据的时候用truncate

9. 什么是视图?视图的应用场景有哪些?

概念解释:视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。

应用场景:

l 只暴露部分字段给访问者,所以就建一个虚表,就是视图。

l 查询的数据来源于不同的表,而查询者希望以统一的方式查询,这样也可以建立一个视图,把多个表查询结果联合起来,查询者只需要直接从视图中获取数据,不必考虑数据来源于不同表所带来的差异

10. 多表查询有几种?各自的特点是什么?

查询分类:

l 合并结果集;UNION(去除重复记录) 、 UNION ALL(不去重复记录)

l 连接查询

l 内连接 [INNER] JOIN ON

l 外连接 OUTER JOIN ON

l 左外连接 LEFT [OUTER] JOIN

l 右外连接 RIGHT [OUTER] JOIN

l 全外连接(MySQL不支持)FULL JOIN

l 自然连接 NATURAL JOIN

l 子查询 

各查询的特点:

自然连接的特点:两张连接的表中名称和类型完全一致的列作为条件,例如emp和dept表都存在deptno列,并且类型一致,所以会被自然连接找到!

内连接的特点:查询结果必须满足条件

外连接(左连接和右连接)的特点:查询出的结果存在不满足条件的可能。

左连接:先查询出左表,然后查询右表,右表中满足条件的显示出来,不满足条件的显示null

右连接:先查询出右表,然后查询左表,左表中满足条件的显示出来,不满足条件的显示null

11. 什么是子查询?有什么特点?

概念:一个select语句中包含另一个完整的select语句。子查询就是嵌套查询,即SELECT中包含SELECT,如果一条语句中存在两个,或两个以上SELECT,那么就是子查询语句了。

子查询出现的位置:

where后,作为条为被查询的一条件的一部分;

from后,作表;

当子查询出现在where后作为条件时,还可以使用如下关键字:any、all

子查询结果集的形式:

l 单行单列(用于条件)

l 单行多列(用于条件)

l 多行单列(用于条件)

l 多行多列(用于表)

12. 数据库事务的 4 个特性:原子性、一致性、持续性、隔离性

原子性:事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。

一致性:事务前后,数据库的状态都满足所有的完整性约束。

隔离性:并发执行的事务是隔离的,一个不影响一个。如果有两个事务,运行在相同的时间内,执行相同的功能,同一时间仅有一个请求用于同一数据。设置数据库的隔离级别,可以达到不同的隔离效果。

持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

 持续补充