mysql_单表查询

 单表查询

比较符

  当在子句中使用 <、 >、 <=、 >=、 <>或 !=时,字段的名字不加引号。如果使用引号,则查询出的结果为空,并且不会报错。

select name, age from emplyee where post = 'teacher' having age > 30;

 等号

  当在子句中查找限定字段的记录时,等号(=)后面的字段是以字符串的形式书写,也就是说必须加引号('')。

select name, age, salary from emplyee where post = 'teacher' having salary between 9000 and 10000;

 is ot is

  当查询某个字段是什么或者不是什么的时候,可以使用 is 或者 not is.

select * from emplyee where post_comment is not null;

 group by

  当没有进行 where 筛选而直接进行 group by 筛选是没有任何意义的,查出来的结果是以 post字段 为分组的结果中的每一组的的第一条记录。

select * from emplyee group by post;

  如果使用分组,必须设置全局SQL的模式为 'ONLY_FULL_GROUP_BY'。

set global sql_mode = 'ONLY_FULL_GROUP_BY';

  设置成功后要exit退出后重新登录才能生效。

 group_contact

  group_concat(字段名)  将每个分组中的指定字段拼接起来。例如:
  查询岗位名以及岗位包含的所有员工名字
select post , group_concat(name) from emplyee group by post;
  必须使用group by才能使用group_concat()函数,将所有的name值拼接起来。
  查询薪资大于10000的岗位名以及岗位包含的所有员工的名字。
 select post, group_concat(name) from emplyee group by post having avg(salary) > 10000;  

  结果:

+-----------+-----------------------------------------------------------+
| post      | group_concat(name)                                        |
+-----------+-----------------------------------------------------------+
| operation | 张野,程咬金,程咬银,程咬铜,程咬铁                              |
| teacher   | alex,wupeiqi,yuanhao,liwenzhou,jingliyang,jinxin,xiaomage |
+-----------+-----------------------------------------------------------+

ASC  升序

DESC  降序

  

原文地址:https://www.cnblogs.com/ZN-225/p/9684958.html