msqyl—基础运算符安全等于<=>,逻辑运算符或 NOT OR ||,like模糊查询,ESCAPE 定义转义符 GROUP BY 分组 AVG 求平均值

/*
查找没有奖金率的员工姓名
*/
SELECT    ##选择
CONCAT (`last_name`,' ',`first_name`) AS 姓名,`commission_pct` AS 工资 ##concat 把姓——名连接起来
FROM `employees` #从员工表
WHERE `commission_pct` <=> NULL ; #筛选 安全的等于 null的

/*
查找工资等于12000的员工姓名
*/
SELECT ##选择
CONCAT (`last_name`,' ',`first_name`) AS 姓名,`salary` AS 工资##concat把姓——名连接起来,
FROM `employees`#从员工表
WHERE `salary` =12000;##筛选工资等于12000的

/*
查询部门编号不是在90到110之间,或者工资高于15000的员工信息
用逻辑运算符或 OR ||
*/
SELECT *FROM `employees`  
##where `department_id` < 90 or `department_id` >110 or `salary`>= 15000;
##not 非 取反
WHERE NOT (`department_id`>=90 AND `department_id` <=110) OR `salary`> 15000;
,
/*
查询员工名中第三个字符为e,第五个字符为a的员工名和工资
*/
SELECT `first_name` AS 员工名, ## 选择员工名的表
`salary` AS 工资 ##工资
FROM `employees` ##选择员工表
WHERE `first_name` LIKE '__e_a%'; ##筛选员工名的表 用like模糊查询'规定前面的内容 %代表后面的内容不管'

/*
查询员工名中的第二个字符为_的员工名
*/
SELECT `last_name` AS 员工姓,first_name AS 员工名 ##选择员工姓名
FROM `employees` ##员工表
##方法一 使用'\'转义符
WHERE `last_name`LIKE '_\_%'; ##把_转义成一个可以查询的字符
##方法二 使用ESCAPE 定义转义符
WHERE `last_name`LIKE '_$_%' ESCAPE'$';##使用ESCAPE定义一个随意字符 就可以转义成可以查询的字符

 

/*
查询每个工种的平均工资
*/
SELECT`job_id` AS 职位编号 , AVG(`salary` ) AS 平均工资 ##用AVG去求平均值从平均工资
FROM  `employees` ##从
GROUP BY `job_id`  ## 按照xxx分组
/*
查询每个位置的部门个数
*/
SELECT COUNT(*),`location_id`
FROM `departments`
GROUP BY `location_id`; 分组
/*
查询邮箱中包含a字符的 每个部门的最高工资
*/
SELECT`department_id` AS 部门 , `email` AS 邮箱,MAX(`salary`) AS 最高工资
FROM `employees`
WHERE `email` LIKE '%a%' 
GROUP BY `department_id`; ##分组
/*
查询有奖金的每个领导手下员工的平均工资
*/
SELECT `manager_id` AS 领导编号,
`first_name` AS 员工名,
AVG(`salary`)AS 平均工资 ##求平均值
FROM `employees`
WHERE `commission_pct` IS NOT NULL 
GROUP BY `manager_id`; ##分组

 

posted @ 2021-11-10 11:18  苏三说v  阅读(67)  评论(0编辑  收藏  举报