成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

快速學(xué)完數(shù)據(jù)庫(kù)管理(期末復(fù)習(xí))

不知名網(wǎng)友 / 2093人閱讀

摘要:一文帶你快速學(xué)完數(shù)據(jù)庫(kù)期末復(fù)習(xí)一數(shù)據(jù)庫(kù)系統(tǒng)概述數(shù)據(jù)庫(kù)系統(tǒng)的組成數(shù)據(jù)庫(kù)的特點(diǎn)數(shù)據(jù)庫(kù)的模式結(jié)構(gòu)數(shù)據(jù)庫(kù)建立的流程圖關(guān)系數(shù)據(jù)庫(kù)的一些術(shù)語(yǔ)關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)完整性二數(shù)據(jù)庫(kù)設(shè)計(jì)思路以及規(guī)范圖數(shù)據(jù)庫(kù)設(shè)計(jì)三范式三數(shù)據(jù)庫(kù)語(yǔ)句的基礎(chǔ)關(guān)系代數(shù)基

一文帶你快速學(xué)完數(shù)據(jù)庫(kù)(期末復(fù)習(xí))

本來(lái)想寫(xiě)文章來(lái)復(fù)習(xí)的,后面發(fā)現(xiàn)越寫(xiě)越多,而且感覺(jué)本末倒置了,查詢(xún)語(yǔ)句寫(xiě)的最少,其他倒是寫(xiě)的很詳細(xì),數(shù)據(jù)庫(kù)知識(shí)真的太細(xì)太碎了,整理起來(lái)難度真的挺大的,如果是數(shù)據(jù)庫(kù)小白,這篇文章肯定很有用,它沒(méi)有過(guò)多的實(shí)戰(zhàn),帶你了解數(shù)據(jù)庫(kù)的基本框架和能夠完成的任務(wù),如果是數(shù)據(jù)庫(kù)學(xué)過(guò)的話,那這篇文章可能對(duì)你而言只有前面數(shù)據(jù)庫(kù)概述和設(shè)計(jì)數(shù)據(jù)庫(kù)有用,數(shù)據(jù)庫(kù)sql語(yǔ)句這部分非常的精簡(jiǎn),幾乎只是了解個(gè)框架,歡迎評(píng)論區(qū)大佬們的指正,第一次寫(xiě)長(zhǎng)文

一、數(shù)據(jù)庫(kù)系統(tǒng)概述

1.數(shù)據(jù)庫(kù)系統(tǒng)的組成

DB -> DBMS -> DBS -> user

  • 即由數(shù)據(jù)庫(kù)(database)出發(fā)

  • 利用數(shù)據(jù)庫(kù)管理系統(tǒng)(database manage system)創(chuàng)建數(shù)據(jù)庫(kù)中的表(database schema)

  • 最后由user進(jìn)行查詢(xún)等等相關(guān)操作

2.數(shù)據(jù)庫(kù)的特點(diǎn)

  • 有結(jié)構(gòu)的

    數(shù)據(jù)庫(kù)按照關(guān)系模型來(lái)儲(chǔ)存數(shù)據(jù)和聯(lián)系數(shù)據(jù)

    一般采用二維表的形式進(jìn)行實(shí)現(xiàn)

  • 集成的

    集成一系列數(shù)據(jù)

    并按照一定的原則進(jìn)行分類(lèi)

    盡量減少數(shù)據(jù)之間的冗余性

  • 可共享的

    可以同時(shí)被多個(gè)用戶(hù)操作

    并可以指定權(quán)限等等

  • 統(tǒng)一管理的

    一般是由DBMS完成數(shù)據(jù)庫(kù)的全部操作

學(xué)習(xí)數(shù)據(jù)庫(kù)主要研究然后高效的儲(chǔ)存、使用和管理數(shù)據(jù),不僅僅局限與只是查詢(xún)數(shù)據(jù)以及存儲(chǔ)數(shù)據(jù)的載體

這是一門(mén)頗具藝術(shù)的課程

3.數(shù)據(jù)庫(kù)的模式結(jié)構(gòu)

  • 外模式

    一般指將數(shù)據(jù)以一定的形式呈現(xiàn)給用戶(hù)

    形式不是唯一的

    例如在各個(gè)瀏覽器查詢(xún)的界面與各個(gè)軟件等等查詢(xún)的界面,都是外模式的一種體現(xiàn)

  • 概念模式

    即表中信息的描述,例如user(name,age)

  • 內(nèi)模式

    存儲(chǔ)結(jié)構(gòu)、存儲(chǔ)方法、存取策略等的描述,即設(shè)計(jì)表時(shí)的一些可選項(xiàng)

