SQL基础笔记(4)- 如何提升 SELECT 查询效率

基础查询

下图为表ums_admin表的数据例子
在这里插入图片描述

1. SELECT基础查询

1
2
-- 查询用户名和邮箱
SELECT username,email FROM ums_admin;
1
2
-- 查询表中所有数据,在生产环境中不建议这样使用
SELECT * FROM ums_admin
1
2
-- 查询时定义别名
SELECT username AS user,password AS pwd,email FROM ums_admin;

在这里插入图片描述

2. DISTINCT的使用

  1. DISTINCT 需要放到所有列名的前面,如果写成SELECT username, DISTINCT password FROM ums_admin会报错。
  2. DISTINCT 其实是对后面所有列名的组合进行去重,所以SELECT DISTINCT username, iconSELECT DISTINCT icon,返回的结果是不一样
    1
    2
    -- 去除重复行
    SELECT DISTINCT username, icon FROM ums_admin;

3. ORDER BY排序

  1. 排序的列名:ORDER BY 后面可以有一个或多个列名,如果是多个列名进行排序,会按照后面第一个列先进行排序,当第一列的值相同的时候,再按照第二列进行排序,以此类推。
  2. 排序的顺序:ORDER BY 后面可以注明排序规则,ASC 代表递增排序,DESC 代表递减排序。如果没有注明排序规则,默认情况下是按照 ASC 递增排序。我们很容易理解 ORDER BY 对数值类型字段的排序规则,但如果排序字段类型为文本数据,就需要参考数据库的设置方式了,这样才能判断 A 是在 B 之前,还是在 B 之后。比如使用 MySQL 在创建字段的时候设置为 BINARY 属性,就代表区分大小写。
  3. 非选择列排序:ORDER BY 可以使用非选择列进行排序,所以即使在 SELECT 后面没有这个列名,你同样可以放到 ORDER BY 后面进行排序。
  4. ORDER BY 的位置:ORDER BY 通常位于 SELECT 语句的最后一条子句,否则会报错。
1
SELECT DISTINCT username, email FROM ums_admin ORDER BY username DESC ,email ASC;

4. LIMIT约束返回结果数量

  • MYSQL, 使用LIMIT 3
  • SQL Server 和 Access, 使用TOP 3
  • DB2,使用FETCH FIRST 3 ROWS ONLY
  • Oracle,使用ROWNUM <=3
1
SELECT DISTINCT username, email FROM ums_admin ORDER BY username DESC ,email ASC LIMIT 2;

5.SELECT 的执行顺序