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`; ##分组