數(shù)據(jù)庫 2019-08-28

數(shù)據(jù)庫這科的核心是對(duì)數(shù)據(jù)的檢索

一、緒論

  1. 數(shù)據(jù)庫原理基礎(chǔ)篇視頻
  2. 數(shù)據(jù)定義語言(DDL) 和數(shù)據(jù)操縱語言(DML),數(shù)據(jù)控制語言(DCL)
    找一本書->數(shù)據(jù)庫系統(tǒng)概論(第五版) 習(xí)題解析與實(shí)驗(yàn)指導(dǎo)
    上機(jī)軟件-> 金倉(cāng)數(shù)據(jù)庫 KingBase ES
    參考書-> an introduction to Database System/a first course in database systems/database system concepts
  3. 數(shù)據(jù)庫:是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)的集合。
    為什么要建立數(shù)據(jù)庫:收集并抽取出一個(gè)應(yīng)用所需要的大量數(shù)據(jù),將其保存,以供進(jìn)一步加工處理,抽取有用信息,轉(zhuǎn)換為有價(jià)值的知識(shí)。
    數(shù)據(jù)庫的基本特征:①數(shù)據(jù)按一定的數(shù)據(jù)模型 組織、描述、存儲(chǔ)。
    ②可為各種用戶共享、冗余度較小、易擴(kuò)展
    ③ 數(shù)據(jù)獨(dú)立性較高
  4. 數(shù)據(jù)庫管理系統(tǒng)(DBMS):是介于 操作系統(tǒng) 與 應(yīng)用用戶管理 之間的,是處于 基礎(chǔ)軟件平臺(tái) 這個(gè)位置。
    圖1 .png
  5. 數(shù)據(jù)庫系統(tǒng)(DBS):是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng)構(gòu)成,在不引起混淆的情況下常常把DBS簡(jiǎn)稱為數(shù)據(jù)庫
    數(shù)據(jù)庫系統(tǒng)的構(gòu)成:①DB ②DBMS(及其應(yīng)用開發(fā)工具)③ 應(yīng)用程序 ④ 數(shù)據(jù)庫管理員(DBA)
    圖2 .png

1.2 數(shù)據(jù)模型

  1. 數(shù)據(jù)模型:是對(duì)現(xiàn)實(shí)世界數(shù)據(jù)特征的抽象。是DBS的核心與基礎(chǔ)。
    現(xiàn)實(shí)世界---->概念模型:DB設(shè)計(jì)人員完成
    概念模型----->邏輯模型:DB設(shè)計(jì)人員完成, 以及DB設(shè)計(jì)工具協(xié)助完成。
    邏輯模型----->物理模型:由DBMS完成。
  2. 概念模型的一種表示方法:E-R 方法:一對(duì)一、一對(duì)多
  3. 數(shù)據(jù)模型是嚴(yán)格定義的一組概念的集合:精確第描述了系統(tǒng)的靜態(tài)特性、動(dòng)態(tài)特性、完整性約束條件
    數(shù)據(jù)模型由三部分組成:① 數(shù)據(jù)結(jié)構(gòu)----描述系統(tǒng)的靜態(tài)特性;② 數(shù)據(jù)操作----描述系統(tǒng)的動(dòng)態(tài)特性;③ 完整性約束。

1.2.1 層次模型

  1. 層次模型用樹形結(jié)構(gòu)來表示各類實(shí)體以及實(shí)體間的聯(lián)系
    表示方法:
    實(shí)體型:用記錄類型描述,每個(gè)結(jié)點(diǎn)表示一個(gè)記錄類型(實(shí)體)
    屬性:用字段描述,每個(gè)記錄類型可包含若干個(gè)字段
    聯(lián)系:用結(jié)點(diǎn)之間的連線表示記錄類型(實(shí)體)之間的一對(duì)多的父子聯(lián)系
    關(guān)鍵字:唯一標(biāo)識(shí)實(shí)體的屬性集稱為碼(eg:學(xué)號(hào)、身份證號(hào))
    滿足下面?zhèn)z個(gè)條件的基本層次聯(lián)系的集合為層次模型:① 有且只有一個(gè)結(jié)點(diǎn)沒有雙親結(jié)點(diǎn),這個(gè)結(jié)點(diǎn)稱為根節(jié)點(diǎn);② 根以外的其他結(jié)點(diǎn)有且只有一個(gè)雙親結(jié)點(diǎn)。


    圖3.png
  2. 層次模型的完整性約束條件
    ① 無相應(yīng)的雙親結(jié)點(diǎn)值就不能插入子女結(jié)點(diǎn)值;
    ② 如果刪除雙親結(jié)點(diǎn)值,則相應(yīng)的子女結(jié)點(diǎn)值也被同時(shí)刪除;
    ③ 更新操作時(shí),應(yīng)更新所有相應(yīng)記錄,以保證數(shù)據(jù)的一致性。