二級(jí)映射:

  • 外模式到概念模式:邏輯獨(dú)立性

    指概念模式改變時(shí)DBMS通過(guò)改變映射使得外模式不變

    例子:比如user表多了一個(gè)身高的字段即變成user(name,age,height),展示數(shù)據(jù)的應(yīng)用程序界面不需要進(jìn)行修改

  • 內(nèi)模式到概念模式:物理獨(dú)立性

    指內(nèi)模式改變時(shí)DBMS通過(guò)改變映射使得概念模式不變

    例子:比如user表的一個(gè)height字段中數(shù)據(jù)類(lèi)型想要從int到double,通過(guò)DBMS,概念模式無(wú)需改變

  • 數(shù)據(jù)獨(dú)立性由邏輯獨(dú)立性和物理獨(dú)立性組成

    即最終呈現(xiàn)給用戶(hù)的數(shù)據(jù)庫(kù)界面不受內(nèi)模式以及概念模式的改變而改變

4.數(shù)據(jù)庫(kù)建立的流程圖

  • 現(xiàn)實(shí)世界
  • 概念世界
  • E-R圖
  • 數(shù)據(jù)世界

5.關(guān)系數(shù)據(jù)庫(kù)的一些術(shù)語(yǔ)

  • 關(guān)系(relation)

    就是一張表,用R表示關(guān)系的名稱(chēng)

  • 元組

    也稱(chēng)記錄,行,對(duì)應(yīng)于數(shù)據(jù)庫(kù)數(shù)據(jù)中的條記錄即數(shù)據(jù)

  • 屬性

    關(guān)系表中一列即代表一個(gè)屬性,屬性只能有一個(gè)屬性名,而關(guān)系可以有多個(gè)屬性

    一般在表中稱(chēng)為字段

  • 域(domain)

    即數(shù)據(jù)類(lèi)型的取值范圍,這里是指一般的取值,也可以是集合形式的取值范圍

  • 候選鍵、主鍵和外鍵

    候選鍵即可以唯一確定一條記錄的字段,可能有多個(gè)

    主鍵就是在候選鍵中選取的一個(gè)

    外鍵即在其他表中為主鍵的字段

    極端情況下,候選鍵只有一個(gè)屬性或者全部屬性才能構(gòu)成一個(gè)候選鍵

6.關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)完整性

  • 實(shí)體完整性

    即主鍵值唯一且不能為空值

  • 參照完整性

    一個(gè)表的外鍵值要么為空要么就是其他表中的某一個(gè)主鍵值

    主要是為了確保數(shù)據(jù)的一致性

  • 用戶(hù)自定義完整性

    即用戶(hù)自定義的規(guī)則,數(shù)據(jù)符合規(guī)則才是合法的,才可以插入表中

二、數(shù)據(jù)庫(kù)設(shè)計(jì)思路以及規(guī)范

1.E-R圖

  1. 基本概念

    • 矩形代表實(shí)體
    • 菱形代表聯(lián)系
    • 橢圓形代表屬性
    • 無(wú)向邊,用于連接實(shí)體和屬性
  2. 聯(lián)系(兩個(gè)實(shí)體間)

    聯(lián)系也可以有屬性

    • 一對(duì)一的聯(lián)系

      在兩個(gè)實(shí)體之間任意一個(gè)加入另外一個(gè)實(shí)體的主鍵即可產(chǎn)生聯(lián)系

    • 一對(duì)多的聯(lián)系

      在多端實(shí)體加入一端實(shí)體的主鍵即可產(chǎn)生聯(lián)系

    • 多對(duì)多的聯(lián)系

      需要另外創(chuàng)建一張表進(jìn)行產(chǎn)生聯(lián)系

      按照需要建立一個(gè)兩個(gè)字段的表即可

  3. 一個(gè)表的表示方式

    主鍵一遍采用下劃線表示,表名一般就是實(shí)體的名字

    • 主鍵由單個(gè)字段構(gòu)成

      表名(字段1,字段2,字段3,字段4,字段5)

    • 主鍵由多個(gè)字段構(gòu)成

      表名(字段1,字段2,字段3,字段4,字段5)

