10.1 简单数据记录查询
SELECT field1,field2,...fieldn FROM table_name;
“*” ——查询所有记录
SELECT * FROM table_name;
DISTINCT——避免重复数据查询
SELECT DISTINCT field1,field2,...fieldn FROM table_name;
AS——修改字段名
SELECT field1 【AS】 otherfield1,field2 【AS】 otherfield2 FROM table_name;
CONCAT——设置显示格式
SELECT CONCAT(ename,'的年龄为',eage) FROM table_name;
10.2 条件数据记录查询
MySQL中,通过关系运算符和条件运算符来编写“条件表达式”。
SELECT field1,field2,...fieldn FROM table_name WHERE CONDITION;
注意:通过"&&"符号连接查询条件。
BETWEEN AND——判断字段的数值是否在指定范围内
SELECT field1,field2,...fieldn FROM table_name WHERE field 【NOT】 BETWEEN VALUE1 AND VALUE2;
IS NULL——判断字段的数值是否为空
SELECT field1,field2,...fieldn FROM table_name WHERE field IS 【NOT】 NULL;
IN——判断字段的数值是否在指定集合中
SELECT field1,field2,...fieldn FROM table_name WHERE field 【NOT】IN (value1,value2,value3,...valuen);
LIKE “%”——模糊查询,“_”——通配符查询,LIKE '%%'表示查询所有数据。
SELECT field1,field2,...fieldn FROM table_name WHERE field LIKE value;
NOT LIKE 也可以通过逻辑非运算符(NOT)来实现:
SELECT field1,field2,...fieldn FROM table_name WHERE field NOT LIKE value; SELECT field1,field2,...fieldn FROM table_name WHERE NOT field LIKE value;
10.3 排序数据记录查询
1. 升序排序-ASC
SELECT * FROM table_name ORDER BY field ASC;
ORDER BY默认升序排序。
降序排序-DESC
SELECT * FROM table_name ORDER BY field DESC;
2. 多字段排序
SELECT * FROM table_name ORDER BY field1 【ASC】, field2 DESC;
10.4 限制数据记录查询数量
SELECT field1,field2,...fieldn FROM table_name WHERE CONDITION LIMIT OFFSET_START,ROW_COUNT;
OFFSET_START为起始偏移量,不指定时默认为0;ROW_COUNT表示显示的行数。
10.5 统计函数和分组数据记录查询
1. 统计函数
COUNT():统计表中记录总数 AVG():计算字段值的平均值 SUM():计算字段值的总和 MAX():查询字段值的最大值 MIN():查询字段值的最小值
注意:如果所操作的表中没有任何数据记录,COUNT()函数返回0,其他函数返回NULL。
2. 分组查询
GROUP BY- 按照field字段值分组,显示每组中的一条记录。
SELECT field1,field2,...fieldn FROM table_name WHERE CONDITION GROUP BY field;
实现多个字段分组查询:
SELECT function() FROM table_name WHERE CONDITION GROUP BY field1,field2;
GROUP_CONCAT-显示每个分组中的指定字段值:
SELECT GROUP_CONCAT(field1) FROM table_name WHERE CONDITION GROUP BY field;
HAVING-实现条件限制分组数据记录
SELECT function() FROM table_name WHERE CONDITION GROUP BY field1,field2,...fieldn HAVING CONDITION;
举例说明:
SELECT deptno,AVG(sal) average,GROUP_CONCAT(ename) enames,COUNT(ename) number FROM t_employee GROUP BY deptno HAVING AVG(sal)>2000;