1.2.2 網(wǎng)狀模型

  1. 網(wǎng)狀數(shù)據(jù)庫系統(tǒng)采用網(wǎng)狀結(jié)構(gòu)來表示各類實(shí)體以及實(shí)體間的聯(lián)系
    表示方法:(與層次數(shù)據(jù)結(jié)構(gòu)模型相同)
    滿足下面兩個(gè)條件的基本層次聯(lián)系的集合:
    ① 允許一個(gè)以上的結(jié)點(diǎn)無雙親;
    ② 一個(gè)結(jié)點(diǎn)可以有多個(gè)雙親。
    網(wǎng)狀模型間接表示多對(duì)多聯(lián)系(方法:將多對(duì)多聯(lián)系分解成一對(duì)多聯(lián)系。)
  2. 網(wǎng)狀模型的完整性約束條件
    導(dǎo)航式的查詢語言 和 增刪改操作語言
    1>. 完整性約束條件不嚴(yán)格:
    ① 允許插入尚未確定雙親結(jié)點(diǎn)值的子女結(jié)點(diǎn)值
    ② 允許只刪除雙親結(jié)點(diǎn)值
    2>. 實(shí)際的網(wǎng)狀數(shù)據(jù)結(jié)構(gòu)系統(tǒng)提供了一定的完整性約束:
    ① 支持碼的概念:唯一標(biāo)識(shí)記錄的數(shù)據(jù)項(xiàng)的集合,取唯一的值;
    ② 保證一個(gè)聯(lián)系中雙親記錄與子女記錄之間是一對(duì)多聯(lián)系;
    ③ 可以定義雙親記錄和子女記錄之間的某些約束條件。

1.2.3 關(guān)系模型

  1. 用戶觀點(diǎn)下,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表。R(U,D,DOM,F)p177
    ① 關(guān)系(Relation):一個(gè)關(guān)系對(duì)應(yīng)通常說的一張表;
    ② 元組(Tuple):表中的一行是一個(gè)元組;
    ③ 屬性(Attribute):表中的一列即為一個(gè)屬性,給每一個(gè)屬性起一個(gè)名稱即是屬性名;
    ④ 主碼(Key):也稱碼鍵。表中的某個(gè)屬性組,它可以唯一確定一個(gè)元組;(區(qū)分每一個(gè)元組:eg:學(xué)號(hào))
    ⑤ 域(Domain):是一組具有相同數(shù)據(jù)類型的值的集合;屬性的取值范圍來自某個(gè)域;
    ⑥ 分量:元組中的一個(gè)屬性值;
    ⑦ 關(guān)系模型(式):對(duì)關(guān)系的描述。
    圖4 關(guān)系模型(式) 描述方式.png
    :該圖不完整,只有D與U,沒有DOM與F
  2. 關(guān)系必須是規(guī)范化的,滿足一定的規(guī)范條件。
    最基本的規(guī)范條件:關(guān)系的每一個(gè)分量必須是一個(gè)不可分的數(shù)據(jù)項(xiàng),不允許表中還有表。
    圖5 術(shù)語對(duì)比.png

    數(shù)據(jù)及數(shù)據(jù)間聯(lián)系都用二維表示,有的DBMS把表以文件形式存儲(chǔ),
    關(guān)系的完整性約束條件
    ① 實(shí)體完整性
    ② 參照完整性
    ③ 用戶定義的完整性

