oracle數據庫初步之查詢

1.基本查詢語句
SELECT[DISTINCT] column_name1,…|*FROM table_name
[WHERE conditions];
使用 distinct 不顯示重複數據)

2.在SQLPLUS中設置格式
更改顯示的字段名:COLUMN column_name HEADING new_name;
注意:COLUMN可以簡寫成COL.
設置結果顯示格式:COLUMN column_name FORMAT dataformat;
注意:字符類型只能設置顯示的長度,例如顯示10個字符長度用a10,數值類型用“9”代表一個數字,例如顯示4位數字,則格式爲9999;如顯示4位數字並加1位小數,則格式爲9999.9,如需在數字前加$符號,則在9前加$符號,即$9999.9。
清除之前設置的格式:COLUMN column_name CLEAR;

3.查詢表中的所有字段及指定字段
查詢所有字段:select * from table_name;
查詢指定字段:select column_name,… from table_name;

4.給字段設置別名(給字段設置別名是針對查詢結果進行的,並沒有更改字段的名字)
SELECT column_name AS new_name,…
FROM table_name;
注意:AS可以省略,用空格隔開原來的字段名和新字段名即可。

5.運算符和表達式
表達式=操作數+運算符。操作數可以有變量,常量和字段。
算數運算符(+,-,*,/)
比較運算符(>,>=,<,<=,=,<>)比較結果爲true|false
邏輯運算符(and,or,not)

6.在SELECT語句中使用運算符
使用算數運算符
使用比較運算符
使用邏輯運算符
注意:不等於用!=或者<>表示
在查詢語句中,使用算術運算法對字段進行運算,並不影響真正表中的數據,只有update可以

7.帶條件的查詢
單一條件的查詢
多條件的查詢
注意:優先級比較運算符>邏輯運算符,not>and>or。

8.模糊查詢
通配符的使用(_,%):
一個_只能代表一個字符,一個%可以代表0到多個任意字符
使用LIKE查詢:

查詢以a開頭的用戶名:select * from users where usernamelike 'a%';
查詢第二個字符爲a 的用戶名:select * fromusers where username like '_a%';
查詢含有a的記錄:select * from userswhere username like '%a%';

9.範圍查詢
BETWEEN...AND...
,查詢的是一個閉合區間的結果,包含頭也包含尾,beween小的and大的。
IN()/NOT IN(),括號中的爲具體的值。
如查找工資在800到2000的(包括了800和2000):
select * from users where salary between 800 and 2000;
如果想要不包括800和2000這兩個數,就可以這樣寫:
select * from users where salary not between 800 and 2000;
in/not in在和不在這些列舉出來的數裏面:
select * from users where username in('aaa','bbb');
select * from users where username not in('aaa','bbb');

10.對查詢結果排序
SELECT…FROM…[WHERE…]
ORDER BY column1 DESC/ASC,…
注意:其中,DESC是降序排序,ASC是升序排序,默認情況下是升序排序;當按多個字段排序時,需要第一個字段重複時才按第二個字符排序;對於字符進行排序時,是根據字符的ASCII碼進行的。

11.case..when語句的使用
CASE column_name
WHEN value1 THEN result1,…
[ELSE result] END;
如: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;
如:select username,case when username='aaa' then '計算機部門' when username='bbb' then '市場部門' else '其他部門' end as 部門from users;
select username,case when salary<800 then '工資低' whensalary>5000 then '工資高' end as 工資水平 from users;
注意:第二種case...when語句更靈活,表達式運算符可以更豐富
字段值爲字符時,需要用單引號括起來,但是對於as後的別名,作爲字段名,不需要單引號括起來

12.decode函數的使用
decode(column_name,value1,result1,…defaultvalue);
(可以不指定默認值,與case...when語句的第一種形式實現的效果相同)
例如:select username,decode(username,'aaa','計算機部門','bbb','市場部門','其他')as 部門 from users;

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