oracle 學習筆記(二)

來源:互聯網
上載者:User

  前面我談到了許可權分為系統許可權和對象許可權,那麼這裡開始講解對象許可權。對象許可權就是使用者對其他使用者的資料對象操作的許可權。而資料對象主要包括表、視圖、觸發器等。對象許可權包括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 是用來儲存位元據,片、聲音,但通常我們是用來儲存這些資料的地址的,如果這些圖片聲音特別重要,我們則可以直接存放在資料庫中。

  

 

  

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.