[阶段二] 2. 数据库的基本查询

数据库的基本查询

  • 数据表的基本查询:

最基本的查询语句是由 SELECTFROM 关键字组成的。

SELECT * FROM 数据表名称;               #查询表中所有的字段

SELECT 字段1,字段2,... FROM 数据表名称;             #查询表中指定的字段

SELECT 语句屏蔽了物理层的操作,用户不必关心数据的真实存储,交由数据库高效的查找数据。

通常情况下,SELECT 子句中使用了表达式,name这列的名称就默认为表达式,因此需要一种对列名重命名的机制。

SELECT
    字段1,
    字段2 AS '别名',
    ...
FROM 数据表名称;

查询语句的子句执行顺序:

词法分析与优化
        ↓
FROM 选择数据来源
        ↓
SELECT 选择输出内容
  • 数据分页:

如果结果集的记录很多,则可以使用 LIMIT 关键字限定结果集的数量。

SELECT * FROM 数据表名称 LIMIT 起始位置,偏移量;             #查询表中所有的字段,并分页

SELECT 字段1,字段2,... FROM 数据表名称 LIMIT 起始位置,偏移量;               #查询表中指定的字段,并分页

如果 LIMIT 子句只有一个参数,它表示的是偏移量,起始值默认为 0。

SELECT 字段1,字段2,... FROM 数据表名称 LIMIT 偏移量;

等价于

SELECT 字段1,字段2,... FROM 数据表名称 LIMIT 0,偏移量;

数据分页的查询语句的子句执行顺序:

词法分析与优化
        ↓
FROM 选择数据来源
        ↓
SELECT 选择输出内容
        ↓
LIMIT 限定结果集数量
  • 结果集排序:

查询语句默认不会对结果集进行排序。如果想让结果集按照某种顺序排列,必须使用 ORDER BY 子句。

其中 ASC 表示升序排列,DESC 表示降序排列,默认是升序排列。

SELECT * FROM 数据表名称 ORDER BY 字段名 [ASC|DESC];                #查询表中所有的字段,并排序

SELECT 字段1,字段2,... FROM 数据表名称 ORDER BY 字段名 [ASC|DESC];               #查询表中指定的字段,并排序

如果排序字段是数字类型,就按照数字大小排序。如果是日期类型,就按照日期大小排序。如果是字符串,就按照字符集排序。如果两条数据排序字段内容相同,此时就会按照主键大小进行排序。

还可以使用 ORDER BY 指定首要排序字段和次要排序字段。数据库会先按照首要排序字段进行排序,如果首要排序字段内容相同,那么就会启用次要排序字段继续排序。如果指定的所有排序字段的内容都相同,那么就会按照主键大小进行排序。

SELECT * FROM 数据表名称 ORDER BY 字段1 [ASC|DESC], 字段2 [ASC|DESC],...;                #查询表中所有的字段,并启用多个排序字段

SELECT 字段1,字段2,... FROM 数据表名称 ORDER BY 字段1 [ASC|DESC], 字段2 [ASC|DESC],...;               #查询表中指定的字段,并启用多个排序字段

在同时排序和分页时,ORDER BY 子句书写的时候,应放在 LIMIT 子句的前面。

SELECT * FROM 数据表名称 ORDER BY 字段1 [ASC|DESC], 字段2 [ASC|DESC],... LIMIT 起始位置,偏移量;                #查询表中所有的字段,并排序和分页

SELECT 字段1,字段2,... FROM 数据表名称 ORDER BY 字段1 [ASC|DESC], 字段2 [ASC|DESC],... LIMIT 起始位置,偏移量;               #查询表中指定的字段,并排序和分页

排序和分页的查询语句的子句执行顺序:

词法分析与优化
        ↓
FROM 选择数据来源
        ↓
SELECT 选择输出内容
        ↓
ORDER BY 结果集排序
        ↓
LIMIT 限定结果集数量
  • 去除重复记录:

如果需要去除结果集中的重复数据,可以使用 DISTINCT 关键字来实现。

SELECT DISTINCT 字段 FROM 数据表名称;               #查询表中指定的字段,并去除重复记录

使用 DISTINCTSELECT 子句只能查询一列数据,如果查询多列,去除重复记录就会失效。而且,DISTINCT 关键字只能在 SELECT 子句中使用一次。

  • 条件查询:

如果需要查询能够满足某一种或某几种条件的记录,可以使用 WHERE 子句来实现。

SELECT * FROM 数据表名称 WHERE 条件1 [AND|OR] 条件2 ...;                #查询表中满足条件的字段,显示所有字段

SELECT 字段1,字段2,... FROM 数据表名称 WHERE 条件1 [AND|OR] 条件2 ...;              #查询表中满足条件的字段,显示指定字段

其中 AND 表示逻辑与,OR 表示逻辑或,NOT 表示逻辑非,XOR 表示逻辑异或。

WHERE 语句中的条件运算会用到以下 4 种运算符:

数学运算符:+、-、*、/、%

比较运算符:>、>=、<、<=、=、!=、IN、IS NULL、IS NOT NULL、BETWEEN AND、LIKE、REGEXP

逻辑运算符:AND、OR、NOT、XOR

按位运算符:&、|、~、^、<<、>>

按位运算符中,&、|、~、^ 分别表示逻辑与、逻辑或、逻辑非、逻辑异或。mysql 中,按位运算符一般用于二进制按位运算。

WHERE 字句中,条件执行的顺序是从左至右的。因此,应该把索引条件、筛选掉记录最多的条件写在最左侧。

条件查询语句的子句执行顺序:

词法分析与优化
        ↓
FROM 选择数据来源
        ↓
WHERE 筛选满足条件的记录
        ↓
SELECT 选择输出内容
        ↓
ORDER BY 结果集排序
        ↓
LIMIT 限定结果集数量

Guess you like

Origin blog.csdn.net/miss1181248983/article/details/121293491