Oracle 學習筆記(一)

2022-02-23 06:31:44 字數 4547 閱讀 5995

小型資料庫:access、foxbase

中型資料庫:mysql、sql server、informix

大型資料庫:sybase、oracle、db2(負載:sybase < oracle < db2)

使用哪種資料庫考慮因素:

安裝過程不描述,網上有教程。

oracle 安裝會自動的生成 sys 使用者和 system 使用者:  

sys 使用者是超級使用者,具有最高許可權,具有 sysdba 角色,有 create database的許可權,該使用者預設的密碼是 change_on_install ;

system 使用者是管理操作員,許可權也很大。具有 sysoper 角色,沒有 create database 的許可權,預設的密碼是 manager ;

一般而言,對資料庫維護使用 system 使用者登入就可以了。

這兩個使用者最大的區別在於有沒有 create database 許可權。

sql * plus 的常用命令 :

連線命令

1. conn[ect] 

用法:conn 使用者名稱/密碼@網路服務名[as sysdba/sysoper]

當用特權使用者身份連線時,必須帶上 as sysdba 或是 as sysoper。 

2. disc[onnect] 

說明: 該命令用來斷開與當前資料庫的連線 。

3. passw[ord] 

說明: 該命令用於修改使用者的密碼,如果要想修改其它使用者的密碼,需要用 sys/system 登入。 

4. show user 

說明: 顯示當前使用者名稱 

5. exit 

說明: 該命令會斷開與資料庫的連線,同時會退出 sql * plus 

檔案操作命令

1. start 和 @ 

說明: 執行 sql 指令碼 

案例: sql>@ d:\a.sql 或是 sql>start d:\a.sql  

2. edit 

說明: 該命令可以編輯指定的sql指令碼 

案例: sql>edit d:\a.sql,這樣會把 d:\a.sql 這個檔案開啟 

3. spool  

說明: 該命令可以將sql*plus螢幕上的內容輸出到指定檔案中去。 

案例: sql>spool d:\b.sql 並輸入 sql>spool off 

互動式命令

1. &  

說明:可以替代變數,而該變數在執行時,需要使用者輸入。 

select * from emp where job='&job'; 

2. edit 

案例:sql>edit d:\a.sql 

3. spool 

說明:該命令可以將 sql * plus 螢幕上的內容輸出到指定檔案中去。 

spool d:\b.sql 並輸入 spool off 

顯示和設定環境變數

1. linesize 

說明:設定顯示行的寬度,預設是80個字元 

show linesize 

set linesize 90 

2. pagesize 說明:設定每頁顯示的行數目,預設是14,用法和 linesize 一樣,其它環境引數的使用也是大同小異。

oracle 使用者的管理

使用者名稱scott,密碼預設 tiger,預設狀態是被鎖定, dba 使用者執行

alter user scott account unlock; 可以解鎖登陸;

scott 是個演示使用者,學習用的;

建立使用者

概述:在 oracle中 要建立乙個新的使用者使用 create user 語句,一般是具有 dba (資料庫管理員)的許可權才能使用。 

create user 使用者名稱 identified by 密碼; 

(oracle密碼必須以字母開頭,否則不會建立使用者) 

給使用者修改密碼

概述:如果給自己修改密碼可以直接使用 

password 使用者名稱 

如果給別人修改密碼則需要具有dba的許可權,或是擁有alter user的系統許可權 

sql> alter user 使用者名稱 identified by 新密碼 

刪除使用者

概述:一般以dba的身份去刪除某個使用者,如果用其它使用者去刪除使用者則需要具有drop user的許可權。 

比如 drop user 使用者名稱 【cascade】 

在刪除使用者時,注意: 如果要刪除的使用者,已經建立了表,那麼就需要在刪除的時候帶乙個引數cascade; 

使用者管理的綜合案例

概述:建立的新使用者是沒有任何許可權的,甚至連登陸的資料庫的許可權都沒有,需要為其指定相應的許可權。

給乙個使用者賦許可權使用命令 grant,**許可權使用命令 revoke。 

舉例:

sql>conn stephen/stephen123; 

error: 

ora-01045: user stephen lacks create session privilege; 

logon denied 

警告: 您不再連線到 oracle。 

sql> show user; 

user 為 "" 

sql> conn system/p; 

已連線。 

sql> grant connect to stephen; 

授權成功。 

sql> conn stephen/stephen123; 

已連線。 

注意:grant connect to stephen  準確的講,connect不是許可權,而是角色。 

物件許可權

現在要做這麼件事情: 

* 希望 stephen 使用者可以去查詢 emp 表 

* 希望 stephen 使用者可以去查詢 scott 的 emp 表  

grant select on scott.emp to stephen

* 希望 stephen 使用者可以去修改 scott 的 emp 表 

grant update on scott.emp to stephen

* 希望 stephen 使用者可以去修改、刪除、查詢、新增 scott 的 emp 表 

grant all on scott.emp to stephen 

* scott希望收回 stephen 對 emp 表的查詢許可權 

revoke select on emp from stephen

許可權的維護

* 希望 stephen 使用者可以去查詢 scott 的 emp 表,還希望 stephen 可以把這個許可權繼續給別人。 

--如果是物件許可權,就加入 with grant option 

grant select on emp to stephen with grant option 

操作過程: 

sql> conn scott/tiger; 

已連線。 

sql> grant select on scott.emp to stephen with grant option; 

授權成功。 

sql> conn system/p; 

已連線。 

sql> create user bobi identified by bobi123; 

使用者已建立。 

sql> grant connect to bobi; 

授權成功。 

sql> conn stephen/stephen123; 

已連線。 

sql> grant select on scott.emp to bobi; 

授權成功。 

--如果是系統許可權。 

system 給 stephen 許可權時: 

grant connect to stephen with admin option;

如果 scott 把 stephen 對 emp 表的查詢許可權**,那麼 bobi 會怎樣? 被**。 

操作過程:

sql> conn scott/tiger; 

已連線。 

sql> revoke select on emp from stephen; 

撤銷成功。 

sql> conn bobi/bobi123; 

已連線。 

sql> select * from scott.emp; 

select * from scott.emp 

第 1 行出現錯誤: 

ora-00942: 表或檢視不存在 

結果顯示:bobi 受到牽連。

今天就複習到這,後續更新。

oracle學習筆記 一

oralce 開發 1,自增長序列 方法一 建表,建序列 create table mytable id number primary key,name char 14 char 2 check 1 or 0 mark varchar2 1000 create sequence xok autoin...

Oracle學習筆記(一)

系統要求 作業系統最好為windows2000 記憶體最好在256m以上 硬碟空間需要2g以上 進入資料庫 1.開始 sql plus 2.執行輸入命令 sqlplusw 3.dos下操作oracle工具 執行輸入命令 sqlplus 工具 pl sql developer sql plus常用命令...

oracle學習筆記一

表 基本的資料儲存物件,以行和列的形式存在,列 也就是字段,行也就是記錄 資料字典 也就是系統表,存放資料庫相關資訊的表 約束條件 執行資料校驗,保證了資料完整性的 檢視 乙個或者多個表資料的邏輯顯示 索引 用於提高查詢的效能 同義詞 物件的別名 資料庫物件的命名規則 1 物件名稱必須以字母開頭 2...