什么是數(shù)據(jù)庫
DB數(shù)據(jù)庫(Database):用于存儲(chǔ)和管理的數(shù)據(jù)倉庫;
DBMS數(shù)據(jù)庫管理系統(tǒng)(Database Management System):用于科學(xué)的組織和存儲(chǔ)數(shù)據(jù),高效便捷的管理和維護(hù)數(shù)據(jù);
DBAS 數(shù)據(jù)庫應(yīng)用系統(tǒng)(Database Application System)面向最終用戶的應(yīng)用程序;
DBA 數(shù)據(jù)庫管理員(Database Administrator): DBMS的使用者;
DBS數(shù)據(jù)庫系統(tǒng):DB+DBMS+DBAS+DBA+最終用戶構(gòu)成DBS
數(shù)據(jù)的類型分類
關(guān)系型數(shù)據(jù)庫
Oracle、Mysql、PostgreSQL、DB2、Microsoft SQL Server、Microsoft Access
特點(diǎn)與優(yōu)、缺:
? ?特: 關(guān)系型數(shù)據(jù)庫最典型的數(shù)據(jù)結(jié)構(gòu)是表,由二維表及其之間的聯(lián)系所組成的一個(gè)數(shù)據(jù)組織,支持事務(wù)一致特性(多人共享,資源同步)
? ? 優(yōu):表結(jié)構(gòu)易于維護(hù),使用方便(SQL語言)且支持復(fù)雜操作
? ? 缺:讀寫性能差,存儲(chǔ)方式不靈活,固定的表結(jié)構(gòu)
非關(guān)系型數(shù)據(jù)庫、常見:
Redis、Mongodb、Big Table
? ? 特點(diǎn)與優(yōu)、缺:
? ? 特:非關(guān)系型數(shù)據(jù)庫嚴(yán)格說不是一種數(shù)據(jù)庫,而是一種數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)方法的集合,可以是文檔或鍵值對等,不支持事務(wù)一致性(系統(tǒng)程序,資源異步)
? ? 優(yōu):存儲(chǔ)格式靈活,高擴(kuò)展性,讀寫性能高(無需SQL層解析)
? ? 缺:不支持SQL,無事務(wù)處理能力,不支持復(fù)雜查詢
Oracle入門
Oracle數(shù)據(jù)的版本變更及其特點(diǎn):
Oracle 8i、Oracle 9i、Oracle 10g、Oracle 11g、Oracle 12c
I:i代表Internet,8i版本開啟對Internet的支持,所以,在版本號之后,添加了標(biāo)識i
G:g代表Grid網(wǎng)絡(luò),10g加入了網(wǎng)格計(jì)算的功能,因此版本號之后的標(biāo)識使用了字母g
C:c代表云(cloud)計(jì)算設(shè)計(jì),12c版本表示對云計(jì)算的支持
?在所有的關(guān)系型數(shù)據(jù)庫中,存儲(chǔ)數(shù)據(jù)的集合就是磁盤中的文件。Oracle數(shù)據(jù)庫其實(shí)就是一組文件的集合。Oracle數(shù)據(jù)庫分別由三部分組成
1.數(shù)據(jù)文件(.DBF):數(shù)據(jù)文件是一個(gè)二進(jìn)制文件,用來保存數(shù)據(jù)(程序與數(shù)據(jù)庫)Oralce創(chuàng)建表空間的同時(shí)會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)文件
2.控制文件(.CTL):控制文件也是二進(jìn)制文件,記錄數(shù)據(jù)庫的參數(shù)(名稱、數(shù)據(jù)文件存放位置等)一個(gè)控制文件只能屬于一個(gè)數(shù)據(jù)庫
3. 日志文件(.LOG):日志文件在 Oracle 數(shù)據(jù)庫中分為重做日志(Redo Log File)文件和歸檔日志文件兩種。重 做日志文件是 Oracle 數(shù)據(jù)庫正常運(yùn)行不可缺少的文件。重做日志文件主要記錄了數(shù)據(jù)庫操 作過程。用于備份和還原數(shù)據(jù)庫,以達(dá)到數(shù)據(jù)庫的最新狀態(tài)。
Oracle結(jié)構(gòu)及常用操作
Oracle目錄結(jié)構(gòu)和系統(tǒng)用戶:
Oracle 系統(tǒng)用戶
sys 用戶
sys:sys 是 Oracle 中的超級賬戶,擁有的權(quán)限最大??梢酝瓿蓴?shù)據(jù)庫的所有管理任務(wù)。
system 用戶
system:沒有 sys 權(quán)限大,通常用來創(chuàng)建一些用戶查看管理信息的表或視圖。不建議使
用 system 用戶來創(chuàng)建一些與管理無關(guān)的表或者視圖。
二者在登錄時(shí)的區(qū)別
sys 和 system 在登錄 Oracle 時(shí),sys 只能以系統(tǒng)管理員(sysdba)或系統(tǒng)操作員(sysoper)
的權(quán)限登錄,而 system 可以直接登錄(normal)。
scott 用戶
scott:是 oracle 提供的示例用戶,提供了一些學(xué)習(xí) oracle 操作的數(shù)據(jù)表。如:emp、dept、
salgrade、bonus 表
Oracle常見的目錄:
????1.ORACLE_BASE:oracle的根目錄/類似java/src
????2.ORACLE_HOME:oracle安裝目錄/類似Java-home
????3.admin目錄:主要存儲(chǔ)oracle后臺(tái)進(jìn)程產(chǎn)生的相關(guān)文件及數(shù)據(jù)庫管理文件
?????4.oradata目錄:該目錄可用于存儲(chǔ)與恢復(fù)有關(guān)的文件,如控制文件、聯(lián)機(jī)重做日志副本、歸檔日志、閃回日志以及Oracle數(shù)據(jù)庫恢復(fù)管理器(RMAN)備份等
Oracle 的啟動(dòng)與關(guān)閉
Oracle 啟動(dòng)
Oracle 是通過系統(tǒng)的服務(wù)來啟動(dòng)的。
OracleServiceORCL(必須啟動(dòng))
OracleServiceORCL:數(shù)據(jù)庫服務(wù)(數(shù)據(jù)庫實(shí)例),是 Oracle 核心服務(wù)該服務(wù)是數(shù)據(jù)庫啟動(dòng)的基礎(chǔ),只有該服務(wù)啟動(dòng),Oracle 數(shù)據(jù)庫才能正常啟動(dòng)。
OracleOraDb11g_home1TNSListener(必須啟動(dòng))
OracleOraDb11g_home1TNSListener:監(jiān)聽器服務(wù),服務(wù)只有在數(shù)據(jù)庫需要遠(yuǎn)程訪問的時(shí)候或者使用 PL/SQL Developer 等第三方工具時(shí)才需要。
Oracle ORCL VSS Writer Service(非必須啟動(dòng))
Oracle ORCL VSS Writer Service:Oracle 卷映射拷貝寫入服務(wù),VSS(Volume Shadow CopyService)能夠讓存儲(chǔ)基礎(chǔ)設(shè)備(比如磁盤,陣列等)創(chuàng)建高保真的時(shí)間點(diǎn)映像,即映射拷貝(shadow copy)。它可以在多卷或者單個(gè)卷上創(chuàng)建映射拷貝,同時(shí)不會(huì)影響到系統(tǒng)的系統(tǒng)能。
OracleDBConsoleorcl(非必須啟動(dòng))
OracleDBConsoleorcl:Oracle 數(shù)據(jù)庫控制臺(tái)服務(wù),orcl 是 Oracle 的實(shí)例標(biāo)識,默認(rèn)的實(shí)例為 orcl。在運(yùn)行 Enterprise Manager(企業(yè)管理器 OEM)的時(shí)候,需要啟動(dòng)這個(gè)服務(wù)。
OracleJobSchedulerORCL(非必須啟動(dòng))
OracleJobSchedulerORCL:Oracle 作業(yè)調(diào)度(定時(shí)器)服務(wù),ORCL 是 Oracle 實(shí)例標(biāo)識。
OracleMTSRecoveryService(非必須啟動(dòng))
OracleMTSRecoveryService:服務(wù)端控制。該服務(wù)允許數(shù)據(jù)庫充當(dāng)一個(gè)微軟事務(wù)服務(wù)器MTS、COM/COM+對象和分布式環(huán)境下的事務(wù)的資源管理器。
Oracle 關(guān)閉
關(guān)閉 Oracle 只需要將服務(wù)停止即可。
Oracle 的常用客戶端:
1.自帶的SQL Plus(小黑框)
使用SQL Plus連接Oracle:
????Win+R,打開運(yùn)行,輸入sqlplus進(jìn)入小黑框,
????輸入system回車,然后輸入密碼回車,OK

