Oracle中的操作符
算術操作符:
無論是在sqlserver,或者是java中,每種語言它都有算術操作符,大同小異。
Oracle中算術操作符(+)(-)(*)(/) 值得注意的是:/ 在oracle中就相當於顯示中的除法 5/2 = 2.5
比較操作符:
其中等號可以換成其他運算子:(後面為該操作符的單條件查詢範例)
!= 不等於 select empno,ename,job from scott.emp where job!='manager'
^= 不等於 select empno,ename,job from scott.emp where job^='manager'
<>不等於 select empno,ename,job from scott.emp where job<>'manager'
<小於 select sal from scott.emp where sal<1000
>大於 select sal from scott.emp where sal>1000
<=小於等於 select sal from scott.emp where sal<=1000
>=大於等於 select sal from scott.emp where sal>=1000
in 在列表 select sal from scott.emp where sal in(1000,2000)
時間的查詢可以使用in 例如 select * from student where time in (’06-3月-09’,’08-5月-09’);
not in 不在列表 select sal from scott.emp where sal not in(1000,2000)
between...and 介於..與..間
select sal from scott.emp where sal between 1000 and 2000
not between...and 不介於..與..之間
select sal from scott.emp where sal not between 1000 and 2000
like 模式比對 select ename from scott.emp where ename like 'M%' (%表示任意長度的長度串)
select ename from scott.emp where ename like 'M_' (_表示一個任意的字元)
is null 是否為空白 select ename from scott.emp where ename is null
is not null 不為空白 select ename from scott.emp where ename is not null
邏輯操作符:
or(或) select ename from scott.emp where ename='joke' or ename='jacky'
and(與) select ename from scott.emp where ename='and' or ename='jacky'
not(非) select ename from scott.emp where not ename='and' or ename='jacky'
集合操作符:
union(並集) union串連兩句sql語句, 兩句sql語句的和 去掉重複的記錄。
(select deptno from scott.emp) union (select deptno from scott.dept)
union all(並集) 接兩句sql語句,兩句sql語句的和不用去掉重複的記錄。
(select deptno from scott.emp) union all (select deptno from scott.dept)
intersect (交集) Intersect串連兩句sql語句 取查詢出來的兩個集合的 共同部分。
(select deptno from scott.emp) intersect (select deptno from scott.dept)
minus (補集) Minus 串連兩句sql 語句,取查詢出來的兩個集合的差。
(select deptno from scott.emp) minus (select deptno from scott.dept)
串連操作符: (||) 用來串連連個欄位,或者將多個字串串連起來。
操作符的優先順序別:算術》串連》比較》邏輯(not and or)
Oracle中的資料類型
資料類型主要有:字元 數值 日期 大對象LOB row/long row
字元類型:(varchar varchar2 long)
Varchar:長度不可變,最大2000個位元組
Varchar2:長度可變,最大4000個位元組
Long:長度可變 最大2G
數實值型別:oracle中對int double float進行整合成 number類型。
Number[p,s]:p表示精度,s表示小數位元。
日期類型:(date)(timestamp)
Date類型儲存日期類型,包括 年月日時分秒。
Timestamp類型儲存日期類型,包括更加精確的資訊,包括地區資訊,年月日時分秒。毫 秒……。
DATE資料類型的主要問題是它粒度不能足夠區別出兩個事件哪個先發生。ORACLE已經在DATE資料類型上擴充出來了TIMESTAMP資料類型,它包括了所有DATE資料類型的年月日時分秒的資訊,而且包括了小數秒的資訊。如果你想把DATE類型轉換成TIMESTAMP類型,就使用CAST函數。
eg. SQL> SELECT CAST(date1 AS TIMESTAMP) "Date" FROM t;
Raw類型:儲存位元據
Longraw類型:儲存可變長度的位元據。最大可以為2G。
Oracle中的偽列
(rowid)(rownum)偽列是向資料表中插入資料時系統會自動向每條資料添加兩列資料欄位。
Rowid 每條記錄的實際儲存地址,即使記錄重複這個欄位也不會出現重複。
Rownum是 查詢出資料後為每條記錄添加的欄位,他並不是真是存在,而是相當於視圖一樣查詢出來後自動添加的一個行號。當運行select rowed,rownum from 表名;就可以查看這幾資料。
Oracle中的sql語句。Sql語句是通用的資料庫語言
Sql命令包括 (DDL)(DCL)(DML)(TCL)
DDL:資料定義語言 (Data Definition Language) 包括 Create語句,drop語句,alter語句。
DCL: 資料控制語言 包括 grant語句。 Revoke語句
DML:資料控制語言 包括 增,刪,改,查語句。
TCL:事物控制語言 包括 commit,rollback,savepoint
Sql中的函數
Sql函數包括:(單行函數)(分組函數)(分析函數)
單行函數:
對於從表中查詢出來的每條記錄只顯示一個資料。單行函數可以出現在select子句中,where子句中。單行函數包括:(字元函數)(數字函數)(日期函數)(轉換函式)(其他函數)。
日期函數:對日期進行計算 顯示日期類型或者數字類型。
SYSDATE 當前日期和時間
current_date 返回當前會話時區中的當前日期
current_timestamp 以timestamp with time zone資料類型返回當前會話時區中的當前日期
dbtimezone 返回時區
ADD_MONTHS 加上月數
MONTHS_BETWEEN 返回兩個日期之間月數
LAST_DAY 返回月的最後一天
ROUND 將月數四捨五入
NEXT_DAY 指定下一個星期幾的日期
TRUNC 日期的格式轉換
EXTRACT 提起日期中指定的部分
字元函數:
Initcap(char) 大寫首字母。
Lower(char) 將大寫字元變成小寫。
…
詳見:http://blog.sina.com.cn/s/blog_4b3c1f950100pkhv.html
數字函數
Mod(m,n) m/n 的餘數。
Power(m,n) m的n次方。
Round(m,n) m是小數,n是取的小數位元。四捨五入
Trunc(m,n) m是小數,n是取的小數位元。不四捨五入
轉換函式
To_char 轉化字元。
To_date 轉換日期。
To_number 轉換數字
詳見:http://blog.sina.com.cn/s/blog_4b3c1f950100pk54.html
其他函數
NVL(運算式1,運算式2)
如果運算式1為null,返回運算式2,否則返回運算式1;
如果運算式類型不一致,Oracle將運算式2轉換為運算式1的類型
NVL2(運算式1,運算式2,運算式3)
如果運算式1為空白,返回運算式3的值,否則返回運算式2的值
NULLIF(運算式1,運算式2)
如果兩運算式相等,返回空值,否則返回運算式1
彙總函式
Avg ()取平均數。
Count ()返回查詢出來的資料。
Sum ()取和
Max ()取最大值
Min ()取最小值
Group 和 having
SELECT p_category, MAX(itemrate) FROM itemfile GROUP BY p_category;
SELECT p_category, MAX(itemrate) FROM itemfile GROUP BY p_category
HAVING p_category NOT IN ('accessories');