#======================================
#平台:windows7
#MYsql版本:mysql-5.5.62-winx64(安装版)
#MYsql工具:SQLyog - 64 bit、Navicat Premium 12
工具包地址:https://pan.baidu.com/s/17SOAmwcgOw9hYtTzDb9-Tw
#======================================
单表查询可以分为如下几种查询方式:
1. 简单数据查询
2. 条件数据查询
3. 排序数据查询
4. 限制数据查询数量
5. 统计函数和分组数据查询
一、简单数据查询
语法:select 字段名 from 表名 [where 条件过滤]
示例: select ename,age,sal from emp where ename == “tom”;
避免重复查询关键字:DISTINCT
语法:SELETCT DISTINCT 字段1,字段2 FROM table_name;
数学四则运算数据查询:(+加,-减,*乘法,/除,%取余)
语法:SELECT ename,sal*12 AS yearsal FROM emp;
设置数据显示的格式:
MYSQL中通过CONCAT( )连接字符串。
语法:SELETCT CONCAT(eaname, ‘雇员的年薪为:’,sal*12) yearsalary FROM emp;
二、条件数据查询
l 单条件查询:SELETCT * FROM emp where JOB=’clerk’;
l 多条件查询:SELETCT * FROM emp where JOB=’clerk’&&sal>800; //&&符号还可以用AND替代都表示与,||或XOR都表示逻辑或。
范围内查询(BETWEEN和AND):SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2000;
范围外查询(NOT BETWEEN和AND):SELECT * FROM emp WHERE sal NOT BETWEEN 1000 AND 2000;
空值查询:SELETCT * FROM emp WHERE sal IS NULL;
非空值查询:SELETCT * FROM emp WHERE sal IS NOT NULL;
集合内数据查询(IN):SELECT * FROM emp WHERE empno IN (7521,7782,7566,7788);
不在集合内数据查询(NOT IN):SELECT * FROM emp WHERE empno NOT IN (7521,7782,7566,7788);
模糊查询(LIKE):SELECT * FROM emp WHERE ename LIKE “A%”;
查找不匹配(NOT LIKE):SELECT * FROM emp WHERE ename NOT LIKE “A%”;
l “_”通配符,匹配单个字符;
l “%”通配符,匹配任意长度字符串;
三、排序数据查询
单字段排序查询(ORDER BY ,默认排序是升序):
l SELETC * FROM emp WHERE sal >1000 ORDER BY sal ASC
l SELETC * FROM emp WHERE sal >1000 ORDER BY sal DESC
(ASC升序,DESC降序)
【注意:MYSQL软件中,如果字段的值为NULL,则该值为最小值,因此在降序排列中将最后显示;升序排列中最先显示。】
多字段排序查询:
SELETC * FROM emp WHERE sal >1000 ORDER BY sal ASC, hiredate DESC;
四、限制数据查询数量
关键字:LIMIT
示例1:SELECT * FROM emp WHERE sal > 1000 LIMIT 2; //指定显示2条记录
示例2:SELECT * FROM emp WHERE sal > 1000 LIMIT 0,5; //指定从第一条记录开始, 显示5条记录。
五、统计函数和分组数据查询
统计函数:
Count(): 对结果进行计数。
Max(): 查询结果中的最大值
Min(): 查询结果中的最小值
Avg(): 查询结果的平均值
Sum(): 查询结果的和
区别:
COUNT():忽略NULL
COUNT(*):统计所有记录,包括NULL
Sum(): 查询结果的和:
SELECT SUM(sal)sumvalue FROM emp; //查询emp表中所有员工的工资总和
分组查询:
关键字:GROUP BY
l 基础查询:
示例1:select emp_id, dep_id from employee group by dep_id;
l 多字段分组查询:
示例2:select emp_id, dep_id from employee group by dep_id,hiredate;
l GROUP BY和HAVING一起使用:
-- having表示对分组进行条件筛选
select dep_id,group_concat(emp_name) from employee group by dep_id having count(emp_name)) > 2;