2.PLSQL Developer(可視化窗口)

常用的命令:
????進(jìn)入SQL:輸入用戶名(自己創(chuàng)建的用戶或系統(tǒng)默認(rèn))回車輸入密碼(自己設(shè)置或默認(rèn))
????創(chuàng)建用戶:create user bjsxt(用戶名) identified bybjsxt(密碼);
? ? 刪除用戶:drop user (要?jiǎng)h除的用戶名) cascade;
????給用戶授權(quán):
????grant connect(角色名稱/權(quán)限),resource(角色名稱/權(quán)限) to bjsxt(用戶名稱);
????撤銷用戶權(quán)限:
????revoke resource(角色或權(quán)限) from bjsxt(用戶名稱);
????開啟數(shù)據(jù)庫:startup
????關(guān)閉數(shù)據(jù)庫:shutdown immediate;
????查看用戶列表:
????1.首先進(jìn)入SQL
????2.查看所有用戶:select username from dba_users;或者select * from all_users;

數(shù)據(jù)庫中的表關(guān)系
表關(guān)系的概念:
? ? 設(shè)計(jì)關(guān)系數(shù)據(jù)庫的一個(gè)重要部分是將數(shù)據(jù)元素劃分為相關(guān)的表,我們可以根據(jù)數(shù)據(jù)本身的關(guān)聯(lián)性,將不同表之間的數(shù)據(jù)聚合在一起.
? ? 但,無論在表與表之間建立了什么樣的關(guān)系,決定數(shù)據(jù)指點(diǎn)是否有關(guān)系的不是表,而是數(shù)據(jù)本身
表與表之間一般存在三種關(guān)系:
1.一對多關(guān)系,即一個(gè)表中的一條數(shù)據(jù)可以對應(yīng)另一個(gè)表中的多條數(shù)據(jù)
? ? ? ? 注意:一對多是為了處理數(shù)據(jù)的冗余,外鍵永遠(yuǎn)在多方,再引用關(guān)聯(lián)到一方的主鍵。

2.一對一關(guān)系:特殊的一對多關(guān)系,外鍵可以在任意一方,只需要把外鍵加上唯一約束

?3.多對多關(guān)系:可以看成兩個(gè)一對多關(guān)系的組合,所以就需要一個(gè)中間表,來建立兩個(gè)列作為這兩個(gè)多方的聯(lián)合主鍵,然后每個(gè)列再作為外鍵參照各多方的主鍵
