Orcl 數據庫;

                                    Oracle  數據庫
   
    一:Oracle 關係型數據庫(ORM)分佈式集羣數據庫;
                   
                    二:Oracle 8i--> Oracle 9i   l=internet(網絡)
                  
                    三:Oracle11G --> Oracle10g = grid (網絡,雲計算--虛擬化技術)2002

  四:Oracle 作爲一個數據庫, DB2數據庫 -IBM 
       索引技術  存儲過程技術  PLSQL 編程技術 ;

           五:Oracle 數據庫:關係型數據庫 , 集羣分佈式數據庫 , 福布斯100家公司98家都在使用 ,
               
    
                    六:Oracle 的標準開發:
                           1:Oracle 數據庫 安裝好了 Oracle-OraDb10g_home1
   2:Oracle 實例  創建了 orcl;
                           3:創建自己的表空間 用來進行數據的存儲沒有;
                           4:創建自己的用戶 操作自己的表空間 沒有;
                            
  

                   七:數據操作方面:(根據業務的不同在 業務層處理業務;)

                                數據操作方面在 ,業務上一般都會有 權限設置; 因爲一些數據 是 特定的;

                             1:添加 

                                      添加一般就是 新增數據 ;注意添加的數據類型;

                                    主鍵  一般設在 不關係業務邏輯的列上, 一般爲 id ,因爲唯一標識;

                             2:刪除

                                刪除一般就是根據 指定 id 刪除, 如果是 對刪除一般都是 id放在一個集合裏 去循環依次刪除;

                                刪除在 業務裏面是一個 ,一般爲 注意項;因爲不會真正刪除 用戶,只是給 用戶 換了一個狀態,查詢時

                               不體現它,特定 條件 查詢在  體現其用戶 ;

                             3:更新

                           更新 ,也就是 修改數據 ,在你修改數據的 時候,注意 :要把你修改的 對象數據全部 查詢出來,在把 你想                                        修改的 數據,覆蓋掉原來的數據; 不查詢全部的話,跟新保存時 會出現只有你  修改的有值,其他的都 null 

                       修改 一般就是 ,回顯數據,修改,保存;

  

                             4:查詢
                                      根據指定 id,查詢;


              八:Oracle 數據庫sql語句:
                          1: sql:結構化查詢語言,簡稱sql。
                                結構化查詢語言是一種數據庫查詢和程序設計語言,
用於存儲數據以及查詢、更新和管理關係數據庫系統;

         2:分爲:
                                a:DML(數據庫操作語言):分別用於添加、修改和刪除表中的行。也成爲動作查詢語句;
   b:DDL(數據庫定義語言):其語句包括動詞CREATE 和 DROP。在數據庫中創建新表或刪除表,
         爲表加入索引等。DDL包括許多與人數據庫目錄中獲得數據有關的保留字,
   它也是動作查詢的一部分;
                           c:DCL(數據庫控制語言):他的語句通過 GRANT 和 REVOKE 獲得許可,確定當個用戶和用戶組對數據庫對                                         象的訪問。

                                                       

                             某些 RDBMS 可用 GRANT 或 REVOKE 控制對錶單個例的訪問;







          九:Oracle 多表查詢  、 連接查詢 :
                1:最基礎的多表查詢:
            select  *  from 表一,表二 ;
多表查詢的條數顯示格式爲:表一條數 * 表二條數 ;

                2:多表查詢中的笛卡爾積問題?
         更好的做到保證數據完整,但這也促使很多數據 冗餘、重複;
                         利用連接條件的限定  主外鍵關聯  來解決笛卡爾積問題;

                3:如果表太多的話,怎麼辦 表名太多、亂、繁瑣 ?
                         使用內連接查詢:(內連接的時候,靠的是主外鍵關聯, 外建表收集外鍵信息,
                  收集好了之在與主鍵表關聯)
         a:內連接查詢特點:內連接查詢中,外鍵的字段值必須是出現在兩張表;
                                  是連接查詢裏查詢最快的;
例子:
                                           select  *   from  EMP E
                                          inner join  DEPT D  ON  E.DEPTNO =D.DEPTNO 
                                           WHERE   D.DEPTNO=10 AND  LOWER(E.ENAME) LIKE 's%'  
  
                4:外連接查詢:( 主  次 ):爲保證連接的兩張表中某一張表的數據完整;
                    a:左外連接:(left join)保證左表完整 如果右表沒有與之匹配數據以NULL填充;
