【正文】
韓順平玩轉(zhuǎn)Oracle9i1. Oracle認證和安裝,與其他數(shù)據(jù)庫比較Oracle安裝會自動的生成sys用戶和system用戶:(1)sys用戶是超級用戶,具有最高權(quán)限,具有sysdba角色,有create database的權(quán)限,該用戶默認的密碼是change_on_install(2)system用戶是管理操作員,權(quán)限也很大。具有sysoper角色,沒有create database的權(quán)限,默認的密碼是manager(3)一般講,對數(shù)據(jù)庫維護,使用system用戶登錄就可以拉也就是說sys和system這兩個用戶最大的區(qū)別是在于有沒有create database的權(quán)限。2. Oracle的基本使用基本命令sql*plus的常用命令n 連接命令 [ect]用法:conn 用戶名/密碼@網(wǎng)絡(luò)服務(wù)名[as sysdba/sysoper]當用特權(quán)用戶身份連接時,必須帶上as sysdba或是as sysoper遠程連接:sqlplus usr/pwd@//host:port/sid 如:conn sys/admin@:1521/orcl as sysdba。[onnect]說明: 該命令用來斷開與當前數(shù)據(jù)庫的連接[ord]說明: 該命令用于修改用戶的密碼,如果要想修改其它用戶的密碼,需要用sys/system登錄。 user說明: 顯示當前用戶名說明: 該命令會斷開與數(shù)據(jù)庫的連接,同時會退出sql*plus n 文件操作命令 @說明: 運行sql腳本案例: sql@ d:\start d:\說明: 該命令可以編輯指定的sql腳本案例: sqledit d:\,這樣會把d:\說明: 該命令可以將sql*plus屏幕上的內(nèi)容輸出到指定文件中去。案例: sqlspool d:\ 并輸入 sqlspool off n 交互式命令 1.amp。說明:可以替代變量,而該變量在執(zhí)行時,需要用戶輸入。select * from emp where job=39。amp。job39。;說明:該命令可以編輯指定的sql腳本案例:SQLedit d:\說明:該命令可以將sql*plus屏幕上的內(nèi)容輸出到指定文件中去。spool d:\ 并輸入 spool offn 顯示和設(shè)置環(huán)境變量概述:可以用來控制輸出的各種格式,set show如果希望永久的保存相關(guān)的設(shè)置,說明:設(shè)置顯示行的寬度,默認是80個字符show linesize set linesize 90:設(shè)置每頁顯示的行數(shù)目,默認是14用法和linesize一樣至于其它環(huán)境參數(shù)的使用也是大同小異3. oracle用戶管理n 創(chuàng)建用戶概述:在oracle中要創(chuàng)建一個新的用戶使用create user語句,一般是具有dba(數(shù)據(jù)庫管理員)的權(quán)限才能使用。create user 用戶名 identified by 密碼。 (oracle有個毛病,密碼必須以字母開頭,如果以字母開頭,它不會創(chuàng)建用戶) n 給用戶修改密碼概述:如果給自己修改密碼可以直接使用password 用戶名如果給別人修改密碼則需要具有dba的權(quán)限,或是擁有alter user的系統(tǒng)權(quán)限SQL alter user 用戶名 identified by 新密碼n 刪除用戶概述:一般以dba的身份去刪除某個用戶,如果用其它用戶去刪除用戶則需要具有drop user的權(quán)限。比如 drop user 用戶名 【cascade】在刪除用戶時,注意:如果要刪除的用戶,已經(jīng)創(chuàng)建了表,那么就需要在刪除的時候帶一個參數(shù)cascade。 n 用戶管理的綜合案例概述:創(chuàng)建的新用戶是沒有任何權(quán)限的,甚至連登陸的數(shù)據(jù)庫的權(quán)限都沒有,需要為其指定相應(yīng)的權(quán)限。給一個用戶賦權(quán)限使用命令grant,回收權(quán)限使用命令revoke。為了給講清楚用戶的管理,這里我給大家舉一個案例。SQL conn xiaoming/m12。 ERROR: ORA01045: user XIAOMING lacks CREATE SESSION privilege。 logon denied警告: 您不再連接到 ORACLE。SQL show user。 USER 為 SQL conn system/p。已連接。 SQL grant connect to xiaoming。授權(quán)成功。 SQL conn xiaoming/m12。已連接。 SQL注意:grant connect to xiaoming。在這里,準確的講,connect不是權(quán)限,而是角色。 看圖: 現(xiàn)在說下對象權(quán)限,現(xiàn)在要做這么件事情: * 希望xiaoming用戶可以去查詢emp表 * 希望xiaoming用戶可以去查詢scott的emp表 grant select on emp to xiaoming * 希望xiaoming用戶可以去修改scott的emp表 grant update on emp to xiaoming* 希望xiaoming用戶可以去修改/刪除,查詢,添加scott的emp表 grant all on emp to xiaoming* scott希望收回xiaoming對emp表的查詢權(quán)限 revoke select on emp from xiaoming //對權(quán)限的維護。* 希望xiaoming用戶可以去查詢scott的emp表/還希望xiaoming可以把這個權(quán)限繼續(xù)給別人。如果是對象權(quán)限,就加入 with grant optiongrant select on emp to xiaoming with grant option我的操作過程: SQL conn scott/tiger。已連接。SQL grant select on to xiaoming with grant option。授權(quán)成功。SQL conn system/p。已連接。SQL create user xiaohong identified by m123。用戶已創(chuàng)建。SQL grant connect to xiaohong。授權(quán)成功。 SQL conn xiaoming/m12。已連接。SQL grant select on to xiaohong。授權(quán)成功。 如果是系統(tǒng)權(quán)限。system給xiaoming權(quán)限時: grant connect to xiaoming with admin option問題:如果scott把xiaoming對emp表的查詢權(quán)限回收,那么xiaohong會怎樣?答案:被回收。下面是我的操作過程:SQL conn scott/tiger。已連接。SQL revoke select on emp from xiaoming。撤銷成功。 SQL conn xiaohong/m123。已連接。SQL select * from 。 select * from *第 1 行出現(xiàn)錯誤:ORA00942: 表或視圖不存在結(jié)果顯示:小紅受到誅連了。 n 使用profile管理用戶口令概述:profile是口令限制,資源限制的命令集合,當建立數(shù)據(jù)庫的,oracle會自動建立名稱為default的profile。當建立用戶沒有指定profile選項,那么oracle就會將default分配給用戶。 概述:指定該賬戶(用戶)登陸時最多可以輸入密碼的次數(shù),也可以指定用戶鎖定的時間(天)一般用dba的身份去執(zhí)行該命令。例子:指定scott這個用戶最多只能嘗試3次登陸,鎖定時間為2天,讓我們看看怎么實現(xiàn)。創(chuàng)建profile文件SQL create profile lock_account limit failed_login_attempts 3 password_lock_time 2。 SQL alter user scott profile lock_account。 (用戶)解鎖 SQL alter user tea account unlock。 為了讓用戶定期修改密碼可以使用終止口令的指令來完成,同樣這個命令也需要dba的身份來操作。例子:給前面創(chuàng)建的用戶tea創(chuàng)建一個profile文件,要求該用戶每隔10天要修改自己的登陸密碼,寬限期為2天。看看怎么做。SQL create profile myprofile limit password_life_time 10 password_grace_time 2。 SQL alter user tea profile myprofile??诹顨v史概述:如果希望用戶在修改密碼時,不能使用以前使用過的密碼,可使用口令歷史,這樣oracle就會將口令修改的信息存放到數(shù)據(jù)字典中,這樣當用戶修改密碼時,oracle就會對新舊密碼進行比較,當發(fā)現(xiàn)新舊密碼一樣時,就提示用戶重新輸入密碼。例子:1)建立profileSQLcreate profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10 password_reuse_time //指定口令可重用時間即10天后就可以重用2)分配給某個用戶 n 刪除profile概述:當不需要某個profile文件時,可以刪除該文件。SQL drop profile password_history 【casade】注意:文件刪除后,用這個文件去約束的那些用戶通通也都被釋放了。加了casade,就會把級聯(lián)的相關(guān)東西也給刪除掉4. oracle表的管理(數(shù)據(jù)類型,表創(chuàng)建刪除,數(shù)據(jù) CRUD操作)內(nèi)容介紹 期望目標 (創(chuàng)建/維護) oracle的表的管理表名和列的命名規(guī)則 必須以字母開頭 長度不能超過30個字符 不能使用oracle的保留字 只能使用如下字符 AZ,az,09,$,等oracle支持的數(shù)據(jù)類型n 字 符類 char 定長 最大2000個字符。例子:char(10) ‘小韓’前四個字符放‘小韓’,后添6個空格補全 如‘小韓 ’ varchar2(20) 變長 最大4000個字符。例子:varchar2(10) ‘小韓’ oracle分配四個字符。這樣可以節(jié)省空間。clob(character large object) 字符型大對象 最大4Gchar 查詢的速度極快浪費空間,查詢比較多的數(shù)據(jù)用。varchar 節(jié)省空間 n 數(shù)字型number范圍 10的38次方 到 10的38次方可以表示整數(shù),也可以表示小數(shù) number(5,2)表示一位小數(shù)有5位有效數(shù),2位小數(shù)范圍:number(5)表示一個5位整數(shù)范圍99999到99999 n 日期類型 date 包含年月日和時分秒 oracle默認格式 11月1999 timestamp 這是oracle9i對date數(shù)據(jù)類型的擴展??梢跃_到毫秒。n 圖片 blob 二進制數(shù)據(jù) 可以存放圖片/聲音 4G 一般來講,在真實項目中是不會把圖片和聲音真的往數(shù)據(jù)庫里存放,一般存放圖片、視頻的路徑,如果安全需要比較高的話,則放入數(shù)據(jù)庫。怎樣創(chuàng)建表 n 建表 學生表 create table student ( 表名 xh number(4), 學號 xm varchar2(20), 姓名 sex char(2), 性別 birthday date, 出生日期 sal number(7,2) 獎學金)。 班級表 CREATE TABLE class(classId NUMBER(2),cName VARCHAR2(40))。修改表n 添加一個字段SQLALTER TABLE student add (classId NUMBER(2))。 n 修改一個字段的長度SQLALTER TABLE student MODIFY (xm VARCHAR2(30))。 n 修改字段的類型/或是名字(不能有數(shù)據(jù)) 不建議做SQLALTER TABLE student modify (xm CHAR(30))。 n 刪除一個字段 不建議做(刪了之后,順序就變了。加就沒問題,應(yīng)為是加在后面) SQLALTER TABLE student DROP COLUMN sal。 n 修改表的名字 很少有這種需求SQLRENAME student TO stu。 n 刪除表 SQLDROP TABLE student。添加數(shù)據(jù) n 所有字段都插入數(shù)據(jù)INSERT INTO student VALUES (39。A00139。, 39。張三39。, 39。男39。, 39。015月0539。, 10)。 oracle中默認的日期格式‘ddmonyy’ dd日子(天) mon 月份 yy 2位的年 ‘096月99’ 1999年6月9日修改日期的默認格式(臨時修改,數(shù)據(jù)庫重啟后仍為默認;如要修改需要修改注冊表)ALTER SESSION