1.3 DBS的結(jié)構(gòu)

  1. 1>.:從數(shù)據(jù)庫應(yīng)用開發(fā)人員角度看:數(shù)據(jù)庫系統(tǒng)采用三級(jí)模式結(jié)構(gòu),是數(shù)據(jù)庫系統(tǒng)內(nèi)部的系統(tǒng)結(jié)構(gòu)。
    2>.:從數(shù)據(jù)庫最終用戶角度看:
    數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)有:
    ① :?jiǎn)斡脩艚Y(jié)構(gòu)
    ②: 主從式結(jié)構(gòu)
    ③: 分布式結(jié)構(gòu)
    ④: 客戶--服務(wù)器(局域網(wǎng))
    ⑤: 瀏覽器--應(yīng)用服務(wù)器/數(shù)據(jù)庫服務(wù)器
  2. DBS的三級(jí)模式結(jié)構(gòu):外模式,模式,內(nèi)模式
    圖6 DBS的三級(jí)模式結(jié)構(gòu).png

    2.1>. 模式:(也稱邏輯模式):數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖;一般,某個(gè)應(yīng)用的數(shù)據(jù)庫有一個(gè)模式;模式是數(shù)據(jù)庫系統(tǒng)模式結(jié)構(gòu)的中心,與數(shù)據(jù)的物理存儲(chǔ)細(xì)節(jié)和硬件環(huán)境無關(guān),與具體的應(yīng)用程序、開發(fā)工具及高級(jí)程序設(shè)計(jì)語言無關(guān)。
    2>. 定義模式:
    ① DDL定義數(shù)據(jù)的邏輯結(jié)構(gòu),以某種數(shù)據(jù)模型為基礎(chǔ);數(shù)據(jù)記錄由哪些數(shù)據(jù)項(xiàng)構(gòu)成,數(shù)據(jù)項(xiàng)的名字、類型、取值范圍等。
    ② 定義數(shù)據(jù)間的聯(lián)系
    ③ 定義與數(shù)據(jù)有關(guān)的安全性、完善性要求
    2.2>. 外模式:(子模式或用戶模式):數(shù)據(jù)庫用戶使用的局部的邏輯結(jié)構(gòu)和特征的描述;是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。
    外模式與模式的關(guān)系:外模式通常是模式的子集,一個(gè)模式可以有多個(gè)外模式;反應(yīng)了不同的用戶的應(yīng)用需求、看待數(shù)據(jù)的方式、對(duì)數(shù)據(jù)保密的要求;對(duì)模式的某一數(shù)據(jù),在不同的外模式中結(jié)構(gòu)、類型、長(zhǎng)度、保密級(jí)別等都可以不同。
    外模式與應(yīng)用的關(guān)系:一個(gè)外模式可以為多個(gè)應(yīng)用系統(tǒng)所使用,一個(gè)應(yīng)用程序只能使用一個(gè)外模式。
    外模式的用途:每個(gè)用戶只能看見和訪問所對(duì)應(yīng)的外模式中的數(shù)據(jù),簡(jiǎn)化用戶視圖;保證數(shù)據(jù)庫安全性的一個(gè)有力措施。
    2.3>. 內(nèi)模式:(也稱存儲(chǔ)模式):是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述;是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式::
    ① 記錄的存儲(chǔ)方式(eg:順序存儲(chǔ)、堆存儲(chǔ)、hash存儲(chǔ)等)
    ② 索引的組織方式(B+樹,Bitmap,Hash)
    ③ 數(shù)據(jù)是否壓縮存儲(chǔ)
    ④ 數(shù)據(jù)是否加密
    ⑤ 數(shù)據(jù)存儲(chǔ)記錄結(jié)構(gòu)的規(guī)定——如定長(zhǎng)/變長(zhǎng),記錄是否可以跨頁存放等
    數(shù)據(jù)庫只有一個(gè)內(nèi)模式
  3. 數(shù)據(jù)庫的二級(jí)映像(mapping)功能與數(shù)據(jù)獨(dú)立性
    三級(jí)模式是對(duì)數(shù)據(jù)的三個(gè)抽象級(jí)別;數(shù)據(jù)庫管理系統(tǒng)內(nèi)部提供二級(jí)映像:① 外模式與模式映像 ② 模式與內(nèi)模式映像--->(二級(jí)映像是三級(jí)模式中的關(guān)系)
    三個(gè)抽象層次的聯(lián)系和轉(zhuǎn)換
    ① 外模式/模式映像:一、對(duì)每一個(gè)外模式,有一個(gè)外模式/模式映像,是定義外模式與模式之間的對(duì)應(yīng)關(guān)系的,映像定義通常包含在各外模式的描述中;二、保證數(shù)據(jù)的邏輯獨(dú)立性:當(dāng)模式改時(shí),DBA對(duì)外模式/模式映像相應(yīng)改變,使外模式保持不變;應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫的,應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨(dú)立性,簡(jiǎn)稱數(shù)據(jù)的邏輯獨(dú)立性。(數(shù)據(jù)與程序是相互獨(dú)立的
    ②模式/內(nèi)模式映像:定義了數(shù)據(jù)邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)之間的對(duì)應(yīng)關(guān)系(eg:說明某個(gè)邏輯記錄對(duì)應(yīng)何種存儲(chǔ)結(jié)構(gòu));數(shù)據(jù)庫中的模式/內(nèi)模式映像是惟一的,該映像定義通常包含在模式描述中; 保證數(shù)據(jù)的物理獨(dú)立性。

