Day40-MySQL


三、条件查询

语法: SELECT 列名 FROM 表名 WHERE 条件


枚举查询(IN (值1,值2,值n…))

#枚举查询 IN (值1,值2,值n...)
#查询部门编号为70,80,90的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME,DEPARTMENT_ID FROM t_employees
WHERE DEPARTMENT_ID IN(70,80,90);

#枚举查询  查询经理编号为 124 和100的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME,MANAGER_ID FROM t_employees
WHERE MANAGER_ID IN(124,100);

模糊查询(_、%)

#模糊查询,查询姓氏以S开头且长度为6的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME FROM t_employees
WHERE FIRST_NAME LIKE 'S_____';

#模糊查询,查询姓氏以S开头任意长度的所有员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME FROM t_employees
WHERE FIRST_NAME LIKE 'S%';

分支结构查询

CASE
	WHEN 条件1 THEN 结果1
	WHEN 条件2 THEN 结果2
	WHEN 条件3 THEN 结果3
	WHEN 条件4 THEN 结果4
	ELSE 结果
END 

注意:通过使用CASE END进行条件判断,每条数据对应生成一个值

#查询员工信息(编号、名字、薪资、薪资级别<条件表达式>)
SELECT EMPLOYEE_ID,FIRST_NAME,salary,
	CASE 
		WHEN salary >=10000 THEN 'A'
		WHEN salary >=8000 AND salary<10000 THEN 'B'
		WHEN salary >=6000 AND salary<8000 THEN 'C'
		WHEN salary >=4000 AND salary <6000 THEN 'D'
		ELSE 'E'
	END AS '薪资级别'
FROM t_employees;

四、时间查询

语法:SELECT 时间函数( 参数列表 );
执行时间函数查询,生成一张虚拟表

#1.当前系统时间
SELECT SYSDATE();
#2.获得当前日期
SELECT CURDATE();
#3.获得当前时间
SELECT CURTIME();
#4.获得指定日期在一年中为第几周
SELECT WEEK(CURDATE());
#5.获取指定日期中的年份
SELECT YEAR(CURDATE());
#6.获取指定日期中的月份
SELECT MONTH(CURDATE());
#7.获取指定日期中的日
SELECT DAY(CURDATE());
#8.获取指定日期中的时
SELECT HOUR(SYSDATE());
#9.获取指定日期中的分
SELECT MINUTE(SYSDATE());
#10.获取指定日期中的秒
SELECT SECOND(SYSDATE());
#11.获取Date1和Date2之间相隔的天数
SELECT DATEDIFF(SYSDATE(),'2019-3-26');
#12.在指定日期之上加N天后的日期
SELECT ADDDATE(SYSDATE(),6);

五、聚合函数

语法:SELECT 聚合函数(列名) FROM 表名;

聚合函数中,自动忽略null值。不进行统计

#1.查询员工一共多少人
SELECT COUNT(EMPLOYEE_ID) AS '员工总数' FROM t_employees;
SELECT COUNT(*) FROM t_employees;
聚合函数 说明
COUNT() 求总行数
SUM() 求单列中所有行的总和
AVG() 求单列中所有行的平均值
MAX() 求单列中所有行的最大值
MIN() 求单列中所有行的最小值

六、分组查询

语法:SELECT 列名 FROM 表名 WHERE 条件 GROUP BY 分组依据(列名)

SELECT DEPARTMENT_ID,AVG(salary) AS '平均工资',COUNT(EMPLOYEE_ID) AS'人数'
FROM t_employees
GROUP BY DEPARTMENT_ID;

分组过滤查询

语法:SELECT 列名 FROM 表名 WHERE 条件 GROUP BY 分组依据(列名) HAVING 过滤条件

过滤条件需要在SELECT中列出

#统计部门的最高工资
SELECT DEPARTMENT_ID, MAX(SALARY)
FROM t_employees
GROUP BY DEPARTMENT_ID
HAVING DEPARTMENT_ID = 90;

七、限定查询

语法:SELECT 列名 FROM 表名 LIMIT 起始行,查询行

#查询表中的第二页数据和第三页数据
SELECT * FROM t_employees LIMIT 5,5;
SELECT * FROM t_employees LIMIT 10,5;

八、查询总结

查询语句书写顺序:select 列 from 表 【where- group by- having- order by-limit】

查询语句执行顺序:from 表 where -group by -having - select - order by-limit


九、子查询

语法:SELECT 列名 FROM 表名 WHERE 条件(子查询结果)

查询表中部分列的信息,获得工资大于15000的

#1.先查询部分列的信息作为一张临时表
 SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees;
 
#2.将子查询得到的临时表作为外部查询的表
SELECT EMPLOYEE_ID ,FIRST_NAME ,salary
FROM 
(SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees)AS temp
WHERE salary > 15000;
发布了35 篇原创文章 · 获赞 3 · 访问量 2732
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览