MySQL基本查询 SELECT的执行顺序(DQL语句)

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

普通查询

执行顺序:词法分析与优化,读取SQL语句 → FROM,选择数据来源 → SELECT,选择输出内容

  • select 列名 from 表名 [where 条件表达式]:查询表中的数据
  • select * from 表名:查询表所有行和列的数据
    • *代表所有字段,一般不建议使用
  • select 字段名 1, 字段名 2, 字段名 3, ... from 表名:查询指定列
-- 查询所有的学生:
select * from student;

-- 查询 student 表中的 name 和 age 列
select name, age from student;

使用别名查询

  • select 字段名1 as 别名, 字段名2 as 别名... from 表名:对列指定别名
  • select 表别名.字段名1 as 别名, 表别名.字段名2 as 别名... from 表名 as 表别名:对列和表同时指定别名

使用别名的好处:

  • 显示的时候使用新的名字,并不修改表的结构。as可以省略。
  • 用于多表查询操作
-- 使用别名
select name as 姓名,age as 年龄 from student;

-- 表使用别名
select st.name as 姓名,age as 年龄 from student as st;

分页查询

LIMIT是限制的意思,所以LIMIT的作用就是限制查询记录的条数。

执行顺序:FROM → SELECT → LIMIT

  • select 字段名 from 表名 limit 起始位置, 偏移量:分页查询
    • 起始位置:起始行数,从 0 开始计数,如果省略,默认就是0
    • 偏移量:返回的行数
    • 公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数
-- 查询学生表中数据,从第 3 条开始显示,显示 6 条。
select * from student3 limit 2, 6;

排序

通过ORDER BY子句,可以将查询出的结果进行排序(排序只是显示方式,不会影响数据库中数据的顺序)。

执行顺序:FROM → SELECT → ORDER BY → LIMIT

  • select 字段名 from 表名 order by 字段名 [asc|desc]:单列排序,只按某一个字段进行排序,单列排序。
  • select 字段名 from 表名 order by 字段名1 [asc|desc], 字段名2 [asc|desc]:组合排序,同时对多个字段进行排序,如果第 1 个字段相等,则按第 2 个字段排序,依次类推。
    • ASC:升序,默认值
    • DESC:降序

如果排序列是数字类型,数据库就按照数字大小排序,如果是日期类型,就按照日期大小,如果是字符串就按照字符集序号排序。

-- 查询所有数据,使用年龄降序排序
select * from student order by age desc;

-- 查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩升序排序
select * from student order by age desc, math asc;

清除重复值

  • select distinct 字段名 from 表名:查询指定列并且结果不出现重复数据

使用 DISTINCT 的SELECT子句中只能查询一列数据,如果查询多列,去除重复记录就会失效,一条SELECT语句中,只能使用一次。

-- 查询学生来自于哪些地方
select address from student;
-- 去掉重复的记录
select distinct address from student;

查询结果参与运算

  • select 列名1+固定值 from 表名:某列数据和固定值运算
  • select 列名1+列名2 from 表名:某列数据和其他列数据参与运算

注意:参与运算的必须是数值类型

-- 某列数据和固定值运算
select age + 1 from student;

-- 某列数据和其他列数据参与运算,英语和数学分数之和
select english + math from student;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VincentHu_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值