mysql案例

#进阶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;

猜你喜欢

转载自blog.csdn.net/qq_44104303/article/details/115304244