MySql(十)Sql92之內連線查詢

2021-09-30 20:37:25 字數 3294 閱讀 3554

按照年代進行分類

按照功能進行分類

sql92標準:僅僅支援內連線

/**案例1:查詢女神名和對應的男神名**/

select name,boyname

from beauty,boys

where beauty.boyfriend_id = boys.id;

/**案例2:查詢員工名對應的部門名**/

select last_name,department_name

from employees,departments

where employees.'department_id' = departments.'department_id';

/**案例3:查詢員工名、工種號和工種名**/

select last_name,employees.job_id,job_title

from employees,jobs

where employees.'job_id' = jobs.'job_id';

注意:在操作過程中可以選擇為表其別名,好處如下:

提高語句的簡簡潔度

區分多個重名的字段

/**查詢員工名、工種號和工種名**/

select last_name,e.job_id,job_title

from employees e,jobs j

where d.'job_id'= j.'job_id'

1. 新增篩選的等值查詢

/**查詢有獎金的員工名、部門名**/

select last_name,department_name

from employeess e,departments d

where e.'department_id' = d.'department_id'

and e.'commission_pct' is not null;

/**查詢城市名中第二個字元為o的城市名和部門名**/

select city, department_name

from department d,location l

where d.'location_id' = l.'location_id'

and city like '_o%';

2. 新增分組的等值查詢

/**查詢每個城市的部門個數**/

select count(*) 部門個數,city

from location l,department t

where l.'location_id' = t.'location_id'

group by city

/**查詢有獎金的每個部門的部門名和部門的領導編號和該部門的最低工資**/

select department_name,d.manager_id,min(salary)

from department d, employees e

where d.'department_id' = e.'department_id'

and commission_pct is not null

group by department_name;

3.新增排序的等值查詢

/**查詢每個工種的工種名和員工的個數,並且按照員工的個數降序排序**/

select job_title,count(*) 員工個數

from job j,employees e

where j.'job_id' = e.'job_id'

group by job_title

order by 員工個數 desc;

4.三表連線的等值查詢

/**查詢員工名、部門名和所在的城市**/

select employee_name,department_name,city

from employees e, departement d,location l

where e.'department_id' = d.'department_id'

and d.'location_id' = l.'location_id';

總結:

多表鏈結查詢的結果為多個表的交集部分

n表鏈結,至少需要n-1個連線條件

多表的順序沒有要求

一般情況下需要為表起別名

可以搭配排序、分組、篩選來進行使用

表:job_grade

grade_level

lowest_sal

highest_sal

a1000

2999

b3000

5999

c6000

9999

d10000

12000

/**查詢員工的工資和工資級別**/

select salary,grade_level

from employees e, job_grade jg

where salary between lowest_sal and highest_sal

/**查詢員工的工資和工資級別為a的工資**/

select salary,grade_level

from employees e, job_grade jg

where salary between lowest_sal and highest_sal

and grade_level = 'a';

表employees結構如下:

employee_id

last_name

manager_id

100k_ing

(null)

101kochhar

100102

de haan

100103

hunold

102104

ernst

103

/**查詢員工名和上級名稱**/

select e.employee_id,e.last_name,m.employee_id,m.last_name

from employees e, employees m

where e.'employee_id' = 'm.manager_id';

MySQL連線查詢 sql92語法

含義 當查詢結果涉及到多個表的字段時,需要使用連線查詢 分類 按年代分 sql92標準 sql99標準 通常使用sql99標準 按功能分 內連線 等值連線 非等值連線 自連線 外連線 左外連線 右外連線 全外連線 交叉連線 等值連線特點 1 多表等值連線的結果為多表的交集部分 2 n表連線,至少需要...

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標準 僅僅支援內連線 按功能分類 內連線 等值連線 非等值連線 自連線外連線...