oracle知識整理

2021-09-02 23:49:27 字數 4056 閱讀 8929

1.檢視當前資料庫的名字

select name from v$database

2.檢視當前資料庫例項名

select instance_name from v$instance

(這句不知道有什麼作用,提示sql無效)show parameters instance_name

乙個資料庫可以有多個例項,在做資料庫集群的時候可以用到

3.檢視表空間的名字

select * from dba_data_files

4.檢視表空間裡面有哪些表

select table_name from dba_tables where tablespace_name=『users』

select table_name from dba_tables where tablespace_name=『oracle』

select table_name from dba_tables where tablespace_name=『undotbs1』

select table_name from dba_tables where tablespace_name=『sysaux』

(emp是在scott使用者下的表,我自己創立的使用者是無法看到此表的內容的)select * from scott.emp;

5.檢視當前資料庫的所有使用者

select * from dba_users

6.檢視表屬於哪個表空間

select table_name,tablespace_name from all_tables where table_name=『emp』

7.查詢使用者有哪些操作許可權

select * from user_sys_privs

8.oracle資料庫的三正規化

第一正規化:不可能有重複的列,即存在的列不可再拆分

第二正規化:非主屬性完全依賴於主關鍵字

即存在組合關鍵字中的字段決定非關鍵字的情況。

不能存在兩個主關鍵字來唯一標識該實體

第三正規化:屬性不依賴於其它非主屬性

不存在關鍵字段 → 非關鍵字段x → 非關鍵字段y 如部門表中存在 部門編號,部門名稱,部門位置

如果emp表中存在部門編號也就是說員工表中不能再有部門名稱和部門位置了

9.union union all intersect 和minus的區別

union是兩個表的並集去重並按照第一列公升序排列

union all也是兩個表的並集但是不去重並且無序排列

intersect 表示兩個結果集的交集

minus是表示兩個結果集的差集,即在a表存在,且不在b表中存在。可以說是a表減去交集

10.nvl和nvl2的區別

nvl(expr1,expr2)expr1為null時結果為expr2,值不為null時,結果為expr1

nvl2(expr1,expr2,expr3)expr1為null時結果為expr3,不為null時結果為expr2

11.oracle中常用的函式(敲黑板,劃重點,咚咚咚。。。)

length(欄位名)查詢欄位的長度

concat(a,b)或者a||b 把a和b連線起來

round(n)四捨五入保留到整數字

round(n,1)保留一位小數

round(n,-1)保留整數字的第二位

instr(str,index)返回index在str中的位置,預設從1開始

initcap(str)首字母大寫

lower(str)首字母小寫

substr(str,start,count)擷取字串,從某個位置開始,count表示從某個位置開始擷取幾位

extract(year from sysdate) 擷取當前時間的年份

extract(month from sysdate)

replace(str,a,b)用b來替換str中的a

rpad(欄位名,長度,擴充值)有填充,如果該字段長度小於規定長度,就用擴充值在右邊填充

rpad(str,7,『0』) 如果str的長度小於7,就在str的後面補充0直到長度為7,lpad左填充同理

ceil(15.6)向上取整,結果為 16ceil(-15.6)結果為-15

floor(15.6)向下取整,結果為15 floor(-15.6)結果為-16

mod(m,n)取餘,mod(10,3)結果為1

power(n,p) 求n的p次冪 exp(n)乙個數字的n次方根

trunc和round類似,只是trunc不會四捨五入 如trunc(15.6)結果為15,trunc(15.67,1)結果為15.6

to_char(日期,『yyyy-mm-dd』) 日期轉換為字串

to_number(str)字串轉為數字,字串必須是數字字串

to_date(str,『yyyy-mm-dd』)字串轉換為日期

12.資料的匯入和匯出用來備份資料

exp scott/orcl file=g:\temps.dmp owner=scott consistent=y direct=y scott:使用者名稱 orcl:密碼 owner:使用者名稱

imp nhsr/nhsr file=g:\temp.dmp ignore=y fromuser=scott touser=nhsr nhsr:要匯入資料使用者名稱 nhsr:要匯入資料的密碼

fromuser:資料**使用者 touser:要匯入資料使用者名稱

13.oracle中case when 和decode函式的使用

兩者都是判斷條件函式,decode(欄位名,條件1,值1,條件2,值2…)當字段值為條件1時,值為值1,當字段值為條件2時,值為值2,每個判斷條件對應乙個值,最後如果沒匹配成對的條件和值,結果相當於else。和if else if,else一樣道理。decode函式經常和sign函式在一起使用

舉個例子:有學生成績表student,現在要用decode函式實現以下幾個功能:成績》85,顯示優秀;>70顯示良好;>60及格;否則是不及格。假設student的編號為id,成績為score,那麼:

select id, decode(sign(score-85),1,『優秀』,0,『優秀』,-1,

decode(sign(score-70),1,『良好』,0,『良好』,-1,

decode(sign(score-60),1,『及格』,0,『及格』,-1,『不及格』)))

from student;

14.資料庫死鎖查詢以及kill程序語句

–(1)檢視死鎖物件

select s.username,lo.object_id,lo.session_id,s.serial#,s.machine,s.status

from v$session s,

v$locked_object lo where s.sid = l.session_id;

–(2)檢視具體操作物件

select sql_text from v$sql where hash_value in(select sql_hash_value

from v$session where sid in

(select session_id from v$locked_object ));

–(3)死鎖處理語句(殺掉會話) 其中數字代表session_id,serial#

alter system kill session 『111,11111』

15.oralce建立使用者一系列命令

create tablespace cat_data datafile 『j:/arms/cat_data.dbf』 size 2048m autoextend on next 50m maxsize unlimited;建立表空間

win+r cmd 輸入 sqlplus \ as sysdba 登入dba使用者 ; conn可以切換使用者

create user 使用者名稱 identified by default tablespace密碼 建立使用者並指定預設的工作空間

grant connect,resource,dba,create session to 使用者名稱 授予使用者許可權

alter user 使用者名稱 identified by 密碼 修改使用者名稱和密碼;

alter user 使用者名稱 account unlock 解鎖使用者名稱

oracle 知識整理

刪除使用者 例如建立了乙個使用者 a,要刪除它可以這樣做 connect sys 密碼 as sysdba drop user a cascade 就這樣使用者就被刪除了 使用者修改密碼,解鎖 alter user scott identified by alter user scott accou...

oracle知識整理

外來鍵 foreign key 約束 在建表之後,為表增加外來鍵約束可以像下面這樣操作 為表增加外來鍵約束 1 alert table student 2 add constraint stu fk foreign key classid 3 references class classid 為st...

Oracle知識點整理(四)

oracle知識點整理 四 前言日期關鍵字 sysdate systimestamp 日期函式 to date to char last day add months months between next day least greatest 日期得計算 日期rr注意點 空值null 預設值插入n...