亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > 文庫 > 正文

SQL語句學習

2020-10-29 21:50:56
字體:
來源:轉載
供稿:網友

(高手就不要笑話了^_^)。

好了,其他的不說現在就開始:

select 子句主要決定了從表中取出的列名,列數以及列的顯示順序等信息,"*"表示查詢所有的列,有關select的用法應該結合其它子句的用法。

1.from 子句:

①from子句用于指定被查詢的表,試圖或快照。
②如果指定多個實體,用逗號講它們分割。為了查詢方便,特別是進行自連接查詢時,可以給表起別名。(這里我要說很多剛開始使用sql的朋友開始的時候總覺得這個很簡單,沒有什么可學的,可是到后來在做一些復雜的sql的時候總是想不起來這一點導致其實不難的sql語句無從下手)。
③如果被查詢的實體不在當前的模式中,則必須用模式名來限定該對象。
select *from admin.emp
④若查詢遠程數據庫中的實體,必須使用數據庫鏈路,如果查詢分區表中某個分區的數據,則必須使用關鍵字Partition來指定分區名。
select *from emp@cbf107
select *from emp partition(A_hiredate)

2.where 子句

where 子句用于限定處理的行數,選擇滿足條件的行,where 子句中的任何邏輯條件都使用比較運算符,滿足where子句中邏輯條件的數據被返回或者被處理,在where子句中可以使用列名或表達式。

select ename from emp where deptno=10

①如果列類型為字符型,where ename='smith';(單引號內字符串大小寫有區別)
②列類型為數字型deptno=20;
③如果列值取其他列值,可用如下形式表示
where emp.depno=dept.deptno
④in 與 not in 擇列的值與值列表中某一個值相符的相關行信息(如果進行"或操作")

查詢表EMP中有那些雇員和分析員
select name,job from emp where job in ('clerk','analyst');
查詢表EMP中有那些人不是雇員和分析員
select name,job from emp where job not in ('clerk','analyst');

有那些雇員的工資在/不在2000~3000之間
select ename,job,sal from emp where sal between 2000 and 3000;
select ename,job,sal from emp where sal not between 2000 and 3000

select ename,oeptno from emp where ename like 's%';
"%" 匹配0個或n個長度的字符串,而"_"僅匹配一個字符。假如查詢條件中本身含有"_"或"%",為了與模式匹配符"_"和"%"區分,必須在like運算符中加ESCAPE"%子句.
查詢雇員名以A_開始的行
select *from emp where ename like 'a/_%' ESCAPE '/';

is null 和 is not null
空值(null)不等同于0,0是一個數字,而空值表示未知的,不存在的或不可用的數據.它不能像0那樣進行算術運算,null用于查詢列值為空值或非空的信息。
在Oracle的RDBMS中,null(空值)不占空間,判斷某一列值是否為空,不能用"="或"!="運算符號,而要用is null或is not null。

選擇沒有獎金的雇員信息
select ename,job from emp where comm is null

3.order by

在關系型模式中,行是沒有順序可言的。order by 子句確定的行信息顯示時的先后順序,當按多列進行排序時,首先由第一個列名確定順序,其次由第二個列名確定順序。

先按工資的降序排列,在工資相同的情況下,按姓名的字母順序排列

select
ename employee,
sal salary
from
emp
where
deptno=30
order by
sal desc employee;

假如在select子句中使用distinct關鍵字,在order by 子句中只能使用select 子句中列出來的列名,不能使用列的別名。

在查詢語句中不僅可以使用列名或列的別名進行排序,也可以使用在select 子句中列的位置進行排序。(select 子句中有一個很長的表達式,并且要用此表達式的結果進行排序時用列的位置是很有用的)。對于涉及集合操作:union,minus的查詢,不能使用列名,在這種情況下,必須提供列的位置。

select
'name:'||ename "employee",
sal "salary",
from
emp
where
deptno=30
order by
2,1;

4.group by

在select 語句中可以使用group by 子句將行劃分成較小的組,然后,使用聚組函數返回每一個組的匯總信息,另外,可以使用having子句限制返回的結果集。group by 子句可以將查詢結果分組,并返回行的匯總信息Oracle 按照group by 子句中指定的表達式的值分組查詢結果。

在帶有group by 子句的查詢語句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚組函數

select max(sal),job emp group by job;
(注意max(sal),job的job并非一定要出現,但有意義)

查詢語句的select 和group by ,having 子句是聚組函數唯一出現的地方,在where 子句中不能使用聚組函數。

select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;

當在gropu by 子句中使用having 子句時,查詢結果中只返回滿足having條件的組。在一個sql語句中可以有where子句和having子句。having 與where 子句類似,均用于設置限定條件

where 子句的作用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾數據,條件中不能包含聚組函數,使用where條件顯示特定的行。
having 子句的作用是篩選滿足條件的組,即在分組之后過濾數據,條件中經常包含聚組函數,使用having 條件顯示特定的組,也可以使用多個分組標準進行分組。

