• [面试直通版]数据库核心之DB,表,视图,事务与函数


    点击->SQL复习的文章集<-点击

    目录

    概念理清:关系数据库与其它数据库

    关系数据库

    非关系数据库(NoSQL)

    数据库的设计、创建与维护

    {DATABASE|SCHEMA}

    [IF NOT EXISTS]

    [create_option]: CHARACTER SET

    [create_option]: COLLATE

    表字段属性

    典型问题:

    数字类型

    日期类型

    字符串类型

    JSON类型

    ACID属性

    典型问题:

    ACID

    数据库事务隔离级别

    典型问题:

    事务隔离级别


    • 概念理清:关系数据库与其它数据库

    • 关系数据库

    • 关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)
    • 在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上
    • 通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理
    • 如:MySQL、SQLServer、SQLite、PostgreSQL
    • 非关系数据库(NoSQL)

    • NoSQL数据库种类繁多、数据库结构简单
    • 它去掉了关系数据库的关系型特性
    • 架构偏向大数据量以及高性能的设计,更加灵活
    • Key-Value数据库
    • 特定的键(Key)指向指定的数据(Value)
    • Value—般支持多种数据格式
    • 通过指定Key检索Value速度非常快
    • 如:Redis、Memcache
    • 文档数据库
    • K-V数据库的升级版,数据类型为结构化的文档
    • 大多都支持文档版本回溯
    • 列存储数据库
    • 分列数据格式:对一个列的数据进行分组和存储
    • 大多数查询并不会涉及表中的所有列
    • 不适合数据量更新、删除频繁的场景
    • 图数据库
    • 应用图形理论存储实体之间的关系信息
    • 典型的NoSQL数据库
    • 在智能推荐领域有着非常广泛的应用
    • 数据库的设计、创建与维护

    • {DATABASE|SCHEMA}

    • DATABASE:数据库
    • SCHEMA:模式
    • 两者同义
    • CREATE DATABASE
    • [IF NOT EXISTS]

    • 如果数据库不存在则创建
    • 如果数据库存在则不做修改
    • CREATE DATABASE IF NOT EXISTS test_db
    • [create_option]: CHARACTER SET

    • CHARACTER SET: 字符集
    • show charset;
    • CREATE DATABASE IF NOT EXISTS test_db
    • CHARACTER SET = utf8mb4
    • [create_option]: COLLATE

    • 对字符串类型字段的排序规则
    • 国内比较常用的是utf8mb4_general_ci
    • CREATE DATABASE IF NOT EXISTS test_db
    • CHARACTER SET = utf8mb4
    • COLLATE = utf8mb4_general_ci;
    • 表字段属性

    • 典型问题:

    • char、varchar、text之间有什么区别?
    • 使用JSON字段有什么好处?
    • 如何在MySQL中处理金融数据?
    • 数字类型

    • DECIMAL(24, 4):表示存储小数点后4位,则整数部分最大20位
    • 日期类型

    • 数据类型 数据值
    • DATE "0000-00-00"
    • TIME "00:00:00"
    • DATETIME "0000-00-00 00:00:00"
    • TIMESTAMP "0000-00-00 00:00:00"
    • YEAR 0000
    • 字符串类型

    • 数据类型 数据值
    • CHAR 固定长度,最大255字节
    • VARCHAR 不固定长度,最大65535字节
    • BLOB 对象存储,最大65535字节
    • TINYTEXT 最大255字节
    • TEXT 最大65535字节
    • LONGTEXT 最大4294967295字节
    • CHAR vs VARCHAR:VARCHAR可变长,CHAR占用固定存储空间
    • VARCHAR vs TEXT:TEXT不允许默认值Text(mediumtext、longtext)支持比varchar更长的存储长度
    • 给text字段建索引,索引的占用空间较大
    • 从名字上,区分存储内容的区别
    • 总的来说:固定长度用char,尽量使用varchar,尽量少使用text
    • JSON类型

    • JSON列中的内容会被自动校验,不允许错误
    • 存储在JSON列中的内容会被转换为允许快速读取元素的内部格式
    • 优化器支持局部读写,不用覆盖完整内容
    • ACID属性

    • 典型问题:

    • 请简述什么是数据库的ACID
    • 数据库的隔离性有哪几个级别
    • ACID

    • 即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
    • 事务处理
    • 数据库事务主要用于维护数据库的完整性,通过事务,可以保证成批的MySQL操作要么完全执行,要么完全不执行
    • 为保证事务(transaction)是正确可靠的,所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(durability)
    • 原子性(Atomicity)
    • 一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节
    • 事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样
    • 即,事务不可分割、不可约简
    • 一致性(Consistency)
    • 在事务开始之前和事务结束以后,数据库的完整性没有被破坏
    • 这表示写入的资料必须完全符合所有的预设约束、触发器、级联回滚等
    • 隔离性(Isolation)
    • 数据库有允许多个并发事务同时对其数据进行读写和修改的能力
    • 隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致
    • 持久性(Durability)
    • 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失
    • 数据库事务隔离级别

    • 典型问题:

    • 请简述数据库的事务隔离级别
    • 什么是脏读,不可重复读和幻读有什么区别
    • 事务隔离级别

    • 有4个:
    • 未提交读(Read uncommitted)
    • 提交读(read committed)
    • 可重复读(repeatable read)
    • 串行化(Serializable)
    • 脏读、不可重复读和幻读
    • 脏读:事务A读取了事务B操作未提交的数据,则事务A读到的是脏数据,此时称为脏读
    • 不可重复读:事务A多次读取到同一份数据,事务B在事务A多次读取的过程中,对数据进行了更新并提交,导致事务A多次读取同一数据时,结果不一致
    • 幻读:事务A需要操作一份数据,并事先匹配成功,在实际进行操作时,却发现数据被事务B插入/删除了
    • 即在一个事务操作里面发现了未被操作的数据
    • 未提交读:即能够读取到事务未提交的数据,无法解决脏读、不可重复读、幻读的任何一种
    • 提交读:能够读取那些已提交的数据,可以避免脏读
    • 可重复读:在事务B结束之前,事务B对某一份数据多次读取得到一致的结果,无法解决幻读问题
    • 串行读:不管多少事务,都必须执行完一个事务再执行另外一个事务,不存在并行执行事务的情况
    • 彻底解决脏读、不可重复读、幻读的问题,牺牲了事务性能
    • 1.隔离级别
      • read uncommitted
    • 1.名称
      • 读未提交
    • 1.会引发的问题
      • 脏读,不可重复读、幻读
    • 2.隔离级别
      • read committed
    • 2.名称
      • 读已提交
    • 2.会引发的问题
      • 不可重复读、幻读
    • 3.隔离级别
      • repeatable read
    • 3.名称
      • 可重复读
    • 3.会引发的问题
      • 幻读
    • 4.隔离级别
      • serializable
    • 4.名称
      • 串行化
    • 4.会引发的问题
  • 相关阅读:
    折叠式菜单怎么做编程,初学编程系统化教程初级1上线
    PercentRatingBar-百分比评分控件
    logback实践
    多维时序 | MATLAB实现PSO-BP多变量时间序列预测(粒子群优化BP神经网络)
    【计算机毕设选题推荐】口腔助手小程序SpringBoot+Vue+小程序
    【SpringCloud】服务注册与发现(01)-Eureka
    一文带你入门机器学习超参数优化算法
    【云原生之Docker实战】部署轻量级容器云管理平台Humpback
    Bellman-ford算法详解
    JavaScript 33 JavaScript 数学
  • 原文地址:https://blog.csdn.net/weixin_59624686/article/details/126895794