mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-08-10 00:41:37 +08:00
Compare commits
3 Commits
79dd9f8992
...
1cca70a215
Author | SHA1 | Date | |
---|---|---|---|
|
1cca70a215 | ||
|
0638f92afa | ||
|
fabadf6955 |
@ -155,6 +155,17 @@ Timestamp 只需要使用 4 个字节的存储空间,但是 DateTime 需要耗
|
||||
|
||||
关于两者的详细对比,请参考我写的[MySQL 时间类型数据存储建议](./some-thoughts-on-database-storage-time.md)。
|
||||
|
||||
### NULL 和 '' 的区别是什么?
|
||||
|
||||
`NULL` 跟 `''`(空字符串)是两个完全不一样的值,区别如下:
|
||||
|
||||
- `NULL` 代表一个不确定的值,就算是两个 `NULL`,它俩也不一定相等。例如,`SELECT NULL=NULL`的结果为 false,但是在我们使用`DISTINCT`,`GROUP BY`,`ORDER BY`时,`NULL`又被认为是相等的。
|
||||
- `''`的长度是 0,是不占用空间的,而`NULL` 是需要占用空间的。
|
||||
- `NULL` 会影响聚合函数的结果。例如,`SUM`、`AVG`、`MIN`、`MAX` 等聚合函数会忽略 `NULL` 值。 `COUNT` 的处理方式取决于参数的类型。如果参数是 `*`(`COUNT(*)`),则会统计所有的记录数,包括 `NULL` 值;如果参数是某个字段名(`COUNT(列名)`),则会忽略 `NULL` 值,只统计非空值的个数。
|
||||
- 查询 `NULL` 值时,必须使用 `IS NULL` 或 `IS NOT NULLl` 来判断,而不能使用 =、!=、 <、> 之类的比较运算符。而`''`是可以使用这些比较运算符的。
|
||||
|
||||
看了上面的介绍之后,相信你对另外一个高频面试题:“为什么MySQL不建议使用NULL作为列默认值?”也有了答案。
|
||||
|
||||
## MySQL 基础架构
|
||||
|
||||
> 建议配合 [SQL 语句在 MySQL 中的执行过程](./how-sql-executed-in-mysql.md) 这篇文章来理解 MySQL 基础架构。另外,“一个 SQL 语句在 MySQL 中的执行流程”也是面试中比较常问的一个问题。
|
||||
@ -452,7 +463,7 @@ COMMIT;
|
||||
|
||||
一个事务读取数据并且对数据进行了修改,这个修改对其他事务来说是可见的,即使当前事务没有提交。这时另外一个事务读取了这个还未提交的数据,但第一个事务突然回滚,导致数据并没有被提交到数据库,那第二个事务读取到的就是脏数据,这也就是脏读的由来。
|
||||
|
||||
例如:事务 1 读取某表中的数据 A=20,事务 1 修改 A=A-1,事务 2 读取到 A = 19,事务 1 回滚导致对 A 的修改并为提交到数据库, A 的值还是 20。
|
||||
例如:事务 1 读取某表中的数据 A=20,事务 1 修改 A=A-1,事务 2 读取到 A = 19,事务 1 回滚导致对 A 的修改并未提交到数据库, A 的值还是 20。
|
||||
|
||||

|
||||
|
||||
|
@ -29,7 +29,7 @@ Java 集合框架如下图所示:
|
||||
### 说说 List, Set, Queue, Map 四者的区别?
|
||||
|
||||
- `List`(对付顺序的好帮手): 存储的元素是有序的、可重复的。
|
||||
- `Set`(注重独一无二的性质): 存储的元素是无序的、不可重复的。
|
||||
- `Set`(注重独一无二的性质): 存储的元素不可重复的。
|
||||
- `Queue`(实现排队功能的叫号机): 按特定的排队规则来确定先后顺序,存储的元素是有序的、可重复的。
|
||||
- `Map`(用 key 来搜索的专家): 使用键值对(key-value)存储,类似于数学上的函数 y=f(x),"x" 代表 key,"y" 代表 value,key 是无序的、不可重复的,value 是无序的、可重复的,每个键最多映射到一个值。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user