查詢基礎(二)

八、使用連接操作合併列的輸出結果

九、理解空值
數據庫使用一個稱爲空值的特殊的值來表示未知的值。它並不是一個空字符串,而是一個特殊的值。使用空值就表示該列的值未知。
如何區分空值和空字符串?
答:使用oracle內置的一個函數:NVL()。NVL()函數可以將空值轉換成另外一個可以真正理解的值。

這裏要注意的是列所對應的類型不一樣的話~~轉換值的類型也要與之對應
比如date類型就不能轉換成字符串
如果與列原有類型不一致就會報錯:

符合原有類型則能正常轉換:

十、禁止重複列
很多時候查詢出來的結果當中很多地方是重複的~~~可以使用distinct來去除重複的結果。

十一、比較值
=:等於
!=或<>:不等於
>:大於
<:小於
>=:大於或等於
<=:小於或等於
any:或
all:且

十二、使用SQL操作符
like:匹配字符串中的模式
in:匹配值列表
between:匹配值範圍
is null:匹配空值
is nan:匹配NAN這個特殊值,意思是非數字
is infinite:匹配無窮大
以上的操作符均可添加NOT使得意思與操作符含義相反。
1.like
LIKE使用普通字符和一下兩個通配符的組合指定:
下劃線_ 匹配指定位置的一個字符
百分號% 匹配從指定位置開始的任意個字符

_o%的意思就是第二位字母爲o的字符串
如果需要顯示%號的話就需要使用ESCAPE選項來標識。

注意第一個%是匹配任意字符,第二個%是代表%本身,第三個%是匹配任意字符,而#是由escape指定的。
十三、使用IN操作符
在where子句中可以使用IN操作符來檢索其列值在某個列表中的行。

十四、使用between操作符
在where子句中使用between操作符來檢索列值包含在指定區間內的行。這裏的區間是閉區間。

十五、使用邏輯操作符
and:且
or:或
not:非

十六、理解操作符的優先級
AND>OR,而比較操作符優先級高於AND。

十七、使用order by子句對行進行排序

asc:從小到大
desc:從大到小
十八、執行使用兩個表的select語句

十九、使用表別名

二十、笛卡爾積
如果在多表查詢中不指定連接條件,就會導致將一個表中的所有行都連接到另一個表中的所有行上,這種情況就成爲笛卡爾積。
二十一、連接條件和連接類型
連接條件:
等連接:在連接中使用等於操作符。
不等連接:在連接中使用除等號之外的操作符。
連接類型:
內連接:只有當連接中的列包含滿足連接條件的值時纔會返回一行。也就是說,如果某一行的連接條件中的一列是空值,那麼這行就不會返回。
外連接:即使連接條件中的一列包含空值也會返回一行。
左外連接和右外連接的區別

注:只能在連接的一端使用外連接操作符,而不能在兩端同時使用外連接操作符。
不能同時使用外連接條件和IN操作符。
不能同時使用一個外連接條件和另外一個使用or操作符的連接條件
自連接:返回連接到同一個表中的行。

二十二、使用SQL/92語法執行連接
1.使用SQL/92標準語法執行兩個表的內連接

2.使用Using關鍵字簡化連接

注:只有滿足以下條件纔可使用using關鍵字進行簡化:
a.查詢必須是等連接的
b.等連接中的列必須同名
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章