首页 > TAG信息列表 > sql99
MySQL-sql99语法-等值连接
1.等值连接 案例1:查询员工名、部门名 # 案例1:查询员工名、部门名 SELECT `last_name`,`department_name` FROM `employees` e INNER JOIN `departments` d ON e.`department_id`=d.`department_id` 案例2:查询名字中包含e的员工名和工种号(添加筛选) # 案例2:查询名字中包含eMySQL-sql99-子查询
标量子查询 案例:谁的工资比Abel高? # ①查询Abel的工资 SELECT `salary` FROM `employees` WHERE `last_name`='Abel'; 发现是一行一列 为标量子查询 # ②查询员工的信息,满足salary>①结果 SELECT * FROM `employees` WHERE `salary`>( SELECT `salary` FROM `employees`MySQL-sql99-自连接、左(右)外连接、全外连接、交叉连接
自连接 查询员工的名字、上级的名字 #自连接 #查询员工的名字、上级的名字 SELECT e.`last_name`,m.`last_name` FROM `employees` e INNER JOIN `employees` m ON e.`manager_id`=m.`employee_id`; 还可以继续加筛选条件 查询姓名中包含字符k的员工的名字、上级的名字 #查询姓MySQL-sql99语法-非等值连接
非等值连接 查询员工的工资级别 # 非等值连接 # 查询员工的工资级别 select `salary`,`grade_level` from `job_grades` g inner join `employees` e on e.`salary` between g.`lowest_sal` and g.`highest_sal`; 查询工资级别的个数>2的个数,并且按工资级别降序 # 查询工资级别MySQL-sql99-exists后面的子查询+案例讲解
四、exists后面(相关子查询) 其实就是一个bool类型 #四、exists后面(相关子查询) # 其实就是一个bool类型 select exists(select `employee_id` from `employees`) 判断exist后面有没有值 没有值的情况如下: select exists(select `employee_id` from `employees` where `salary`=300MySQL-sql99-select、from后面的子查询
select后面 案例:查询每个部门的员工个数 # 案例:查询每个部门的员工个数 SELECT d.*,( SELECT COUNT(*) FROM `employees` e WHERE e.`department_id`=d.`department_id` ) 个数 FROM `departments` d; 案例:查询员工号=102的部门名 # 案例:查询员工号=102的部门名 select (MySQL-sql99-子查询-列子查询、行子查询
列子查询(多行子查询) 案例:返回location_id是1400或1700的部门中所有员工姓名 # ①查询location_id是1400或1700的部门编号 SELECT `department_id` FROM `departments` WHERE `location_id` IN(1400,1700); 是1列多行 满足列子查询 # ②查询员工姓名,要求部门号是①列表中的某一连接查询(重要)
2,连接查询 2.1、连接查询:从一张表中查询叫单表查询,emp表和dept表联合起来查询数据,从emp表中取员工名字,从dept表中取部门名字 这种跨表查询,多张表联合查询数据被称为连接查询 2.2、连接查询的分类? 根据语法的年代分类 SQL92:1992年的时候出现的语法MySQL(21)——sql99语法(左(右)外连接)
1. 概念 左外连接:left join左边的是主表;右外连接:right join右边的是主表;左外连接和右外连接交换两个表的顺序,可以实现相同的效果; 2. 示例 (1)查询男朋友不在男生表的女生名----------左外连接 SELECT b.name FROM beauty b LEFT OUTER JOIN boys bo ON b.`boyfr外连接SQL99语法
# sql99语法 /* 99语法: select 查询列表 from 表1 别名 (连接类型) join 表2 别名 (连接类型) on 连接条件 WHERE 筛选条件 GROUP BY having 限制分组后的内容 ORDER BY 92语法 select 查询列表 from 表1 别名,表2 别名 WHmysql sql99语法 外连接
外连接:内连接结果+主表中有而从表没有的结果左外连接:left join 左边的是主表右外连接:right join 右边的是主表 #案例:查询男朋友不在男神表的女神名#左连接 SELECT b.name FROM beauty b LEFT OUTER JOIN boys bo ON b.boyfriend_id=bo.id WHERE bo.`id` IS NULmysql sql99语法 内连接等值连接
#案例:查询员工名、部门名 SELECT last_name,department_name FROM employees e INNER JOIN departments d ON e.`department_id`=d.`department_id` #案例:查询名字中包含e的员工名和工种名(筛选) SELECT last_name,job_title FROM employees e INNER JOIN进阶6:连接查询 二、sql99语法
#二、sql99语法 /*语法: select 查询列表 from 表1 别名 【连接类型】 join 表2 别名 on 连接条件 【where 筛选条件】 【group by 分组】 【having 筛选条件】 【order by 排序列表】 分类:内连接(★):inner外连接 左外(★):left 【outer】 右外(★):right 【outer】 全外:full【outerMySql(十二)Sql92和Sql99的区别
sql92和sql99比较 功能方面:sql99支持的较多 可读性:sql99实现了连接条件和筛选条件的分离,因此可读性较高 进阶练习: /**查询编号大于3的女神的男朋友信息,如果有则列出详细信息,如果没有则用null补充**/ SELECT bea.id,bea.name,b.* FROM beauty bea LEFT OUTER JOIN boys