資料庫中的基本概念

來源:互聯網
上載者:User

標籤:

在同一個資料集合中,不同的選擇條件對應了不同的輸出結果,資料庫就是這樣一種按資料結構來組織、儲存和管理資料的倉庫。程式或使用者可以通過它來進行資料的訪問與修改,它是資料存放區的靈魂。

資料管理經曆了人工管理、檔案系統到資料庫系統3個階段。資料庫是具有邏輯關係和確定意義的資料結合,它能克服傳統檔案組織所產生的一系列問題,資料冗餘小,由於關係型資料庫管理系統對於資訊查詢具有很大的靈活性,並且設計簡單,所以已經被廣泛使用在了實際的系統開發中。

  • 關聯式資料庫系統與檔案資料庫系統區別
  • SQL語言的功能有哪些
  • 內串連與外串連有什麼區別
  • 什麼是事務
  • 什麼是預存程序它與函數有什麼區別於聯絡
  • 什麼是主鍵什麼是外鍵
  • 什麼是死結
  • 什麼是共用鎖定什麼是互斥鎖
  • 一二三四範式有何區別
  • CHECK約束
  • 視圖

關聯式資料庫系統與檔案資料庫系統區別

關聯式資料庫(relational database)是一個被組織成一組正式描述的表格的資料項目的集合,這些表格中的資料能以不同的方式被存取或重新召集而不需要重新組織資料庫表格,它對應於一個關聯式模式中的所有關係的集合。例如,教師、學生、課程這些關係以及關係間的聯絡就組成了一個教務系統。檔案資料庫系統是對檔案的操作,包括儲存、查詢等。

關聯式資料庫系統與檔案資料庫系統的區別如下:
(1)關聯式資料庫系統的主要特徵是資料的結構化,而檔案資料庫系統是資料的非結構化
(2)關聯式資料庫中,使用者看到的邏輯結構是二維表,而檔案資料庫系統中,基本元素是檔案。
(3)檔案資料庫系統可以實現多媒體檔案管理,支援C/S工作模式

SQL語言的功能有哪些

SQL是結構化查詢語言 (SQL)( Structured Query Language)的縮寫,其功能包括資料查詢、資料操作、資料定義和資料控制4個部分。

資料查詢是資料庫中最常見的操作,select語句得到所需的資訊。SQL語言的資料操作結構(Data Manipulation Language,DML)主要包括插入資料、修改資料及刪除資料3種語句。SQL語言使用資料定義語言 (Data Definition Language)(Data Definition Language,DDL)實現資料定義功能,可對資料庫使用者、基本表、視圖、索引進行定義與撤銷。資料控制語句(Data Control Language,DCL)用於對資料庫進行統一的控制管理,保證資料在多使用者共用的情況下能夠安全。

基本的SQL語句有 select、insert、update、delete、create、drop、grant、revoke等

例如,設教務管理系統中有3個基本表:
學生資訊表 S(SNO,SNAME,AGE,SEX),其屬性分別表示學號、姓名、年齡和性別

選課資訊表 SC(SNO, CNO, SCGRADE),其屬性分別表示學號、課程號和成績

課程資訊表 C(CNO,CNAME,CTEACHER),其屬性分別表示課程號、課程名稱和任課老師姓名。

(1) 把SC表中每門課程的平均成績插入到另外一個已經存在的表 SC_C( CNO,CNAME,AVG_GRADE)中牟其中 AVG_GRADE表示的是每門課程的平均成績。

insert into SC_C( CNO, CNAME,AVG_GRADE)select SC.CNO, C.NAME, AVG(SCGRADE) FROM SC, C where SC.CNO = C.CNO

(2)從SC表中把何昊老師的女學生選課記錄刪除

delete from SC,S,C where SC.SNO=S.SNO AND SC.CNO = C.CNO  AND S.SEX = ‘女’ AND C.CTEACHEAR = ‘何昊’

(3)規定女同學選修何昊老師的課程成績都應該在80分以上(包含80分)

alter table SC,S,C add constrant GRADE CHECK( GRADE>80 )where SC.CNO = C.CNO and SC.SNO = S.SNO AND C.CTEACHER = ‘何昊‘

(4)找出沒有選修過‘何昊’老師講授課程的所有學生姓名

SELECT SNAME FROM SWHERE NOT EXISTS( SELECT * FROM SC,C WHERE SC.CNO= C.CNO AND CNAME = ‘何昊‘ AND SC.SNO = S.SNO )

(5)列出有兩門以上(含兩門)不及格課程(成績小於60)的學生姓名及其平均成績

SELECT S.SNO,S.SNAME,AVG_SCGRADE = AVG(SC.SCGRADE)FROM S,SC,( SELECT SNO FROM SC WHERE SCGRADE<60 GROUP BY SNO HACING COUNT(DISTINCT CNO)>=2)A WHERE S.SNO = A.SNO AND SC.SNO = A.SNO GROUP BY S.SNO,S.SNAME
內串連與外串連有什麼區別

