天天看點

Oracle之 使用者管理,表管理

内容結構:

                 基礎部分:  使用者管理,表管理

                 進階部分:表查詢,權限,角色,函數 資料庫管理,限制,索引,事務,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 ;

删除表中所有的記錄,表結構還在,不寫日志,無法找回删除記錄,速度快。