SELECT vend_name, prod_name, prod_price, quantityFROM vendors, products, orderitemsWHERE vendors.vend_id = products.vend_id AND orderitems.prod_id = products.prod_id;//INNER JOIN方式SELECT vend_name, prod_name, prod_price, quantityFROM (vendors INNER JOIN products ON vendors.vend_id = prodcuts.vend_id) INNER JOIN orderitems ON orderitems.prod_id = products.prod_id;其中,WHERE方式...
#案例:查询员工的工资和工资级别
SELECTsalary,grade_level
FROMemployees AS e,job_grades AS j
WHEREsalary BETWEEN j.`lowest_sal` AND j.`highest_sal` #e表的salary字段会和j表的每行字段挨个比较mysql 非等值连接标签:rom code evel 员工 where 级别 查询 employees sel 本文系统来源:https://blog.51cto.com/14437184/2437282
#案例:查询女神名和对应的男神名
SELECT NAME,boyName
FROMboys,beauty
WHEREbeauty.boyfriend_id=boys.id;USE myemployees;
#案例:查询employees表的员工名和对应的departments表的部门名,限定字段名相同
SELECTlast_name,department_name
FROMdepartments,employees
WHEREemployees.department_id=departments.department_id;
#案例:查询员工名、工种号、工种名,限定字段名和查询字段名相同
SELECTlast_name,employees.job_id,...
加筛选
#案例:有奖金的员工名和部门名
SELECT last_name,department_name
FROMemployees AS e,departments AS d
WHEREe.department_id=d.department_id
ANDe.commission_pct IS NOT NULL;
#案例:查询城市名中第二个字符为o的部门名和城市名
SELECTdepartment_name,city
FROMdepartments AS d,locations AS l
WHEREd.location_id=l.location_id
ANDl.city LIKE‘_o%‘;
加分组
#案例:查询每个城市的部门个数
SELECTCOUNT(*),city
F...
#案例:查询员工名、部门名
SELECTlast_name,department_name
FROMemployees e
INNER JOIN departments d
ONe.`department_id`=d.`department_id`
#案例:查询名字中包含e的员工名和工种名(筛选)
SELECTlast_name,job_title
FROMemployees e
INNER JOINjobs s
ONe.`job_id`=s.job_id
WHEREe.`last_name` LIKE ‘%a%‘ ;
#案例:查询部门个数大于3的城市名和部门个数
SELECTcity,COUNT(*)
FROMdepartments d
INNER JOINlocations l
...
#案例:查询员工的工资级别
SELECTsalary,grade_level
FROMemployees e
JOINjob_grades g
ONe.`salary` BETWEEN g.`lowest_sal` AND g.`lowest_sal`;
#案例:查询每个工资级别的个数,并且按级别降序
SELECTCOUNT(*),grade_level
FROMjob_grades j
JOINemployees e
ONe.`salary` BETWEEN j.`lowest_sal`AND j.`highest_sal`
GROUP BYgrade_level DESC;mysql sql99语法 内连接非等值连接标签:查询 ade 案例 mys 连接 bet...
1 笛卡尔集基本原理 两个表如果笛卡尔集运算 (1)行数是两个表行数相乘的结果 (2)列是两个表合集 案例: 错误查询方式: select count(e.EMPNO) from emp e,dept d; 正确查询方式: select count(e.EMPNO) from emp e,dept d where e.deptno = d.deptno; 2.等1 笛卡尔集基本原理
两个表如果笛卡尔集运算
(1)行数是两个表行数相乘的结果
(2)列是两个表合集
案例:
错误查询方式:
select count(e.EMPNO)
from emp e,dept d;正确查询方...
bitsCN.com从业以来,发现很多技术人员和同事向笔者或是在网络上咨询过LEFT JOIN 如何写及其特性,而等值连接一般都没问题,几年前曾经写过一份Microsoft SQL Server版本的,此次特意再写一份MySQL版本的,希望阅读过的技术人员,可以起到解惑功效。 1、三种连接的语法 为便于更多的技友快速读懂、理解,我们只讨论2张表对象进行连接操作的情况,大于2张表对象进行的连接操作原理也是一样的。 左连接(LEFT JOIN )SELECT M...
内连接之等值连接
内连接:假设A表和B表进行内连接查询时,凡是A表和B表能够匹配上的记录查询出来,这就是内连接;其中,A和B两张表没有主副之分,两张表是平等的
等值连接:即获取两张表中匹配关系相等的记录
等值连接最大的特点就是:条件是等量关系
以下是SQL99(内连接)的写法:
内连接语法格式:
SELECT字段1,字段2,...
FROMA
INNER JOIN //注意:这里的INNER可以省略,带着INNER的目的是可读性更好B
ON连接条件
WH...
文章目录
1. 内连接2. 非等值连接3. 自连接
1. 内连接
内连接最大的特点是:条件是等量关系。
案例:查询每个员工的部门名称,要求显示员工名和部门名。
从emp表中取ename,从dept表中取dname
SQL92(太老了,不用):
select e.ename,d.dname from emp e, dept d where d.deptno = e.deptno; SQL99(常用):
select e.name, d.dname from emp e join dept d on d.deptno = e.deptno;SQL99语法:
select ...from表 A
inner join ...
#案例:查询员工名、部门名
SELECTlast_name,department_name
FROMemployees e
INNER JOIN departments d
ONe.`department_id`=d.`department_id`
#案例:查询名字中包含e的员工名和工种名(筛选)
SELECTlast_name,job_title
FROMemployees e
INNER JOINjobs s
ONe.`job_id`=s.job_id
WHEREe.`last_name` LIKE '%a%' ;
#案例:查询部门个数大于3的城市名和部门个数
SELECTcity,COUNT(*)
FROMdepartments d
INNER JOINlocations l
ON...
加筛选
#案例:有奖金的员工名和部门名
SELECT last_name,department_name
FROMemployees AS e,departments AS d
WHEREe.department_id=d.department_id
ANDe.commission_pct IS NOT NULL;
#案例:查询城市名中第二个字符为o的部门名和城市名
SELECTdepartment_name,city
FROMdepartments AS d,locations AS l
WHEREd.location_id=l.location_id
ANDl.city LIKE'_o%';
加分组
#案例:查询每个城市的部门个数
SELECTCOUNT(*),city
FRO...
#案例:查询女神名和对应的男神名
SELECT NAME,boyName
FROMboys,beauty
WHEREbeauty.boyfriend_id=boys.id;USE myemployees;
#案例:查询employees表的员工名和对应的departments表的部门名,限定字段名相同
SELECTlast_name,department_name
FROMdepartments,employees
WHEREemployees.department_id=departments.department_id;
#案例:查询员工名、工种号、工种名,限定字段名和查询字段名相同
SELECTlast_name,employees.job_id,...
#列出所有员工名字和其对应领导的名字SELECT e.last_name 员工名字, m.last_name 领导名字
FROM employees e
INNER JOINemployees m
ON e.`manager_id` = m.`employee_id`;
输出结果:#对员工进行工资等级划分,并列出那些员工人数超过20个的工资等级
SELECT j.grade_level 工资等级,COUNT(*)人数
FROM employees e
INNER JOIN?
?? ?jop_grades j
ON
?? ?e.`salary` BETWEEN j.`lowest_sal` AND j.`highest_sal`
GROUP BY
?? ?工资...