-- 查詢所有部門:
      select  *  from  dept  d  left   join  emp e  on  d.deptno=e.deptno
  -
b:右外連接:(right join)它正好與左外連接相反:
                              select  *  from  emp e  right  join  DEPT D on  e.deptno=D.deptno;


                        
                     注意 : 由外鏈接嚐嚐會出現左表數據爲NULL的情況,這樣通常第一列
又是一張表的主鍵,所以這樣會破壞主鍵上的索引,查詢會很慢
經驗 : 所有的右連接都能以左連接代替.能用左連接不用右連接
能用內連接,不用外連接;
                     
 


           十:子查詢:
          -- 查詢比員工7654工資高和員工7788從事一樣工作的人
        select  ename  from  emp e  where
                         sal >(    select  sal  from  emp e where  e.empno=7654)
                       and
                         -job =( select  job from  emp e  where  e.empno=7788)


          十一:連接公式:
                  select   *   from  外鍵表  外
                      內連接/外連接  join  主鍵表 主 on 外.外鍵 = 主.主鍵 ;


                  注意:一般用內連接,兩個表中有一個表中的列與另一個表中的列對應不上爲空,
                        那麼用外連接,外連接一般都用左外連接;   
          
  1:外連接分爲:左外連接:
            右外連接:
 
           十二:自關聯:
                     把一張表在關聯的時候,起了兩個別名,模擬兩張表進行了一個連接查詢,這種形式叫做自關聯查詢;    
                         
   

     Oracle 存取  數據:
              數據存在哪裏?
           Oracle 數據文件  很多   並且很分散
    system  能創建表空間 ,相當於我們 mysql 中的 root
 
       1:創建表空間 
      CREATE   tablespace    表空間名;
  
   2:指定表空間位置
           datafile '指定空間位置'(不建議放在c盤)


       3:指定表空間大小
           size 30m (30照)
      
       4:關閉自動增長
           autoextend   off;(關閉自動增長 )
             
     5:創建自己的普通用戶:
           create   user  用戶名;
   
      Oracle當中用戶分爲 2類:
                     a:普通用戶:創建表  增、刪、改、查  像scott用戶   
                     b:管理員用戶:system(數據方面的管理)   sys(運維方面的管理)
                                    我們一般不用sys ,用它只是改 system密碼,sys 使用一般很危險;誤刪除表;  
         
       6:指定密碼:
            identified  by    密碼(一般爲 orcl);


       7:指定操作的表空間:
             default  tablespace 綁定的表空間名字;   


       8:給新用戶賦予權限:
             -- connect  角色  登錄角色權限;
            -- resource  更爲 正式角色  開發角色:    
               grant  connect,resource  to   角色;



  創建表:(切記不要看錯你當前的用戶)
            1:登錄到自己的用戶上,創建表:
                    create  table   表名(
  列名 1
  列名 2
  列名 3
  。。。。

)
           刪除表:  drop  table  表名;
   
    面試題:刪除整表的時候,那種方式比較快?第二種快;
      a:delete from 表名;慢   安全   帶事務 ;可以刪除單條數;delete 面對的是 表數據;
         -- 這種刪除在刪除的時候帶事務刪除,刪除之前要備份一下你的數據,因爲有回滾;
 
  b:truncate table  表名;快   危險   不帶事務 ;不可以刪除單條數據,truncate 面對的是表結構;
                 -- 這種刪除在刪除的時候,沒有帶事務,一旦刪除,沒有回滾;
-- 他的刪除方式爲:先把你的數據文件中數據都刪掉,在根據你的表結構創建回來;
 
 
2: Oracle 裏的數據類型:
                     varchar2(size) :可變長字符數據;
 
char(size) :定長字符數據 ;


number(p,s) :可變長數值數據;(java中也有number,所有數字類型的父類就是 number)
          表示存儲  數字(整數、小數)
                          p: 有效位數;(去掉負號和小數點 從左開始數)
                          s: 代表保留幾位小數; 
                     
date :日期型數據類型
                             時、分、秒  也是這個;


                     LONG : 可變長字符數據,最大可達到2 G;


                     clob : 字符數據,最大可達 4 G;


                     raw and  LONG RAW :原始的二進制數據;


                     blob : 二進制數據,最大可達到 4 G;
        
                     bfile :存儲外部文件的二進制數據,最大可達到 4 G;


                     rowid :行地址 ;
 


  
