#进阶2:条件查询
/*
语法:
SELECT
查询列表
FROM
表名
WHERE
筛选条件;
分类:
一、按条件表达式进行筛选
简单条件运算符:>< = != <> >= <=
二、按逻辑表达式进行筛选
逻辑运算符:&& || !
and or not
三、模糊查寻
like
between and
in
is null
*/
#一、按条件表达式进行筛选
#案例1:查询工资>12000的员工信息
SELECT
*
FROM
employees
WHERE
salary > 12000;
#进阶三:排序查询
/*
引入
SELECT * FROM employees;
语法:
SELECT 查询列表
from 表
【where 筛选条件】
order by 排序列表 asc|desc
特点: 1.asc为升序,desc代表的是降序
如果不写,默认为升序
2.ORDER BY 子句中可以支持单个字段,多个字段、表达收、函数、别名
3.ORDER BY子句一般放在查询语句的最后面,limit字句除外
*/
#案例1.
SELECT * FROM employees ORDER BY salary DESC;
SELECT * FROM employees ORDER BY salary ASC;
SELECT * FROM employees ORDER BY salary;
#案例2.查询部门编号>=90的员工信息,按入职时间的先后排序[添加筛选条件]
SELECT *
FROM employees
WHERE department_id>=90
ORDER BY hiredate;
#案例3:按年薪的高低显示员工的信息和年薪[按表达式排序]
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY (1+IFNULL(commission_pct,0)) DESC;
#案例4:按年薪的高低显示员工的信息和年薪[按别名排序]
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 DESC;
#案例5:按照姓名的长度
SELECT LENGTH(last_name) 字节长度,last_name,
FROM employees
ORDER BY LEADING(last_name) DESC;
#案例6:查询员工信息,要求先按工资升序,再按员工编号降序【按多个字段排序】
SELECT *
FROM employees
ORDER BY salary ASC,employee_id DESC;
#进阶函数
/*
概念: 类似于java的方法,将一组逻辑语句封装再方法体中,对外暴露方法名
好处:1.隐藏了实现的细节
2.提高了代码的重用性
调用:select 函数名() from 表;
特点:
1.该方法(函数名)
2.干什么的(函数功能)
分类:
1.单行函数 concat、length、ifnull
2、分组函数
功能:做统计使用,又称为统计函数
*/
#案例:姓名中首字母大写,其他字符小写然后用-拼接,显示出来
SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) out_put
FROM employees;
#5.instr 返回字串第一次出现的索引,如果找不到就返回0
SELECT INSERT ('杨不悔爱上了殷六侠','殷六侠') AS out_put;
#6.trim
SELECT LENGTH( TRIM(' 张翠山 ') ) AS out_put;
SELECT TRIM('张翠山aaaaaaaaaaaaaaaaaa') AS out_put;
#7.replace 替换
SELECT REPLACE('张三喜欢王晨','张三','李四') AS out_put;
#查询入职日期为1992--4-3的员工信息
SELECT * FROM employees WHERE hiredate = '1992-4-3';
#date_format 将日期转换成字符串
SELECT DATA_FORMAT(NOW(),'%y年%m月%d日') AS out_put;
#2.case函数的使用一:switch case的效果
/*
java中
switch(变量或表达式){
case 常量1:语句1:break;
....
DEFAULT: 语句n;break;
}
mysql中
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
.....
else 要显示的值n或语句n;
end
*/
/* #案例:查询员工的工资,要求
部门号 = 30,显示的工资为1.1倍
部门号 = 40,显示的工资为1.2倍
部门号 = 50,显示的工资为1.3倍
其他部门,显示的工资为
* /
SELECT salary 原始工资,department_id,
CASE department_id
WHEN 30 THEN salary*1.1
WHEN 40 THEN salary*1.2
WHEN 50 THEN salary*1.3
ELSE salary
END AS 新工资
FROM employees;
mysql案例
猜你喜欢
转载自blog.csdn.net/qq_44104303/article/details/115304244
今日推荐
周排行