-
数据库的定义
数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的数据集合。
-
数据库的三级模式结构
外模式:用户视图,描述用户能看到的数据。
模式:逻辑结构,描述数据的全局逻辑结构。
内模式:物理存储结构,描述数据在存储介质上的组织方式。
-
数据的独立性
物理独立性:数据的物理存储结构改变时,应用成成无需修改。
逻辑独立性:数据的逻辑结构改变时,应用程序无需修改。
-
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:不支持事务、外键、行锁,支持表锁,适合读操作多的场景。
数据库基础知识
无所事事的海绵宝宝2026-01-06 9:27
相关推荐
这个DBA有点耶5 小时前
NULL不是空——数据库里最反直觉的设计,90%新人踩过的坑这个DBA有点耶7 小时前
AI写的SQL跑崩了生产库,这锅谁背?镜舟科技7 小时前
Databricks 再提 LTAP,AI 时代的数据底座为何重回大一统叙事?Databend8 小时前
从湖仓升级为 Agent 时代的数据控制面,Snowflake 和 Databricks 有哪些布局ClouGence11 小时前
SQL Server CDC 能放到 Always On 备库读吗?一文讲透原理与实践先吃饱再说1 天前
存储的进化:从 MySQL 到浏览器缓存,数据到底住在哪?Nturmoils1 天前
字段太多看不全,ksql 的展开模式和输出控制怎么用Databend1 天前
Agent 轨迹分析与归因的数据工程实践这个DBA有点耶1 天前
SQL改写进阶:标量子查询的“隐形代价”与消除实战smallyoung1 天前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南