一、基本語法
語法:
select * |{[distinct] 列名 |表達式 [別名],...} from 表名 [where 查詢條件][order by [asc|desc]]
二、語法解析
(一) *代表查詢所有列
(二) distinct 去重
(三) 別名、連接符||、字符串
- 列的別名能夠改變列的顯示標題,可以直接跟在列名後面,也可以中間加as,如果別名中包含空格及特殊字符或者去要區分大小寫,則需要給別名加上雙引號。
- 連接符或者concat函數可以將多個列連接起來,合成新列。
select 列名1||'的數量是:'||列名2 as 別名 from 表名;
- 字符串可以使裏表中的字符、數字、日期,日期和字符中能在單引號中出新
(四)日期顯示格式的修改
alter session set nls_language='SIMPLIFIED CHINESE';
alter session set nls_language='AMERICAN';
alter session set nls_language='YYYY/MM/DD';
(五) where子句
where子句中使用數值,可以直接引用,也可以加引號
where子句中使用字符值,必須加引號,且區分大小寫
where子句中國使用日期值,必須加引號,且需要符合日期語言和顯示格式
(六) 排序 order by
asc升序(默認),desc降序,當select包含多個子句時,order by必須是最後一條語句。
如果參與排序的數據中有NULL,那NULL默認是大的值
可以有多列參與排序,用逗號隔開,月靠近關鍵字的優先級越高。
別名也可以參加排序。
三、運算符和關鍵字
(一) 算數運算符
運算符 | 說明 |
---|---|
+ | 加 |
- | 減 |
* | 乘 |
/ | 除 |
算數運算符可以應用在數字和日期的列上
乘除比加減具有更高的運算優先級,加括號可以改變優先級
NULL參與的算數運算結果還是NULL
(二) 比較運算符
運算符 | 說明 |
---|---|
= | 等於 |
> | 大於 |
>= | 大於等於 |
< | 小於 |
<= | 小於等於 |
<> | 不等於 |
(三) 邏輯運算符
運算符 | 說明 |
---|---|
and | 邏輯與(並) |
or | 邏輯或 |
not | 邏輯與 |
優先級:not>and>or
(四) 範圍關鍵字
1.between…and…
用於指定特定範圍的條件,包含邊界值
between 較小值 and 較大值
2.in
in執行列表匹配的操作,列或表達式結果匹配列表中的任意一個值
in(值1,[值2,...值n])
(五) 判斷空值
判斷是否空值 is null | is not null,並不是用比較運算符。
(六) 模糊查詢like
通配符_表示單個字符,%表示0個或多個字符。
如果要查找的字符中包含特殊字符,則需要用反斜槓\轉義,並在後面加上escape 特殊符號
select * from 表名 where 列名 like '\_%' escape '\';