內串連也稱為自然串連,只有兩個表相匹配的行才能在結果集中出現。返回的結果集是兩個表中所有相匹配的資料,而捨棄不匹配的資料。由於內串連是從結果表中刪除與其他串連表中沒有匹配行的所有行,所以內串連可能會造成資訊的丟失

內串連是保證兩個表中所有的行都要滿足串連條件,而外串連則不然。與內串連不同,外串連不僅包含符合串連條件的行,而且還包括左表(左外串連時)、右表(右外串連時)或兩個邊接表(全外串連)中的所有資料行。也就是說,只限制其中一個表的行,而不限制另一個表的行。
SQL的外串連共有3種類型:左外串連,關鍵字為LEFT OUTER JOIN;右外串連,關鍵字為RIGHT OUTER JOIN;全外串連,關鍵字為FULL OUTER JOIN。外串連的用法和內串連一樣,只是將INNER JOIN關鍵字替換為相應的外串連關鍵字即可。

什麼是事務

事務是資料庫中一個單獨的執行單元(unit),它通常由進階資料庫操作語言(如SQL)或程式設計語言(如C++、Java等)書寫的使用者程式的執行所引起。當在資料庫中更改資料成功時,在事務中更改的資料便會提交,不再改變。否則,事務就取消或者復原,更改無效。(p243)

事務必須滿足4個屬性,即原子性(atomicity)、一致性(consistency)、隔離性(isolation)、持久性(durability),即ACID 4種屬性。

(1)原子性。事務是一個不可分割的整體,為了保證事務的總體目標,事務必須具有原子性,即當資料修改時,要麼全執行,要麼全都不執行。。。原子性要求事務必須被完整執行
(2)一致性。一個事務執行之前和執行之後資料庫資料必須保持一致性狀態。資料庫的一致性狀態應該滿足模式所指定的約束,那麼在完整執行該事務後資料庫仍然處於一致性狀態。為了維護所有資料的完整性,在關係型資料庫中,所有的規則必須應用到事務的修改上。資料庫的一致性狀態由使用者來賦值,由並發控制機制實現。例如,銀行轉賬,轉賬前後兩個賬戶金額之和應保持不變。由並行作業帶來的資料不一致性包括遺失資料修改、讀“髒”資料、不可重複讀取和產生幽靈資料。
(3)隔離性。 隔離性也被稱為獨立性,當兩個或多個事務並發執行時,為了保證資料的安全性,將一個事務內部的操作與事務的操作隔離起來,不被其他進行中的事務看到。
(4)持久性。持久性也被稱為永久性,事務完成以後,DBMS保證它對資料庫中的資料的修改是永久性的,當系統或截止發生故障時,該修改也永久保持。持久性一般通過Database Backup與恢複來保證。

一般情況下,通過執行COMMIT或ROLLBACK語句來終止事務,當執行COMMIT語句時,自從事務啟動以來對資料庫所做的一切更改就成為永久性的了,即被寫入到磁碟;而當執行ROLLBACK語句時,自事務啟動以來對資料庫所做的一切更改都會被撤銷,並且資料庫中的內容返回到事務開始之前所處的狀態。無論什麼情況,在事務完成時,都能保證回到一致狀態。

什麼是預存程序?它與函數有什麼區別於聯絡

SQL語句執行的時候要先編譯,然後再被執行。在大型資料庫系統中,為了提高效率,將為了完成特定功能的SQL語句集進行編譯最佳化後,儲存在資料庫伺服器中,使用者通過指定預存程序的名字來調用執行。

預存程序不等於函數,兩者雖然本質上沒有區別,但具體而言有一下幾個方面的區別:
(1)預存程序一般是作為一個獨立的部分來執行的,而函數可以作為查詢語句的一個部分來調用。由於函數可以返回一個對象,因此它可以在查詢語句中位於from關鍵字的後面。
(2)一般而言,預存程序實現的功能較複雜,而函數實現的功能針對性比較強
(3)函數需要用括弧包住輸入的參數,且只能返回一個值或表對象,預存程序可以返回多個參數
(4)函數可以嵌入在SQL總使用,可以在select中調用,預存程序不行。
(5)函數不能直接操作實體表,只能操作內建表
(6)預存程序再建立時即在伺服器上進行了編譯,執行速度更快。

什麼是主鍵?什麼是外鍵

主鍵也稱為主碼,是資料庫中的一個或多個欄位,是表中記錄的唯一標示符。主鍵不可為空。一個表中只能有一個主鍵,主鍵列不一定只有一列,可以是多列。 主鍵可以唯一地標識一行。

主鍵需遵循以下原則:
(1)主鍵對使用者而言沒有意義
(2)主鍵不可為空
(3)主鍵保持不變。因為主鍵的用途是唯一地標示一行資料
(4)主鍵不應包含動態變化的時間戳記
(5)主鍵原則上應當由電腦自動產生,而非使用者指定。

外鍵也稱為外碼,標示的是兩個關係之間的聯絡。當公用關鍵字在一個關係中為主鍵時,這個公用關鍵字被稱為另外一個關係的外鍵。
一個表可以有多個外鍵,也可以為空白

