0%

《MySQL 必知必会》读书笔记

《MySQL 必知必会》读书笔记,持续更新中…

资源

百度网盘链接 (包括本书英文电子版以及书中代码资源)提取码:fm30

勘误表

目录

第 1 章 了解 SQL

本章介绍了数据库的基础知识,包括一些常见术语和概念。

第 2 章 MySQL 简介

本章简单介绍了 MySQL。

第 3 章 使用 MySQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

USE database;
SHOW DATABASES;
SHOW TABLES;

-- 以下两行结果一样
SHOW COLUMNS FROM table;
DESCRIBE table;

-- 显示广泛的服务器状态信息
SHOW STATUS;

-- 显示创建某个数据库和表的 MySQL 语句
SHOW CREATE DATABASE database;
SHOW CREATE TABLE table;

-- 显示授予用户(所有或特定用户)的安全权限
SHOW GRANTS;

-- 显示服务器错误或警告信息
SHOW ERRORS;
SHOW WARNINGS;

第 4 章 检索数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

SELECT column FROM table;
SELECT column1, column2, column3 FROM table;
SELECT * FROM table;

SELECT DISTINCT column FROM table;

-- 注意,这种查询检索出来的行里,只有两个列都相同的行才会被排除掉
SELECT DISTINCT column1, column2 FROM table;

-- 返回不多于 5 行
SELECT column FROM table LIMIT 5;

-- 从行 3 开始检索,返回最多 4 行结果(行号从 0 开始)
-- 以下两句结果相同
SELECT column FROM table LIMIT 3, 4;
SELECT column FROM table LIMIT 4 OFFSET 3;

-- 有一些情形需要完全限定名
SELECT table.column FROM table;

第 5 章 排序检索数据

  • P29

    关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有意义。

  • P32
    这里提到了大小写排序先后顺序取决于数据库设置。

  • P33
    LIMIT 子句必须在 ORDER BY 之后

1
2
3
4
5
6
7
8
9
10
11
12

-- column1 和 column2 可以相同,也可以不同
SELECT column1 FROM table ORDER BY column2;

-- DESC 只对 column2 起作用
-- 先按 column2 降序排序,碰到相同的行再按 column3 升序排序
SELECT column1 FROM table ORDER BY column2 DESC, column3;

SELECT column1 FROM table ORDER BY column2 DESC, column3 DESC;

-- 降序排序,取排名第一的那条数据
SELECT column1 FROM table ORDER BY column2 DESC LIMIT 1;

第 6 章 过滤数据

  • P35
    数据不要放到应用层过滤,不然会影响性能,而且如果是通过网络传输数据,还会浪费网络带宽。
    ORDER BY 必须在 WHERE 子句的后面

  • P36

MySQL 在执行匹配的时候默认不区分大小写

  • P39 NULL 与 不匹配

在通过过滤选择出不具有特定值的行时,你可能希望返回具有 NULL 值的行。但是,不行。因为未知具有特殊的含义,数据库不知道它们是否匹配,所以在匹配过滤或不匹配过滤时不返回它们。
因此,在过滤数据时,一定要验证返回数据中确实给出了被过滤列具有 NULL 的行。

1
2
3
4
5
6
7
8
9
10
11
12
13

SELECT column1, column2 FROM table WHERE column3 = value
SELECT column1, column2 FROM table WHERE column3 < number

-- <> 与 != 都是不等于符号
SELECT column1, column2 FROM table WHERE column3 <> number
SELECT column1, column2 FROM table WHERE column3 != number

-- BETWEEN 匹配范围中所有的值,包括开始值和结束值
SELECT column1, column2 FROM table WHERE column3 BETWEEN number1 AND number2

-- 空值检查
SELECT column1 FROM table WHERE column2 IS NULL
觉得文章有帮助,打赏1元鼓励一下作者