image.png
#1 查询工资大于12000的员工姓名和工资
SELECT
salary,
last_name
FROM
employees
WHERE
salary>12000;
image.png
#2 查询员工号为176的员工的姓名和部门号和年薪

SELECT
last_name,
department_id,
IFNULL (commission_pct,0)AS 奖金率,salary12(1+commission_pct) AS 年薪
FROM
employees
WHERE
employee_id=176;

image.png
##3 选择工资不在5000到12000的员工的姓名和工资
SELECT
lastname,
salary
FROM
employees
WHERE
salary NOT BETWEEN 5000 AND 12000;
#_

SELECT
last_name,
salary
FROM
employees
WHERE
salary<5000 OR salary>12000;
image.png

4 查询 在20或50号部门工作的员工姓名和部门号
SELECT
last_name,
department_id
FROM
employees
WHERE
department_id IN (20, 50);
image.png
##5查询公司中没有管理者的员工姓名及job_id级别。
SELECT
last_name,
salary,
SELECT
*
FROM
employees;
##6选择公司中有奖金的员工姓名,工资和奖金级别。

1 查询工资大于12000的员工姓名和工资
SELECT
salary,
lastname
FROM
employees
WHERE
salary>12000;

#2 查询员工号为176的员工的姓名和部门号和年薪
SELECT
IFNULL(commission_pct,0)AS 奖金率
FROM
employees;
SELECT
lastname,
department_id,
IFNULL (commission_pct,0)AS 奖金率,salary12(1+commissionpct) AS 年薪
FROM
employees
WHERE
employee_id=176;


##3 选择工资不在5000到12000的员工的姓名和工资
SELECT
lastname,
salary
FROM
employees
WHERE
salary NOT BETWEEN 5000 AND 12000;
#__
SELECT
lastname,
salary
FROM
employees
WHERE
salary<5000 OR salary>12000;

##4 查询 在20或50号部门工作的员工姓名和部门号
SELECT
lastname,
departmentid
FROM
employees
WHERE
departmentid IN (20, 50);


##5查询公司中没有管理者的员工姓名及jobid级别。
SELECT
lastname,
salary,
SELECT
*
FROM
employees;
##6选择公司中有奖金的员工姓名,工资和奖金级别。
SELECT
salary,
lastname,
commission_pct
FROM
employees
WHERE
salary<18000 AND commission_pct IS NULL;

#__

SELECT

FROM
employees
WHERE
job_id <> ‘IT’ OR salary=12000;


DESC departments;
##############
SELECT

FROM
employees
WHERE
commissionpct LIKE ‘%%’
AND
lastname LIKE ‘%%’;
#进阶3:排序查询
/引入
select

from
employees;

语法:
select 查询列表
from 表
where 筛选条件
order by 排序列表【asc|desc】
特点:
1、sac代表的是升序,desc代表降序,如果不写,默认asc
2、order by子句中可以支持单个字段、多个字段、表达式、函数、别名。
3、order by子句,一般放在查询语句的最后面。limit子句除外。

/
##案例1:查询员工信息,要求工资从高到低排序
SELECT

FROM
employees
ORDER BY
salary DESC;
#__

SELECT

FROM
employees
ORDER BY
salary ASC;
##案例2:查询部门编号大于等于90的员工信息,按入职时间的先后进行排序。
SELECT

FROM
employees
WHERE
department_id>=90
ORDER BY
hiredateASC;

##案例3:查询员工信息,按照年薪高低排序【按表达式排序】
SELECT
,
salary
12(1+IFNULL(commission_pct,0)) AS 年薪
FROM
employees
ORDER BY
salary
12(1+IFNULL(commission_pct,0)) DESC;
##案例4:查询员工信息,按照年薪高低排序【支持别名】
SELECT
,
salary12(1+IFNULL(commission_pct,0)) AS 年薪
FROM
employees
ORDER BY
年薪 DESC;

##案例5:按照姓名长度显示员工姓名和工资。【按照函数排序】
SELECT
last_name,
salary,
LENGTH(last_name)
AS 长度
FROM
employees
ORDER BY
长度 DESC;


##案例6:查询员工信息,要求先按工资升序排序,再按员工编号降序排序。
SELECT

FROM
employees
ORDER BY
salary,employee_id DESC;



