这篇博客主要讲查询操作,如果你对MySQL的安装和配置以及基础的创建操作有疑惑可以去看上一篇博客: http://blog.csdn.net/kirivr/article/details/71170999
这段语句中如果要查询多个列,那么使用,分割列名。如果想返回所有的列,可以使用通配符*:
SELECT 列1,列2 FROM 表名; 或者 SELECT 列1 AS 别名1,列2 FROM 表名; 或者 SELECT 列1 别名1,列2 FROM 表名;关键词WHERE能为查询提供筛选,在WHERE后可以使用表中的任意列来进行逻辑判断,例如从employee表中筛选出薪水salary大于3000的员工:
SELECT * FROM employee WHERE salary>3000;结果:
关键词WHERE的逻辑判断当然也能使用AND与,OR或,NOT非以及XOR异或等逻辑语句,例如:查询employee表中薪水大于3000或者id号不小于3的员工:
SELECT * FROM employee WHERE salary>3000 OR NOT id<3;结果:
在WHERE中也能使用逻辑语句IN(NOT IN)。它的意义是判断是否存在(不存在)于给定的集合中,例如从employee表中选择in_dpt为dpt1和dpt2的员工的姓名及id:
SELECT name,id FROM employee WHERE in_dpt IN (“dpt1”,“dpt2”);结果:
除了这些常见的逻辑判断语句之外,MySQL还提供对字符串LIKE简单匹配语句以及REGEXP正则匹配语句。
LIKE语句比较简单,只有两个常用通配符——%匹配任意数目字符(包括零字符)。
——_匹配任意单个字符。
例如从employee表中选出名字以“R”开头的员工:
SELECT * FROM employee WHERE name LIKE "R%";从employee表中选出名字以“J”开头,并且长度为3的员工:
SELECT * FROM employee WHERE name LIKE "J__";结果:
利用正则表达式进行匹配的语法如下:
SELECT 列名 FROM 表名 WHERE 属性 REGEXP “正则表达式”;#扩展的正则表达式具体正则表达式的语法,各位可以去下面网站简单学习。
关键词ORDER BY,结合关键词ASC(升序,默认),DESC(降序)可以对查询结果排序。例如从employee表中选择姓名和年龄,并按年龄从大到小排序:
SELECT name,age FROM employee ORDER BY age DESC;结果:
有些时候我们需要对数据先分组,然后对每个组分别进行操作,最后再将各自汇总。MySQL为此提供了关键词GROUP BY来解决这个问题,依旧用employee表为例,从employee表中按照属性in_dpt来分组,并在组内计算age的平均值,并按均值由小到大输出:
SELECT AVG(age) AS MEAN FROM employee GROUP BY in_dpt ORDER BY MEAN;结果: 在使用GROUP BY时有几点必须要注意:
GROUP BY最后会分组结果进行汇总,如果想以in_dpt分组,然后再输出age排序,这样只会得到每个分组中的一个age的排序结果: GROUP BY和ORDER BY联用的时候一定要将GROUP BY放在前面。GROUP BY不能和WHERE联用,如果要在每个分组中作筛选要使用关键词having,它的用法基本与WHERE一样。正如上节中使用的AVG函数一样,MySQL内置了丰富的多种函数,详细的可以前往官方文档查询,这里只列出了些可能常用的函数,默认都只有一个参数:
http://blog.csdn.net/weiwangchao_/article/details/12019345
http://www.cnblogs.com/icyJ/archive/2012/10/17/T_Sql.html
http://www.cnblogs.com/xp796/p/5213880.html
https://www.shiyanlou.com/courses/9/labs/74/document