Oracle(一)常用命令,與使用者管理
常用命令
進入登陸 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語句不分大小寫,但是內容區分大小寫。