SQL教程——连接查询之SQL99标准
本教程中所使用的數(shù)據(jù)庫的建表語句都在“SQL教程——索引”這篇文章中,點(diǎn)擊鏈接直達(dá):索引&建表語句
摘要:本文主要介紹SQL99標(biāo)準(zhǔn)的連接查詢
?
SQL99標(biāo)準(zhǔn)
語法:
? ? select?查詢列表
? ? from?表1?別名 【鏈接類型】
? ? join? ?表2 別名
? ? on?鏈接條件
? ? 【where?篩選條件】
? ? 【group?by?分組】
? ? 【having?篩選條件】
? ? 【order?by?排序】
?
分類:
內(nèi)連接(※)inner
外連接
左外(※):left【outer】
右外(※):right【outer】
全外:full【outer】
交叉連接:cross
?
1、內(nèi)連接
語法:
? ? select?查詢列表
? ? from?表1?別名
? ? inner?join?表2?別名
? ? on?鏈接條件
?
分類:
等值連接
非等值連接
自連接
特點(diǎn):
-
添加排序、分組、篩選。
-
inner可以省略。
-
篩選條件放在where后面,連接誒條件放在on后面,提高分離性,便于閱讀。
-
inner?join鏈接和sql92語法中的的等值連接效果是一樣的。
?
?
#1、等值連接
#案例1:查詢員工名、部門名select last_name, department_namefrom employees einner join departments don e.department_id = d.department_id;#2、查詢名字中包含e的員工名和工種名(添加篩選)select last_name, job_titlefrom employees einner join jobs jon j.job_idwhere e.last_name like '%e%';#3、查詢部門個(gè)數(shù)>3的城市名和部門個(gè)數(shù),(分組+篩選)select city, count(*)from departments dinner join locations lon d.location_id= l.location_idgroup by cityhaving count(*) > 3;#4、查詢哪個(gè)部門的員工個(gè)數(shù)>3的部門名和員工個(gè)數(shù),并按照個(gè)數(shù)降序(添加排序)select department_name, count(*)from employees einner join departments don e.department_id = d.department_idgroup by department_namehaving count(*) > 3order by count(*) desc;#5、查詢員工名、部門名、工種名,并按部門名降序select last_name, department_name, job_titlefrom employees einner join departments d on e.department_id = d.department_idinner join jobs j on e.job_id = j.job_idorder by department_name desc;#2、非等值連接
#查詢員工的工資級(jí)別select last_name, grade_levelfrom employees ejoin job_grades jon e.salary between j.lowest_sal and j.highest_sal;#查詢員工工資級(jí)別個(gè)數(shù)>2的級(jí)別個(gè)數(shù),并按工資級(jí)別排序select count(*), grade_levelfrom employees ejoin job_grades jon e.salary between j.lowest_sal and j.highest_salgroup by grade_levelhaving count(*) > 2order by grade_level desc;#3、自連接
#查詢員工的名字、上級(jí)的名字select e.last_name?員工, m.last_name?上級(jí)員工from employees einner join employees mon e.manager_id = m.employee_id;?
2、外連接
?
應(yīng)用場(chǎng)景:用于查詢一個(gè)表中有,另一個(gè)表中沒有的情況
特點(diǎn):
外連接查詢結(jié)果為主表中的所有記錄
如果從表中有和它匹配的記錄,則顯示匹配的
如果從表中沒有和它匹配的記錄,則顯示null值
左右外鏈接查詢結(jié)果 =?內(nèi)連接結(jié)果 +?主表中有而從表沒有的記錄
全外連接不分主表從表,它的查詢結(jié)果包括兩表交集+A表有B表沒有的部分+B表有A表沒有的部分
左外連接,left?join左邊是主表
右外鏈接,right?join右邊的是主表
左外和右外交換兩個(gè)表的順序,可以實(shí)現(xiàn)同樣的效果
?
3、交叉連接(笛卡爾乘)
select b.*, bo.*from beauty bcross join boys bo;?
?
小結(jié):
SQL92 VS SQL99
-
功能:SQL99支持的較多
-
可讀性:SQL99實(shí)現(xiàn)連接條件和篩選條件的分離,可讀性較高
?
總結(jié)
以上是生活随笔為你收集整理的SQL教程——连接查询之SQL99标准的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: plsql以及instantclient
- 下一篇: linux cmake编译源码,linu