oracle查詢語句這塊有多表查詢和子查詢
,那麼首先我們先來了解下多表查詢,顧名思義多表查詢就是通過多張表去查詢資料,既然是多表查詢那麼就有了多表鏈結這一說法,那麼多表鏈結有以下這幾種寫法,
等值連線、不等值連線、自連線、滿外連線和外鏈結還有乙個自然連線
,那麼外鏈結又分為(
左外連線和右外連線)。
1、下面我們來了解想下各各連線的寫法,等值連線
select * from teacher t,course c where t.tno=c.tno;
等值連線就是把倆張表裡面相同的id連線起來即可
不等值連線
select e.first_name,e.salary,l.location_id
from employees e,locations
where e.first_name between l.street_address and l.postal_code;
自連線selecte.last_name,e.employees_id,m.last_name,m.employee_id from employees e,employees m
where e.manager_id =m.employee_id;
外連線之左連線和1999的寫法
oracle語法
selecte.last_name,e.employee_id,m.last_name,m.employee_id from employees e,employees m
where e.manager_id =m.employee_id(+);
1999語法
selecte.last_name,e.employee_id,m.last_name,m.employee_id from employees e left join employees m
on e.manager_id =m.employee_id;
以上者倆種寫法得出是資料結果是一樣的,右外連線與上面寫法相反即可,第一種寫法是,(+)在左邊是右連線(+在右邊是左連線),第二種寫法直接把 left join on改為 right join on即可
滿外連線
selecte.last_name,e.employee_id,m.last_name,m.employee_id from employees e full outer join
employees m on e.manager_id =m.employee_id;
滿外連線指的是把倆張表的所有資料給查出來
自然連線
select last_name,salary,employee_id,department_id,department_id,job_id,manager_id,email,department_name,commission_pct,hire_date,first_name,location_id from employees natural join departments
下面我們來了解下子查詢:子查詢也分為(單行子查詢和多行子查詢)
注意事項:
子查詢要包含在括號內。
將子查詢放在比較條件的右側。
單行操作符對應單行子查詢,多行操作符對應多行子查詢。
單行子查詢
select last_name,salary from employees
where salary <(select salary from employees where employee_id=100)
單行子查詢也就是說,在子查詢裡面的查詢語句查出來的資料只能是一條的,多於一條資料將不能成立
多行子查詢
select employee_id,last_name,department_id,salary
from employees
where salary 110;
在此說明一下 all和any的意思:any:指的是和子查詢返回的某乙個值比較all:和子查詢返回的所有值比較
oracle 查詢語句總結
查詢某字段為某個值的記錄 select from sales where type 皮夾子 模糊查詢 select from sys users where name like 吳 去重查詢 select distinct type name,table name from menutab 查詢前1...
Oracle查詢語句優化總結
建立表的時候。應盡量建立主鍵,盡量根據實際需要調整資料表的pctfree和pctused引數 大資料表刪除,用truncate table代替delete。合理使用索引,在oltp應用中一張表的索引不要太多。資料重複量大的列不要建立二叉樹索引,可以採用位圖索引 組合索引的列順序盡量與查詢條件列順序保...
Oracle查詢語句
select sysdate from dual dual 臨時的表,使語法結構完整,沒有什麼意義。oracle中的select語句必須要有from 而sql2008中可以沒有。起別名 起別名 as起別名,不用加雙引號.加空格起別名,要加雙引號 select name as 姓名 from stud...