数据库(速成快速搞定面试和笔试)

基本概念

概念 解释
Data 数据,是数据库中存储的基本对象,是描述事物的符号记录
Database 数据库,长期存储在计算机内、有组织、可共享的大量的数据的集合。数据库中的数据按照一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。特点:永久存储、有组织、可共享
DBMS 位于用户与操作系统之间的一层数据管理软件。主要功能:数据定义功能(DDL);数据组织、存储和管理;数据操纵功能(DML);数据库的事务管理和运行管理;数据库的建立和维护功能;其他功能
DBS 数据库系统,数据库系统,指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员(DBA)构成。
数据模型 是用来抽象、表示和处理现实世界中的数据和信息的工具,是对现实世界的模拟,是数据库系统的核心和基础;其组成元素有数据结构、数据操作和完整性约束。
概念模型 也称信息模型,是按用户的观点来对数据和信息建模,主要用于数据库设计
逻辑模型 是按计算机系统的观点对数据建模,用于DBMS实现
物理模型 用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具也是数据库设计人员与用户之间进行交流的语言
实体和属性 客观存在并可相互区别的事物称为实体。实体所具有的某一特性称为属性
E-R图 即实体-关系图,用于描述现实世界的事物及其相互关系,是数据库概念模型设计的主要工具
关系模式 从用户观点看,关系模式是由一组关系组成,每个关系的数据结构是一张规范化的二维表
型/值 型是对某一类数据的结构和属性的说明;值是型的一个具体赋值,是型的实例
数据库模式 是对数据库中全体数据的逻辑结构(数据项的名字、类型、取值范围等)和特征(数据之间的联系以及数据有关的安全性、完整性要求)的描述
数据库的三级系统结构 外模式、模式和内模式
数据库内模式 又称为存储模式,是对数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式
数据库外模式 又称为子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图。通常是模式的子集。一个数据库可有多个外模式
.数据库的二级映像 外模式/模式映像、模式/内模式映像

相关概念

概念 解释
主键 能够唯一地标识一个元组的属性或属性组称为关系的键或候选键。 若一个关系有多个候选键则可选其一作为主键(Primary key)
外键 如果一个关系的一个或一组属性引用(参照)了另一个关系的主键,则称这个或这组属性为外码或外键(Foreign key)
关系数据库 依照关系模型建立的数据库称为关系数据库。 它是在某个应用领域的所有关系的集合
关系模式 简单地说,关系模式就是对关系的型的定义, 包括关系的属性构成、各属性的数据类型、 属性间的依赖、 元组语义及完整性约束等。 关系是关系模式在某一时刻的状态或内容, 关系模型是型, 关系是值, 关系模型是静态的、 稳定的, 而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据
实体完整性 用于标识实体的唯一性。它要求基本关系必须要有一个能够标识元组唯一性的主键,主键不能为空,也不可取重复值
参照完整性 用于维护实体之间的引用关系。 它要求一个关系的外键要么为空, 要么取与被参照关系对应的主键值,即外键值必须是主键中已存在的值
用户定义的完整性 就是针对某一具体应用的数据必须满足的语义约束。包括非空、 唯一和布尔条件约束三种情况

面试常问

