oracle學習歷程 2017/8/21

oracle的應用結構

單硬盤獨立主機結構

最基本的應用結構是單硬盤獨立主機結構。這個結構是最簡單,最常用的結構,該結構中只有一臺計算機,一塊獨立硬盤。這種結構中所有的數據庫文件都放在一個硬盤上,對硬件的要求較高,對硬件可靠性較高,性能調整方向主要是減少對數據庫文件的訪問次數。

多硬盤獨立主機結構

多硬盤獨立主機結構只有一臺計算機,但是該計算機內使用了多硬盤結構。如圖所示:。這種結構使用了一個數據庫服務器,一個數據庫結構,數據庫文件存儲在多個物理硬盤中,這樣可以減少數據庫文件的鏈接數量,減少數據文件的磁盤I/O。

多數據庫獨立主機結構

多數據庫獨立主機結構只有一臺計算機,可以有一個或多個硬盤,如圖所示:。這種結構由多個數據庫服務器,多個數據庫文件組成,也就是一臺計算機上安裝兩個版本的oracle數據庫,儘管他們在同一臺計算機上,但是所有內容均不是共享的。

C/S結構

在客戶機/服務機(C/S)結構中,將數據庫管理系統安裝在服務器上,應用程序安裝在客戶機上,通過sql*net網絡組件,在服務器,客戶機建立鏈接,使客戶機將數據請求發送給服務器,再由服務器將執行的結果發送給客戶機。結構如圖所示:

B/S結構

用戶應用程序需要通過web瀏覽器來訪問,如果客戶機要訪問oracle數據庫,則該請求首先通過網絡發到web服務器,然後通過web服務器將請求傳遞到數據庫服務器。如圖所示:。B/S三層結構是面向非鏈接的,即存取數據庫時鏈接,存取結束時斷開。與c/s架構相比,效率比較低。

分佈式結構


結構圖如下:
在這種結構中,數據不存出在一臺服務器中,而是分佈的在多服務器上,一個分佈式數據庫是由分佈於計算機網絡上的多個邏輯相關的數據庫組成的。其中網絡上的每個節點都具有獨立處理能力。可以執行局部應用運算,也可以通過網絡執行全局應用運算。其中,全局數據字典存放了全局數據庫在各服務器上的存放情況。分佈式數據庫管理系統的數據存放在計算機網絡上不同的局部數據庫中,而在邏輯上數據之間有語義上的聯繫,屬於一個系統。訪問數據的用戶可以是本地用戶也可以是遠程用戶。

oracle網絡

oracle網絡服務爲分佈式異構計算環境提供了企業級連接解決方案,此外,他在鏈接,網絡安全性,診斷能力等方面降低了網絡配置和管理的複雜性,同時還增強了網絡安全性和診斷功能。
配置oracle網絡服務過程:
剛開始的安裝就出現了問題,無法訪問本地localhost,我猜測是iis的問題,打算先安裝iis試試。安裝方法(好吧,不好使)換成了谷歌瀏覽器就是好用,還是得我的大谷歌。ie也太謹慎了,關鍵是添加安全證書也沒用。。。這個問題先掠過,我們用谷歌瀏覽器繼續進行網絡服務的配置。
在地址欄裏輸入:https://localhost:1158/em。打開oracle  enterprise manager。1158是oracle  enterprise manager的http端口號,em是enterprise manager的簡稱。

輸入相關管理員信息,我使用的是sys賬號。連接身份SYSDBA。
登陸後的狀態圖

sql 語句

功能分類:

   1、數據定義功能通過數據定義語言DDL(Data Definition Language)實現.主要用來定義數據庫的邏輯結構,基本的DDL包括三類,即定義,修改,查詢,分別對應create,alter,drop。

create table <表名>(<列名><數據類型>[列完整性約束條件],<列名><數據類型>[列完整性約束條件]);表名中輸入的就是基表的名字。

其中,如果有約束條件的話,表的約束條件存放在數據字典中。
創建視圖
        視圖是從一個或幾個基表中導出的表,他只是一張虛表,數據庫中之存放視圖的定義,而不存放視圖對應的數據,這些數據仍存放在原來的基表中。
              一般格式:create view <視圖名>(<列名>,<列名>,<列名>)  as <子查詢> [with check option]
             
