内容結構:
基礎部分: 使用者管理,表管理
進階部分:表查詢,權限,角色,函數 資料庫管理,限制,索引,事務,PL/sql程式設計
Oracle的基本使用
1. show user; 顯示目前使用者
2. exit(;) 斷開資料連接配接且退出sqlplus
3. 連接配接指令: conn (connect) system/密碼;
Disc[onnect] 斷開連接配接;
Passw[ord] 修改使用者的密碼,若要修改其他使用者的的密碼,需要用sys/system登入
檔案操作指令
1. start 和@
說明:運作sql腳本 sql>@ d:a.sql 或者sql>start d:a.sql
2. edit
編輯指定的sql腳本 sql>edit d:\a.sql
3. spool(将第一個spool以下和第二個spool以上的所有内容輸出到指定内容中去)
将sql*plus螢幕上的内容輸出到指定檔案中去;sql>spoold:\b.sql 并輸入到sql>spool off
顯示和設定環境變量
控制輸出的格式:
Linesize:設定顯示行的寬度,預設是80個字元
Show linesize ; set linesize 90;
Pagesize 設定每頁顯示的行數目,預設是14。
Oracle使用者管理
1. 建立使用者create user 【使用者名】xiaoming
identified by【密碼】m123;
注意:建立使用者的權限需要系統管理者權限!!!
2. 删除使用者
一般以DBA的身份去删除某個使用者,如果用其他使用者去删除使用者則需要有drop user 的權限,當該使用者已經建立了表,則需要級聯删除!!!
Drop user 使用者名 [cascade]
3. 建立的新使用者沒有任何權限,甚至登入資料庫的權限都沒有,需要為其制定相應的權限。給一個使用者賦予權限是grant ,回收權限是revoke。
注意:權限,角色的分類
沒有Create session 權限則無法連接配接資料庫,
具有Resource權限的使用者可以建表
對象權限:使用者對其他使用者的資料對象操作的權限,比如我建立的hfut使用者對scott使用者的emp表進行通路。包括:select、insert、update、delete、all(即前四種)、createindex等等。
讓使用者hfut擁有對使用者scott的emp表的所有權限
【SQL> conn scott/tiger
已連接配接。
SQL>grant all on emp to hfut;
授權成功。】
權限回收:revoke注意誰賦予的權限,就要誰來回收權限!【revoke update on emp from hfut;】先回收hfut的update權限
希望使用者hfut可以去查詢scott使用者的emp表,并且還希望把這個權限繼續給别人(nus):
————如果是對象權限,就加入with grant option;
grant all on emp to hfut with grantoption ;
————如果是系統權限,就加入 with admin option
Grant connect on emp to hfut with admin option;
問題:當scott把hfut對于emp表的權限收回時,nus對emp表還有操作的權利的麼?
答案是:nus失去了對emp表的權限,【使用者管理實驗筆記】
使用profile管理使用者密碼:
Profile是密碼限制,資源限制的指令集合,當建立資料庫時,oracle會自動建立名稱為default的profile。當使用者沒有指定profile選項,那oracle會将default配置設定給使用者。
(1) 賬戶鎖定
指定該賬戶登入時最多輸入密碼的次數,也可以指定使用者鎖定的時間(天),一般用dba的身份去執行該指令。
例子:指定使用者tea最多隻能嘗試登入三次,鎖定時間為2天;
Create profile lock_account[檔案名稱] limit failed_login_attempts 3password_lock_time 2;
Alter user tea profile lock_acount;
賬戶解鎖
Alter user tea
account unlock;
(2) 終止密碼
為了讓使用者定期修改密碼可以使用中指密碼來完成,同樣這個指令也需要dba身份來完成。
例子:給前面建立的使用者tea建立一個profile檔案,要求使用者每隔10天要修改自己的登入密碼,寬限期限為2天。
Create profile myprofile[檔案名]
limit password_life_time 10 password_grace_time 2;
Alter user tea[使用者名] profile myprofile ;
密碼曆史:
若希望使用者在修改密碼時,不能使用以前用過的密碼,可以使用密碼曆史,這樣oracle就會将密碼修改的資訊存放在資料字典中,這樣當使用者修改密碼時,oracle機會對新舊密碼進行比較,當發現新舊密碼一樣時,就提示使用者重新輸入密碼。
例子:
1. 建立profile
Createprofile password_ history limit password_life_time 10 password_reuse_time10
password_reuse_time 10 // 制定密碼可重用時間為10天,即十天後可以重用。
2. 配置設定給某一使用者
Alter user【使用者名】
删除profile :
當不需要某個profile檔案時,可以删除檔案
Drop profile password_history [cascade]
Oracle表的資料類型:
字元型:
Char 定長 最長2000字元 {查詢效率高}
Char(10) “楓楊” 前四個字元放“楓楊”,後添6個空格補全
Varchar2(20) 變長最長4000字元
Varchar2(20) “春節” oracle 配置設定四個字元。這樣可以節省空間
Clod 字元型大對象 最大4G
數字型:
Number範圍±10的38次方。
Number(5,2) 表示5位有效數字,2位小數,—999.99到999.99
Number(5) 表示5位整數 範圍 ±99999
建立表:
學生表
Create table student(
xh number(4),
sex char(2),
birthday date,
sal number(7,2)
);
班級表:
Create table classes (
calssId number(2),
cname varchar2(40),
);
修改表(Alter table *** )
添加字段:
Alter table student add(classid number(2),字段2 類型,……,字段n 類型);
修改字段長度:
Alter table student modify (xm varchar2(30));
修改字段的類型/或者名字(不能有資料):
Alter table student modify (xm char(30));
删除一字段:
Alter table student drop column sal ;
修改表的名稱:
Rename student to stu ;
删除表
Drop table student ;
添加資料
Insert into student values(1,’xiaoming’,’男’,’11-12月-1997’,2.355);
如何插入帶有日期的表,并按照年月日的格式插入?
to_date函數:
insert into emp values (999,'小紅',to_date('1988-12-12','yyy-mm-dd'));
插入部分字段:
Insert into student values (‘A003’,‘jhon’,‘女’);
插入空值
Insert into student (xh,xm,sex,birthday,)
Values(‘A004’,’martin’,’男’,null);
[查詢時,隻能使用 is null 或者is not null]
修改一個字段的内容:
Update student set sex=‘女’,birthday = 10-9月-1996 where xh =’1001’;
修改含有null的資料
Is null
删除字段:
Delete from student;
删除記錄,表結構還在,寫日志,可以恢複,rollback,速度慢;
Drop table student;删除表結構和資料
Delete from student where xh=’001’;删除一條記錄
Truncate table student ;
删除表中所有的記錄,表結構還在,不寫日志,無法找回删除記錄,速度快。