数据的查询
在MySQL中可以通过SQL语句来实现基本数据查询,SQL语句可以通过如下多种使用:
查询所有字段数据 查询指定字段数据 避免重复数据查询 对结果进行排序和分组等查询
一.简单查询
在MySQL中,SELECT语句基本语法形式如下:
SELECT field1 field2 ... fieldn
FROM tablename
WHERE CONDITION1]
GROUP BY fieldm [HAVING CONDITION2]]
ORDER BY
1.查询表的所有字段
SELECT * FROM tablename;
可以列出所有列名,以便调整查询结果的顺序: SELECT field1 ...field n FROM
2.查询指定字段的数据
SELECT field1 ...field n FROM tablename; #指定查询列即可
3.去重查询 DISTINCT
SELECT DISTINCT field1,field2...fieldn FROM tablename;
4. IN 查询
使用场景: 有的时候,当我们需要查询的目标记录限定在某个集合中的时候,在MySQL中可以使用关键字IN来实现,关键字IN可以实现判断字段的数据是否在指定集合中.
SELECT field1 ...field n
FROM tablename WHERE fieldm IN(value1,value2...valuen);
SELECT field1 ...field n
FROM tablename WHERE fieldm NOT IN(value1,value2...valuen);
注:在集合中慎用NULL : IN查询存在NULL 不影响结果 NOT IN 存在NULL 则查询无任何结果
5.BETWEEN AND 查询
使用场景: 当我们需要指定范围内的数据( 如: id 从0到100) 的时候,MYSQL提供了关键字 between and,用来实现判断字段的数值是否在指定范围内的条件查询. 该关键字的具体语法形式如下:
SELECT field1,field2...,fieldn
FROM tablename WHERE fieldm BETWEEN min_value AND max_value;
6. LIKE 模糊查询
使用场景:当我们只想用字符串中间的一部分特征查找含有特征子串的信息时,MySQL关键字LIKE来实现模糊查询,需要使用通配符,语法如下:
SELECT field1,field2,...,fieldn
FROM tablename WHERE fieldm LIKE value;
SELECT field1,field2,...,fieldn
FROM tablename WHERE fieldm NOT LIKE value;
通配符:
符号 | 功能描述 |
_ | 该通配符匹配一个字符 |
% | 该通配符匹配任意长度的字符 |
注:like后的value必须带 '':单引号
7.结果排序
使用场景:在MySQL中,从表中查询出的数据可能是无序的,或者其排列顺序不是用户所期望的顺序,为了使查询结果的顺序满足用户的需求,可以使用关键字 ORDER BY
SELECT field1,field2....fieldn
FROM tablename ORDER BY fieldm[ASC|DESC];
注:如果记录中存在NULL值,则认定为最小值 升序ASC结果在最前 降序DESC结果在最后
8.简单分组查询
使用场景: MySQL软件提供了5个统计函数来帮助用户统计数据,可以使用户方便地对记录进行统计数. 计算和. 计算平均数. 计算最大值和最小值,而不需要查询所有数据
在具体使用统计函数时,都是针对表中所有记录或指定特定条件的数据记录进行统计计算. 在现实应用中,经常会先把所有数据记录进行分组,再对这些分组后的数据记录进行统计计算.
MySQL 通过SQL语句GROUP BY来实现, 分组数据查询语法如下:
SELECT function() [field]
FROM tablename WHERE CONDITION GROUP BY field;
在上述语句中,参数field表示某字段名, 通过该字段对名称为 tablename的表的数据记录进行分组
注意:在具体进行分组查询时,分组所依据的字段上的值一定要有重复值,否则分组没有任何意义
->统计函数: 求和:sum(field) 求总个数:count() 求平均数:avg(field) 求最小值:min(field) 求最大值 max(field)
注: count():count(*):统计null count(field) 忽略null
求平均数:avg(field) 忽略null
9.统计分组查询
使用场景:在MySQL中,只实现简单的分组查询有时候可能没有任何实际意义,因为关键字GROUP BY单独使用时,默认查询出每个分组中随机的一条记录,具有很大的不确定性,一般建议将分组关键字与统计函数一起使用.
如果想显示每个分组的字段,可以通过函数GROUP_CONCAT() 来实现. 该函数可以实现显示每个分组中的指定字段,函数的具体语法形式如下:
SELECT GROUP_CONCAT(field)
FROM tablename
WHERE CONDITION GROUP BY field;