oracle(2)oracle的基礎入門

來源:互聯網
上載者:User

標籤:file   bsp   das   cursor   cot   報錯   不能   修改   小數   

1.sys與system

system系統管理使用者,sys超級使用者,sys帳號比system賬戶的許可權更多,在oracle11以後沒有了scott使用者

 

2.表的匯入匯出

imp 使用者名稱/密碼@服務名 file=資料庫表.dmp存放的地址   ignore=y  full=y //匯入

exp 使用者名稱/密碼@服務名 tables=表名 file=存入本地dmp目標地址 log=存入本地log目標地址 owner=要匯出的使用者名稱//匯出

PL/SQL Developer工具匯出: 功能表列---->Tools---->Export Tables//匯出

PL/SQL Developer工具匯出: 功能表列---->Tools---->import Tables //匯入

 

3.oracle對大小寫以及大於等於

sql 語言大小寫不敏感(例如關鍵字,欄位名,表名(mysql這個預設是敏感的)),sql 可以寫在一行或者多行,關鍵字不能被縮寫也不能分行,sql只有<=沒有>=,只有>,但是對例如欄位內容敏感(mysql預設是不敏感的)

 

4.null代表的含義(與mysql一樣)

空值是無效的,空值不是空格或者0,任何一個值與空運算結果都是null

 

 5.‘’與""

字元,日期只能是單引號,別名對於特殊(欄位名,關鍵字等)需要使用雙引號。

 

6.||

||符類似concat或者java中的+

 

7.escape

escape逸出字元,類似java與mysql中的\;

 

8.時間函數

next_day(date,week)  //指定日期的下一個星期對應的日期,日期預設格式是dd-mm -yyyy

months_between(date1,date2) // 兩個日期相差的月數

last_day(date)  //本月的最後一天

add_months(date,month)//向指定日期中加上若干月數

to_char(date, ‘format_model‘)  //轉換時間: yyyy年, mm月,dd日,day星期 ,hh小時,mi分鐘 ,ss 秒;轉換成數字:9數字//存在則取代,不存在則沒有 ,0零//不存在用0取代,$美元符,L本地貨幣符號,.小數點,,千位符

trunc (sysdate ,‘year‘) //日期截斷,

to_date (char, ‘format_model‘)//格式需要滿足一致yyyy年, mm月,dd日,day星期 ,hh小時,mi分鐘 ,ss 秒

備忘:日期上加上或減去一個數字結果仍為日期,兩個日期相減返回日期之間相差的天數。兩個日期之間不能做加法。

 

9.其他一些函數

lpad(數值,10,字元)  //不足10位左邊補字元,10自訂

rpad(數值, 10, 字元) //不足10位右邊補字元,10自訂

trim(‘h‘ from‘helloworld‘) //去除頭和尾的字元h

replace(‘abcd’,’b’,’m’) //將所有的b替換成m

trunc(45.926, 2) //保留兩位小數,取整

round(45.926, 2) //保留兩位小數,四捨五入

to_number(char, ‘format_model‘)//格式需要滿足一致,$,L可做加法運算

nvl (expr1, expr2)  //如果不為空白那麼是其本身expr1,為空白那麼是expr2,注意oracle中需要expr1和expr2的欄位類型一致,否則需要轉型,類似mysql的ifnull

nvl2 (expr1, expr2, expr3)//滿足條件expr1則為expr2,否則為expr3,類似mysql的if

nullif (expr1, expr2)// expr1與expr2相等返回null,不等返回expr1

coalesce (expr1, expr2, ..., exprn) //coalesce表示expr1,為buul則expr12依次下去

 

10.條件迴圈

條件運算式同mysql;

case when  then  同mysql;

while 條件 loop  迴圈體 end;//迴圈

 

11.連表查詢基本同mysql,cross join  交叉串連同where  e,t;using 子句指定等值串連中需要用到的列(相當於where e.deptno=d.deptno);

 

12.建立表和修改表

1)表名和列名:命名規則

必須以字母開頭

必須在 1–30 個字元之間

必須只能包含 a–z, a–z, 0–9, _, $, 和 #

必須不能和使用者定義的其他對象重名

必須不能是oracle 的保留字

資料類型number為取代mysql的int,double等

varchar2類似於mysql的varchar,也有char

blob 二進位最大4g

clob 字元資料最大4g

long 可變長字元資料,最大2g

date  日期

 

2)重新命名資料表的列

modify,add同mysql

alter  table 表名 drop column 列名

alter  table  表名 rename  column 舊列名 to 新列名

truncate table 表名 //清空資料,不能復原,delete能復原

rename 表名 to 新表名;

 

13.事務

commit開始 或 rollback復原語句,復原點為最近的一次commit

savepoint  復原點名  ,rollback  to  復原點,可以回到相應的復原位置

備忘:

ddl語句(自動認可),不會復原,復原是對於dml語句而言,添加事務之後dml所涉及的行被鎖定,類似mysql的innodb,在沒有commit之前其他使用者不能見到自己的修改,自己能見到是讀己之所寫,類似mysql,oracle預設不會自動認可dml語句,需要使用使用commit(mysql預設自動認可)

select * from 表名  for update;//查詢更新後的表,假如這個查詢結果中有被鎖,那麼會被處於阻塞狀態

 

14.視圖

