常用命令

進入登陸  sqlplus

(1)   給使用者鎖定 alter user scott account look;

給使用者解鎖 alter user scott account unlook;

(2)   show user 顯示當前使用者名稱是什麼

(3)   切換使用者 conn ,例:conn使用者名稱/密碼

conn[ect] 使用者名稱/密碼@網路[as sysdba /assysoper]

(4)   disc 用於斷開和oracle的連結,但不退出sqlplus視窗

(5)   exit 使用者斷開和oracle連結,同時退出sqlplus視窗

(6)   passw[orcl] 用於修改使用者密碼

語法:password 使用者名稱;

          給自己修改密碼,則可以不帶使用者名稱,給別人修改(前提sys,system)。

(7)   set linesize 140; 設定行數為140。

(8)   & 互動命令

(9)   edit 命令  用於編輯指令碼

(10)  spool  將螢幕上的內容輸出到指定檔案中

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

用法:1.spool 檔案路徑2.執行操作 3.spoll off

(11)  show parameter name 檢視當前登入資料庫的配置引數。

(12)  select name from v$database; 檢視當前資料庫例項名

(13)  exit 後,sqlplus /@例項名 assysdba; 連結到此例項

Sqlplus 命令

linesize

用於控制每行顯示多少個字元,預設80個

用法:set linesize 字元數

pagesize

        用於每頁顯示多少行

        用法:set pagesize 每頁顯示的行數

Oracle 使用者管理

    需求:假設你是oracle管理員,需要給一人分配一個賬號

1.  建立使用者:基本語法(前提需要具備dba)

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

2.  給使用者修改密碼

給自己修改:password 使用者名稱

給別人修改:alter user 使用者名稱 identified by 新密碼

表空間

表存在的空間,一個表空間是指向具體的資料檔案。

1.  create usershunping identified by m123   //shunping將用資料據方式驗證

default tablespace users   //shunping的表會建在users表空間中

temporary tablespace temp   //shunping臨時表建在temp中

quota 3m on users;   //定量資料最大為3m

剛建立的使用者是沒有許可權的(需要dba給使用者授權),連登陸都不行(要分配相應的許可權)。

2.  如何給使用者分配許可權:

grant create session to xiaoming;

grant connect to 使用者;

grant resource to 使用者;           角色

           給一個使用者賦許可權命令為grant,回收許可權命令revoke

           基本語法:

grant 許可權/角色to 使用者;

               revoke 許可權/角色from 使用者;

3.  刪除使用者

   當刪除一個使用者的時候,如果這個使用者自己已經建立過資料物件,那麼我們在刪除使用者的時候,需要加選項cascade,表示刪除使用者的同時,吧該使用者建立的資料物件,一併刪除。

    語法:drop user 使用者cascade;

4.  方案(schema)

小技巧:如果希望看到某個使用者的方案有什麼資料物件,可以用ql/sql developed。理解:當一個使用者建立好後,如果該使用者建立了任意一個數據物件,這時,我們的dbms就會建立一個對應的方案與該使用者對應,並且該方案的名字和使用者名稱一致。

‘方案’運用:

    讓xiaohong使用者可以去查詢scott的emp表。

1.  先用scott登陸,conn scott/tiger

2.  賦許可權 grant select[delete|update|insert|all]on emp to 使用者

注;如果有兩張表同名,方案名.表名   scott.emp

Xiaohong 查詢scott的emp表時,需要select * from scott.emp;

如何讓得到許可權的使用者,把許可權繼續分配給其他使用者?

系統許可權:with admain option

物件許可權:with grant option

           問題:想辦法將tea自己擁有的對scott.emp的許可權轉給stu

               Scott—tea—stu[許可權轉移]

           grant all on scott.emp to tea withgrant option;

5.使用profile檔案對口令進行管理

需求:允許某個使用者,最多嘗試登陸3次,如果3次沒有成功,則鎖定兩天,兩天後才能重新登陸。

語法:建立---create profile 檔名 limit failed_login_attempts 3 password_look_time2;

分配---alter user 使用者名稱 profile 檔名;

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

終止口令:

需求:設定一個賬號密碼,生命期最多為10天,寬限期為2天,到時必須設定新密碼。

語法:create profile 檔名 limit password_life_time 10 password_grace_time 2;

分配和解鎖和上面相同。

    口令歷史:

        使用者修改密碼時,不能使用以前使用過的密碼。

Create profile 檔名 limit password_life_time 10 password_grace_time 2password_reuse_time 1;

    刪除:profile

           Drop profile 檔名;

5.  oracle啟動流程 windows

(1) lsnrctl start 啟動監聽

(2) oradim -startup -sid   資料庫例項名

資料型別

(1)    Char(size):如果存放資料的長度是固定的,則用char,為定長,最大為2000,存取速度快。

(2)    Varchar2(size):資料不固定,則用varchar2  最大為4000

(3)    Nchar(size):編碼方式為unicode,一個漢字,佔用nchar的一個字元空間,注:一個漢子佔用char的兩個字元空間。

(4)    Nvarchar2(size):編碼是unicode。

(5)    Clob:字元型大物件。1.變長。2.最大8tb

(6)    Blob:二進位制資料。1.變長。2.最大8tb

(7)    Number(p,s):例number(5,2)表示一個數有5位有效數,2位小數。變長

(8)    Date:新增時候要使用預設格式:’dd-mm-yyyy’。

表的管理

(1)    新增一個新欄位

alter table 表名 add(新的列名,資料型別);

(2)    修改字元型別

alter table 表名 modify(列名,資料型別);

(3)    刪除一個欄位

alter table 表名 drop column 列名; 

(4)    給表修改名字

Rename 舊錶名 to 新表名

(5)    查看錶的結構:desc表名

(6)    檢視資料的內容:dump(列名)

例:select name,dump(name) from 表名;

(7)    刪除表:drop table 表名;

注意:1.字元和日期資料應包含在單引號中。

2.oracle中‘ ’ = null;

 3.如果給表的每列都新增值,則可以不帶列名。

Crud

       Update

              把所有學生的獎金都提高10%

              寫法:update students set fellowship = fellowship*1.1 where 1=1;

                       Update students set fellowship =fellowship*1.1;

              注意:不寫where與where1=1,意義相同,都是改變所有。

              如果沒有where子句,則更新所有行,(update和delete特別小心)

              給一個學生(欄位),獎學金設為null.

              Updatestudents set fellowship = null wherer name = ‘ls’;

              給獎學金為null的學生,設為10元

              Updatestudents set fellowship = 10 where fellowship is null;

       Delete

              如果不使用where,將刪除表中所有資料!!!

              Delete語句不能刪除某一列的值,如果要刪除,則使用update

       Selete

如何取消重複行:distinct

              Selectdistinct 列1,列2 from emp;

              Selectsal,joB,deptno from emP where EName = ‘SMITH’;

              注:oracle的sql語句不分大小寫,但是內容區分大小寫。