1. 程式人生 > >牛客網專項練習-資料庫

牛客網專項練習-資料庫

資料庫

資料庫管理系統應該具備的功能:
資料庫定義
資料庫操縱
資料庫查詢
資料庫控制
資料庫管理
資料庫通訊(可選,在分散式和網路環境中必須提供)

正規化
1NF : 屬性是原子性的,即不可拆分的;例如姓名這個屬性是一般不可拆分的;而社會保險號如果是由出生年月日與姓名縮寫構成的話,就是可拆分的:包含可拆分的含義:出生年月日,姓名; 是否可拆分取決於對含義的解釋;
2NF:解決了非主鍵屬性對主鍵屬性的部分依賴;如表(A, B, C, D),其中ABCD代表屬性,假設(A, B)是主鍵,若C只依賴於B,則這個表是不符合2NF的,可拆分為(A, B, D)與 (B, C)兩張表;很明顯,如果主鍵只有一個屬性,那麼肯定是2NF
3NF:解決了非主鍵屬性對主鍵屬性的傳遞依賴;如表(A,B,C,D),如果主鍵是A, 而B依賴於A,C依賴於B,則這個表有傳遞依賴,是不符合3NF的;
正規化的目的是為了減少/消除冗餘;

資料庫常見的四種故障
(1)事務內部的故障:事務內部故障可分為預期的和非預期的,其中大部分的故障都是非預期的。預期的事務內部故障是指可以通過事務程式本身發現的事務內部故障; 非預期的事務內部故障是不能由事務程式處理的,如運算溢位故障、併發事務死鎖故障、違反了某些完整性限制而導致的故障等。
(2)系統故障:系統故障也稱為軟故障,是指資料庫在執行過程中,由於硬體故障、資料庫軟體及作業系統的漏洞、突然停電燈情況,導致系統停止運轉,所有正在執行的事務以非正常方式終止,需要系統重新啟動的一類故障。這類事務不破壞資料庫,但是影響正在執行的所有事務。
(3)介質故障:介質故障也稱為硬故障,主要指資料庫在執行過程中,由於磁頭碰撞、磁碟損壞、強磁干擾、天災人禍等情況,使得資料庫中的資料部分或全部丟失的一類故障。
(4)計算機病毒故障:計算機病毒故障是一種惡意的計算機程式,它可以像病毒一樣繁殖和傳播,在對計算機系統造成破壞的同時也可能對資料庫系統造成破壞(破壞方式以資料庫檔案為主) 。
資料模型的組成要素

有:
1.資料結構,描述資料庫的組成物件以及物件之間的聯絡,資料結構是所描述的物件型別的集合,是對系統靜態特徵的描述
2.資料操作,是指對資料庫中各種物件的例項允許執行的操作的集合,主要有查詢和更新。
3.資料的完整性約束條件,是一組完整性規則的集合。完整性規則是給定的資料模型中資料及其聯絡所具有的之約和依存規則,用以限定符合資料模型的資料庫狀態以及狀態的變化,以保證資料的正確、有效、相容。

專門的關係運算包括投影、選擇和連線。選擇運算是從關係中找出滿足給定條件的那些元組,這種運算是從水平方向抽取元組投影運算是從關係模式中挑選若干屬性組成新的關係,這是從列的角度進行的運算,相當於對關係進行垂直分解;連線運算是將兩個關係拼接成一個新的關係,生成的新關係中包含滿足條件的元組。在一個關係中要找出滿足指定條件的元組組成新關係的操作屬於選擇運算。

更新表 alter table 【最常用的就是定義外來鍵】
// alter table vendors add vend_phone char(20);
//alter table vendors drop column vend_phone;
// alter table stu change stu_name stunames char(2);
//alter table orderitems add constraint fk_orderitems_orders foreign key(order_num) references orders(order_num);
刪除表 drop table tname; // 刪除的是整個表,刪除表沒有確認,也不能撤銷,
重命名錶 rename table tname1 to tname2 , tname3 to tname4;
// 表的重新命名,可以多個同時重新命名。

事務四大特性(簡稱ACID)
1、原子性(Atomicity):事務中的全部操作在資料庫中是不可分割的,要麼全部完成,要麼均不執行。
2、一致性(Consistency):幾個並行執行的事務,其執行結果必須與按某一順序序列執行的結果相一致。
3、隔離性(Isolation):事務的執行不受其他事務的干擾,事務執行的中間結果對其他事務必須是透明的。
4、永續性(Durability):對於任意已提交事務,系統必須保證該事務對資料庫的改變不被丟失,即使資料庫出現故障。