2.數(shù)據(jù)庫(kù)設(shè)計(jì)三范式

  1. 背景

    不合理的數(shù)據(jù)庫(kù)設(shè)計(jì)中存在以下問(wèn)題

    • 數(shù)據(jù)冗余

      盡量少出現(xiàn)重復(fù)的數(shù)據(jù),例如一個(gè)表中有好幾個(gè)相同學(xué)生的學(xué)號(hào)姓名,只是選的課程不一樣,這樣很多記錄中的學(xué)號(hào)和姓名明顯是冗余的。

    • 更新異常

      由于同一字段存在在同一個(gè)表中的不同的記錄中,導(dǎo)致修改該字段,需要修改好多條記錄,容易造成數(shù)據(jù)的不一致性

    • 插入異常

      插入一條新數(shù)據(jù)時(shí)依賴(lài)其他現(xiàn)有的數(shù)據(jù),導(dǎo)致插入不能很好的進(jìn)行

    • 刪除異常

      刪除數(shù)據(jù)時(shí),不可避免地刪除掉某些我們需要地信息

    所以一個(gè)好的數(shù)據(jù)庫(kù)應(yīng)該盡量避免以上問(wèn)題

  2. 范式理論

    • 預(yù)備知識(shí),函數(shù)依賴(lài)

      1. 概念

        即對(duì)于某一個(gè)關(guān)系模型R,其屬性集合為U,X,Y為U的子集,即每個(gè)X對(duì)應(yīng)一個(gè)唯一的Y,即對(duì)于兩條記錄,若X對(duì)應(yīng)的屬性值相同,Y對(duì)應(yīng)的屬性值也相同,稱(chēng)X函數(shù)確定Y,Y函數(shù)依賴(lài)于X(其實(shí)這部分就是我們中學(xué)所學(xué)的函數(shù),只是應(yīng)用到數(shù)據(jù)庫(kù)中講的比較抽象而已,理解上就是按照函數(shù)來(lái)理解)

      2. 特例

        • 平凡函數(shù)依賴(lài)

          即Y包含在X集合中,這個(gè)形成函數(shù)依賴(lài)是顯然的(在數(shù)學(xué)術(shù)語(yǔ)中經(jīng)常出現(xiàn)平凡這個(gè)字眼,其實(shí)就是某些特例,比較簡(jiǎn)單,沒(méi)什么好研究的意思,比如線性方程組中的平凡解(即零向量)等等)

        • 非平凡函數(shù)依賴(lài)

          即Y不包含在X集合中

      3. 完全函數(shù)依賴(lài)、部分函數(shù)依賴(lài)和傳遞函數(shù)依賴(lài)

        • 完全函數(shù)依賴(lài)

          Y必需由X中的全部屬性才能決定

        • 部分函數(shù)依賴(lài)

          Y可以只由X中部分屬性確定

        • 傳遞函數(shù)依賴(lài)

          即指X與Y之間存在其他的中間聯(lián)系屬性集合,例如,Z函數(shù)依賴(lài)于X,Y函數(shù)依賴(lài)于Z

          ## 即存在某些中間關(guān)系X-->ZZ-->Y
      4. 候選碼

        即表中可以唯一確定一條數(shù)據(jù)的屬性或者屬性集合,候選碼可能有多個(gè),可以選擇其中一個(gè)作為主鍵

    • 范式

      滿(mǎn)足一定約束條件的關(guān)系模式,即數(shù)據(jù)庫(kù)表的設(shè)計(jì)滿(mǎn)足一定的規(guī)范,關(guān)系模式的規(guī)范化即將低一級(jí)的關(guān)系模式分解成高一級(jí)的關(guān)系模式,表現(xiàn)為將表進(jìn)行分解。

      1. 第一范式(1NF)

        所有屬性都是不可再分的數(shù)據(jù)項(xiàng),即屬性不能再分,一般來(lái)講數(shù)據(jù)庫(kù)表中的默認(rèn)滿(mǎn)足1NF,不過(guò)也有一些反例,比如對(duì)于身份這個(gè)屬性,出現(xiàn)男老師這個(gè)屬性值,就說(shuō)明表不滿(mǎn)足1NF,男老師可以進(jìn)行再分,即分為性別加身份

      2. 第二范式(2NF)

        在滿(mǎn)足1NF的前提下,非主屬性完全函數(shù)依賴(lài)于候選碼,主屬性即為候選碼中的屬性,故2NF即所有非主屬性只能被候選碼完全確定,不會(huì)出現(xiàn)候選碼中的部分屬性確定其他非主屬性的情況

      3. 第三范式(3NF)

        在滿(mǎn)足2NF的前提下,任一非主屬性都不傳遞依賴(lài)于任何候選碼

