數據庫的基礎知識

數據庫基礎

數據庫的定義

1.DB
DB的全稱是data base,即數據庫的意思。數據庫實際上就是一個文件集合,是一個存儲 數據的倉庫,本質就是一個文件系統,數據庫是按照特定的格式把數據存儲起來,用戶可以對存儲的數據進行增刪改查操作;

2.DBMS
DBMS的全稱是Database Management System,即數據庫管理系統的意思,是一個軟件,用來管理數據庫文件的軟件,用戶可以訪問DBMS對數據進行增刪改查操作,常見DBMS有: MySQL、oracle、DB2、sqlite、sqlserver等

數據庫的分類

1.關係型數據庫: 經過數學理論驗證 可以保存現實生活中的各種關係數據, 數據庫中存儲數據以表爲單位;
2.非關係型數據庫:通常用來解決某些特定的需求如:數據緩存,高併發訪問。 存儲數據的形式有多種,舉例:Redis數據庫:通過鍵值對的形式存儲數據;

主流關係數據

1.MySQL: 08年被sun公司收購09年sun被oracle收購,開源免費,到oracle發佈了5.0版本(使用了oracle核心技術 性能提高30%),因爲Oracle數據庫地位受到威脅,計劃把mysql閉源,原mysql作者們不幹了,原程序員出去單幹,發佈了MariaDB數據庫、名字是因爲作者女兒叫Maria ,市場排名第一;
2.Oracle:閉源、最貴、性能最高,市場排名第二;
3.SQLServer:微軟公司的產品,市場排名第三,主要應用在.net(C#)開發的網站中;
4.DB2:IBM公司有做網站的完整解決方案(操作系統,we服務器(如tomcat),數據庫等)主要應用在銀行等國有大型企業中;
5.sqlite:輕量級數據庫,只有幾十k,一般應用在嵌入式和移動設備中;

二維表

1.二維表介紹
在關係模型中,數據結構表示爲一個二維表,一個關係就是一個二維表(但不是任意一個二維表都能表示一個關係),二維表名就是關係名。表中的第一行通常稱爲屬性名,表中的每一個元組和屬性都是不可再分的,且元組的次序是無關緊要的。
常用的關係術語如下:
記錄 二維表中每一行稱爲一個記錄,或稱爲一個元組。
字段 二維表中每一列稱爲一個字段,或稱爲一個屬性。
域 即屬性的取值範圍。
2.二維表的性質
(1)二維表中元組個數是有限的——元組個數有限性;
(2)二維表中元組均不相同——元組的唯一性;
(3)二維表中元組的次序可以任意交換——元組的次序無關性;
(4)二維表中元組的分量是不可分割的基本數據項——元組分量的原子性;
(5)二維表中屬性名各不相同——屬性名唯一性;
(6)二維表中屬性與次序無關,可任意交換——屬性的次序無關性;
(7)二維表屬性的分量具有與該屬性相同的值域——分量值域的統一性。

數據庫主鍵,外鍵和索引

1.主鍵
定義:唯一標識一條記錄,不能有重複的,不允許爲空
作用:用來保證數據完整性
個數:主鍵只能有一個
2.外鍵
定義:表的外鍵是另一表的主鍵, 外鍵可以有重複的, 可以是空值
作用:用來人其他表格建立練習
個數:主鍵可以具有多個
3.索引
定義:該字段沒有重複值,但可以有一個空值
作用:可以提高查詢排序的數據
個數:一個表可以具有多個唯一索引

數據庫表分類

1.每個表應該只包含關於一個主題的信息
當每個表只包含關於一個主題的信息時,就可以獨立於其他主題來維護該主題的信息。例如,應將教師基本信息保存在“教師”表中。如果將這些基本信息保存在“授課”表中,則在刪除某教師的授課信息,就會將其基本信息一同刪除。
2.表中不應包含重複信息
表間也不應有重複信息 每條信息只保存在一個表中,需要時只在一處進行更新,效率更高。例如,每個學生的姓名、性別等信息,只在“學生”表中保存,而“成績”中不再保存這些信息。

數據庫視圖

  1. 視圖是從一個或幾個基本表(或視圖)中導出的虛擬的表。在系統的數據字典中僅存放了視圖的定義,不存放視圖對應的數據。
    視圖是原始數據庫數據的一種變換,是查看錶中數據的另外一種方式。可以將視圖看成是一個移動的窗口,通過它可以看到感興趣的數據。 視圖是從一個或多個實際表中獲得的,這些表的數據存放在數據庫中。那些用於產生視圖的表叫做該視圖的基表。一個視圖也可以從另一個視圖中產生。
    視圖的定義存在數據庫中,與此定義相關的數據並沒有再存一份於數據庫中。通過視圖看到的數據存放在基表中。
    視圖看上去非常像數據庫的物理表,對它的操作同任何其它的表一樣。當通過視圖修改數據時,實際上是在改變基表中的數據;相反地,基表數據的改變也會自動反映在由基表產生的視圖中。由於邏輯上的原因,有些視圖可以修改對應的基表,而有些則不能(僅僅能查詢)
    2.特性
  • 簡單性。看到的就是需要的。視圖不僅可以簡化用戶對數據的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義爲視圖,從而使得用戶不必爲以後的操作每次指定全部的條件。
  • 安全性。通過視圖用戶只能查詢和修改他們所能見到的數據。數據庫中的其它數據則既看不見也取不到。數據庫授權命令可以使每個用戶對數據庫的檢索限制到特定的數據庫對象上,但不能授權到數據庫特定行和特定的列上。通過視圖,用戶可以被限制在數據的不同子集上:
    使用權限可被限制在基表的行的子集上。
    使用權限可被限制在基表的列的子集上。
    使用權限可被限制在基表的行和列的子集上。
    使用權限可被限制在多個基表的連接所限定的行上。
    使用權限可被限制在基表中的數據的統計彙總上。
    使用權限可被限制在另一視圖的一個子集上,或是一些視圖和基表合併後的子集上。
    視圖的安全性可以防止未授權用戶查看特定的行或列,使用戶只能看到表中特定行的方法如下:
    1 在表中增加一個標誌用戶名的列;
    2 建立視圖,使用戶只能看到標有自己用戶名的行;
    3 把視圖授權給其他用戶。
  • 邏輯數據獨立性。視圖可幫助用戶屏蔽真實表結構變化帶來的影響。
    視圖可以使應用程序和數據庫表在一定程度上獨立。如果沒有視圖,應用一定是建立在表上的。有了視圖之後,程序可以建立在視圖之上,從而程序與數據庫表被視圖分割開來。視圖可以在以下幾個方面使程序與數據獨立:
    1) 如果應用建立在數據庫表上,當數據庫表發生變化時,可以在表上建立視圖,通過視圖屏蔽表的變化,從而應用程序可以不動。
    2) 如果應用建立在數據庫表上,當應用發生變化時,可以在表上建立視圖,通過視圖屏蔽應用的變化,從而使數據庫表不動。
    3) 如果應用建立在視圖上,當數據庫表發生變化時,可以在表上修改視圖,通過視圖屏蔽表的變化,從而應用程序可以不動。
    4) 如果應用建立在視圖上,當應用發生變化時,可以在表上修改視圖,通過視圖屏蔽應用的變化,從而數據庫可以不動。
    3.功能
    安全:有的數據是需要保密的,如果直接把表給出來進行操作會造成泄密,那麼可以通過創建視圖把相應視圖的權限給出來即可保證數據的安全。
    高效:複雜的連接查詢,每次執行時效率比較低,可以考慮新建視圖,每次從視圖中獲取,將會提高效率。
    定製數據:將常用的字段放置在視圖中

參考資料

[1]: [SQL必知必會] https://u18036366.pipipan.com/fs/18036366-300877816
額外的參考資料:
[2]: [MySQL教程] http://www.runoob.com/mysql/mysql-tutorial.html
[3]:虛擬機安裝Linux https://blog.csdn.net/yang5726685/article/details/78635388
[4]:Windows 10下 MySQL https://cloud.tencent.com/developer/article/1010608
[5]:Windows 安裝 MySQL 常見問題 https://blog.csdn.net/qq_40942329/article/details/79125366

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