索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊。update,delete,insert這些操作,改變資料庫的內容,需要維護索引.

網狀模型屬於資料庫的邏輯資料模型。邏輯資料模型主要有以下幾種: 1.層次模型(格式化模型):有且僅有一個節點無父節點,此節點為根節點,其他節點有且僅有一個父節點。 2.網狀模型(格式化模型):允許有一個以上的無雙親的節點,一個節點可以有多於一個的雙親。 3.關係模型:單一的資料模型——關係 4.面向物件資料模型:把實體表示成類,一個類表示實體屬性和實體行為,分為分類,概括,聚集,聯合四類。 5.物件關係資料模型 6.半結構化模型

左外連線的結果集包括 LEFT OUTER 子句中指定的左表的所有行,而不僅僅是連線列所匹配的行
右外連線是左向外連線的反向連線。將返回右表的所有行
全外連線返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的資料值。
內連線使用比較運算子根據每個表共有的列的值匹配兩個表中的行

外模式是使用者與資料庫的介面,是應用程式可見到的資料描述,概念模式是對資料整體的邏輯結構的描述,而內模式描述了資料的物理結構。

Q:定義學生、教師和課程的關係模式S (S#,Sn,Sd,Dc,SA)(其屬性分別為學號、姓名、所在系、所在系的系主任、年齡); C(C#,Cn,P#)(其屬性分別為課程號、課程名、先修課);SC(S#,C#,G)(其屬性分別為學號、課程號和成績)。包含對非主屬性部分依賴的關係是(S(S#,Sn,Sd,Dc,SA))
A:學號—>姓名,學號—>系名,系名—>系主任,(學號,課名)->分數
碼:(學號、課名)
主屬性:學號,課名
非主屬性:姓名,系名,系主任,分數
對於(學號、課名)->姓名,非主屬性姓名對碼的部分函式依賴;
對於(學號、課名)->系名,非主屬性系名對碼的部分函式依賴;
不符合2NF的要求。

對於(學號、課名)->系名,系名->系主任,非主屬性系主任對碼的傳遞函式依賴;
也不符合3NF的要求。

A:在進行資料庫邏輯設計時,可將 E-R 圖中的屬性表示為關係模式的屬性,實體表示為元組,實體集表示為關係,聯絡表示為關係。故正確答案為 A 。

A:併發操作可能帶來的資料不一致不包括 (死鎖 )。
A:3NF(消除主屬性對碼的部分和傳遞函式依賴)規範化為BCNF。
A:在資料庫與宿主語言之間傳遞資訊是通過(區域性變數)
A:
一個表的 主鍵 只能有一個,而唯一索引可以建多個
主鍵可以作為其它表的外來鍵。
主鍵不可為null,唯一索引可以多個數據為null。
A:
不屬於資料模型所描述的內容是 資料查詢_
A:
SQL 語言具有(資料定義、資料操縱、資料控制 )的功能。
A: sql server中刪除約束的語句是:
alter table 表名 drop constraint 約束名

A:資料庫的基本特點是( )。

(1)資料可以共享(或資料結構化) (2)資料獨立性
(3)資料冗餘小,易擴充 (4)統一管理和控制
A:各分E-R圖之間的衝突主要有三類:屬性衝突、命名衝突和結構衝突。
A:資料庫的網狀模型應滿足的條件是 (允許一個以上結點無雙親,也允許一個結點有多個雙親 ) 。

Q:對於滿足SQL92標準的SQL語句:SELECT foo,count(foo) FROM pokes WHERE foo>10 GROUP BY foo HAVING ORDER BY foo,其執行的順序應該為( )
A:標準的 SQL 的解析順序為:
(1)FROM 子句, 組裝來自不同資料來源的資料
(2)WHERE 子句, 基於指定的條件對記錄進行篩選
(3)GROUP BY 子句, 將資料劃分為多個分組
(4)使用聚合函式進行計算
(6)計算Select所有的表示式
(7)使用 ORDER BY 對結果集進行排序
//可以按照基本邏輯思路來理解:一步步縮減範圍,再在所選範圍中計算結果,處理計算出的結果。
1,先確定大範圍,選擇表,也即是from;
2,再一步步縮減範圍,從表中確定符合條件的範圍,用where,再group by,再having;
3,確定最終範圍後,在範圍中進行計算題目要求計算的數,用select;
4,計算之後,對計算結果進行排序,用order by。

A:系統軟體,主要指用來執行或控制硬體所開發的計算機軟體,如作業系統、直譯器、編譯器、資料庫管理系統、公用程式等面向開發者的軟體。

A:模式/內模式映像定義通常包含在模式描述中。當資料庫的儲存裝置和儲存方法發生變化時,資料庫管理員對模式/內模式映像要做相應的改變,使模式保持不變,從而應用程式也不變,保證了資料與程式的物理獨立性,簡稱為資料的物理獨立性。

A:物理獨立性是指使用者的應用程式與儲存在磁碟上的資料庫中資料是相互獨立的。即,資料在磁碟上怎樣儲存由DBMS管理,使用者程式不需要了解,應用程式要處理的只是資料的邏輯結構,這樣當資料的物理儲存改變了,應用程式不用改變。
邏輯獨立性是指使用者的應用程式與資料庫的邏輯結構是相互獨立的,即,當資料的邏輯結構改變時,使用者程式也可以不變。
資料庫系統的資料可以為多個程式服務,程式也可以呼叫多個數據庫中資料,這就是資料和程式的獨立性。

A:
DROP TABLE — 從資料庫中刪除一個表
SQL92 為 DROP TABLE 聲明瞭一些附加的功能:
RESTRICT
確保只有不存在相關檢視或完整性約束的表才可以被刪除.
CASCADE
任何引用的檢視或完整性約束都將被刪除

A:
如需在表中新增列,請使用下列語法:
ALTER TABLE table_name
ADD column_name datatype
要刪除表中的列,請使用下列語法:
ALTER TABLE table_name
DROP COLUMN column_name

A:DBS是採用了資料庫技術的計算機系統。DBS是一個集合體,包含資料庫、計算機軟硬體、應用程式和( 資料庫管理員 )。

A:設關係R和S的屬性個數分別為r和s,則(R×S)操作結果的屬性個數為( r+s)。
[分析] 設關係R和關係S的元素分別是r和s,定義R和S的笛卡爾積是一個(r+s)元組的集合,每一個元組前r個分量來自R的一個元組,後s個分量來自S的一個元組。
A:概念模式是模式.

A:SQL 子查詢是 一個 SELECT 查詢,它返回單個值且巢狀在 SELECT、INSERT、UPDATE、DELETE 語句或其它子查詢中。任何允許使用表示式的地方都可以使用子查詢。當一個查詢是另一個查詢的條件時,稱之為子查詢。 子查詢可以使用幾個簡單命令構造功能強大的複合命令。 子查詢最常用於SELECT-SQL命令的WHERE子句中

A:以下關於實體的描述中,錯誤的是( 實體靠聯絡來描述 )。
在SQL Server中,實體是指客觀存在並且相互區別的事物。實體可以是人,也可是物,可以是實際的物件,也可以是抽象的概念。可以是事物本身,也可以指事物之間的聯絡。如一個學生,一門課,學生的一次選課,老師與系的工作關係等。
一個實體由若干個屬性來刻畫。屬性是相對實體而言的,是實體所具有特性。如學生實體可以由學號、姓名、性別等屬性組成。這些屬性組合起來來表徵一個學生。
此外,也有關鍵字,域,實體型等。還有實體之間的聯絡,如一對一,一對多,多對多。
所以實體不單單是靠聯絡來描述

A:外模式就是View
(外模式 ) 是使用者可以看見和使用的區域性資料的邏輯結構和特徵的描述。
三級模式結構:外模式、模式和內模式

一、模式(Schema)

定義:也稱邏輯模式,是資料庫中全體資料的邏輯結構和特徵的描述,是所有使用者的公共資料檢視。

理解:

① 一個數據庫只有一個模式;

② 是資料庫資料在邏輯級上的檢視;

③ 資料庫模式以某一種資料模型為基礎;

④ 定義模式時不僅要定義資料的邏輯結構(如資料記錄由哪些資料項構成,資料項
的名字、型別、取值範圍等),而且要定義與資料有關的安全性、完整性要求,定義這
些資料之間的聯絡。

二、外模式(External Schema)

定義:也稱子模式(Subschema)或使用者模式,是資料庫使用者(包括應用程式設計師和最終
使用者)能夠看見和使用的區域性資料的邏輯結構和特徵的描述,是資料庫使用者的資料檢視,是與某一應用有關的資料的邏輯表示。

理解:

① 一個數據庫可以有多個外模式;

② 外模式就是使用者檢視;

③ 外模式是保證資料安全性的一個有力措施。

三、內模式(Internal Schema)

定義:也稱儲存模式(Storage Schema),它是資料物理結構和儲存方式的描述,是資料在資料庫內部的表示方式(例如,記錄的儲存方式是順序儲存、按照B樹結構儲存還是按hash方法儲存;索引按照什麼方式組織;資料是否壓縮儲存,是否加密;資料的儲存 記錄結構有何規定)。

理解:

① 一個數據庫只有一個內模式;

② 一個表可能由多個檔案組成,如:資料檔案、索引檔案。

它是資料庫管理系統(DBMS)對資料庫中資料進行有效組織和管理的方法

其目的有:

① 為了減少資料冗餘,實現資料共享;

② 為了提高存取效率,改善效能。

A:
資料庫邏輯設計的主要任務是( 建立資料庫說明 )。
邏輯結構設計:
1.E-R圖向關係模型的轉化
2.資料模型的優化
3.設計使用者子模式

A:索引的使用限制場合:
1、使用不等於操作符(<>, !=)
2、使用 is null 或 is not null
3、使用函式
4、比較不匹配的資料型別

Q:關於PreparedStatement與Statement描述錯誤的是(Statement執行掃描的結果集比PreparedStatement大)
A:

Statement statement = conn.createStatement();
PreparedStatement preStatement = conn.prepareStatement(sql);
執行的時候: 
ResultSet rSet = statement.executeQuery(sql);
ResultSet pSet = preStatement.executeQuery();

由上可以看出,PreparedStatement有預編譯的過程,已經繫結sql,之後無論執行多少遍,都不會再去進行編譯,
而 statement 不同,如果執行多變,則相應的就要編譯多少遍sql,所以從這點看,preStatement 的效率會比 Statement要高一些.statement cost:95 preStatement cost:90
statement cost:100 preStatement cost:89
statement cost:92 preStatement cost:86
當然,這個也會跟資料庫的支援有關係,http://lucaslee.iteye.com/blog/49292 這篇帖子有說明
雖然沒有更詳細的測試 各種資料庫, 但是就資料庫發展 版本越高,資料庫對 preStatement的支援會越來越好,
所以總體而言, 驗證 preStatement 的效率 比 Statement 的效率高
2>安全性問題
這個就不多說了,preStatement是預編譯的,所以可以有效的防止 SQL注入等問題
所以 preStatement 的安全性 比 Statement 高
3>程式碼的可讀性 和 可維護性
這點也不用多說了,你看老程式碼的時候 會深有體會
preStatement更勝一籌.

1.PreparedStatement 介面繼承 Statement , PreparedStatement 例項包含已編譯的 SQL 語句,所以其執行速度要快於 Statement 物件。
2 .作為 Statement 的子類, PreparedStatement 繼承了 Statement 的所有功能。三種方法 execute 、 executeQuery 和 executeUpdate 已被更改以使之不再需要引數
3.在 JDBC 應用中 , 如果你已經是稍有水平開發者 , 你就應該始終以 PreparedStatement 代替Statement. 也就是說 , 在任何時候都不要使用 Statement.

內模式也稱為儲存模式/物理模式,一個數據庫只有一個內模式,他是資料庫物理結構和儲存方式的描述,是資料在資料庫內部的組織方式。

資料庫三模式: 1.概念模式,也稱作模式。 2.外模式,也稱作邏輯模式。 3.內模式,也稱作物理模式儲存模式

定義:
主鍵 – 唯一標識一條記錄,不能有重複的,不允許為空
外來鍵 – 表的外來鍵是另一表的主鍵 , 外來鍵可以有重複的 , 可以是空值
索引 – 該欄位沒有重複值,但可以有一個空值
作用:
主鍵 – 用來保證資料完整性
外來鍵 – 用來和其他表建立聯絡用的
索引 – 是提高查詢排序的速度
個數:
主鍵 – 主鍵只能有一個
外來鍵 – 一個表可以有多個外來鍵
索引 – 一個表可以有多個唯一索引

null 值不能用=,只能用 is 或is not

all恆成立問題,>=all,也就是>=最大值;
any 和some 存在性問題>=最小值就會存在,
聯絡英語的語法可知區別在於any用於否定,一般用於!=,some用於肯定。