三、數(shù)據(jù)庫(kù)SQL語(yǔ)句的基礎(chǔ)——關(guān)系代數(shù)

這部分內(nèi)容比較的抽象,不過(guò)作為sql語(yǔ)句的先導(dǎo)學(xué)習(xí)還是有幫助的

1.基本概念

  • 同種數(shù)據(jù)類(lèi)型值的集合,就像高中學(xué)過(guò)的函數(shù)中的定義域一樣

  • 笛卡兒積

    所有域的所有取值集合,不重復(fù),其中集合中的每個(gè)元素稱(chēng)為元組,例:D1中有3個(gè)元素,D2中有4個(gè)元素,則構(gòu)成的笛卡兒積中的元素就有3*4=12種

  • 關(guān)系

    笛卡兒積的有限子集稱(chēng)為在域上的一個(gè)關(guān)系,即將元素綁定在一起,關(guān)系中的元素滿(mǎn)足一定的條件

    行一般就指記錄或者元組,列指屬性

    列中的元素是同一種類(lèi)型的,不同列可能具有相同的域,但不同列要具有不同的屬性名,行和列的順序是隨意的,不會(huì)影響我們的操作

2.關(guān)系代數(shù)基本組成

運(yùn)算符

分成集合運(yùn)算符和比較運(yùn)算符

集合運(yùn)算符:交、差、并、廣義笛卡兒積

比較運(yùn)算符:大于、大于等于、小于、小于等于、等于、不等于

這邊的等于只要一個(gè)等號(hào)即可

專(zhuān)門(mén)運(yùn)算符: σ /sigma σ, π /pi π, ÷ /div ÷, ∞ /infty , × /times ×

即選擇,投影,除法,連接

邏輯運(yùn)算符: ? /neg ?, ∨ /vee , ∧ /wedge

選擇

  • 符號(hào)

    σ /sigma σ

  • 基本形式

    σ [ o p t i o n s ] ( 表 ) /sigma_{[options]}(表) σ[options]?()

    例子:

    σ a g e = 15 ( s t u d e n t ) /sigma_{age=15}(student) σage=15?(student)

    從學(xué)生表中查詢(xún)年齡等于15的學(xué)生

其實(shí)等價(jià)于后面要學(xué)的where語(yǔ)句

投影

本質(zhì)上就是取出我們需要的字段,重新生成一張表

  • 符號(hào)

    π /pi π

  • 基本形式

    π [ 屬 性 1 ] , [ 屬 性 2 ] ( 表 ) /pi_{[屬性1],[屬性2]}(表) π[1],[2]?()

    例子:

    π a g e , n a m e ( s t u d e n t ) /pi_{age,name}(student) πage,name?(student)

    表示選擇student中的age和name字段構(gòu)成一個(gè)關(guān)系,即一個(gè)表

連接

將兩個(gè)表按照一定的規(guī)則連接,一般默認(rèn)就是自然連接,比較常用的是等值連接,也可以自己創(chuàng)建連接的規(guī)則

  • 符號(hào)

    ∞ /infty

  • 一般形式

    R ∞ A θ B S R/underset{A/theta B}{/infty}S RAθB?S

    其中 θ /theta θ為比較運(yùn)算符,A與B為比較對(duì)象,一般是表中的某個(gè)字段的比較

  • 等值連接

    1. 自然連接

      特殊的等值連接,一般情況下連接符下面的條件可以省略,將兩張表中相同屬性組進(jìn)行等值連接,最后會(huì)將重復(fù)的屬性取掉

    2. 等值連接

      條件運(yùn)算符是等號(hào)的連接,

  • 非等值連接

    即一般的條件判斷連接,會(huì)存在

還有一些概念,例如左外連接,右外連接,全外連接,即連接時(shí)如果沒(méi)有匹配到值做的一些處理,將沒(méi)有值的部分置為空值,左即保留左邊的全部元組,右即右邊,全即全部