視圖的建立同mysql,修改沒有的列會產生錯誤與mysql不同(mysql無效,但不會報錯)

組函數,group by子句,distinct 關鍵字,rownum 偽列,列的定義為運算式不能使用update與insert。添加with read only 表示該視圖唯讀。

 

15.序列

類似auto_increment,但又不同,auto_increment必須位於索引之上,且每張表唯一,作用於聯合索引之上排序後相同則自增左1欄位,序列, 唯一的數值,可以充當主索引值,共用對象,裝入記憶體可以提高訪問效率,首次預設不存在,需要使用nextval之後才能使用currval,不可以修改序列值,需要刪除後重建,可以修改序列的增量, 最大值, 最小值, 迴圈選項, 或是否裝入記憶體,序列的裂縫可能出現在多個表使用同一個序列,復原(復原對序列無效),系統崩潰。

文法:

create sequence sequence;

       [iincrement by  n]  --每次增長的數值

       [start with n]    --從哪個值開始

       [{maxvalue n | nomaxvalue e}]

       [{minvalue  n | nominvalu e }]

       [{cycle| nocycle}]     --是否需要迴圈

       [{cache  | nocache}];  --是否緩衝登入

 

16.索引

刪除一個表時,所有基於該表的索引會自動被刪除,可以通過指標加速 Oracle 伺服器的查詢速度,減少磁碟 I/O,索引的建立刪除同mysql

 

17.同義字

create  synonym  別名 for 表名;//建立,類似給表起別名

drop synonym  別名;//刪除同義字

 

18.許可權管理

1)建立,修改使用者以及更改密碼

create user 使用者名稱 identified by   密碼;//添加使用者

alter  user 使用者名稱 identified by   新密碼;//修改密碼

grant 許可權    to 使用者名稱;//賦予許可權

一般包括如下許可權

create session(建立會話)

create table(建立表)

create sequence(建立序列)

create view(建立視圖)

create procedure(建立預存程序)

備忘:需要建立表的許可權,除了需要建立表許可權,還需要使用alter user 使用者名稱 quota unlimited   on users

 

2)角色的建立,修改

create role 角色名稱;//建立角色

grant 許可權    to 角色名稱;//賦予許可權

grant 角色 to 使用者名稱...;//賦予角色給使用者  

grant      對象許可權 on 對象 to 使用者/角色;//建立者具有所有許可權,system也有許可權,擁有者給其他人分配許可權,角色使用者為public表示對所有人具有許可權

grant      對象許可權 on 對象 to 使用者/角色with grant option;//使使用者同樣具有分配許可權的權利

 

3)取消許可權

revoke 許可權 on 對象 from  使用者/角色;//with grant option的許可權同樣被收回

revoke 許可權 on 對象 from  使用者/角色cascade constraints;//去除級聯許可權,a賦予b,b賦予c,a使用cascade constraints去除b的許可權,那麼b賦予geic的許可權同樣會清除

 

備忘:許可權分配情況可查詢的表,可以在刪除相應的使用者與角色

role_sys_privs  角色擁有的系統許可權

role_tab_privs 角色擁有的對象許可權

user_role_privs      使用者擁有的角色

user_tab_privs_made   使用者指派的關於表對象許可權

user_tab_privs_recd     使用者擁有的關於表對象許可權

user_col_privs_made    使用者指派的關於列的對象許可權

user_col_privs_recd      使用者擁有的關於列的對象許可權

user_sys_privs 使用者擁有的系統許可權

 

19.set操作符

union/union all //union可以去重,union all不會去重,intersect  //取交集,minus //減,用法都同union

 

20.pl/sql文法

1)一般用法

declare

聲明變數 //a  int(10)或者a  表名.欄位名%type;表名.欄位名%type表示與表名的欄位名的類型一致,表欄位的類型改變,該處也隨之改變

type 變數類 is  record(//類似java中的類與屬性

b 表名.欄位名%type;

變數類執行個體 變數類

cursor 遊標名稱 is select..//定義遊標,將select單行的查詢結果放入遊標中,

begin

select  ... into 變數類名執行個體  from ... //select後的欄位名順序與數量需要與變數類名保持一致,後續使用可以使用類名.變數讀取

fetch 遊標名稱 into 變數;//提取遊標值,遊標名%found類似於iterate的hasnext,可以用迴圈提取每次遊標指向的值

close 遊標名//關閉遊標

exception  //沒有書寫異常,那麼這裡不寫,when  異常的類型 then 輸出列印;

end

 

2)函數

Create  or  replace function 函數名(參數)return 傳回值類型

is  聲明變數類似declare;

begin;

return;

exception

end 函數名;

 

3)預存程序//在函數的基礎上去除return

create or replace procedure 預存程序名(參數) 

as  //聲明   

begin // 執行 

exception//預存程序異常 

end;

備忘:參數類型有3中 in 可以是值,out必須是變數,inout 必須是變數 //create   procedure 過程名 (in  形參名稱 資料類型 ,out   形參名稱 資料類型,inout  形參名稱 資料類型),蒸鍋過程是滯後的,只有在內部完成之後,賦值才給傳入給外部的全域變數。

 

4)觸發器

Create or  replace trigger 觸發器..//後面的同mysql

備忘:要使用輸出需要開啟  set  serveroutput on;

 

oracle(2)oracle的基礎入門

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.