MySQL入门实践(二)

xiaoxiao2021-02-28  124

MySQL入门实践(二)

这篇博客主要讲查询操作,如果你对MySQL的安装和配置以及基础的创建操作有疑惑可以去看上一篇博客: http://blog.csdn.net/kirivr/article/details/71170999

子查询语句

基本的SELECT语句

SELECT 列名 FROM 表名; 或者 SELECT 列名 AS 别名 FROM 表名; 或者 SELECT 列名 别名 FROM 表名;

这段语句中如果要查询多个列,那么使用,分割列名。如果想返回所有的列,可以使用通配符*:

SELECT1,列2 FROM 表名; 或者 SELECT1 AS 别名1,列2 FROM 表名; 或者 SELECT1 别名1,列2 FROM 表名;

带筛选的SELECT语句

SELECT 列名 FROM 表名 WHERE ...

关键词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内置了丰富的多种函数,详细的可以前往官方文档查询,这里只列出了些可能常用的函数,默认都只有一个参数:

统计函数

名字用途AVG求均值COUNT统计数目MAX求最大值MIN求最小值SUM求和STDEV求标准差VAR求变异数

数值函数

名字用途ABS求绝对值CEIL向上取整FLOOR向下取整MOD(x,y)求x模yRAND()返回0-1之间的随机数ROUND求四舍五入

参考资料

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

转载请注明原文地址: https://www.6miu.com/read-63748.html

最新回复(0)