数据库面试题整理

1 存储过程

    预编译的SQL语句
    优点:
            预编译过,执行效率高
            可以重复使用
            安全性高,执行存储过程需要一定权限
    缺点:
            一致性低

2 视图

    定义:虚拟表,和物理表拥有一样的功能,一般是由一个或多个表的行或列的子集组成,对视图的修改也会改变原始表
    优点:
            简化数据操作
            定制不同用户的访问机制,安全机制
    缺点:
            一个复杂的多表查询所定义的视图无法直接进行更新
             create or replace view 视图名 as select……;
                                          drop view 视图名;

3 drop , delete,truncate区别

  drop:删除整个表
  delete:删除表内容,可加条件where
  truncate:删除表内容,速度快,不能回滚

4 临时表

  临时表是存在当前连接中的,一旦断开连接,mysql会自动删除并释放空间。
  CREATE TEMPORARY TABLE tmp_table (
  NAME VARCHAR (10) NOT NULL,
  time date NOT NULL);
  select * from tmp_table;

5 非关系型数据库和关系型数据库

    nosql:基于键值对存储,无需经过sql解析,效率高
          可扩展性强,数据之间没有耦合性
    sql:复杂查询,支持事务

6 索引

    是一种数据库管理系统中排序的数据结构。
    优点:
            加快检索速度
            创建唯一性索引,保证表中每行数据唯一性
            加快表之间的连接
    缺点:
            创建和维护索引消耗时间
            索引占据存储空间
            对数据进行修改,增加,删除时需要动态维护索引
    聚集索引:表记录的排列顺序和索引的排列顺序一致,所以查询效率快
    非聚集索引:表记录的排列顺序和索引的排列顺序不一致

7 事务

    定义:对数据库一系列操作进行统一回滚或提交,保证数据完整性和一致性
    四大特性ACID
            原子性、一致性、隔离性、持久性
    事务并发问题
            脏读:一个事务读取另外一个事务还没有提交的数据
            不可重复读:在同一个事务内,两个相同的查询返回了不同的结果(修改)
            幻读:读取的记录数量前后不一致(插入删除)
    事务隔离级别:
            读未提交:如果一个事务已经开始写数据,则另外一个事务不允许同时进行写操作,但允许其他事务读此行数据(解决了更新丢失,但还是可能会出现脏读)
            读提交:如果是一个读事务(线程),则允许其他事务读写,如果是写事务将会禁止其他事务访问该行数据(不可重复读)
            可重复读(mysql默认):指在一个事务内,多次读同一个数据,在这个事务还没结束时,其他事务不能访问该数据(包括了读写)(幻读)
            串行化:提供严格的事务隔离,它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行

8 存储引擎

在这里插入图片描述

9 查询语句的执行顺序

    from-where-group by-having-select-order by    

10 数据库锁

    悲观锁:每一次获取数据都担心被修改,先获取锁,再操作(select ... for update)
    乐观锁:每一次获取数据都不被修改(版本号机制)

11 日志

    redo log
    undo log
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值