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