Chapter 3 Introduction to SQL

查詢二三事(Chapter 3)

select 子句

格式

select語句的格式如下

SELECT <[DISTINCT] c1,c2,...> 
FROM <r1,r2,...>
[WHERE <condition>]
[GROUP BY <c1,c2,...> [HAVING <condition>]]
[ORDER BY <c1 [DESC][,c2[DESC|ASC],...]>]
  • select后的東西可以加上+-*/等符號
  • 條件可以舍去
  • 執(zhí)行順序是from馋劈,where哩盲,select
    為from子句中列出的關(guān)系產(chǎn)生笛卡兒積
    在其結(jié)果上應用where語句中所指定的條件
    輸出select語句中指定的屬性或表達式的結(jié)果
  • order by 默認升序

Natural join

按照相同的屬性對應來連接兩張表
先列出兩個關(guān)系模式中的共同屬性,然后是表一的獨有屬性掠手,表二的獨有屬性
可以用在from子句中

SELECT [DISTINCT] 列名(或表達式)
FROM 表1 NATURAL JOIN 表2
WHERE 條件

如果兩張表中不止一個相同的屬性,那么natural join只會在所有同名屬性都相同的時候才連接
如果不希望要求所有的都相同時才連接右核,而是以其中一個屬性為連接紐帶
可以用這樣的形式來
表明將表一與表二按照屬性來連接

FROM 表1 JOIN 表2 USING 屬性1

集合運算

UNION并

可自動去除重復溉苛,要保留的話用UNION ALL

INTERSECT交

可自動去除重復,要保留的話用INTERSECT ALL

EXCEPT差

可自動去除重復签餐,要保留的話用EXCEPT ALL


NULL

  • 用在where語句中
IS NULL
IS NOT NULL
  • 所有含有NULL的運算結(jié)果都是NULL
  • 所有含有NULL 的比較都返回unknown
  • OR寓涨,AND,NOT
unknown or true=true
unkonwn or false=unknown
unknown or unknown=unknown

true and unknown=unknown
false and unknown=false
unknown and unknown=unknown

not unknown=unknown
  • Aggregate Function會忽略NULL值氯檐,除了Count

Aggregate Function

  • avg()
  • min()
  • max()
  • count()
  • sum()

使用聚合函數(shù)的時候戒良,如果select的東西有不是聚合函數(shù)的,就用group by子句來整合

select avg(salary), company_name
from works
group by company_name;

返回的是各個公司的平均薪水


特殊子句

Exists 結(jié)構(gòu)

exists結(jié)構(gòu)在作為參數(shù)的子查詢非空時返回true
關(guān)系A(chǔ)包含關(guān)系B可以寫成

NOT EXISTS (B except A)

即不存在有元素在B中卻不在A中冠摄,也就是B中的全在A中

select Name As Customers
from Customers
where not exists(select * from Orders where Customers.Id=Orders.CustomerId);

對Customers中的每一個tuple進行檢查蔬墩,如果“not exists”后中的查詢語句搜索不出任何東西,那么該tuple中的name選擇出來

Unique結(jié)構(gòu)

結(jié)構(gòu)在作為參數(shù)的子查詢中沒有重復結(jié)果的時候返回true

SELECT 
    T.course_id
FROM
    course AS T
WHERE
    UNIQUE( SELECT 
            R.couse_id
        FROM
            section AS R
        WHERE
            T.course_id = R.course_id);

等效于下面這樣的表達

SELECT 
    T.course_id
FROM
    course AS T
WHERE
    1 >= (SELECT 
            COUNT(R.couse_id)
        FROM
            section AS R
        WHERE
            T.course_id = R.course_id);

with子句

用于定義臨時關(guān)系

WITH 新表名 (c1,c2,...) AS(
    SELECT 子句
)

like 子句

  • 百分號%:匹配任意字符串
  • 下劃線_:匹配任意一個字符
select Name
from Department
where Building like '%Waston%';

找到building屬性含有Waston子串的tuple耗拓,返回其Name屬性

  • like子句中使用escape來定義轉(zhuǎn)義字符
like 'abc\%d%' escape '\'

表明匹配以abc%d開頭的字符串

  • 可以使用not like搜尋不匹配項

between and

select name
from works
where salary  between 9000 and 10000;

等效于

select name
from works
where salary>=9000 and salary<=10000;

All & Some

用于集合的比較

  • some 表示子查詢中的某一條record
    eg. “至少比某一個要大”可用“> some”來表示
SELECT 
    name
FROM
    works
WHERE
    salary > SOME (SELECT 
            salary
        FROM
            works
        WHERE
            company = 'xxxx');

表示找出至少比xxxx公司某一個員工工資高的name

  • all 表示子查詢中的所有record
    eg. “大于所有的”可用“> all”來表示
SELECT 
    name
FROM
    works
WHERE
    salary > ALL (SELECT 
            salary
        FROM
            works
        WHERE
            company = 'xxxx');

表示找出比xxxx公司所有員工工資都高的name

數(shù)據(jù)修改,插入奏司,刪除

update中的case語句

case
    when p1 then r1
    when p2 then r2
    when p3 then r3
end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乔询,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子韵洋,更是在濱河造成了極大的恐慌竿刁,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搪缨,死亡現(xiàn)場離奇詭異食拜,居然都是意外死亡,警方通過查閱死者的電腦和手機副编,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進店門负甸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事呻待〈蛟拢” “怎么了?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵蚕捉,是天一觀的道長奏篙。 經(jīng)常有香客問我,道長迫淹,這世上最難降的妖魔是什么秘通? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮敛熬,結(jié)果婚禮上肺稀,老公的妹妹穿的比我還像新娘。我一直安慰自己荸型,他們只是感情好盹靴,可當我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瑞妇,像睡著了一般稿静。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辕狰,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天改备,我揣著相機與錄音,去河邊找鬼蔓倍。 笑死悬钳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的偶翅。 我是一名探鬼主播默勾,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼聚谁!你這毒婦竟也來了母剥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤形导,失蹤者是張志新(化名)和其女友劉穎环疼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朵耕,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡炫隶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了阎曹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伪阶。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡详幽,死狀恐怖厦取,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤咆繁,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布蚓挤,位于F島的核電站蟹但,受9級特大地震影響逊笆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜厨剪,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一哄酝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧祷膳,春花似錦陶衅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至勇皇,卻和暖如春罩句,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背敛摘。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工门烂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兄淫。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓屯远,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捕虽。 傳聞我的和親對象是個殘疾皇子慨丐,可洞房花燭夜當晚...
    茶點故事閱讀 43,666評論 2 350

推薦閱讀更多精彩內(nèi)容