数据库

作者: MisAutumn | 来源:发表于2018-08-09 11:41 被阅读11次

    数据库包含哪几种类型的语言?每种语言包含哪几种语句
    DDL数据定义语言: 创建/修改/删除数据库对象 创建索引

    CREATE
    UPDATE
    DROP
    DELETE

    DML数据操纵语言: 增删改查

    SELECT - 查
    UPDATE - 改
    DELETE - 删
    INSERT INTO - 增

    DCL数据控制语言:修改数据库结构的操作权限

    GRANT - 授权
    REVOKE - 撤销授权
    DENY - 拒绝授权

    TCL事物控制语言:

    SAVEPOINT - 设置保存点
    ROLLBACK - 回滚
    COMMIT - 提交

    JOIN 连接查询
    INNER JOIN : 两个表相应的查询内容存在时呈现
    LEFT JOIN:以左表为基准,只要所查询的数据在左表中有就一定会显示
    RIGHT JOIN:
    FULL OUTER JOIN

    什么是存储过程?用什么来调用?
    存储过程是预先写好的sql语句,包括增删改查,条件语句,循环语句等,是为了实现数据库的某个功能而编写,可重复调用。如果需要调用多次同一个语句,写进存储过程执行会比在sql语句中执行更快。用call调用。

    触发器
    另一种形式的存储过程,只不过是特定指令自动触发。维护数据库的一致性和完整性

    索引的作用,优缺点
    索引是一种数据结构,排好序的快速查找数据结构,这些数据结构以某种方式指向数据,数据库可以在这种数据结构上实现高级查找算法
    优点:提高数据检索效率,降低数据库io成本
    降低排序成本,减少cpu损耗
    缺点:占用空间,增加数据库尺寸,减慢数据增删改速度

    什么是内存泄漏
    堆内存泄漏,程序在新建对象时为其分配一块内存,对象使用结束之后如果没有即时释放内存(free delete)否则该内存就不能被使用,产生内存泄漏。

    如何维护数据库的完整性和一致性

    1. 设置约束,主键,外键和非空字段的约束
    2. 设置触发器

    什么是事务
    事务是一组sql语句,上面有一个节点,如果事务中有一个语句执行不成,整个操作回滚至原来节点。要么整个执行,要么整个不执行。事务中的sql语句需要遵循ACID:原子性,一致性,隔离性,永久性。

    造成事务失败的原因

    1. 磁盘已满
    2. 事务用光cpu分配给它的时间片

    什么是锁
    锁可以保证事务的完整性和并发性
    对有限资源进行保护,解决并发和隔离的冲突
    读锁(共享锁):多个read操作可以同事进行
    写锁(排他锁):一个write操作没有完成时,禁止其他write和read操作
    读锁会阻塞写,写锁会阻塞读和写

    事务隔离级别
    原子性:事务中的数据操作要么全部被执行,要么全部不被执行
    一致性:数据库会从一个一致状态跳到另一个一致状态,数据库中的数据满足完整性约束。
    隔离性:多个事务并发执行时,不会互相影响。
    永久性:一旦一个事务被提交后,其对数据库的改变和结果将永远留存在数据库中。

    什么是主键,外键
    主键是表中一个或多个字段,其值非空唯一,是确定行的唯一标识
    外键是其他表的主键,和其他表建立联系

    可以用什么来确保表格里的字段只接受特定范围里的值
    建表时用check对数据库进行限制

    什么是相关子查询?如何使用这些查询?
    当一个查询是另一个查询的条件时,成为子查询
    相关子查询:依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。
    非相关子查询:独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。

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

    1. 当查询内容占整个数据库的30%以上时,进行全表查询的效率更高。
    2. 作为查询条件的字段不是建立索引的字段。
    3. 索引的类型不适用于本次查询,比如索引的类型如果是hash

    如何优化数据库,如何提高数据库的性能?

    1. 建立合理的索引
    2. 优化sql语句
    3. 如果有需要重复调用的sql语句,尽量使用存储过程
    4. 外键约束会影响数据库性能,在保证数据库完整性的条件下减少外键的使用
    5. 适当保留冗余(高级冗余/派生冗余)
      数据库系统级优化,数据库设计优化,程序实现级优化

    数据库设计的三范式
    第一范式:每个行与列的交叉点都只有一个值而不是一组值 (原子性)
    第二范式:在符合第一范式的基础上,每一行都有唯一标识 (唯一性)
    第三范式:在符合第二范式的基础上,非主键属性依赖于其他任何一个非主键属性 (减少冗余)

    相关文章

      网友评论

          本文标题:数据库

          本文链接:https://www.haomeiwen.com/subject/uahzvftx.html