查詢每個部門的每種職位的雇員數
select deptno,job,count(*) from emp group by deptno,job;

5.多表連接

笛卡爾連接就是指從多張表中取數據時,在where子句中沒有指定多張表的公共關系(即一張表中取出每條記錄與另一張表中的每條記錄作連接)。假如第一張表中有M條記錄,而第二張表中用N條記錄,結果是M*N條記錄。要盡量避免產生笛卡爾連接。所以一般有N張表連接,至少有N-1個連接條件。

select
D.dname,D.Loc,E.ename,e.sal
from
delpt D,emp E
where
D.deptno=E.deptno;

一但定義了表的別名,在本條select語句中就不能用表名去限制列名,應該用表的別名去限制別名。

哪些雇員的工資屬于第三級別?

select
empno,ename,sal
from
emp,salgrade
where
grade=3
and
sal between losal and hisal;

找出emp表中的每一雇員屬于哪一等級。

select
empno,ename,sal,grade
from
emp,sal,grade
where
emp.sal between lowsal and hisal.

5.外連接與內連接

有時候,即使在連接的表中沒有相應的行,用戶可能想從一張表中看數據,Oracle提供了外連接實現該功能。
內連接是指連接查詢只顯示完全滿足連接條件的記錄,即等值連接,外連接的查詢結果是內連接查詢結果的擴展。外連接不僅返回滿足連接條件的所有記錄而且也返回了一個表中那些在另一個表中沒有匹配行的記錄。外連接的操作符是“+”。“+”號放在連接條件中信息不完全的那一邊(即沒有相應行的那一邊)。運算符“+”影響NULL行的建立。建一行或多行NULL來匹配連接的表中信息完全的行。

外連接運算符“+”只能出現在where子句中表達式的一邊。

假如在多張表之間有多個連接條件,外連接運算符不能使用or,in邏輯運算符與其它條件組合。


假如emp表中deptno=10的ename為空值,dept表中deptno=20的loc為空值:

1.

select
ename,dept.deptno,loc
from
emp,dept
where
emp.depno(+)=dept.deptno;

如果在dept.deptno中有的數值在emp.deptno中沒有值,則在做外連接時,
結果中ename會產生一個空值。(emp.deptno=10)

2.

select
ename,dept.deptno,loc
from
emp,dept
where
emp.depno=dept.deptno(+);

如果在emp.deptno中有的數值在dept.deptno中沒有值,則在做外連接時,
結果中loc會產生一個空值。。(dept.deptno=20)


5.自連接

自連接是指同一張表的不同行間的連接。該連接不受其他表的影響。用自連接可以比較同一張表中不同行的某一列的值。因為自連接查詢僅涉及到某一張表與其自身的連接。所以在from子句中該表名出現兩次,分別用兩個不同的別名表示,兩個別名當作兩張不同的表進行處理,與其它的表連接一樣,別名之間也使用一個或多個相關的列連接。為了區分同一張表的不同行的列,在名前永別名加以限制。

select
worker.ename,
manager.ename manager
from
emp worker,
emp manager
where
work.mgr=manager.empno;

7.集合運算

基合運算符可以用于從多張表中選擇數據。

①UNION運算
用于求兩個結果集合的并集(兩個結果集合的所有記錄),并自動去掉重復行。

select ename,sal from account where sal>2000
union
select ename,sal from research where sal>2000
union
select ename,sal from sales where sal>2000;

注:ename,sal 是必須一致的。

②UNION ALL運算
用于求兩個結果集合的并集(兩個結果集中的所有記錄)源碼天空,并且不去掉重復行。

select ename,sal from account where sal>2000
union
select ename,sal from research where sal>2000
union
select ename,sal from sales where sal>2000;

③INTERSECT運算
intersect運算返回查詢結果中相同的部分。

各部門中有哪些相同的職位?

select Job from account
intersect
select Job from research
intersect
select Job from sales;


④MINUS運算
minus返回兩個結果集的差集。(在第一個結果集中存在的,而在第二個結果集中不存在的行。)

有那些職位是財務部中有,而在銷售部門中沒有?

