Oracle資料庫開發SQL基礎 06 查詢語句

2021-09-24 05:33:09 字數 3549 閱讀 1048

select [distinct] column_name1,... | *		--distinct 關鍵字可以去掉重複的資料

from table_name

[where conditions];

在sql*plus中設定格式

更改查詢結果中的欄位名:

column column_name heading new_name;		--column可以簡寫成col
設定結果顯示的格式:

column column_name format dataformat;		--字元型別只能設定顯示的長度

例如,設定字元型別的顯示長度為10:

col column_name format a10;

設定數值型別的資料可以用乙個9代表一位數字,如顯示一位小數:

col column_name format 9999.9;

清除之前設定的格式:

column column_name clear;

查詢表中的所有欄位及指定字段

查詢所有字段:

select * from table_name;
查詢指定字段:

select column_name1,... from table_name;
給字段設定別名

設定別名只顯示在查詢結果中,不會影響實際表中的欄位名。

select column_name as new_name,...

from table_name;

運算子和表示式

表示式 = 運算元 + 運算子,在oracle中運算元可以有變數、常量和字段。

在select語句當中使用運算子

使用算術運算子

--在顯示的查詢結果中,將column_name2欄位的所有值都加上200,不影響表中的資料

select column_name1, column_name2 + 200,... from table_name;

使用比較運算子

--查詢column_name2欄位的值大於700的記錄的column_name1欄位的值

select column_name1 from table_name where column_name2 > 700;

使用邏輯運算子

--查詢column_name2大於70且不等於90的記錄的column_name1欄位的值

select column_name1 from table_name where column_name2 > 70 and column_name2 <> 90;

仍以之前使用的userinfo表為例進行說明。

select salary from userinfo where username='tom';
select * fomr userinfo where username='kim' or salary > 1000;

select * from userinfo where username='tom' or (salary > 800 and salary < 2000);

運算子的優先順序:not > and > or,比較運算子的優先順序高於邏輯運算子。

模糊查詢(使用like關鍵字)

萬用字元的使用

_ : 乙個下劃線代表任意乙個字元

%:乙個百分號代表多個任意字元

使用like查詢

--查詢使用者名稱以t開頭的記錄

select * from userinfo where username like 't%';

--查詢使用者名稱第二個字元是o的記錄

select * from userinfo where username like '_o%';

--查詢使用者名稱中含有m的記錄

select * from userinfo where username like '%m%';

範圍查詢

between … and(查詢的結果是乙個閉區間)

--查詢工資在800到1000之間的記錄

select * from userinfo where salary between 800 and 1000;

in/not in(in後面代表的不是乙個範圍,而是乙個具體的值)

--查詢使用者名為tom或者kim的記錄

select * from userinfo where username in('tom', 'kim');

--查詢結果以column_name1,...等字段的值進行排序,desc降序,asc公升序

select ... from ... [where]

order by column_name1 desc/asc,...;

--如果對多個字段要求按需排列,如:

select * from userinfo order by id desc, salary asc;

--結果中記錄會先按id降序排列,而在id欄位的值相等的記錄中,salary按公升序排列

--當欄位column_name的值為value1時,得到結果result1

case column_name

when value1 then result1,...

[else result] end;

例如:select username, case salary when 1000 then '一級'

when 2000 then '二級' else '其他' end as 工資等級

from userinfo;

case…when語句還可以這麼用:

case

when column_name=value1

then result1,...[else result] end;

--以上語句可以等價於

select username, case when salary=1000 then '一級'

when salary=2000 then '二級' else '其他' end as 工資等級

from userinfo;

--第二種寫法在when之後可以使用表示式

decode函式的使用

decode(column_name, value1, result1, ..., defaultvalue);

decode(salary, 1000, '一級', 2000, '二級', '其他') as 工資等級;

Oracle資料庫開發SQL基礎 02使用者和表空間

檢視登入使用者 啟用scott使用者 系統使用者 sys,system sys許可權高於system sysman scott 預設密碼是tiger 使用system登入 username password server as sysdba sysoper 首先是使用者名稱和密碼,其次,如果需要登入...

Oracle資料庫SQL總結

1oracle時間段的查詢 1.1 場景 根據使用者輸入的時間段過濾出相應記錄。1.2 解決辦法 第一種寫法 sql select from t xjxx xjgl where createdate to date 2011 6 13 yyyy mm dd and createdate to dat...

Oracle資料庫SQL總結

1oracle時間段的查詢 1.1 場景 根據使用者輸入的時間段過濾出相應記錄。1.2 解決辦法 第一種寫法 select from t xjxx xjgl where createdate to date 2011 6 13 yyyy mm dd and createdate to date 20...