一、數據庫分類
1、小型數據庫:access、foxbase
2、中型數據庫:informix、sql server、mysql
3、大型數據庫:sybase、db2、oracle
二、項目中如何合理地使用數據庫,可以依據如下三個方面入手
1、項目的規模
a、負載量有多大,即用戶數有多大
b、成本
c、安全性
小型數據庫
1、負載量小,用戶大概100人之內
比如:留言板、信息管理系統
2、成本在千元之內
3、對安全性要求不高
中型數據庫
比如負載量 日訪問量5000~10000
成本在萬元內
比如商務網站
大型數據庫
海量負載,可以處理海量數據(sybase<oracle<db2(海量數據處理能力))
安全性高,相對貴
三:Oracle簡介
世界上的所有行業幾乎都在應用Oracle技術,《財富》100強中的98家公司都采用Oracle技術。Oracle是第一個跨整個產品線(數據庫、業務應用軟件和應用軟件開發與決策支持工具)開發和部署100%基於互聯網的企業軟件的公司。Oracle是世界領先的信息管理軟件供應商和世界第二大獨立軟件公司。
Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關系數據庫管理系統。它是在數據庫領域一直處於領先地位的產品。可以說Oracle數據庫系統是目前世界上流行的關系數據庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的 適應高吞吐量的數據庫解決方案。
特點
四、sys用戶和system用戶
Oracle安裝會自動的生成sys用戶和system用戶
(1)、sys用戶是超級用戶,具有最高權限,具有sysdba角色,有create database的權限,該用戶默認的密碼是change_on_install(安裝時設定。用戶手動給的)
(2)、system用戶是管理操作員,權限也很大。具有sysoper角色,沒有create database的權限,默認的密碼是manager(安裝時設定 用戶手動給的)
(3)、一般講,對數據庫維護,使用system用戶登錄就可以拉
注意:也就是說sys和system這兩個用戶最大的區別是在於有沒有create database的權限。
(4)、普通用戶:scott hr 密碼:安裝時內置好的,系統設定,默認是tiger,默認鎖定的。上網找一條命令解鎖就行了
C:> sqlplus 請輸入用戶名:sys 輸入口令:sys as sysdba //注意:在口令這里輸入的密碼后面必須要跟上 as sysdba 才可以。 SQL> alter user scott account unlock; 用戶已更改. SQL> commit; 提交完成. SQL> conn scott/tiger 更改scott口令 新口令:tiger 重新鍵入新口令:tiger 口令已更改 已連接。 //完成。
要想登錄要SYS或者SYSOPER權限,連接多次失敗后,點左上角小鑰匙重新連接。
主流版本9i(Internet) 10g/11g(grid) /12c(Cloud)
I含義:突現公司對internet/intranet的支持
G含義:突現對網格的支持
C含義:cloud(雲)
1.數據庫系統和數據庫的管理系統
數據庫系統=數據庫的管理系統+oper操作員+硬件
1.Oracle的監聽和客戶端
H:\app\happy\product\11.2.0\dbhome_1\NETWORK\ADMIN
listener.ora 監聽的配置
tnsnames.ora 客戶端配置
2.連接Oracle可以被正常連接,必須保證下列服務啟動
監聽程序
數據庫服務:
3.PL/SQL Developer
PL/SQL是用於從各種環境中訪問Oracle數據庫的一種比較復雜的編程語言。它與數據庫服務器集成在一起,也是標准數據庫安裝的一部分。
4.創建一個用戶Dog 1
--創建一個狗狗用戶dog 密碼是1
create user dog identified by 1
--給dog分配兩個角色 Connect 和Resource
grant Connect,Resource to dog
Oracle主要組件
一個數據庫可以有N個實例。
解析:內存如何操作硬盤上文件,通過進程進行。Oracle實例(內存中)如何操作硬盤上的文件,也是通過進程。
SGA(System Global Area):系統區全局區,一個實例只有一個SGA。
PGA(Process Global Area):進程全局區,可以有多個,根據客戶端請求自動創建進程。
JDBC連接到實例中的PGA上,客戶端的增刪改查操作的都是PGA中的數據,而並非整個實例。客戶端做commit操作就會將PGA中的數據提交到SGA中。然后再將SGA中的數據提交到DB中。該過程也稱為“兩階段提交 two-phase commit”
2.關於物理文件名和邏輯文件名
解析:物理文件名:就是和硬盤上的確切路徑下的文件 相關聯的一個真實文件
邏輯文件名:就是用戶在腦袋中自己隨機命名的一個用於區別其他名稱的一個別名,或者說是代名詞,可以隨意命名。
3.Oracle中的模式大家可以理解成用戶
一個用戶對應一種模式
控制文件:
控制文件記錄了如下信息:
1、數據庫的創建時間
2、數據文件的位置
3、日志文件的位置
等
作用是指導數據庫 找到數據文件,日志文件並將數據庫啟動到 open 狀態。
實例和數據庫的關系
實例:數據庫服務啟動后,在內存中的單元
數據庫:硬盤上的文件,物理介質硬盤
數據庫的核心
PAG:
SGA:
DBWR:(數據的讀取和寫入)
LGWR:(日志文件的讀取寫入)
SMON:(清理臨時變空間)
PMON:(異常中斷之后的清理,處理和釋放資源)
CKPT:(檢查點,保證數據庫的一致性,這是指臟數據寫入到硬盤,保證內存和硬盤上的數據是一樣的;)
5.監聽文件的位置
app--->Happy(用戶名)---->product------>NOTWORK--->ADMIN----->listener.ora
6.服務的開啟順序
先監聽,再啟動數據庫服務
@echo
net start OracleOraDb11g_home1TNSListener
net start OracleServiceORCL
@pause
03.Oracle基本概念
01.表空間
解析:一個數據庫下可以開N個表空間,一個表空間可以包含N個數據文件.表空間是邏輯概念。
02.全局數據庫名
全局數據庫名是為了保證你的數據庫系統中每個數據庫名稱都是唯一的,由數據庫域名加上數據庫名構成;
全局數據庫名=數據庫域名+數據庫名,如福建節點的全局數據庫名是:oradb.fj.orcl
03.模式和用戶可以看成對等的關系。從A模式下切換到B模式。
04.安裝Oracle注意事項
選擇安裝目錄最好是非系統盤
安裝時可以直接創建數據庫(ORCL),也可以選擇不創建
服務器的主機名不能有特殊字符(PC-20070210023):-*()&……等
數據庫安裝完畢,千萬不要更改主機名
Oracle很脆弱,比女人還脆弱。
企業管理器:SQL Server 管理工具
05.啟動、關閉數據庫
OracleService<SID>:數據庫服務
OracleOraDb11g_home1TNSListener :數據庫監聽服務
OracleDBConsole<SID>:企業管理器服務
在Oracle11G中通過如下網址訪問企業管理服務
https://localhost.localdomain:1158/em/console/logon/logon
6.常用數據類型
字符串 Nvarchar2
數字 number
日期和時間 Date
大二進制類型 BLOB
大文本類型 CLOB類型SQL Server中的Text或者是nvarchar(max)
Oracle CHAR,VARCHAR,VARCHAR2類型的區別與使用
區別:
1.CHAR的長度是固定的,而VARCHAR2的長度是可以變化的, 比如,存儲字符串“abc",對於CHAR
(20),表示你存儲的字符將占20個字節(包括17個空字符),而同樣的VARCHAR2
(20)則只占用3個字節的長度,20只是最大值,當你存儲的字符小於20時,按實際長度存儲。
2.CHAR的效率比VARCHAR2的效率稍高。
3.目前VARCHAR是VARCHAR2的同義詞。工業標准的VARCHAR類型可以存儲空字符串,但是oracle不這樣做,盡管它保留以后這樣做的權利。Oracle自己開發了一個數據類型VARCHAR2,這個類型不是一個標准的VARCHAR,它將在數據庫中varchar列可以存儲空字符串的特性改為存儲NULL值。
如果你想有向后兼容的能力,Oracle建議使用VARCHAR2而不是VARCHAR。
何時該用CHAR,何時該用varchar2?
CHAR與VARCHAR2是一對矛盾的統一體,兩者是互補的關系.
VARCHAR2比CHAR節省空間,在效率上比CHAR會稍微差一些,即要想獲得效率,就必須犧牲一定的空間,這也就是我們在數據庫設計上常說的‘以空間換效率’。
VARCHAR2雖然比CHAR節省空間,但是如果一個VARCHAR2列經常被修改,而且每次被修改的數據的長度不同,這會引起‘行遷移’(Row Migration)現象,而這造成多余的I/O,是數據庫設計和調整中要盡力避免的,在這種情況下用CHAR代替VARCHAR2會更好一些。
Oracle中是是根據用戶來隔離表的
默認情況下,當前登錄的用戶只能看到自己創建的表
--創建用戶 create user t14 identified by t14 第一個t14是用戶,第二個t14是密碼 --授權 權限管理 用戶 角色 權限 grant connect,resource to t14 resource:允許創建表;connect:可以連接數據庫 --創建一個表 序列 create table student ( sid number primary key not null, --手工錄入的 sname nvarchar2(32), sage number ) --測試數據 insert into student values(3,'張三2',23); insert into student values(4,'小龍2',24) delete from student where sid=2 select stu.*,rowid,rownum from student stu --如何查詢student表中自然排序(進入表中的先后順序)的第3條記錄? select * from ( select student.*,rownum rn from student ) temp where rn=3 --員工表中獲取薪水從高到低排序的第5-8條記錄 select * from ( select emp.*,rownum rn from ( select * from emp order by sal desc ) emp where rownum<=8 ) temp where rn>=5
9.rownum在內存中構建的是 不斷裂的編號列
rowid: AAAVaO----AAE----AAAAfk----AAA 6:對象號 3:文件號 6:塊編號 3:記錄號(行號)
一個小練習作業:
將自己PC上的Oracle服務公布到局域網。
1:找Oracle安裝目錄----->配置和移植工具------>Net Manager工具,點開的是本地---->監聽程序---->將localhost改成本機IP:如(192.168.16.6)。然后點擊保存網絡配置。
有個小的隱式規則:自動將IP轉成本機的計算機名稱,保存到app/Happy(用戶名)/product/11.2.0/dbhome_1/NETWORK/ADMIN/listener.ora文件的對應的節點處。
下次你打開Net Manager的時候,你會發現Oracle會讀取對應的配置文件,讀出來的是計算機名稱。
2.重新配置監聽
解析:找Oracle安裝目錄----->配置和移植工具------>Net Configuration Assistent---->重新配置監聽
3.關閉本機的防火牆或添加入站規則!