MYSQL-SELECT语句超详解

时间:2025-03-17 08:29:47

SELECT语法

SELECT columns_list
FROM table_name;

也就是 SELECT 列名 FROM 表名;(为养成良好的代码习惯建议关键词全部大写)

SELECT语句的实际语义其实是:FROM table_name SELECT columns_list,即:从某个表检索某几列数据。MySQL 解析 SELECT 语句的时候,会首先评估 FROM 子句,再评估 SELECT 子句。

示例

单个字段查询

SELECT last_name FROM actor;

这行代码的意思是:查找actor中的last_name列

多个字段查询

多字段查询时用逗号分隔多个字段

SELECT first_name,last_name FROM actor;

查询所有字段

SELECT * FROM actor;

用*表示全字段

当然了,你可以选择直接把所有字段写上然后用逗号分隔

那么使用*和column_name 有什么区别呢?就一般而言,两者的性能差不多。就区别而言,有如下不同:

1.写出明确的字段,更容易理解你的 SQL 的查询意图

2.某些大字段不适合直接查询出来,因为直接查询会占用更多的开销

* 更适合在命令行或者测试场景下使用

不过有些情况下*会比column_name 更快,可以看下这篇文章/katechun/p/

简单总结一下 因为column—name的数据量太少了 上下文切换太频繁 (是说上下文切换比操作本身还耗费时间吗)

没有FROM的SELECT 

在 MySQL 中,某些情况下你要检索的数据不存在于任何表中,这时您可以省略 FROM 子句,

比如

查询系统时间
SELECT NOW();
数值计算
SELECT 1+2;

虚拟表dual

就是没有FROM子句时候你可以选择仍然加FROM dual

SELECT NOW() FROM dual;
SELECT 1+2 FROM dual;

这个dual实际并不存在 而且这个语句和上面的语句查询结果是相同的 只是为了让代码对齐 更加美观而已