create or replace view temp 
as 
select * from zd_member_basic_info order by name;
創建索引
          創建索引。基本格式:create [UNIQUE][CLUSTER]index<索引名>
                                              on<表名>(<列名>[<次序>],<列名>[<次序>]);
         其中,unique是表示索引的每一個索引值不能重複,對應唯一的數據記錄,cluster表示要建立聚簇索引,表名是要創建縮影的基表的名稱,縮影可以建立在對應表的一列上和多列上,如果是多列,各列名需要用逗號分割,ASC表示升序,DESC表示降序。默認值是ASC。
        我們可以在查詢效率最高的列上建立聚簇索引,從而提高查詢效率。索引和表記錄是放在一起存儲的,所以一個基表上最多隻能建立一個聚簇索引。
           刪除。刪除基表基本格式drop table<表名>;
                      刪除視圖基本格式drop view<視圖名>;刪除基表後,相關的視圖並沒有刪除,需要手動逐一刪除。
                      刪除索引基本格式drop index<索引名>;
          修改。需要修改已建立好的基表用alter table 
                      alter table<表名>
                               【add<新列名><數據類型>[完整性約束]】
                               【DROP<完整性約束名>】
                               【MODIFY<列名><數據類型>】;用於修改原有的列定義。
在標準的SQL語言中,由於視圖是基於表的虛標,索引是依附在基表上的,因此視圖和索引均不提供修改視圖和索引定義的操作,用戶若想修改,則只能通過刪除再創建的方法。
    2、數據查詢功能通過數據查詢語言DQL(Data Query Language)實現,主要用於對數據對象進行查詢,僅包含查詢(select)一種操作。
         select * from 表名。查詢表內所有的列和行。可以用from字句查詢指定的多個表,但要用,隔開。例如select * from hr.countries,hr.departments。
          select 列,列,列 from 表名,表名,表名;用於查詢指定列的。
         算術表達式:select employee,firstname,lastname,salary*(1+0.1)  from employees;
                      同時,我們也可以爲了提高結果集的可讀性,擬定新標題。例如我們的名字叫做new_salary;firstname,lastname,salary*(1+0.1) new_salary  from employees;
           distinct關鍵字,用於檢索到的重複的行。
                                      用法:select distinct 列名 from 表名;
           where字句,用於篩選從from字句中返回的值,完成選擇的操作。其中,where後面可以跟條件表達式A=B,A>B,A<B,A!=B或A<>B(表示若A的值不等於B的值,則爲true)。A LIKE B 這個是匹配運算符,如果A的值匹配B的值,則返回true,類似於word中的模糊查詢。其中%代表0,1,或多個任意字符,_代表任意一個字符。例如:
查詢client_id中有03的:select  client_id from hs_test  where client_id like '%03%'         命令來源
               連接運算符。where子句中可以使用連接運算符將各個表達式關聯起來組成複合判斷條件。具體有and和or
                                      select employee_id,first_name,last_name,department from emplyees
                                        where department_id=60  or department_id = 30;
                                        oracle 提供了兩種關於空值的運算符。is null 和 is not null。
                                      select departmentid departmentname,manager_id from departments
                                                    where manager_id is null;
                                      oracle 排序命令。order by。這個語句可以指定查詢結果按照某一列進行排序。例如
                                     select  employee_id,first_name,last_name,salary from where salary>2000 order by salary;此語句中,默認是按照升序排序的。
                                     select  employee_id,first_name,last_name,salary from where salary>2000 order by salary desc;這個語句是可以按照降序排序的。
             group by 子句。關於這個,我想單獨列出來講一下。
              HAVING子句,通常與group by 子句一起使用,在完成分組結果統計後,可以使用having子句對結果進一步篩選,如果不適用group by子句,having子句與where功能一樣。他倆不同點只是where與單行的列有關,HAVING子句與組有關。
            對於having子句的理解,我們可以記住select語句中子句的順序,在select語句中,首先from找到表,where接受from中輸出的數據,而having子句接受來自group by ,where,from子句的輸入。

    3、數據操縱功能通過數據操縱語言DML(Data Manipulation Language)實現,他用於更改數據庫中的數據,包括插入,刪除,修改三種操作,分別對應insert,delete,update三條語句。
    4、數據控制功能通過數據控制語言DCL(Data Control Language)實現,他包括對錶和視圖的授權,完整性規則的描述以及事務開始和結束等控制語句。相對應的語句有GRANT、REVOKE、COMMIT、ROLLBACK等,分別對應了授權,回收,提交和回滾等操作。
    由於內容太多,放到後面慢慢理解。


基表(Base Table)是本身獨立存在的表,在SQL中一個關係就對應一個基表。
視圖是從基表或其他視圖中導出的表,他本身不獨立存儲在數據庫中,也就是說,數據庫只存放視圖的定義而不存放視圖對應的數據。只是一張虛表。
有點繞的地方來了,數據庫的內模式定義:
        一個關係對應一個表,一個或多個基表對應一個存儲文件,一個基表也可以對應多個存儲文件,一個表可以帶若干索引,索引也存放在存儲文件中,每個存儲文件與外部存儲器上一個物理文件對應,存儲文件的邏輯結構組成了關係數據庫的內模式。如圖所示:


SQL語句的編寫規則

sql關鍵字不區分大小寫。
字符值和日期值區分大小寫。例如employee='SCOTT'和employee=‘scott’的結果是不一樣的。
語句可以分行寫,可以以分號結束,也可以以/結束。



    
















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