什麼是死結

在OS中有若干程式並發執行,它們不斷地申請、釋放資源,在此過程中,由於爭奪資源而處於無限期的等待狀態,造成程式無法繼續執行,若無外力作用,它們都將無法推進下去,這時稱系統處於死結狀態或系統產生了死結。此時便只能通過外力來打破這種狀態。

產生死結的原因有以下3點。
(1)系統資源不足,在系統中常有多個進程共用資源的情況,如印表機,這些資源在同一時刻只能被一個進程使用。
(2)進程啟動並執行推進順序不對,進程在運行中具有非同步性,當進程推進順序不當時,便產生死結。
(3)資源分派不當,如果系統資源充足,進程的資源請求都能得到滿足,死結的可能性會被大大降低,而進程推進順序與速度不同,也可能會產生死結。

產生死結的4個必要條件:
(1)互斥,每個資源每次只能被一個進程使用
(2)請求與保持等待,一個進程因請求資源而被阻塞時,對已獲得的資源保持不放
(3)不可剝奪,進程已獲得的資源,在未使用完之前,不能強制剝奪
(4)環路等待,若干進程之間形成首尾相接的等待資源關係。

So,為了預防死結,就要打破產生死結的4個條件中的一個或多個,因此需要最大限度地增加系統資源,合理地安排進程的順序並確定合理的分配資源的演算法。

避免死結是在資源的動態燈泡過程中,採取有效方法防止系統進入不安全狀態,達到預防死結的目的,其中最具代表性的方法就是銀行家演算法。

什麼是共用鎖定?什麼是互斥鎖

在資料庫中,鎖主要是對資料進行讀/寫的一種保護機制,從資料庫系統的角度來看,一般可以將鎖分為共用鎖定和互斥鎖。

共用鎖定簡稱S鎖,也叫讀鎖。用於不更改或不更新資料的操作(唯讀),如select語句。如果事務T對資料A加上共用鎖定後,則其他事務只能對A再加共用鎖定,不能加互斥鎖。共用鎖定可阻止其他並發啟動並執行程式擷取重疊的獨佔鎖定,但是允許該程式擷取重疊的共用鎖定定。其他使用者可以擷取共用鎖定鎖定資源,但是不能進行修改該共用鎖定。在執行select命令時,sql server通常會對對象進行共用鎖定定。 共用鎖定又稱為讀鎖。通常加共用鎖定的資料頁被讀取完畢後,共用鎖定就會立即被釋放。

互斥鎖簡稱X鎖,也叫排它鎖,用於資料修改操作,如insert、update或delete。確保不會同時對同一資源進行多重更新。為了保證資料操作的完整性,引入了互斥鎖。用互斥鎖來保證在任意時刻,只能有一個線程訪問對象。若事務T對資料D加X鎖,則其他任何事務都不能再對D加任何類型的鎖,直至T釋放D上的X鎖;一般要求在修改資料前要向該資料加互斥鎖,所以互斥鎖又稱為寫鎖。
對於鎖的使用,有一定的限制,需要遵守兩個事項:
A、先鎖後操作
B、事務結束之後必須解鎖

一二三四範式有何區別

正確地進行表的設計稱為“資料庫正常化”,它的目的就是減少資料庫中的資料冗餘,從而增加資料的一致性。

範式是在識別資料庫中的資料元素、關係,以及定義所需的表和各表中的項目這些初始工作之後的一個細化的過程。常見的範式有1NF、2NF、3NF、BCNF、以及4NF。

1NF,第一範式。第一範式是指資料庫表中的每一列都是不可分割的基本資料項目,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,就可能需要定義一個新的實體,新的實體由重複的屬性構成,新實體與原實體之間為一對多的關係。第一範式的模式要求屬性值不可再分裂成更小部分,即屬性項不能是屬性群組合或有組屬性群組成。
簡而言之,第一範式就是無重複的列



CHECK約束

CHECK約束是指限制表中某一列或某些列中可接受的資料值或資料格式,它用於限制列的取值範圍,使用形式為:CHECK(約束運算式)。如果是對單列定義CHECK約束,那麼該列只允許特定的值;如果是對一個表定義CHECK約束,那麼此約束會在特定的列中對值進行限制。例如,對於一個員工資訊表,給員工的年齡屬性添加了一個約束,即年齡必須大於0且小於等於120,那麼使用者在輸入年齡的時候,就必須遵守該約束,輸入負數或者121就無法輸入

視圖

視圖是由從資料庫的基本表中選取出來的資料群組成的邏輯視窗,不同於基本表。它是一個虛表,在資料庫中,存放的只是視圖的定義而已,不存放視圖包含的資料項目,這些項目仍然存放在原來的基本表結構中。

視圖的作用:
(1)可以簡化資料查詢語句
(2)可以使使用者能從多角度看待同一資料
(3)通過引入視圖,可以提高資料的安全性
(4)視圖提供了一定程度的邏輯獨立性。

資料庫中的基本概念

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.