除法

  • 象集

    考慮一個(gè)關(guān)系模式R(X,Y),其中X,Y均為屬性組

    現(xiàn)對(duì)任意的元組a,a在X屬性組上的取值等于某一給定的集合x(chóng),則此時(shí)滿(mǎn)足條件的元組的屬性組Y部分的取值即為象集

    記為: Y x Y_{x} Yx?

    例子:

    有一個(gè)表如下圖所示

    X 1 X_1 X1? X 2 X_2 X2?Y
    x1x2y1
    x1x2y2
    x1x3y1
    x2x1y2

    其中X1和X2為屬性組X,

    則x = (x1,x2)在R中的象集 Y x Y_x Yx? = {y1,y2}

    b = (x1,x3)在R中的象集 Y x Y_x Yx? = {y1}以此類(lèi)推

  • 除法運(yùn)算本質(zhì)上就是象集的運(yùn)算

    Y x Y_x Yx? 相當(dāng)于 R ÷ /div ÷ x

    此時(shí)x為一個(gè)元素表

    除法運(yùn)算考慮更一般的情況是一個(gè)一般的表

    考慮更一般的情況

    R(X,Y)和S(Y,Z)

    R ÷ S R/div S R÷S即返回X的屬性列,即與S中Y都相同的元組的X屬性組的取值

總結(jié)一下,除法的運(yùn)算,主要是考慮到一種需求,如果我們想要某個(gè)屬性組中的值與給定表中的相同的元組,同時(shí)屬性又不全要,就可以考慮使用除法

并、差

符合: ∪ /cup 、-

并:R ∪ /cup S當(dāng)且僅當(dāng)R與S具有相同的屬性,作用結(jié)果是元組數(shù)目不減少,可能不增

差:R-S也需要滿(mǎn)足R和S具有相同的屬性,作用結(jié)果是元組數(shù)目不增加,可能不減

笛卡爾積

  • 符號(hào): × /times ×

  • 例子

    R :n目關(guān)系,k1個(gè)元組

    S:m目關(guān)系,k2個(gè)元組

    則R × /times ×S的結(jié)果是產(chǎn)生(m+n)列和(k1 × /times ×k2)行的一個(gè)二維表

四、數(shù)據(jù)庫(kù)SQL語(yǔ)句

1.DDL

即Database Define Language ,負(fù)責(zé)創(chuàng)建和解釋關(guān)系型數(shù)據(jù)庫(kù)的語(yǔ)言

這里包含兩部分,表和視圖

1.1建表、刪表

1.1.1最簡(jiǎn)單的建表語(yǔ)句
create table student(	name varchar(10) primary key,    age int)

創(chuàng)建了一個(gè)以name為主鍵的student表

1.1.2添加約束的建表

一般約束可以分單列的約束創(chuàng)建和多列的約束創(chuàng)建

單列的直接放在字段后面即可,多列的在建表語(yǔ)句的最后出現(xiàn)

下面由于展示方便,沒(méi)有指定約束名,這里以主鍵約束展示一下,最好還是指定一下約束名,不然到時(shí)候刪除就有點(diǎn)麻煩,系統(tǒng)默認(rèn)會(huì)隨機(jī)生成一個(gè)約束名

ALTER TABLE student add  constraint key PRIMARY key(sno)
非空約束

作用:使得插入的數(shù)據(jù)不能為空值

--這里就是創(chuàng)建了一個(gè)非空約束create table student(	name varchar(10) primary key,    age int not null)

添加約束

-- 添加約束之前會(huì)檢查表中的數(shù)據(jù),如果有空值則不成功執(zhí)行alter table studentalter column age int not null
主鍵約束

作用:使得字段非空且唯一

--這里就是創(chuàng)建了一個(gè)主鍵約束create table student(	name varchar(10) primary key,    age int)

如果想從現(xiàn)有表進(jìn)行添加主鍵約束

--首先要確保當(dāng)前的要添加主鍵約束的字段非空--不然就不滿(mǎn)足實(shí)體完整性create table student1(	name varchar(10) not null,    age int)ALTER TABLE student add  PRIMARY key(sno)
唯一約束

作用:

與主鍵有點(diǎn)像,允許出現(xiàn)空值,但只能出現(xiàn)一次,保證鍵值的唯一性,一個(gè)表可以允許有多個(gè)唯一約束

--這里就是創(chuàng)建了一個(gè)唯一約束create table student(	name varchar(10) primary key,    age int unique)

添加的操作

alter table studentadd unique (age)--注意括號(hào)不能少
檢查約束

作用:

在每次系統(tǒng)插入或者更新數(shù)據(jù)時(shí)檢查數(shù)據(jù)

--這里就是創(chuàng)建了一個(gè)檢查約束create table student(	name varchar(10) primary key,    age int check(age between 15 and 30))

添加的操作

