SQL必知必會筆記(4 6章)

2021-09-24 21:39:24 字數 3974 閱讀 7171

過濾資料:在select語句中,from子句指定要搜尋的表,where子句指定搜尋條件,例:

select prod_name, prod_price

from products

where prod_price = 3.49;

該例從products表中檢索出prod_price = 3.49的兩列prod_name和prod_price。

:order by與where同時使用時,應讓order by位於後面。

where子句操作符

select vend_id, prod_name

from products

where vend_id < > 『dll01』;

從products找出vend_id不是dll01的所有產品。其中單引號用來限定字串,將值與串型別的列進行比較需要限定引號,與數值列比較的值不用引號;< >與!=通常可以互換。

範圍值檢查:between。例:

select prod_name, prod_price

from products

where prod_price between 5 and 10;

檢索**在5到10美元的所有產品。

空值檢查:is null。

select prod_name

from products

where prod_price is null;

該例搜尋沒有**(即為空值,而非0)的所有產品。

and操作符,通過不止乙個列進行過濾:

select prod_id, prod_price, prod_name

from products

where vend_id = 『dll01』 and prod_price <= 4;

該例檢索vend_id = 『dll01』並且prod_price <= 4的所有產品。and指示檢索滿足所有給定條件的行。

or操作符,檢索匹配滿足任一條件的行:

select prod_name, prod_price

from products

where vend_id = 『dll01』 or vend_id = 『brs01』;

該例檢索vend_id = 『dll01』或者vend_id = 『brs01』的所有產品,滿足任一條件均返回相應資料。

優先順序:and的優先順序高於or,混合使用時最好使用圓括號明確地分組相應操作符。例:

select prod_name, prod_price

from products

where (vend_id = 『dll01』 or vend_id = 『brs01』)

and prod_price >= 10;

該例則先過濾圓括號內的or條件再進行and操作。

in操作符:用來指定條件範圍(where子句中用來指定要匹配值的清單的關鍵字,功能與or相當)。例:

select prod_name, prod_price

from products

where vend_id in (『dll01』, 『brs01』);

該例檢索由**商dll01和brs01製造的所有產品,in操作符後跟由逗號分隔的合法值清單,整個清單必須在圓括號內。in操作符完成與or相同的功能。in一般比or執行更快,且可以包含其他select語句。

not操作符:where子句中否定其之後所跟的任何條件,例:

select prod_name

from products

where not vend_id = 『dll01』

order by prod_name;

該例等同於下例:

select prod_name

from products

where vend_id < > 『dll01』

order by prod_name;

即檢索所有vend_id不為dll01的產品名。

:mysql不支援該描述的not格式,在mysql中,not只用來否定exists(如not exists)。

萬用字元:用來匹配值的一部分的特殊字元。

搜尋模式:由字面值、萬用字元或者兩者組合構成的搜尋條件。

like操作符:後跟的搜尋模式利用萬用字元匹配而非直接相等匹配進行比較。

%萬用字元:表示任何字元出現任意次數。例:

select prod_id, prod_name

from products

where prod_name like 『fish%』;

該例搜尋以fish起頭的詞,可接受fish之後任意多個任意字元(包括0個)。

:若使用microsoft access,則需要使用*而非%。

萬用字元可在搜尋模式的任意位置使用,並可以使用多個萬用字元。

下劃線萬用字元:只匹配單個字元而非多個。例:

select prod_id, prod_name

from products

where prod_name like 『__ inch teddy bear』;

此處為兩個下劃線且其後跟著乙個空格,需尋找完全與其匹配的字串,如:12 inch teddy bear,而8 inch teddy bear則不在搜尋範圍內。

:若使用microsoft access,則需要使用?而非_。

方括號萬用字元:用來指定乙個字符集,必須匹配指定位置的乙個字元。(只有microsoft access,microsoft sql server和sybase adaptive server支援集合)例:

select cust_contact

from customers

where cust_contact like 『[jm]%』

order by cust_contact;

該例的目的為找出所有名字以j或m開頭的聯絡人,此處使用了和%兩個萬用字元。萬用字元可以用字首字元^(脫字型大小)來否定,例:

select cust_contact

from customers

where cust_contact like 『[^jm]%』

order by cust_contact;

該例查詢匹配不以j或m開頭的任意聯絡人名。

:若使用microsoft access,需要用!而不是來否定集合,即使用[!jm]而不是[jm]。

使用not操作符可以達到與上例相同的效果,即:

select cust_contact

from customers

where not cust_contact like 『[jm]%』

order by cust_contact;

使用萬用字元的技巧

1.不要過分使用萬用字元,因為其搜尋時間一般比使用其他方法時間要長;

2.盡量不要把萬用字元用在搜尋模式的開始處;

3.注意萬用字元的位置不要放錯。

《SQL必知必會》16 18章筆記

update的使用方式 e.g update customers set cust email kim thetoystore.com where cust id 1000000005 update語句總是以要更新的表名開始。set命令用來將新值賦給被更新的列,update語句以where子句結束,...

sql必知必會筆記(1 3章)

資料庫 儲存有組織的資料的容器 通常是乙個檔案或一組檔案 表 某種特定型別資料的結構化清單。模式 關於資料庫和表的布局及特性的資訊。列 表中的乙個字段。儲存著表中某部分資訊。主鍵 一列 或一組列 其值能夠唯一標識表中每個行。成為主鍵的條件 1.任意兩行都不具有相同的主鍵值 2.每個行都必須有乙個主鍵...

《sql必知必會》筆記

資料庫 儲存有組織的資料的容器 通常是乙個檔案或一組檔案 注意誤用混淆 資料庫軟體被稱為dbms,資料庫是通過dbms建立和操縱的容器 模式 關於資料庫和表的布局及特性的資訊。主鍵 一列或一組列,其值能夠唯一標識表中的每一行。多條sql語句必須以 分隔。sql語句不區分大小寫,select和sele...