--查看oracle版本
SELECT * FROM v$version;
/*
DDL 資料庫定義
DML 資料庫管理
DCL 資料庫控制
grant + revoke 許可權管理
*/
nvl function如果原來的數值為null的話,由指定的數值替代。
nvl(commission_pct,0)/100
column(col)
column salary format $999999.00 設定數字顯示形式
column name format a15; 設定字串顯示15個字元
column salary justify left/right/center 輸出格式
column clear 清除格式
column last_name;顯示該欄位名所用的格式
column salary justify left format $99999.000
order by asc 升序(預設) desc
使用distinct也會觸發排序操作
select * from employee order by 1; 按第一個欄位排序
null 被認為無窮大,order by 也可以用別名。
where
select * from user_tables where table_name like 's\_%' escape '\';
between and 在什麼之間
not between and
in(List) 在某個集合中
not in (list) 空值會有影響
like 模糊配置
not like 通配比較
is null 是空
and
or
not
查出s_emp表中所有員工的一年的總收入,注意空值處理
select name , salary * 12 *( 1+ nvl(commission_pct/100,0)) from s_emp
單行函數 (dual 啞表)
lower 轉小寫
select lower('SQLPLUS') from dual;
upper 轉大寫
select upper('sqlplus') from dual;
concat 字串串連
select concat(first_name, last_name) from s_emp; 等效於||
length 求長度
select length('abcdefg') from dual;
substr 求子串
select substr('abcdefg',1,6) from dual;
select substr('abcdefg',-2) from dual; 取後面兩個字元
round函數
select round(45.935, 2) from dual;
trunc 函數(截取,不管後面的數字)
select trunc(45.9995,1) from dual;
select sysdate from dual;
內建函數
months_between(sysdate, addmonths(sysdate,5)) //兩個月有多少天
add_months(sysdate, -5) 在系統時間基礎上延遲五個月
last_day(sysdate) 一個月的最後一天
格式轉換函式
to_char 顯示日期
to_char(date,'格式')
select to_char(sysdate,'yyyy mm dd hh24:mi:ss') from dual;
to_date 表達日期
select to_date('2000 11 20', 'yyyy mm dd') from dual;
to_number 字元轉數字
DDL
table view sequence index
表 視圖 序列 索引
表級約束 create table test(c number, primary key(c));
資料行層級條件約束 create table test(c number primary key);
commit 提交,此時說明前面所有語句都成功執行
rollback 後援動作,此時會恢複至上一次提交時的狀態
savepoint 設定儲存點
alter table 表名 add constraint 約束名 primary key (欄位);
select * from cat;
select * from tab;
select table_name from user_all_tables;
select view_name, text from user_views;
select index_name ,table_owner, table_name, tablespace_name, status from user_indexes order by table_name;