連線查詢
笛卡爾集
select name,boyname from beauty,boys;
會出現笛卡爾集
笛卡爾集出現錯誤情況
select count(*) from beauty;發生原因:沒有有效的約束條件假設輸出12行
select count(*) from boys;
假設輸出4行
最終結果 12*4=48行
解決方法:新增有效的連線條件
分類按年代分類
sql192標準
只支援內連線
sql199標準(推薦)
支援內連線+外連線(左外和右外連線)+交叉連線
按功能分類
內連線等值連線
非等值連線
自連線外連線
左外連線
右外連線
全外連線
交叉連線
等值連線
案例1:查詢女生名和對應的男名
select案例2:查詢員工名和對應的部門名name
,boynamefrom boys,beauty
where beauty.boyfriend_id=boys.id;
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查詢城市名中第二個字元為o的部門名和城市名from employees e,departments d
where e.department_id=d.department_id
and e.commission_pct is not null;
select department_name,cityfrom departments d,locations l
where d.location_id=l.location_id
and city like 『_o%』;
案例1:查詢每個城市的部門個數
select count(*) 個數,city案例2:查詢出有獎金的每個部門的部門名和部門的領導編號和該部門的最低工資from departments d,locations l
where d.location_id=l.location_id
group by city;
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_namefrom 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 的記錄將會全部表示出來...