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...