注意:編程語言中的統一數據類型   
  數據類型一共分爲四類:(就像人的一生,)
                       -- 出生
                      1:數值數據類型  (java 中一般其實是分爲兩種:數值數據類型和非數值數據類型)
  
                    -- 大一點
                     2;字符數據類型
 
                  -- 小學   
   3:時間和日期數據類型
   
               -- 中學  高中   大學 成人
                4:文件數據類型 (聲音  圖片  視頻)--> 二進制數據類型
  
  
     創建完表之後,操作表:
            1: 添加數據:
                  insert  into   表名
   (第一個括號裏面寫你要添加的列名;例如:pid、name、。。)
    values
    (第二個括號裏面寫,對應第一個括號的列名要添加的數據;);
                      
            2: 在執行這種增  刪  改  的時候得事務:
               --  提交:
                  commit;
  
               --  回滾事務:
                  ROLLBACK;       


  
            3 :更新語句:
     update   表名  set  修改的列名= 要修改的內容,......
   where   rowid  ='你要修改的記錄的id'
                 
4: 獲取rowid :  select  rowid,別名 . *  from   表名  別名;




5: 刪除數據:(根據指定 id,id相同用 rowid 刪除);
        delete   from   表名  where  pid/rowid  ;


6:  Oracle 事務操作:
             Oracle 事務操作  增、刪、改   必須顯示  提交或回滾  ;
    事務隔離級別:1  2  4 8 數據 : 髒讀 、幻讀、虛讀、不可重複讀 ;
                             事務的四大特性: 原子性   一致性   隔離性   持久性 ;
           一旦增刪改,不提交事務,當你退出登錄,在登錄跟沒操作之前一樣;
    Oracle 數據庫有一個事務特性:事務點:如果那條數據你只想添加指定的幾條的話,就在那你想添加的條數後面加上一個事務點,
                              SAVEPOINT  a;然後在你不想要的條數後面 ROLLBACK  TO  SAVEPOINT  a; 在提交事務   commit;
           你不想添加的 數據就不會去添加;             
  
            a:Oracle 中事務隔離級別與隔離性:
                     1):讀未提交數據:
 允許事務讀取未被其他事務提交的變更,髒讀、不可重複讀和幻讀的問題都會出現;
   
                     2):讀已提交數據:
                                         只允許事務讀取已經被其他提交的變更,可以避免髒讀,但不可重複讀和幻讀問題任然可能出現;
      
            3):可重複讀:
                       確保實物可以多次從一個字段中讀取相同的值,在這個事務持續期間,禁止其他事務對這個字段進行
           更新,可以避免髒讀和不可重複讀,但幻讀的問題仍然存在;
  
        4):串行化:
                                確保事務可以從一個表中相同的行,在這個事務持續期間,禁止其他事務對該表插入、更新和刪除操作,
           所有併發問題都可以避免,但性能十分低下;
 
Oracle 支持的3種事務隔離級別:讀未提交數據 、串行化、READ ONLY;
                            Oracle 默認事務隔離級別爲:讀已提交數據;

            7: Oracle 數據約束:
     1):我們爲什麼使用約束?
       使用約束可以更好的保證數據的完整性;
   
  2):在 Oracle 數據庫中,約束的類型包括:
        a:主鍵約束(Primary Key)
b:非控約束(Not Null)
c:唯一約束(Unique)
d:外鍵約束(Foreign Key)
e:檢查性約束(Check)

               3):主鍵約束: 主鍵約束(Primary Key)
                      一個表只有一個主鍵約束,主鍵約束不可重複,
                         主鍵約束一般設在無關有業務邏輯的列上,一般設爲 id列;
                       
      a:例子:建表是直接添加 ;  
       pid  number(10) primary  key;
   
  b:表鍵成之後添加主鍵約束:
     alter  table 表名 add constraint 起一個名  primary  key (pid);   


         Oracle  PL/SQL 編程語言:
          1: 假如 A 公司 是  mysql 數據庫,B  公司是  Oracle 數據庫,他們的數據交互,表結構不一樣;
              這是就用到了   數據遷移技術;
                        這就用到了 PL/SQL ,PL/SQL 具有一定的業務邏輯;   
     
                      
      2:解決 PL/SQL 報錯問題:
                        PL/SQL  也有着非常豐富的異常處理機制;
                           1):預定義異常:
                                   
   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章