1. 查找记录:
SELECT select_expr [,select_expr...]
[
FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | postion} [ASC|DESC],...]
[HAVING where_condition]
[ORDER BY {col_name | expr | position} [ASC | DESC],...]
[LIMIT { [offset,] row_count | row_count OFFSET offset } ]
]
计算表达式的结果
(1) 查询表达式: select_expr
每一个表达式表示想要的一列,必须有至少一个;
多个列之间以英文逗号分隔;
星号(*)表示所有列。 tbl_name.* 可以表示命名表的所有列;
查询表达式可以使用 [ AS ] alias_name 为其赋予别名;
别名可用于GROUP BY , ORDER BY 或HAVING 子句。
也可以让当前的数据列的排列顺序和原表中不一样
SELECT 语句查询表达式的顺序将影响着结果的顺序
以后使用多表连接时,两张不同的表可能存在相同的字段,如果直接写字段名的话,则分不清到底属于哪张数据表
有些时候某些字段的名字特别长,可能不太容易记忆,我们可以为其赋予别名。
字段的别名也将影响到以后的结果集的字段名。
AS 可以省略:(一般情况下还是要书写AS 比较好)
(2)where 语句进行条件查询:
条件表达式: 对记录进行过滤,如果没有指定WHERE 子句,则显示所有记录;
在 WHERE 表达式中,可以使用mysql支持的函数或运算符。
(3)group by 语句对查询结果分组:
[GROUP BY {col_name | position} [ ASC | DESC],...]
既可以指定列的列名(常用),也可以指定列的位置(它在select语句中字段的位置,从1开始);升序(默认)或降序排列;多个分组条件中间以逗号做分割。
(4) having语句设置分组条件:
只对某一部分记录做分组: [HAVING where_condition]
一定要保证分组的条件要么为一个聚合函数(max/min/avg/sum/count...,永远只有一个返回结果),要么这个字段必须出现在当前SELECT语句中。
(if you got some expression#1 error, see https://blog.csdn.net/fansili/article/details/78664267 )
(5) order by 语句对查询结果排序: [ORDER BY {col_name | expr | position} [ASC | DESC],...]
同时以两个字段排序:首先先看第一个字段能否排出想要的结果,如果可以则直接忽略第二个字段,否则再遵守第二个字段甚至第三个字段等等:
(6) limit语句限制查询结果返回的数量:
[LIMIT { [ offset,] row_count | row_count OFFSET offset} ]
第一种形式的语法结构比较常见
默认情况下返回所有的你要查找到的结果。
以后利用php进行分页时就会用到这个语句进行分页效果的实现。offset公式为(当前页码-1)*每页所显示的记录数。
从第1行开始返回,返回2条记录。
从第3条记录开始,返回2条。记录是从0开始编号的!!!
注意,我们例子中的id号和结果集中的排列顺序没有任何的联系,只要它排在结果集中的第一个位置,它就对应是0;第二个位置就对应是1...,id号是100 还是1000都没有任何关系。