運算符
|| 字串連結
!=, <> 不等於.-=, ^=
** 取冪
IN 集合成員
:= 指定
.. 範圍運算
=> 關連
BETWEEN 值範圍
------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- LIKE 模式匹配
-- 下划線 _ 代表一個字符,百分號 % 代表任意個字符
------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- 組合邏輯 and , or
-- and 的優先級別比or高
------------------------------------------------------------------------------------------------------------------------------------------------------------------
改變對象的名稱:rename 命令。
例如當你創建了一個 table,function,trigger,procedure 等﹐由于當時你考慮不周現在想改變對象名稱則可使用 rename 命令。
使用方法:rename old_name to new_name
------------------------------------------------------------------------------------------------------------------------------------------------------------------
怎樣修改oracel資料庫的默認日期?
alter session set nls_date_format='yyyymmddhh24miss'
------------------------------------------------------------------------------------------------------------------------------------------------------------------
創建一個表的語法:有主,外鍵,約束
create table tab_name (col1 datatype(n),col2 datatype(n),constraint pk_cons_name primary key(col1,col2),constraint fk_cons_name foreign key(col1) references tab_name(col1),constraint un_name unique(col2))
------------------------------------------------------------------------------------------------------------------------------------------------------------------
創建臨時表
-- 創建臨時表時,可以指定它是否在整個會話其間都存在(利用 on commit preserver rows 子句),
-- 或者在事務處理完成時是否刪除它的行(利用 on commit delete rows 子句)
-- 與永久表不同的是,在創建臨時表時不會自動分配空間,表的空間時在插入數據時動態分配
例子:
CREATE GLOBAL TEMPORARY TABLE year_rollup
( YEAR NUMBER(4),
MONTH VARCHAR2(9),
counter NUMBER)
ON COMMIT PRESERVE ROWS;
------------------------------------------------------------------------------------------------------------------------------------------------------------------
insert into tab1
select * from user_name.tab2@dbname;
------------------------------------------------------------------------------------------------------------------------------------------------------------------
關於視圖:
創建視圖(view)
語法:
CREATE [ OR REPLACE ] [ FORCE | NOFORCE ] VIEW view_name [ (別名,...)]
AS select_statement
[ WITH CHECK OPTION [ CONSTRAINT constraint_name]]
[ WITH READ ONLY ]
-- FORCE 不管引用的表是否存在,視圖都會創建
-- NOFORCE 只有引用的表存在時,才創建視圖,orace的默認值
-- WITH CHECK OPTION 所插入或修改的數據必須滿足視圖所定義的蠽條件?
-- WITH READ ONLY 保証 在該視圖上不能進行任何DML操作
CREATE VIEW emp_md -------------創建視圖
as select
emp_m.emp_no,
emp_d.emp_job_no,
emp_m.emp_name,
emp_d.emp_salary
from emp_m,emp_d
where emp_m.emp_no=emp_d.emp_no
WITH CHECK OPTION ck_sex CHECK(sex = '0' OR sex = '1');
View 是否能更新的條件
----------視圖必須是可以唯一的定義每一筆記錄 , 且 select 中, 擁有所有識別唯一鍵值的欄位(為保留鍵的表格)
----------不能包含以下內容﹕
----------1﹑ROWNUM
----------2﹑表格階層:START WITH, CONNECT BY
----------3﹑集合運算:UNION, MINUS
----------4﹑群組函數: DISTINCT, GROUP BY, HAVING
----------5﹑數學函數:COUNT, MAX, MIN
----------6﹑每一段敘述只能對單一表格進行
----------insert , update 只能對持有鍵表格有作用
----------delete 只能在 view 中,僅有一個持有鍵表格時進行
-----------------------------------VIEW 與記錄層次安全性
---------利用view 可限制使用者資料的存取
---------可使用 where 條件, 限制使用者帳號名稱或權限下的資料顯示
例如﹕
CREATE OR REPLACE VIEW view_1
AS SELECT * FROM person
WHERE per_name = USER;
-----------------------------------內嵌式視圖(Inline Views)
-----------把查詢語句放在FROM 子句中,并為該子句定義一個別名來定義內嵌式視圖
-----------注意:內嵌式視圖不屬于任何用戶,也不是對象
例如:
select emp_name,emp_age
from emp_m m,(select emp_no from emp_d ) d
where m.emp_no = d.emp_no