alter table studentadd check(age between 15 and 30)
  • check 約束中可以使用系統(tǒng)自帶的函數(shù)
  • 但不能使用子查詢(xún)
  • 不能使用其他表的字段
  • 一般采用and 或者 or關(guān)鍵字表示復(fù)雜的邏輯
外鍵約束

作用:

給表中的列添加外鍵約束,使得插入的該列的值必須是合法的,即保證數(shù)據(jù)的一致性

--這里就是創(chuàng)建了一個(gè)外鍵約束create table student(	name varchar(10) primary key,    age int foreign key(age) references course(age)    --age int foreign key references course(age))--這邊由于是列級(jí)約束,所以可以省略foreign key 后面的列名

添加約束

alter table studentadd foreign key(age) references course(age)

注意事項(xiàng)

foreign key 中引用的外鍵數(shù)必須和references 里面數(shù)目和類(lèi)型一致這里回顧一下外鍵的定義:一個(gè)表中的屬性或者屬性組是另一個(gè)表中的主鍵則稱(chēng)此屬性或者屬性組為外鍵
默認(rèn)約束

作用:

當(dāng)插入數(shù)據(jù)不指定字段的屬性值時(shí),自動(dòng)賦一個(gè)默認(rèn)的值

--這里就是創(chuàng)建了一個(gè)默認(rèn)約束create table student(	name varchar(10) primary key,    age int default 18)

添加約束的操作

--只能一條一條添加約束alter table studentadd default "18" for age
1.1.3刪除表,約束
--這部分就比較簡(jiǎn)單了--為了比較順利的刪除約束,這里補(bǔ)充一下如何查看約束名稱(chēng)exec sp_help--由于一開(kāi)始沒(méi)有指定約束名,所以需要通過(guò)這個(gè)命令查看

刪除表

drop table student

刪除約束

alter table studentdrop constraint 名字--多個(gè)的話采用括號(hào)括起來(lái)
  1. 更新表,約束

    這部分其實(shí)有點(diǎn)重合,在上一部分以及講了,這里展示一下基本結(jié)構(gòu)

    --更新表alter table 表名alter column 修改的列--更新約束--這里其實(shí)是添加,約束不能直接更新的,要先刪除然后再更新alter table 表名add 約束

1.2視圖

1.2.1視圖的應(yīng)用背景

在寫(xiě)sql語(yǔ)句時(shí)有時(shí)需要會(huì)寫(xiě)很多重復(fù)的sql語(yǔ)句,但它們的功能基本相同,所以這時(shí)候重用sql語(yǔ)句就變得非常重要,于是就產(chǎn)生了視圖這個(gè)工具。

1.2.2視圖的創(chuàng)建
create view 名字  assql語(yǔ)句--舉個(gè)簡(jiǎn)單的例子create view test_view asselect age,name from student
1.2.3視圖的使用
--視圖的使用其實(shí)和普通的表沒(méi)有多大區(qū)別--可視為一個(gè)表進(jìn)行操作select * from test_view--此時(shí)就檢索出age和name構(gòu)成的記錄--一般來(lái)講視圖是用于檢索數(shù)據(jù)的,當(dāng)然也可以插入,更新,刪除,但是會(huì)有限制,這部分在下面的誤區(qū)會(huì)講
1.2.4視圖的一些誤區(qū)
--首先視圖并不是一個(gè)真實(shí)的表,它只是一個(gè)虛表,本質(zhì)上并不儲(chǔ)存數(shù)據(jù),數(shù)據(jù)都在視圖sql語(yǔ)句中的基表當(dāng)中--故視圖在下列情況下不能被更新1.使用分組2.使用連接3.使用子查詢(xún)4.使用并操作5.使用聚集函數(shù)6.使用distinct7.使用計(jì)算列--這些數(shù)據(jù)本質(zhì)上都是由基表計(jì)算出來(lái)的,當(dāng)基表中無(wú)這些數(shù)據(jù),由于對(duì)視圖的更新相當(dāng)于對(duì)基表的更新,故不能更新

2.DML

2.1查詢(xún)語(yǔ)句

基本查詢(xún)語(yǔ)句
select 列名 from 表名select *from 表名--代表查詢(xún)?nèi)苛械囊馑?-舉個(gè)例子--查找student中name列select namefrom student
where語(yǔ)句

對(duì)查詢(xún)的記錄增加條件

