数据查询语言(DQL:Data Query Language):也称为“数据检索语句”
用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其它类型的SQL语句一起使用。
SQL语句执行顺序:
from -> where -> group by -> having -> select -> order by -> limit (pageNo-1)*pageSize,pageSize ;
整理下常用的select的基础查询
1、字段(列)控制
1)查询所有列:select * from 表名; “*”表示查询所有列
2)查询指定列:select 列1,列 2,列 N from 表名;
3)select null + 任何东西; 结果的null。
2、distinct关键字,查询不重复的记录
select distinct 字段 from 表名;
当查询结果中的多行记录一模一样时,只显示一行。
一般查询所有列时很少会出现这样情况,但只查询一列时,这种可能性就大了。
案例: select distinct name from students; //查询名字不相同的学生;
select distinct name,age from students; //查询名字和年龄同时不同的学生
注意:
1)distinct 只能使用需要去重的字段进行操作。 -- 也就是说distinct 了name,age两个字段,后面想根据id进行排序,是不可以的,因为只能name,age两个字段进行操作.
2)distinct 去重多个字段时,含义是:几个字段 同时重复时才会被过滤。
3、 AS关键字,起别名
AS 可以给表或者字段列取个别名,AS关键字可以省略不写
取的别名中包含特殊符号,比如空格、#号等,我们把别名用引号引起来,尽量避免使用特殊符号
4、MySQL运算符
更多MySQL运算符参考网址:https://zixuephp.net/manual-mysql-1346.html
1)比较运算符
条件运算符: > , < , = , != 或 <>(MYSQL特有的不等号) , >= , <=。
安全等于号:<=> , 严格比较两个NULL值是否相等;
2)按照逻辑表达式筛选
逻辑运算符: 支持java的写法(&& , || , ! ), 但推荐使用mysql自己的(and , not , or)。
3)LIKE模糊查询:
%: 通配符,表示任意多个字符,也可表示0个字符,
_: 任意一个字符;
SELECT * FROM user WHERE username LIKE '小%';
注意:如果查询字符包含特殊字符,需要用转义字符
like '%\_%'; //支持java的转义字符\
like '%&_%' escape '&'; // escape '&':声明&符号是转义字符
4)between 数值 and 数值
id between 100 and 200;
注意:
1)并且包含临界值
2)两个临界值不能调换位置,小的在左边,大的值在右边.
5)IN关键字
判断某个字段的值是否属于in列表中的某一项
id in(10,20,30)
注意:in的值必须是同一种数据类型或者兼容
4) is null | is not null:只能判断null值
is null: 只能判断null值,不能判断普通数值
=: 只能判断普通数值,不能判断null值
5、排序:ORDER BY关键字 语法:
SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1 [ASC|DESC], [field2...] [ASC|DESC];
注意: DESC:降序,ASC:升序(默认可不写),可以设定多个字段来排序。
6、MySQL函数
参考网址(挺全的):https://zixuephp.net/manual-mysql-1345.html
7、聚合函数
聚合函数和常见函数不同在于,常见函数是对内容本身的处理,而聚合的主要功能是统计。
聚合做某列的纵向运算,为null的项不参与运算。
分组函数主要有:
count(*)计算个数
max() 最大值
min() 最小值
sum() 和
avg() 平均值
聚合函数还可以和一个关键字 distinct 配合使用:
select count(distinct salary) from employees;
8、分组聚合查询
分组查询使用 group by 关键字实现分组,即分组聚合查询
组条件:分组后的条件使用having, 分组前的条件使用where
分组聚合查询语法:
select
列(这个列要求必须只能是group by的后面字段),
聚合函数()
from
表名
where
筛选条件(针对表的所有记录)
group by
分组字段列表
having(只能配合group by使用)
与分组有关的筛选条件(针对分组后的每组内记录)
order by
排序
这篇文章不错:MySQL 数据库铁律
熟练掌握必须多写SQL语句
ends~