含義:當查詢結果涉及到多個表的字段時,需要使用連線查詢
分類:按年代分:sql92標準/sql99標準(通常使用sql99標準)
按功能分:內連線(等值連線、非等值連線、自連線);外連線(左外連線、右外連線、全外連線);交叉連線
等值連線特點:
1)多表等值連線的結果為多表的交集部分
2)n表連線,至少需要n-1個連線條件
3)查詢結果集與表的先後順序無關
4)可以為表起別名
5)可以搭配所有子句的使用,例如:排序、分組、篩選等
2.1.1 查詢女神名和對應的男神名
-- 案例1:查詢女神名和對應的男神名
select name,boyname
from boys,beauty
where beauty.boyfriend_id = boys.id;
2.1.2 查詢員工名和對應的部門名
-- 案例2:查詢員工名和對應的部門名
select last_name,department_name
from employees,departments
where employees.employee_id = departments.department_id;
2.1.3 查詢員工名、工種號、工種名
-- 案例3:查詢員工名、工種號、工種名
/*為表起別名,可以提高語句的簡潔度,也可以區分多個重名的字段
注意:如果為表起了別名,則查詢的字段就不能使用原來的表名去限定
*/select employees.last_name,employees.job_id,jobs.job_title
from employees e,jobs j
where e.job_id = j.job_id;
2.1.4 查詢有獎金的員工名、部門名(新增篩選條件)
-- 案例4:查詢有獎金的員工名、部門名(新增篩選條件)
-- 注意:兩個表的順序可以交換,查詢結果與表的先後順序無關
select last_name,department_name,commission_pct
from employees e,departments d
where e.department_id = d.department_id
and e.commission_pct is not null;
2.1.5 查詢城市表中城市名中第二個字元為o的部門名和城市名
-- 案例5:查詢城市表中城市名中第二個字元為o的部門名和城市名
select department_name,city
from departments d,locations l
where d.location_id = l.location_id
and city like '_o%';
2.1.6 查詢每個城市的個數(新增分組)
-- 案例6:查詢每個城市的個數(新增分組)
select count(*) 個數,city
from departments d,locations l
where d.location_id = l.location_id
group by city;
2.1.7 查詢有獎金的每個部門得部門名和部門的領導編號和該部門得最低工資
-- 案例7:查詢有獎金的每個部門得部門名和部門的領導編號和該部門得最低工資
select department_name,d.manager_id,min(salary)
from departments d,employees e
where d.department_id = e.department_id
and commission_pct is not null
group by department_name,d.manager_id;
2.1.8 查詢每個工種的工種名和員工的個數,並且按員工個數降序(新增排序)
-- 案例8:查詢每個工種的工種名和員工的個數,並且按員工個數降序(新增排序)
select job_title,count(*)
from employees e,jobs j
where e.job_id = j.job_id
group by job_title
order by count(*) desc;
2.1.9 查詢員工名、部門名和所在的城市(多表連線查詢)
-- 案例9:查詢員工名、部門名和所在的城市(多表連線查詢)
select last_name,department_name,city
from employees e,departments d,locations l
where e.department_id = d.department_id
and d.location_id = l.location_id;
2.2.1 查詢員工的工資和工資級別,此處引入了乙個工資等級表
-- 案例:查詢員工的工資和工資級別,此處引入了乙個工資等級表
select salary,grade_level
from employees e,jobs_grades g
where salary between g.lowest_sal and g.highest_sal;
2.3.1 查詢員工名和上級的名稱
-- 案例:查詢員工名和上級的名稱
select e.employee_id,e.last_name,m.employee_id,m.last_name
from employees e,employees m
where e.manager_id = m.employee_id;
MySql(十)Sql92之內連線查詢
按照年代進行分類 按照功能進行分類 sql92標準 僅僅支援內連線 案例1 查詢女神名和對應的男神名 select name,boyname from beauty,boys where beauty.boyfriend id boys.id 案例2 查詢員工名對應的部門名 select last ...
sql92語法,sql99語法,連線查詢
連線查詢的分類 按年代分為sql192標準僅僅支援內連線,sql199標準支援內連線,左外連線,右外連線,交叉連線 按功能分為內連線,外連線,交叉連線 sql92標準 內連線包括1.等值連線 select name,boyname form boys,beauty where beauty.boyf...
MySQL高階6 連線查詢 sql92標準
高階6 連線查詢 含義 又稱多表查詢,當我們查詢的字段來自於多個表時,就會用到 笛卡爾乘積現象 表1有m行,表2有n行,結果為m n行 發生原因,沒有有效的連線條件 如何避免,新增有效的連線條件 分類 按年代分類 sql92標準 僅僅支援內連線 按功能分類 內連線 等值連線 非等值連線 自連線外連線...