问题 答案
事务四大特性 原子性,要么执行,要么不执行
隔离性,所有操作全部执行完以前其它会话不能看到过程
一致性,事务前后,数据总额一致
持久性,一旦事务提交,对数据的改变就是永久的
MYSQL的两种存储引擎区别 MYISAM:不支持外键,表锁,插入数据时,锁定整个表,查表总行数时,不需要全表扫描
INNODB:支持外键,行锁,查表总行数时,全表扫描
一是主索引的区别,InnoDB的数据文件本身就是索引文件。而MyISAM的索引和数据是分开的。 二是辅助索引的区别:InnoDB的辅助索引data域存储相应记录主键
索引有B+索引和hash索引 Hash:hash索引,等值查询效率高,不能排序,不能进行范围查询
B+:数据有序,范围查询
聚集索引和非聚集索引 聚集索引:数据按索引顺序存储,中子结点存储真实的物理数据
非聚集索引:存储指向真正数据行的指针
索引的优缺点,什么时候使用索引,什么时候不能使用索引 索引最大的好处是提高查询速度,
缺点是更新数据时效率低,因为要同时更新索引
对数据进行频繁查询进建立索引,如果要频繁更改数据不建议使用索引。
索引的底层实现(B+树,为何不采用红黑树,B树)重点 红黑树:增加,删除,红黑树会进行频繁的调整,来保证红黑树的性质,浪费时间
B树也就是B-树:B树,查询性能不稳定,查询结果高度不致,每个结点保存指向真实数据的指针,相比B+树每一层每屋存储的元素更多,显得更高一点
B+树:B+树相比较于另外两种树,显得更矮更宽,查询层次更浅
B+树的实现 一个m阶的B+树具有如下几个特征:
1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。
2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。
为什么使用B+Tree 索引查找过程中就要产生磁盘I/O消耗,主要看IO次数,和磁盘存取原理有关。
根据B-Tree的定义,可知检索一次最多需要访问h个节点。数据库系统的设计者巧妙利用了磁盘预读原理,
将一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入
局部性原理与磁盘预读
Sql的优化 1.sql尽量使用索引,而且查询要走索引
2.对sql语句优化
子查询变成left join
limit 分布优化,先利用ID定位,再分页
or条件优化,多个or条件可以用union all对结果进行合并(union all结果可能重复)
不必要的排序
where代替having,having 检索完所有记录,才进行过滤
避免嵌套查询
对多个字段进行等值查询时,联合索引
索引最左前缀问题 如果对三个字段建立联合索引,如果第二个字段没有使用索引,第三个字段也使用不到索引了
索引分类,索引失效条件 普通索引:最基本的索引,没有任何限制
唯一索引:与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。
主键索引:它是一种特殊的唯一索引,不允许有空值。
全文索引:针对较大的数据,生成全文索引很耗时好空间。
组合索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则
数据库的主从复制 异步复制:默认异步复制,容易造成主库数据和从库不一致,一个数据库为Master,一个数据库为slave,通过Binlog日志,slave两个线程,一个线程去读master binlog日志,写到自己的中继日志一个线程解析日志,执行sql,master启动一个线程,给slave传递binlog日志
半同步复制 只有把master发送的binlog日志写到slave的中继日志,这时主库,才返回操作完成的反馈,性能有一定降低
并行操作 slave 多个线程去请求binlog日志
long_query怎么解决 设置参数,开启慢日志功能,得到耗时超过一定时间的sql
varchar和char的使用场景 varchar:字符长度经常变的
char:用字符长度固定的
数据库连接池的作用 维护一定数量的连接,减少创建连接的时间
更快的响应时间
统一的管理
分库分表,主从复制,读写分离 读写分离,读从库,写主库
spring配置两个数据库,通过AOP(面向切面编程),在写或读方法前面进行判断得到动态切换数据源。
数据库三范式 1NF:属性不可分
2NF:非主键属性,完全依赖于主键属性
3NF:非主键属性无传递依赖
关系型数据库和非关系型数据库区别 关系型数据库:
优点
1、容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解;
2、使用方便:通用的SQL语言使得操作关系型数据库非常方便;
3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率;
4、支持SQL,可用于复杂的查询。
5.支持事务
缺点
1、为了维护一致性所付出的巨大代价就是其读写性能比较差;
2、固定的表结构;
3、不支持高并发读写需求;
4、不支持海量数据的高效率读写
关系型数据库和非关系型数据库区别 非关系型数据库
1、使用键值对存储数据;
2、分布式;
优点
无需经过sql层的解析,读写性能很高
基于键值对,数据没有耦合性,容易扩展
存储数据的格式:nosql的存储格式是key,value形式
缺点
不提供sql支持
数据库中join的left join , inner join, cross join 1.以A,B两张表为例
A left join B
where条件语句只影响右表,右表存在符合条件的记录则展示,否则为null,右表多出的数据不展示
right join 同理
2.inner join A,B有交集的记录
3.cross join (笛卡尔积) A中的每一条记录和B中的每一条记录生成一条记录 例如A中有4条,B中有4条,cross join 就有16条记录
有哪些锁 乐观锁:通过版本号自己实现
悲观锁:共享锁,多个事务,只能读不能写,加 lock in share mode
排它锁:一个事务,只能写,for update
行锁:作用于数据行
表锁:作于用表
死锁怎么解决 找到进程号,kill 进程
最左匹配原则 最左匹配原则是针对索引的
举例来说:两个字段(name,age)建立联合索引,如果where age=12这样的话,是没有利用到索引的,
这里我们可以简单的理解为先是对name字段的值排序,然后对age的数据排序,如果直接查age的话,这时就没有利用到索引了,
查询条件where name=‘xxx’ and age=xx 这时的话,就利用到索引了,再来思考下where age=xx and name=’xxx‘ 这个sql会利用索引吗,
按照正常的原则来讲是不会利用到的,但是优化器会进行优化,把位置交换下。这个sql也能利用到索引了

笔试常考

1)表名:购物信息  
购物人      商品名称     数量  
A            甲          2  
B            乙          4  
C            丙          1  
A            丁          2  
B            丙          5  
……  
给出所有购入商品为两种或两种以上的购物人记录  
答:select * from 购物信息 where 购物人 in (select 购物人 from 购物信息 group by 购物人 having count(*) >= 2);  
2)表名:成绩表  
姓名   课程       分数  
张三     语文       81  
张三     数学       75  
李四     语文       56  
李四     数学       90  
王五     语文       81  
王五     数学       100  
王五     英语       49  
给出成绩全部合格的学生信息(包含姓名、课程、分数),注:分数在60以上评为合格  
答:select * from 成绩表 where 姓名 not in (select distinct 姓名 from 成绩表 where 分数 < 60)  
或者:  
select * from 成绩表 where 姓名 in (select 姓名 from 成绩表 group by 姓名 having min(分数) >=60)  
3)表名:商品表  
名称   产地         
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值