数据库基础知识

  • 数据库的定义

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

  • 数据库的三级模式结构

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

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

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

  • 数据的独立性

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

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

  • 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:不支持事务、外键、行锁,支持表锁,适合读操作多的场景。

相关推荐
陌上丨10 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
AI_567810 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
ccecw11 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
JH307311 小时前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
数据知道11 小时前
PostgreSQL 核心原理:如何利用多核 CPU 加速大数据量扫描(并行查询)
数据库·postgresql
麦聪聊数据12 小时前
Web 原生架构如何重塑企业级数据库协作流?
数据库·sql·低代码·架构
未来之窗软件服务12 小时前
数据库优化提速(四)新加坡房产系统开发数据库表结构—仙盟创梦IDE
数据库·数据库优化·计算机软考
Goat恶霸詹姆斯14 小时前
mysql常用语句
数据库·mysql·oracle
大模型玩家七七14 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
曾经的三心草14 小时前
redis-9-哨兵
数据库·redis·bootstrap