二、關(guān)系數(shù)據(jù)庫

2.1 關(guān)系模型(關(guān)系數(shù)據(jù)結(jié)構(gòu))

關(guān)系模型組成三要素:關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合、關(guān)系完整性約束。


笛卡爾積可以看作是關(guān)系的域。

圖7 笛卡爾積.png
分量必須取原子值:這是規(guī)范條件中最基本的一條。
D1,D2,...,Dn的笛卡爾積的某個(gè)子集才有實(shí)際含義。

2.2 關(guān)系模式

2.2.1>. 關(guān)系模式是,關(guān)系是,關(guān)系模型是對(duì)關(guān)系的描述。
關(guān)系模式可以形象地表示為:R(U,D,DOM,F(xiàn)):
R: 關(guān)系名
U:組成該關(guān)系的屬性名集合
D: U中屬性所來自的域
DOM: 屬性向域的映像集合
F:屬性間數(shù)據(jù)的依賴關(guān)系的集合
關(guān)系模式通??梢院?jiǎn)記為R(U)或R(A1,A2,...An):A1,A2,...An是屬性名。。。注:域名及屬性向域的映像常常直接說明為屬性的類型、長(zhǎng)度。
2.2.2>. 關(guān)系模式與關(guān)系的“關(guān)系”:① 關(guān)系模式是對(duì)關(guān)系的描述,是靜態(tài)的、穩(wěn)定的 ② 關(guān)系是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容,是動(dòng)態(tài)的、隨時(shí)間不斷變化的 ③ 關(guān)系模式和關(guān)系往往籠稱為關(guān)系,是通過上下文加以區(qū)別。
2.2.3>. 關(guān)系數(shù)據(jù)庫: 在一個(gè)給定的應(yīng)用領(lǐng)域中,所有關(guān)系的集合構(gòu)成一個(gè)關(guān)系數(shù)據(jù)庫。

2.2.4>. 關(guān)系完整性約束

關(guān)系的約束條件實(shí)際上是現(xiàn)實(shí)世間的要求。(教材P45)
實(shí)體完整性和參照完整性:關(guān)系的兩個(gè)不變性,由關(guān)系系統(tǒng)自動(dòng)支持。
用戶定義的完整性:應(yīng)用領(lǐng)域需要遵循的約束條件,體現(xiàn)了具體領(lǐng)域的語義約束。
① 實(shí)體完整性:1. 關(guān)系的主屬性不能取空值,空值就是“不知道”或“不存在”或“無意義”的值。(否則不能區(qū)分倆個(gè)不同的實(shí)體)

圖8 實(shí)體完整性例子.png
② 參照完整性
不僅倆個(gè)或倆個(gè)以上的關(guān)系間可以存在引用關(guān)系,同一關(guān)系內(nèi)部屬性也可能存在引用關(guān)系。(教材46)
參照完整性規(guī)則就是定義 外碼 與 主碼 之間的 引用規(guī)則。(外碼只能取 空值 或 被參照關(guān)系中已經(jīng)存在的主碼值)
圖9 參照完整性例子.png
③ 用戶定義完整性:反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語意要求。(eg:學(xué)號(hào)是主碼,姓名是非主屬性,但也不能是空)

2.3 關(guān)系操作(教材 P 43)

