数据库基础知识

  • 数据库的定义

    数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的数据集合。

  • 数据库的三级模式结构

    外模式:用户视图,描述用户能看到的数据。

    模式:逻辑结构,描述数据的全局逻辑结构。

    内模式:物理存储结构,描述数据在存储介质上的组织方式。

  • 数据的独立性

    物理独立性:数据的物理存储结构改变时,应用成成无需修改。

    逻辑独立性:数据的逻辑结构改变时,应用程序无需修改。

  • SQL(Select Query Language)

    DDL(Data Definition Language,数据定义语言):create、alter、drop

    DML(Data Manipulation Language,数据操作语言):insert、delete、select、update、call、explain plan

    DCL(Data Control Language,数据控制语言):grant、revoke

    TCL(Transaction Control Language,事务控制语言):commit、rollback

  • 连接方式

    内连接:只返回两个表中匹配的行

    左连接:返回左表所有行,右表匹配的行,右表不匹配的行值为NULL

    右连接:返回右表所有行,坐标匹配的行,左表不匹配的行值为NULL

  • 对于一个join连接查询,过滤条件的字段一般放在什么位置

    • INNER JOIN 关联字段放在on后面;非关联字段放在on或者where后面都可以,通常放在where后面
    • LEFT JOIN 左表字段 关联字段放在on后面;非关联字段看需求,如果最终结果左表要全部保留,就放在on后面,如果最终结果左表需要根据这个字段过滤,那么就放where后面
    • LEFT JOIN 右表字段 关联字段放在on后面;非关联字段看需求,如果最终结果左表要全部保留,就放在on后面,如果最终结果左表需要根据这个字段过滤,那么就放where后面
  • 索引的类型

    普通索引、唯一索引、组合索引、全文索引

    聚簇索引、非聚簇索引

  • 索引会失效的情况

    对索引列进行运算或函数操作

    使用不等于进行查询

    使用OR连接条件,且OR前后条件都有索引

    存在数据类类型隐形转换

    使用LIKE以通配符开头

  • sql优化常用手段

    在频繁使用、区分度高的列上创建索引。

    使用组合索引时,遵循最左前缀原则。

    避免索引失效。

    查询索引上的字段,避免回表。

    对于连接查询,小表驱动大表(过滤后数据量少的标作为驱动表)。

    select后只带上需要的字段。

  • 事务及其特性

    事务是数据库操作的最小逻辑单元,有ACID特性。

    Atomicity 原子性:要么全部成功、要么全部失败。

    Consistency 一致性:事务执行前后数据库状态保持一致。

    Isolation 隔离性:多个事务并发执行互不干扰。

    Durability 持久性:事务提交后对数据库的修改是永久的,会持久化到磁盘上保存。

  • 事务的隔离级别

    • 读未提交:可能产生脏读、不可重复读、幻读。一个事务还没提交时,他做的变更就能被别的事务看到。
    • 读已提交:避免脏读,可能产生不可重复读、幻读。一个事务提交后,它做的变更才能被其他事务看到。
    • 可重复读:避免脏读、不可重复读,可能产生幻读。一个事务执行过程中看到的数据,总是和这个事务在启动时看到的数据时一致的。
    • 串行化:不能并发。
    • 脏读、不可重复读、幻读
      脏读:事务A读取了事务B未提交的数据。若事务B回滚,事务A读取的数据无效;
      不可重复读:事务A多次读取同一行数据,结果因事务B的修改而不同;
      幻读:事务A两次相同查询返回行数不同,因事务B插入了符合条件的新数据。
  • 死锁

    死锁的定义:两个或多个事务互相等待对放释放锁,形成循环等待。

    避免方法:按相同顺序访问资源、设置超时时间、使用死锁检测机制。

  • InnoDB和MyISAM的区别

    InnoDB:支持事务、外键、行锁,适合写操作多的场景。

    MyISAM:不支持事务、外键、行锁,支持表锁,适合读操作多的场景。

相关推荐
funfan051711 分钟前
【运维】MySQL数据库全量备份与恢复实战指南:从入门到精通
运维·数据库·mysql
+VX:Fegn089513 分钟前
计算机毕业设计|基于springboot + vue在线音乐播放系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
tq108638 分钟前
通用数据引用表示法:基于协议-URI-JSONPath的简洁数据定位规范
数据库
+VX:Fegn089544 分钟前
计算机毕业设计|基于springboot + vue律师咨询系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
manuel_897571 小时前
六 系统安全
网络·数据库·系统安全
液态不合群2 小时前
【面试题】MySQL 三层 B+ 树能存多少数据?
java·数据库·mysql
龙亘川3 小时前
【课程5.1】城管住建核心功能需求分析:市政设施、市容秩序等场景痛点拆解
数据库·oracle·智慧城市·城管住建
飞鸟真人3 小时前
Redis面试常见问题详解
数据库·redis·面试
fanruitian4 小时前
Springboot项目父子工程
java·数据库·spring boot
super_lzb4 小时前
mybatis拦截器ParameterHandler详解
java·数据库·spring boot·spring·mybatis