MySql的連線查詢簡介

2021-09-05 10:29:22 字數 3154 閱讀 4152

連線查詢

笛卡爾集

select name,boyname from beauty,boys;

會出現笛卡爾集

笛卡爾集出現錯誤情況

select count(*) from beauty;

假設輸出12行

select count(*) from boys;

假設輸出4行

最終結果 12*4=48行

發生原因:沒有有效的約束條件

解決方法:新增有效的連線條件

分類按年代分類

sql192標準

只支援內連線

sql199標準(推薦)

支援內連線+外連線(左外和右外連線)+交叉連線

按功能分類

內連線等值連線

非等值連線

自連線外連線

左外連線

右外連線

全外連線

交叉連線

等值連線

案例1:查詢女生名和對應的男名

selectname,boyname

from boys,beauty

where beauty.boyfriend_id=boys.id;

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

select last_name,department_name

from employees,departments

where employees.department_id=departments.department_id;

為表起別名的方式

好處:①提高語句的簡潔度②區分多個重名的字段

注意:如果為表起了別名,則查詢的字段就不能使用原來的表名去限定

查詢員工名,工種號,工種名

select e.last_name,e.job_id,j.job_title

from employees e,jobs j

where e.job_id=j.job_id;

可以加篩選條件

查詢有獎金的員工名,部門名 使用where and

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;

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

select department_name,city

from departments d,locations l

where d.location_id=l.location_id

and city like 『_o%』;

案例1:查詢每個城市的部門個數

select count(*) 個數,city

from departments d,locations l

where d.location_id=l.location_id

group by city;

案例2:查詢出有獎金的每個部門的部門名和部門的領導編號和該部門的最低工資

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;

可以加排序

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

select job_title,count()

from employees e,jobs j

where e.job_id=j.job_id

group by job_title

order by count() desc;

可以實現三表連線

查詢員工名,部門名和所在的城市帶s

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

and city like 「%s%」;

多表連線

①多表等值連線的結果為多表的交集部分

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

③多表的順序沒有要求

④一般需要為表起別名

⑤可以搭配前面介紹的所有子句使用,比如排序,分組,篩選

非等值連線

查詢員工工資和工資級別

select salary,grade_level

from employees e,job_grades g

where salary between g.lowest_sal and g.highest_sal;

自連線

當員工表中的資料,比如查詢員工的名字,查詢他的領導,查詢它的名字,查詢對應的id,再去查詢員工表中的id,查詢出領導名

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連線查詢例項 MySQL連線查詢例項詳解

建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...

mysql連線查詢例項 MySQL連線查詢例項詳解

建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...

MySQL的連線查詢

mysql的連線查詢型別有 內連線 左外連線 右外連線,自連線 關鍵字 inner join.on 說明 組合兩個表中的記錄,返回關聯字段符合查詢條件的記錄,也就是返回兩個表的交集 陰影 部分。關鍵字 left outer join.on說明 左 外 連線,左表 table1 的記錄將會全部表示出來...