select 列名from 表名where 條件--舉個(gè)例子--查找name為zhang的學(xué)生select * from studentwhere name = "zhang"
group by和having語(yǔ)句
--group by 顧名思義是分組查詢(xún),將數(shù)據(jù)按照一定的原則進(jìn)行排序--涉及到幾個(gè)比較常見(jiàn)的聚集函數(shù)--count,min,max,avg,sum--count(*)代表統(tǒng)計(jì)全部的數(shù)據(jù)包括空值,count(具體列名)則代表非空的數(shù)據(jù)--當(dāng)條件中有出現(xiàn)聚集函數(shù)必須使用having子句進(jìn)行限制,不能使用where--聚集函數(shù)相當(dāng)于在分組里面進(jìn)行計(jì)算,故select 中選擇的屬性必須包含在group by子句中--選擇的列要么出現(xiàn)在group by 子句中要么出現(xiàn)在聚集函數(shù)中--先分組再有having條件select 列名from 表名where 條件group by 列名--舉個(gè)例子--查找name相同的個(gè)數(shù)select name ,count(*)from studentgroup name
join語(yǔ)句
--包括自然連接,等值連接,有條件的連接--left join,right join ,full join--這些join語(yǔ)句區(qū)別在于處理空值的原則不同--left join即代表保留左表的全部數(shù)據(jù),沒(méi)有的值按照null表示,right 和full類(lèi)似select 列名from 表1 join 表2 on 條件--多個(gè)的話 from 表1 join 表2 on 條件 join 表3 on 條件where 條件
order by語(yǔ)句
--排序,比較簡(jiǎn)單,默認(rèn)升序排列--desc 降序排列--order by score desc--asc 升序排列--order by score asc--一般位于sql語(yǔ)句最后--舉個(gè)例子--將分?jǐn)?shù)按照降序排列select scorefrom studentorder by score desc--這里補(bǔ)充一個(gè)top 關(guān)鍵字--top 2代表前兩名--top 2 with ties 代表考慮并列select top 2 with ties score from student --percent 關(guān)鍵字--選出前30%select top 30 percent from student
子查詢(xún)

由于很多時(shí)候我們的表不能滿(mǎn)足我們需求,由于通過(guò)sql語(yǔ)句查詢(xún)出來(lái)的表具有很好的靈活性,故引入子查詢(xún)

使得我們可以用子查詢(xún)的記錄當(dāng)成一個(gè)表進(jìn)行操作

  • 不相關(guān)子查詢(xún)

    --顧名思義就是子查詢(xún)與目前執(zhí)行的查詢(xún)語(yǔ)句相互獨(dú)立--子查詢(xún)本質(zhì)就是一個(gè)sql語(yǔ)句
  • 相關(guān)子查詢(xún)

    --顧名思義就是子查詢(xún)與主要的查詢(xún)直接有關(guān)系--例如

between and 包括范圍點(diǎn)

like匹配符匹配中文時(shí)也將中文看成一個(gè)字符

聚集函數(shù)相當(dāng)于在分組里面進(jìn)行計(jì)算,故select 中選擇的屬性必須包含在group by子句中

選擇的列要么出現(xiàn)在group by 子句中要么出現(xiàn)在聚集函數(shù)中

先分組再有having條件,最后時(shí)排序,這里有個(gè)順序

對(duì)于group by分組的理解

當(dāng)按照group by后面的屬性進(jìn)行分組好之后

select選擇的屬性只能時(shí)group by 中的屬性或者聚集函數(shù)構(gòu)成的屬性,否則

就會(huì)出現(xiàn)另外一個(gè)字段對(duì)其進(jìn)行分組,不符合常理

有時(shí)候兩個(gè)連接時(shí)為什么同一個(gè)字段不需要指定列名,因?yàn)檫B接時(shí)產(chǎn)生重復(fù)

這里有個(gè)疑問(wèn),自然連接再實(shí)際實(shí)現(xiàn)中好像沒(méi)有特殊操作

交叉查詢(xún)就是笛卡兒積

自連接需要再看一下,這邊就是出現(xiàn)列名不明確會(huì)影響結(jié)果

2.2插入語(yǔ)句

有兩種方式

  • 沒(méi)有指定列名的插入語(yǔ)句

    insert into 表名 values(值1,值2)--這里必須輸入表的全部屬性上的值才可以執(zhí)行,默認(rèn)按照表的定義結(jié)構(gòu)進(jìn)行賦值--比較容易出錯(cuò),不建議采取這種插入數(shù)據(jù)的方式--舉個(gè)例子insert into student values("zhang",19)
  • 指定列名的插入語(yǔ)句

    insert into 表名(字段1,字段2) values(值1,值2)--這里指定列名,值一一與前面的列名相對(duì)應(yīng)--語(yǔ)句比較清晰,但存在需要寫(xiě)很多字段的繁瑣操作--舉個(gè)例子insert into student(name,age) values("yu",10)