select Job from account
minus
select Job from sales;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美大尺度电影在线观看| 久久精品亚洲94久久精品| 欧美国产极速在线| 亚洲一级一级97网| 日韩在线观看免费高清| 久久久精品视频成人| 欧美日韩高清在线观看| 欧美极品在线视频| 一区二区三区四区视频| 国产成人精品久久亚洲高清不卡| 国产丝袜一区视频在线观看| 成人国产在线视频| 亚洲天堂日韩电影| 亚洲欧美日韩久久久久久| 国产人妖伪娘一区91| 国内精久久久久久久久久人| 久久这里有精品| 亚洲欧美另类中文字幕| 国产成人精品日本亚洲专区61| 亚洲福利视频免费观看| 国产精品永久免费在线| 在线a欧美视频| 91亚洲永久免费精品| 亚洲激情视频网站| 亚洲在线观看视频| 亚洲福利视频免费观看| 美女久久久久久久| 精品性高朝久久久久久久| 欧美一级大片在线观看| 久久亚洲国产精品| 久久久精品2019中文字幕神马| 亚洲开心激情网| 久久久久久久久久久免费| 亚洲色图欧美制服丝袜另类第一页| 国产一区二区黄| 久久青草福利网站| 久久久久久亚洲精品| 91wwwcom在线观看| 精品网站999www| 久久久久久高潮国产精品视| 成人久久18免费网站图片| 久久久999国产精品| 亚洲国产日韩精品在线| 中文字幕一区日韩电影| 欧美人在线观看| 热久久免费视频精品| 国产极品jizzhd欧美| 成人欧美一区二区三区黑人孕妇| 亚洲精品免费av| 伊人激情综合网| 在线播放日韩精品| 在线观看国产精品91| 亚洲天堂日韩电影| 97av在线影院| xxxxx成人.com| 久热国产精品视频| 成人午夜两性视频| 亚洲人成欧美中文字幕| 国内精品小视频| 国产欧美日韩中文字幕| 欧美性感美女h网站在线观看免费| 日本久久久久久久| 另类天堂视频在线观看| 久久久精品一区| 国产成人精品久久| 性亚洲最疯狂xxxx高清| 日本久久中文字幕| 午夜精品一区二区三区在线播放| 精品视频在线导航| 午夜精品久久久久久久99热| 国产精品久久久久久久久男| 日韩国产高清视频在线| 超碰97人人做人人爱少妇| 国产成人a亚洲精品| 麻豆国产va免费精品高清在线| 国产精品爽爽爽| 影音先锋欧美在线资源| 国产精品视频网站| 日韩欧美综合在线视频| 98精品国产高清在线xxxx天堂| 国产精品日韩精品| 日本三级久久久| 亚洲深夜福利视频| 在线观看免费高清视频97| 久久成人亚洲精品| 国产精品久久久久免费a∨| 国产成人精品久久二区二区| 91视频国产高清| 日韩精品免费电影| 亚洲社区在线观看| 97色在线观看免费视频| 国产亚洲精品久久久久久| 欧美又大粗又爽又黄大片视频| 国产成人精品免费视频| 91成人福利在线| 欧美主播福利视频| 一区二区成人av| 911国产网站尤物在线观看| 亚洲伦理中文字幕| 日韩动漫免费观看电视剧高清| 欧美一区二区影院| 亚洲影院污污.| 欧美激情亚洲视频| 中日韩美女免费视频网址在线观看| 日韩成人免费视频| 中文字幕在线视频日韩| 国产精品视频免费在线观看| 青青青国产精品一区二区| 日韩av综合中文字幕| 亚洲二区中文字幕| 国内精品久久久久久| 亚洲色图综合久久| 亚洲欧美日韩第一区| 久久99亚洲热视| 亚洲第一中文字幕在线观看| 96pao国产成视频永久免费| 国产精品久久久久久五月尺| 亚洲精品日韩丝袜精品| 欧美激情综合色综合啪啪五月| 久久偷看各类女兵18女厕嘘嘘| 国产成人精品日本亚洲专区61| 日韩中文字幕av| 日韩美女av在线免费观看| 91视频国产一区| 色哟哟亚洲精品一区二区| 国产精品丝袜高跟| 日韩欧美国产激情| 亚洲码在线观看| 国产欧美日韩最新| 国产精品视频午夜| 午夜精品在线视频| 国产精品入口夜色视频大尺度| 亚洲精品wwwww| 国产精品一区二区性色av| 亚洲成人久久一区| 国产香蕉一区二区三区在线视频| 美女av一区二区三区| 国产一区香蕉久久| 少妇av一区二区三区| 国产精品女人久久久久久| 欧美极品少妇xxxxⅹ裸体艺术| 国产v综合v亚洲欧美久久| 136fldh精品导航福利| 久久精品视频免费播放| 日韩av成人在线| 亚洲天堂色网站| 亚洲欧洲午夜一线一品| 8x拔播拔播x8国产精品| 久久免费成人精品视频| 久久免费高清视频| 尤物99国产成人精品视频| 日韩在线免费高清视频| 欧美在线视频a| 欧美大片免费观看在线观看网站推荐| 久久国产色av| 国产精品精品视频一区二区三区| 成年人精品视频| 国产精品91一区| 国产精品入口夜色视频大尺度| 成人av资源在线播放| 欧美激情亚洲视频| 亚洲日本aⅴ片在线观看香蕉| 69国产精品成人在线播放| 欧美日韩亚洲成人|