#1、查询员工的姓名和部门号和年薪,按年薪降序,按姓名升序
SELECT
last_name,
department_id,
salary
12(1+IFNULL(commission_pct,0)) 年薪
FROM
employees
ORDER BY
年薪 DESC,
last_name;
#2、选择工资不在8000到17000的员工的姓名和工资,按工资降序
SELECT
last_name,
salary
FROM
employees
WHERE
salary NOT BETWEEN 8000 AND 17000
ORDER BY
salary DESC;
#3、查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,再按部门号升序。
SELECT
,
LENGTH(email) 长度
FROM
employees
WHERE
email LIKE ‘%e%’
ORDER BY
长度 DESC,department_id ASC;


#进阶4:常见函数的学习
/
概念;类似于Java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名。
好处:1、隐藏了实现细节 2、提高代码的重用性
调用:select 函数名(实参列表) [from 表];
特点:
①叫什么(函数名)
②干什么(函数公能)
分类:
1、单行函数
如:concat、length、ifnull
2、分组函数

功能:做统计用,又称为统计函数,聚合函数,组函数。
/

一、字符函数
#1、length 获取参数值的字节函数。
SELECT LENGTH(‘张三丰dasf’);
utf8汉字占3字符
#concat 拼接字符串
SELECT CONCAT(lastname,’‘,firstname)
FROM employees;
#upper| lower
SELECT UPPER(‘john’);
##示例:将姓变大写,名变小写,然后拼接。
SELECT

CONCAT(UPPER(last_name),
LOWER(first_name))
AS
姓名
FROM
employees;

##4、substr、substring,
注意:索引从1开始。
#使用两个参数:截取从指定索引处,后面所有字符。
SELECT SUBSTR(‘李莫愁爱上了陆展元’,7) put_put;
#截取从指定索引处,指定字符长度的字符
SELECT SUBSTR(‘李莫愁爱上了陆展元’,1,3) put_put;
#案例:将姓名中首字符大写,其他字符小写,用下划线拼接。显示出来
SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),’
‘,LOWER(SUBSTR(lastname,2)))
FROM employees;
SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),’
‘,LOWER(SUBSTR(last_name,2)))
FROM employees;
#5,.instr 用于返回子串第一次出现的索引,如果找不到返回0
SELECT INSTR(‘杨不悔爱上了殷六侠’,’殷六侠’) AS out_put;
#6.trim
SELECT LENGTH(TRIM(‘ 张翠山 ‘)) AS out_put;
SELECT LENGTH(TRIM(‘a’ FROM ‘ aaaaaaaaa 张aaaaaaaa翠山 ‘)) AS out_put;
#lpad 用指定的字符,实现左填充指定长度。
SELECT LPAD(‘殷素素’,2,’‘) AS out_put;
#lpad 用指定的字符,实现右填充指定长度。
SELECT RPAD(‘殷素素’,12,’
‘) AS out_put;
截取都是从右边截取。
#replace 替换
SELECT REPLACE(‘周芷若爱上了张无忌爱上了张无忌’,’周芷若’,’赵敏’) AS out_put;
##二、数学函数
##round 四舍五入
SELECT ROUND(-1.65);
##ceil 向上取整,返回≥该参数的最小整数
SELECT CEIL(1.00);
##floor 向下取整,返回≤该参数的最大整数
SELECT FLOOR(-9.99);
##truncate 截断,返回,小数点后保留几位小数。
SELECT TRUNCATE(1.65,1);
##mod取余数
MOD(a,b): a-a/b*b
SELECT MOD(10,3);
SELECT 10%3;
##三、日期函数
#now 返回当前系统日期+时间
SELECT NOW();
SELECT NOW()
#curdate 返回当前系统日期,不包含时间。
SELECT CURDATE();
SELECT CURDATE
#curtime 返回当前时间,不包含日期。
SELECT CURTIME();
#获取指定部分,年、月、日、小时、分钟、秒
SELECT YEAR(NOW()) 年;
SELECT YEAR(hiredate)
FROM employees;
SELECT MONTH();
SELECT MONTHNAME(NOW());
#str_to_date 将字符通过指定的格式转换成日期
SELECT STR_TO_DATE(‘1994-11-22’,’%Y-%m-%d’);

image.png