若一個(gè)關(guān)系有多個(gè)候選碼,則選定其中一個(gè)為主碼,候選碼的諸屬性稱為主屬性,不包含在任何候選碼的屬性稱為非主屬性或非碼屬性(P40教材),主碼唯一標(biāo)識(shí)一個(gè)元組。
關(guān)系模式與關(guān)系的聯(lián)系:關(guān)系是元組的集合,因此關(guān)系模式必須指出這個(gè)元組集合的結(jié)構(gòu),即它由那些屬性構(gòu)成,這些屬性來自哪些域,以及屬性與域之間的影像關(guān)系;關(guān)系的描述稱為關(guān)系模式R(U,D,DOM、F),關(guān)系是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容,關(guān)系模式是靜態(tài)的、穩(wěn)定的,而關(guān)系是動(dòng)態(tài)的、隨時(shí)間不斷變化的,因?yàn)殛P(guān)系操作在不斷地更新著數(shù)據(jù)庫的數(shù)據(jù)。所有關(guān)系的集合構(gòu)成一個(gè)關(guān)系數(shù)據(jù)庫。(P43教材)-----------表是關(guān)系數(shù)據(jù)的邏輯模式,在關(guān)系數(shù)據(jù)庫的物理組織中,有的關(guān)系DMS中的一個(gè)表對(duì)應(yīng)一個(gè)操作系統(tǒng)文件,將物理數(shù)據(jù)組織交給操作系統(tǒng)完成;有的關(guān)系DMS從OS那里申請(qǐng)若干個(gè)大的文件,自己劃分文件空間,組織表、索引等存儲(chǔ)結(jié)構(gòu),并進(jìn)行存儲(chǔ)管理。
關(guān)系操作的特點(diǎn)的 操作的對(duì)象與結(jié)果都是集合。(這種操作方式稱為 一次一集合 。)

2.4 關(guān)系代數(shù)(教材 P49)

