程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Oracle學習記錄

Oracle學習記錄

編輯:關於JAVA
 

 oracle學習過程中記錄的一些知識點,包括sqlplus一些命令、角色、DML、DCL、DDL、數據字典、表空間、函數。

1. sys
超級管理員,權限最高,角色dba
2. system
系統管理員,角色dbaoper
3. scott
普通用戶
4. 顯示當前用戶
show user
5. 切換用戶
connect 用戶名/密碼
6. edit
edit d:/text.txt,編輯文件
7. spool
spool d:/text.txt,...,spool off
將dos下輸入輸出的內容存放到text.txt
8. 創建用戶
create user 用戶名 identified by 密碼
9. 刪除用戶
drop user 用戶名 [cascade]
10. 修改密碼
pass[word] 密碼
11. 授權用戶
grant 角色名[dba(最高權限)\resource(對象權限)\connect(連接權限)] to 用戶名
12. 系統權限
對數據庫的權限
13. 對象權限
對數據對象(table、view、seq)操作的權限
14. 角色
將一些權限默認賦給不同的角色
15. 授權表操作
grant [all|select|update|insert|delete] on 表名 to 用戶
16. 撤銷權限
revoke 權限 from 用戶名
17. 授權傳遞(對象權限)
grant [all|select|update|insert|delete] on 表名 to 用戶名 with grant option;
18. 授權傳遞(系統權限)
grant 角色名[dba(最高權限)\resource(對象權限)\connect(連接權限)] to 用戶名 with admin option;
19. 解鎖用戶
alter user 用戶名 account unlock;
20. 修改表
alter table 表名 add ();
alter table 表名 modify ();
alter table 表名 drop column 字段名;
rename 表明 to 新表名;
21. alter session set nls_date_format='yyyy-mm-dd';
22. 刪除表中所有數據
truncate table 表名;//表結構還在,不寫日志,速度快,無法找回刪除的記錄,隱式提交
23. 處理null值
nvl(字段名, 0) || coalesce函數
24. 創建索引
create [unique] index idx_表名 on 表名(字段名)
25. union union all minus intersect
26. 如果select同時包含group by、having、order by,那麼他們的排列順序是group by、having、order by;
27. 設置只讀事務
set transaction read only;
28. 字符函數
UPPER(string)/LOWER(string)/SUBSTR(string,int,int)/LENGTH(string)/REPLACE(string,string,string)
29. 數字函數
30. 日期函數
sysdate/add_months(date,int)/last_day(date)
31. 轉換函數
to_char()/to_date()
32. 系統函數
sys_context('userenv', 'db_name')
33. 備份/恢復
exp userid=scott/tiger@orcl tables=(表名) file=路徑 --導出表
exp userid=scott/tiger@orcl tables=(表名) file=路徑 rows=n --導出表結構
exp userid=scott/tiger@orcl tables=(表名) file=路徑 direct=y --直接導出,快速
exp userid=scott/tiger@orcl owner=用戶名 file=路徑 --導出解決方案
exp userid=system/admin@orcl full=y inctype=complete file=路徑 --導出數據庫
34. 數據字典
包括數據基表和動態性視圖,存儲數據庫信息,歸sys用戶所有,普通用戶可以查看基表,user_xxxx,all_xxxx,dba_xxxx,動態性能視圖以V$開始
35. 權限、角色、用戶查詢
dba_users查看所有數據庫用戶的詳細信息
dba_sys_privs查看所有數據庫用戶的系統權限
dba_tab_privs查看所有數據庫用戶的對象權限
dba_role_privs查看所有數據庫用戶的角色
36. 表空間有數據文件組成,數據文件存放表,表空間由區、段、塊組成
37. 使用表空間
create table 表名() tablespace 表空間名
38. 創建表空間
create tablespace 名 datafile '路徑/文件名.dbf' size 500M以下 uniform size 128k;
39. 改變表空間狀態
alter tablespace 名 offline(脫機)
alter tablespace 名 online(聯機)
alter tablespace 名 read only(只讀)
alter tablespace 名 read write(讀寫)
40. 刪除表空間
drop tablespace 名 [including contents and datafiles]
41. 擴展表空間
alter tablespace 名 add datafile '路徑/文件名.dbf' size 500M以下
42. rownum是返回結果集之後oracle加上去的,所以是從1開始
43. pl/sql

 

DECLARE
v_typical_sal emp.sal%type default 2500;--工資基准
v_desc varchar2(10);--描述
v_sal emp.sal%type;--工資
v_length number;--表長度
v_index number default 1;--循環控制變量
v_ename emp.ename%type;
BEGIN
select count(*) into v_length from emp;
while v_index<v_length loop
--dbms_output.put_line('進入循環'||v_index);
select t2.sal,t2.ename into v_sal,v_ename from (select rownum r,t1.sal,t1.ename from emp t1 where rownum<v_length) t2 where t2.r=v_index;
--dbms_output.put_line('----------------------------');
if v_sal<v_typical_sal
then v_desc:='普通員工';
else v_desc:='高級員工';
end if;
v_index:=v_index+1;
dbms_output.put_line(v_ename||'是'||v_desc);
dbms_output.put_line('----------------------------');
end loop;
exception
when no_data_found then
dbms_output.put_line('沒有該條數據');
when too_many_rows then
dbms_output.put_line('提取到多條數據');
END;
/

44. 表級定義和列級定義(約束)
表級定義是指在定義了所有字段之後再定義約束;
列級定義是指在定義字段的同時定義約束
45. 創建索引
create index 索引名 on 表名(列名);--簡單索引
create index 索引名 on 表名(列名1,[列名2],[列名3]);--復合索引
表更新的時候,系統同時需要更新索引,以維護數據和索引的一致性。
建立索引,系統需要占用表1.2倍的內存和硬盤空間來保存索引。
46. 刪除表
DROP TABLE 表明 [PURGE];
加purge是繞過回收站,徹底刪除
47. 同義詞
Create synonym dept for soctt.dept;(這樣創建的同義詞是私有的,只有創建者才能用)
Drop synonym dept;
Create public synonym dept for soctt.dept;(這樣創建的同義詞才是公有的)
Drop public synonym dept;
48. truncate和delete區別
trucate是DDL語句,刪除不寫日志,速度更快
delete是DML語句,刪除寫日志,需要提交
49. SQL%ROWCOUNT表示修改的條數,必須在修改語句和commit之間
50. START WITH ... CONNECT BY PRIOR ...
創建示例表:

CREATE TABLE TBL_TEST
(
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER DEFAULT 0
);

 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved