前面我談到了許可權分為系統許可權和對象許可權,那麼這裡開始講解對象許可權。對象許可權就是使用者對其他使用者的資料對象操作的許可權。而資料對象主要包括表、視圖、觸發器等。對象許可權包括select、insert、update、delete、exec、all、index、refereces、execute。其中all代表select、insert、update、delete四種許可權。比如我將scott的表work的尋找許可權賦予使用者xiaoming,那麼文法如下
SQL> grant select on scott.work to xiaoming;
那麼,我們便可以在登入xiaoming使用者後查看scott的work表的資料了,命令如下
SQL> select * from scott.work;
如果可以讓一個使用者給另外一個使用者給予對象許可權,則可以加上 with grant option;
grant select on scott.work to xiaoming with grant option;
如果我們不希望xiaoming有這個查看許可權,那麼我們就可以回收這個許可權,命令如下
revoke select on work from xiaoming;
這裡有一個問題:如果A使用者把某表的許可權賦給了B使用者,如果A使用者沒有了此表的許可權,那麼B使用者還有這張表的許可權嗎 ??自己試試吧,哈哈!
如果是我們希望一個使用者在錯誤輸入密碼三次後,賬戶被鎖定1天,命令列如下
create profile loginLimt(鎖定名) limit failed_login_attempts 3 (幾次) password_lock_time 1(幾天)
設定使用者限制 alter user xiaoming profile loginLimt
解鎖使用者 alter user xiaoming account unlock
接下來我介紹常用的一些函數吧。
lower 轉換成小寫 select lower(ename) from emp;upper 轉換成大寫 select upper(ename) from emp;length 獲得字元長度 select ename from emp where length(ename)=5;substr 截取字元長度 裡面有三個參數,第一個參數表示所截取的字元,第二個參數表示從第幾個開始截,第三個參數表示截取幾個 select substr(ename,1,3) from emp;replace 替換函數 有三個參數 第一個參數表示替換的真箇字串,第二個參數表示要被替換的字元,第二個表示被替換成什麼 select replace(ename,'A','ILOVE') from emp;
nvl(列名,預設值) 尋找的列有空值,用預設值代替。
此外還有round(n,[m])四捨五入、ceil(n)向上取整、floor(n)向下取整、mode(n.m)模數函數;
在這裡我要介紹一下很重要的函數,轉換函式 to_char();
用命令 select sysdate from dual 可以得到系統時間 2012/2/26。在oracle中日期格式預設是是yyyy-dd-mm,因此有些不符合中國人的yyyy-mm-dd習慣,如何修改,用to_char,即 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual,得到
2012-02-26 10:35:15,其中的hh24表示24小時制,hh12表示的是12小時制。有add_month(,dn),last_day(n)幾個日期函數,這在做報表的時候特別有用的。
to_char()不僅可以轉換日期,還可以轉換薪水,to_char(columnName,'L99999.99'),L99999.99中的L表示本地貨幣,前面5個9表示小數點前有5個位元,不足的不顯示,小數點後面2個9表示兩位小數。其中L可以被C(國際貨幣符號)、$(美元)。具體用法可以查看其他資料,太多了。
在微軟的SQL Server 也有類似的函數,為了便於自己學習,也總結了一下,對照學習有好處
select upper('abc') select power(3,3) ---27 a的b次方select round(3.513,2)select substring('abc',1,2) ---截取字串長度select len('avbc') --獲得字串長度select getdate()select dateadd(d,3,getdate()) --在時間上加上幾天,其中d可以換成yy,m等select year(getdate()) --獲得年份select day(getdate()) --獲得天select month(getdate()) --獲得月份
select convert(nvarchar(100),getdate(),111); ---2012/02/28 轉換函式,其中,111是可以改變的,可以看參考文章
接下裡是oracle中一些常用的欄位類型,這都是很基礎的啦!
char:字元類型,雖然比較佔用空間, 但效率很高,查詢速度極快,因為是整個匹配,常用於存放長度一定的資料,比如身份證,學號。
varchar2: 變長字元類型,雖然節約空間,但查詢速度比較慢,可以存放文章、新聞等等。
number:數字類型之一,最大值的是10的38次方,如果是number(5,2)則表示的是該數字 5位有效數,2位小數,如果是number(5) 表示一個五位有效數位整數。事件類型date,起鬨timestamp是對date的擴充。blob 是用來儲存位元據,片、聲音,但通常我們是用來儲存這些資料的地址的,如果這些圖片聲音特別重要,我們則可以直接存放在資料庫中。