關(guān)系代數(shù)是一種抽象的查詢語言,它用 對(duì)關(guān)系的運(yùn)算 來表達(dá)查詢;
集合運(yùn)算(是二目運(yùn)算):交、并、差、笛卡爾積。
關(guān)系運(yùn)算:選擇(限制)、投影、連接、除運(yùn)算。
象集(P 51)
1. 選擇運(yùn)算:實(shí)際上是從關(guān)系R中選取使邏輯表達(dá)式F為的元組,這是從的角度進(jìn)行的運(yùn)算。
2. 投影運(yùn)算(π):是從列的角度進(jìn)行的運(yùn)算。投影之后不僅取消了原關(guān)系中的某些列,而且還可能取消某些元組(因?yàn)槿∠四承傩粤泻?,就可能出現(xiàn)重復(fù)行,應(yīng)取消這些完全相同的行。)(P53
3. 連接運(yùn)算:連接也稱為塞塔連接,它是從倆個(gè)關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組。
① 等值連接:塞塔為“=”的連接運(yùn)算,它是從關(guān)系R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組。從行的角度運(yùn)算。
② 自然連接:是一種特殊的等值連接, 它要求兩個(gè)關(guān)系中進(jìn)行比較的分量必須是同名的屬性組,并且在結(jié)果中把重復(fù)的屬性去掉。從行和列進(jìn)行的運(yùn)算。被舍棄的元組稱為懸浮元組。
如果把懸浮元組也保存在結(jié)果關(guān)系中,而在其他屬性上填空值(NULL),那么這種連接叫做外連接;如果只保留左邊關(guān)系R的懸浮元組就叫做左外連接,對(duì)應(yīng)的有右外連接。(P 55)
4. 除運(yùn)算:是同時(shí)從的角度進(jìn)行運(yùn)算;用象集求解。(元組在X上的分量值x的象集Yx包含S在Y上投影的集合。(P 56)

2.5 關(guān)系演算(教程 P57)

關(guān)系演算是以數(shù)理邏輯中的謂詞演算為基礎(chǔ)的,按謂詞変元的不同,關(guān)系演算可分為元組關(guān)系演算域關(guān)系演算。
2.5.1>.元組關(guān)系演算語言 ALPHA
****(操作條件中使用量詞時(shí)必須用元組變量。)
ALPHA語言:GET , PUT , HOLD , UPDATE , DELETE , DROP 的 6 條語句,語句的基本格式是: 操作語句 工作空間名(表達(dá)式):操作條件。
1. 檢索操作:GET 語句實(shí)現(xiàn)。
① 簡(jiǎn)單檢索:(即不帶條件的檢索)。
② 限定的檢索:(即帶條件的檢索)。
③ 帶排序的查詢。
④ 指定返回元組的條數(shù)的檢索。
⑤ 用元組變量的檢索。P(58)
⑥ 用存在量詞的檢索。
⑦ 帶有多個(gè)關(guān)系的表達(dá)式的檢索。
⑧ 用全稱量詞的檢索。
⑨ 用兩種量詞的檢索。
⑩ 用蘊(yùn)涵的檢索。
11 聚集函數(shù)。

2.5.2>.域關(guān)系演算語言 QBE
1. 檢索操作:操作符是 P.
① 簡(jiǎn)單查詢。 ② 條件查詢。 ③ 聚集函數(shù)。 ④ 對(duì)查詢結(jié)果排序。

2. 更新操作:操作符是 U.
① 修改操作。 ② 插入操作。

3. 插入操作:操作符是 I.

4. 刪除操作:操作符是D.

三、SQL

郝斌SQLserver2005
SQL Server 2014 入門基礎(chǔ)視頻
[sql server 增刪改查](https://blog.csdn.net/tswc_byy/article/details/81708728
SQL server 使用教程
SQL Server 2019 下載安裝教程
SQL Server 2019 使用教程500頁

3.1

圖 1 .png
圖 2 .png
圖 3 .png
圖 4 .png
圖 5 .png
系統(tǒng)數(shù)據(jù)庫下:
① master 數(shù)據(jù)庫:是SQL server 中最重要的數(shù)據(jù)庫,記錄其實(shí)例的所有系統(tǒng)級(jí)信息,包括實(shí)例范圍的元數(shù)據(jù)。
② tempdb 數(shù)據(jù)庫:用于保存臨時(shí)對(duì)象或中間結(jié)果集。
③ model 數(shù)據(jù)庫:用于其實(shí)例上創(chuàng)建的所有數(shù)據(jù)庫的模板。
④ msdb 數(shù)據(jù)庫:用于其代理計(jì)劃警報(bào)和作業(yè)。

1.> [ UNSIGNED ] SMALLINT
SMALLINT 數(shù)據(jù)類型是一種精確數(shù)值數(shù)據(jù)類型,其精度在算術(shù)運(yùn)算后不變。它需要 2 個(gè)字節(jié)存儲(chǔ)。
有符號(hào)的 SMALLINT 值的范圍是 –215(215表示2的15次冪) 到2^15 – 1,即 –32768 到 32767。
無符號(hào)的 SMALLINT 值范圍是 0 到 2^16 – 1,即 0 到 65535。 INT 是4字節(jié)數(shù)據(jù),取值范圍 -2^31 - 2^31,所以在考慮最大數(shù)據(jù)范圍的前提下,優(yōu)先使用smallint類型。
2.> :為防止程序不能多次運(yùn)行,并且多次提醒該關(guān)系或該表已建立。應(yīng)該在程序前寫上:

DROP database IF EXISTS s_t;        /*首先執(zhí)行一次同名關(guān)系刪除操作*/
DROP table IF EXISTS student;       /*首先執(zhí)行一次同名表刪除操作*/

在創(chuàng)建數(shù)據(jù)庫前應(yīng)該確定主文件(申明)例如:

create database textdb01
on primary                                             /*固定用法*/
(name='textdb01',                                  /*主文件名稱*/
filename='E:\SQLcode\textdb\textdb01.ndf',          /*主文件存儲(chǔ)的路徑*/
size=10MB,                                        /*主文件初始值的大小*/
maxsize=100MB,            /*主文件最大值(數(shù)據(jù)庫最大占用空間的大?。?/
filegrowth=5MB  /*隨著數(shù)據(jù)庫的使用,數(shù)據(jù)庫的大小每次增長(zhǎng)的量,最大增至maxsize*/
)
log on
(name='textdb01_log',                               /*日志名稱*/
filename='E:\SQLcode\textdb\textdb01_log.ldf',
size=10MB,
maxsize=100MB,
filegrowth=5MB
)

對(duì)數(shù)據(jù)庫 名稱 的修改:

alter database textdb01
modify name=textdb02;

對(duì)數(shù)據(jù)庫 文件屬性 的修改:

alter database textdb
modify file
(name=textdt,
size=20MB,
maxsize=80MB,
filegrowth=10MB
);

數(shù)據(jù)庫自帶的幫助:查看(查看是否修改成功)

exec sp_helpdb textdb;

刪除 數(shù)據(jù)庫

drop database textdb;

界面 刪除 數(shù)據(jù)庫:
選中數(shù)據(jù)庫-->右鍵刪除即可 (若無法刪除):
選中數(shù)據(jù)庫-->右鍵任務(wù)-->分離-->勾選刪除

數(shù)據(jù)庫 備份與還原:

備份:右鍵數(shù)據(jù)庫--->任務(wù)--->備份--->出現(xiàn)備份數(shù)據(jù)庫框--->選擇完整備份。(備份文件的后綴是 .bak
還原:右鍵數(shù)據(jù)庫--->任務(wù)--->還原--->數(shù)據(jù)庫--->在‘常規(guī)’頁上,使用‘源’部分指定要還原的備份集的源與位置(一般選 設(shè)備 上還原)。
數(shù)據(jù)庫的分離在不在軟件上,但存在在磁盤上,通過附加可恢復(fù)到軟件上。

數(shù)據(jù)類型:

數(shù)字類型(精確數(shù)字、近似數(shù)字)、日期時(shí)間、字符串、Unicode字符串、二進(jìn)制字符串、其他數(shù)據(jù)類型。
①、數(shù)字類型
bigint:范圍:(-2)63~~263-1; 存儲(chǔ):8 字節(jié)
int:范圍:(-2)31~~231-1; 存儲(chǔ):4字節(jié)
smallint:范圍:(-2)15~~215-1(32767); 存儲(chǔ):2 字節(jié)
tinyint:范圍:0~~255; 存儲(chǔ):1 字節(jié)
float:存儲(chǔ):取決于n的值。
②、時(shí)間類型


③、字符串類型:主要用 varchar

創(chuàng)建表:指出每個(gè)列中是否允許空值,是一種好習(xí)慣。
表中的任何主鍵值倒也不能重復(fù)。

create table useinfo2
(id int primary key not null,
name varchar(10) not null,
age int null
);

修改表結(jié)構(gòu):

alter table useinfo    /*增加 主鍵*/
add constraint KID primary key(ID);

添加字段:

alter table useinfo
add grade varchar(10) not null;

constraint表示約束,有三個(gè)常見的約束
1、primary key(主鍵約束)。
2、Unique(唯一性約束)。
3、foreign key(外鍵約束)。
primary key和Unique key的區(qū)別是primary key不能為NULL且需唯一,Unique key可以為NULL但必須唯一,
column表示“列”也就是常說的 字段。
主鍵外鍵定義名稱。
設(shè)置外鍵:
選中表--->設(shè)計(jì)-->選中列--->關(guān)系--->添加
查詢表中內(nèi)容:

select * from [dbo].[userinfo];       /*userinfo是表名*/
                           /*               *代表所有的意思             */
select id1,id2,id3 from [dbo].[userinfo];  /*查詢特定幾欄的內(nèi)容*/

插入單行數(shù)據(jù):
insert into "表格名"(“欄位1”,“欄位2”...)
values(“值1”,“值”...);
插入多行數(shù)據(jù):
insert into “表格名”(“欄位1”,“欄位2”,...)
value(“值1”,“值”...),(“值1”,“值”...)(“值1”,“值”...);
從其他表copy數(shù)據(jù):
insert into “表格1”(“欄位1”,“欄位2”,...)
select “欄位3”,“欄位4”,...
from “表格2”;
修改表記錄:

update [dbo].[userinfo]
set email = 'zhang@'
where email='5555';

刪除表記錄:from 可以省略
對(duì)于刪除關(guān)聯(lián)表信息,先刪除含有外鍵的關(guān)聯(lián)表,再刪除單一表,
而插入關(guān)聯(lián)信息時(shí),先插入單一表信息,再插入含有外鍵的關(guān)聯(lián)表。

delete from [dbo].[userinfo]
where userid = '張阿';

on update cascade 和on delete cascade 作用:
這是數(shù)據(jù)庫外鍵定義的一個(gè)可選項(xiàng),用來設(shè)置當(dāng)主鍵表中的被參考列的數(shù)據(jù)發(fā)生變化時(shí),外鍵表中響應(yīng)字段的變換規(guī)則的。update 則是主鍵表中被參考字段的值更新,delete是指在主鍵表中刪除一條記錄:
on update 和 on delete 后面可以跟的詞語有四個(gè)
no action , set null , set default ,cascade
no action 表示 不做任何操作,
set null 表示在外鍵表中將相應(yīng)字段設(shè)置為null
set default 表示設(shè)置為默認(rèn)值
cascade 表示級(jí)聯(lián)操作,就是說,如果主鍵表中被參考字段更新,外鍵表中也更新,主鍵表中的記錄被刪除,外鍵表中改行也相應(yīng)刪除 。




郝斌

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容