ORACLE基礎(5)查詢
基本查詢語句
SELECT [DISTINCT] column_name1,....|* FROM table_name [WHERE condition]
我們也可以從多張表查詢
DISTINCT加上表示不顯示重複的記錄,比如沒有唯一約束就要用DISTINCT
在SQL*PLUS中設定格式
COLUMN column_name HEADING new_name
更改我們顯示的欄位名
更改我們查詢後結果的欄位名,不是表裡面的欄位名進行更改
COLUMN可以簡寫成COL
比如COL username HEADING 使用者名稱;
再使用查詢即可
COLUMN column_name FORMAT dataformat
設定顯示的格式:注如果是字元型別智慧設定顯示的長度
比如COL username FORMAT a10;
就是長度為10
如果是數值型別可以用一個9代表一個數字
COL salary FORMAT 9999.9;
就是小數形式的
如果移除的話就是全部是####代替
COL salary FORMAT $9999.9;
都帶了一個美元符號
COLUMN column_name CLEAR
就是清除掉設定過的格式
查詢表中的所有欄位以及指定欄位
SELECT * FROM table_name;
給欄位設定別名
這裡設定的別名仍然體現在表的結果當中,並不會更改表的欄位名字
SELECT column_name AS new_name,... FROM table_name
AS可以省略,需要用空格隔開
運算子和表示式:
表示式 = 運算元 + 運算子
Oracle的運算元可以有變數,常量和欄位
算數運算子 + - * /
比較運算子 > >= < <= = <>
邏輯運算子 and or not
SELECT id,username,salary+200 FROM users;
比較運算子一般在WHERE中使用
邏輯運算子是連線比較運算子的表示式了
帶條件的查詢
單一條件的查詢 WHERE 後面加條件
多條件的查詢
使用邏輯運算子連線 優先順序用()控制
模糊查詢:
關鍵字: LIKE
萬用字元的使用 _ %
一個_只能代替一個字元
%可以代替0到多個任意字元
使用LIKE查詢
查詢使用者名稱以a開頭的使用者資訊
SELECT * FROM users WHERE username LIKE 'a%';
含有a就是 %a%
範圍查詢 例如 salary>=800 and salary<=2000
或者使用 BETWEEN...AND
SELECT * FROM users WHERE salary BETWEEN 800 AND 2000;
如果不在800 到 2000之間 就在 BETWEEN前加NOT
IN和NOT IN
IN後面小括號 ()
比如 IN('AAA','BBB')
對查詢結果排序
SELECT...FROM...[WHERE...]ORDER BY column DESC/ASC,...
DESC降序 ASC升序
多個排序的話,前面相等後面就是排序啟用
CASE...WHEN語句 就是查詢當中根據欄位的值顯示不同的結果
CASE column_name WHEN value1 THEN result1,...[ELSE result] END
ELSE就是DEFAULT值
例如:SELECT username,CASE username WHEN 'aaa' THEN '計算機部門' WHEN 'bbb' THEN '市場部門' ELSE '其他部門' END as 部門 FROM users;
CASE WHEN column_name=VALUE1 THEN result1,...[ELSE result] END
WHEN後面是表示式,可以任意比如說< >
SELECT username,CASE WHEN username='aaa' THEN '計算機部門' WHEN username='bbb' THEN '市場部門' ELSE '其他部門' END AS 部門 FROM users;
decode函式使用
和CASE WHEN語句類似,能夠對欄位的值條件進行判斷
decode(column_name,value1,result1,...,defalutvalue)
也可以不指定預設值 返回空值 null
SELECT username,decode(username,'aaa','計算機部門','bbb','市場部門','其他')AS 部門 FROM users;