2.3更新語(yǔ)句

update 表名set 執(zhí)行更新的操作where 條件--舉個(gè)例子--更新name為zhang的學(xué)生的名字變成hhhupdate studentset name = "hhh"where name = "zhang"

2.4刪除語(yǔ)句

delete from 表名where 條件--舉個(gè)例子--刪除name為zhang的學(xué)生delete from studentwhere name = "zhang"

3.DCL

  • 授權(quán)

    --授予某種權(quán)限給用戶(hù)grant 權(quán)限  to 用戶(hù)
  • 回收權(quán)限

    --回收權(quán)限r(nóng)evoke 權(quán)限 from 用戶(hù)
  • 拒絕權(quán)限

    --拒絕權(quán)限deny 權(quán)限 to 用戶(hù)

五、數(shù)據(jù)庫(kù)高級(jí)操作

這部分初學(xué)者很難使用到,如果這篇文章能有50收藏,我考完就寫(xiě),太累了,先列個(gè)大綱

1.事務(wù)

四個(gè)特性(ACID)

  • 原子性
  • 一致性
  • 獨(dú)立性
  • 持久性

2.封鎖

  • 一級(jí)封鎖協(xié)議

  • 二級(jí)封鎖協(xié)議

  • 三級(jí)封鎖協(xié)議

3.并發(fā)

3.1并發(fā)的副作用

3.2解決方案兩段鎖協(xié)議

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/125346.html

相關(guān)文章

  • C語(yǔ)言 指針+二維數(shù)組詳解 (應(yīng)付期末、考研的最強(qiáng)筆記,建議收藏)

    摘要:需要注意的是用矩陣形式如行列表示二維數(shù)組,是邏輯上的概念,能形象地表示出行列關(guān)系。再次強(qiáng)調(diào)二維數(shù)組名如是指向行的。一維數(shù)組名如是指向列元素的。 哈嘍!這里是一只派大鑫,不是派大星。本著基礎(chǔ)不牢,地動(dòng)山搖的學(xué)習(xí)態(tài)度,從基礎(chǔ)的C語(yǔ)言語(yǔ)法講到算法再到更高級(jí)的語(yǔ)法及框架的學(xué)習(xí)。更好地讓同樣熱愛(ài)編...

    FrozenMap 評(píng)論0 收藏0
  • 期末考試季】JAVA進(jìn)階復(fù)習(xí)提綱

    摘要:泛型類(lèi)型對(duì)象之間沒(méi)有關(guān)系,就算之間互為父子關(guān)系,也沒(méi)有任何關(guān)系。泛型類(lèi)的靜態(tài)上下文中類(lèi)型變量無(wú)效。不能捕獲或拋出泛型類(lèi)的實(shí)例。 前言 作為一塊后端沒(méi)有太多經(jīng)驗(yàn)的年糕,下周要考試了,所以我必須得來(lái)好好復(fù)習(xí)一下我的JAVA進(jìn)階課/(ㄒoㄒ)/~~。這個(gè)學(xué)期主要是學(xué)了: 泛型 反射 線程 JDBC JAVA WEB基礎(chǔ) Servlet session&cookie 過(guò)濾器&監(jiān)聽(tīng)器 泛型 ...

    Jokcy 評(píng)論0 收藏0
  • 大學(xué)一年之后竟如此。。。開(kāi)學(xué)前的掙扎

    摘要:后來(lái)知道有了院賽,學(xué)長(zhǎng)說(shuō)刷院和杭電就可,我就一直刷院,到最后比賽前院的前五十道基本做完,杭電也弄了十來(lái)道,就這樣草草參加比賽了。 博客主頁(yè): https://b...

    MartinDai 評(píng)論0 收藏0
  • Python0基礎(chǔ)(中)——期末不掛科

    摘要:結(jié)束索引,默認(rèn)為字符串的長(zhǎng)度。列表這塊注意索引中的列表更像中數(shù)組的超集從頭開(kāi)始從尾開(kāi)始常用操作插入刪除還是一樣的知道函數(shù)容易做不知道函數(shù)也能做索引循環(huán)判斷自己造一個(gè)出來(lái)就行了列表允許修改增加方法用于在列表末尾添加新的對(duì)象。 ...

    seal_de 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<