Mysql是目前互聯(lián)網(wǎng)使用最廣的關(guān)系數(shù)據(jù)庫,關(guān)系數(shù)據(jù)庫的本質(zhì)是將問題分解為多個分類然后通過關(guān)系來查詢。 一個經(jīng)典的問題是用戶借書,三張表,一個用戶,一個書,一個借書的關(guān)系表。當(dāng)需要查詢某個用戶借書情況或者是書被那些人借了,就用關(guān)系查詢來實(shí)現(xiàn)。
我們提供的服務(wù)有:網(wǎng)站建設(shè)、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、青羊ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的青羊網(wǎng)站制作公司
關(guān)系數(shù)據(jù)庫范式
來自英文Normal form,簡稱NF。要想設(shè)計(jì)—個好的關(guān)系,必須使關(guān)系滿足一定的約束條件,滿足這些規(guī)范的數(shù)據(jù)庫是簡潔的、結(jié)構(gòu)明晰的,同時,不會發(fā)生插入(insert)、刪除(delete)和更新(update)操作異常??偣灿辛N范式:第一范式(1NF)、第二范式(2NF)、 第三范式 (3NF)、巴斯-科德范式(BCNF)、 第四范式 (4NF)和 第五范式 (5NF,又稱完美范式)。
1NF是指數(shù)據(jù)庫表的每一列都是不可分割的原子數(shù)據(jù)項(xiàng)。2NF必須滿足1NF,要求數(shù)據(jù)庫表中的每行記錄必須可以被唯一地區(qū)分。3NF在2NF基礎(chǔ)上,任何非主 屬性 不依賴于其它非主屬性(在2NF基礎(chǔ)上消除傳遞依賴)。BCNF是在3NF基礎(chǔ)上,任何非主屬性不能對主鍵子集依賴(在3NF基礎(chǔ)上消除對主碼子集的依賴), 滿足BCNF不再會有任何由于函數(shù)依賴導(dǎo)致的異常,但是我們還可能會遇到由于多值依賴導(dǎo)致的異常。4NF的定義很簡單:已經(jīng)是BC范式,并且不包含多值依賴關(guān)系。5NF處理的是無損連接問題,這個范式基本沒有實(shí)際意義,因?yàn)闊o損連接很少出現(xiàn),而且難以察覺。而域鍵范式試圖定義一個終極范式,該范式考慮所有的依賴和約束類型,但是實(shí)用價值也是最小的,只存在理論研究中。
Catalog和Schema
是數(shù)據(jù)庫對象命名空間中的層次,主要用來解決命名沖突的問題。從概念上說,一個數(shù)據(jù)庫系統(tǒng)包含多個Catalog,每個Catalog又包含多個Schema,而每個Schema又包含多個數(shù)據(jù)庫對象(表、視圖、字段等)。但是Mysql的數(shù)據(jù)庫名就是Schema,不支持Catalog。
Mysql的數(shù)據(jù)庫引擎主要有兩種MyISAM和InnoDB,MyISAM支持全文檢索,InnoDB支持事務(wù)。
SQL中的通配符‘%’代表任意字符出現(xiàn)任意次數(shù)。‘_’代表任意字符出現(xiàn)一次。SQL與正則表達(dá)式結(jié)合查詢一般用在WHERE table_name REGEXP '^12.34'。子查詢是從里到外執(zhí)行。
數(shù)據(jù)庫聯(lián)結(jié)(join)涉及到外鍵,外鍵是指一個表的列是另一個表的主鍵,那么它就是外鍵。笛卡爾積聯(lián)結(jié)(不指定聯(lián)結(jié)條件時)生成的記錄條目是單純的第一個表的行乘以第二個表的列數(shù)。用得最多的是等值聯(lián)結(jié)也叫內(nèi)部聯(lián)結(jié)。
高級聯(lián)結(jié)還有自連接,是指查詢中的兩張表是同一張表,它通常作為外部語句用來代替從相同表中檢索數(shù)據(jù)時使用的子查詢。自然聯(lián)結(jié)使每個列只返回一次。外部聯(lián)結(jié)是指聯(lián)結(jié)包含了那些在相關(guān)表中沒有關(guān)聯(lián)行的行。例如列出所有產(chǎn)品及其訂購數(shù)量,包括沒有人訂購的產(chǎn)品。LEFT OUTER JOIN指選擇左邊表的所有行。
組合查詢是指采用UNION等將兩個查詢結(jié)果取并集。
視圖是查看存儲在別處的數(shù)據(jù)的一種工具,它本身并不包含數(shù)據(jù),因此表的數(shù)據(jù)修改了,視圖返回的數(shù)據(jù)也將隨之修改,因此如果使用了復(fù)雜或嵌套視圖會對性能有較大的影響。視圖的作用之一是隱藏復(fù)雜的SQL通常會涉及到聯(lián)結(jié)查詢。
存儲過程類似于批處理,包含了一條或多條SQL語句。語法:
CREATE PROCEDURE name()
BEGIN
SQL
END
-------------------------
CALL name()//來調(diào)用存儲過程
游標(biāo)有DECLARE定義,游標(biāo)與存儲過程是綁定的,存儲過程處理完成,游標(biāo)就會消失。游標(biāo)被打開后可以使用FETCH語句訪問每一行。
觸發(fā)器是在某個時間發(fā)生時自動執(zhí)行某條SQL語句。語法:
CREATE TRIGGER name AFTER INSERT ON talbe_name FOR EACH ROW
事務(wù)處理可以維護(hù)數(shù)據(jù)庫的完整性,保證批量的操作要么完全執(zhí)行,要么完全不執(zhí)行。包括事務(wù)、回退、提交、保留點(diǎn)幾個關(guān)鍵術(shù)語。ROLLBACK只能在一個事務(wù)處理內(nèi)使用。他不能回退CREATE和DROP操作。使用COMMIT保證事務(wù)提交。復(fù)雜的事務(wù)處理需要部分提交或回退,因此我們需要使用保留點(diǎn)SAVEPOINT??梢允褂肦OLLBACK TO savepoint_name。保留點(diǎn)越多越好。保留點(diǎn)在事務(wù)執(zhí)行完成后自動釋放。
選中某個表,然后右鍵點(diǎn)擊,選擇“設(shè)計(jì)表”即可。
也可以左鍵點(diǎn)擊某個表(即選中某表),在上面輔助菜單欄里有“打開表”、“設(shè)計(jì)表”、“新建表”等按鈕可點(diǎn)擊,點(diǎn)擊“設(shè)計(jì)表”按鈕即可。
進(jìn)入后,會彈出新的操作窗口,新窗口的菜單欄里有常用的修改表結(jié)構(gòu)的按鈕,右鍵點(diǎn)擊某列字段也可以彈出相應(yīng)的修改表的操作按鈕。
其它摸索著看提示操作即可,還是很簡單的。
修改好表后點(diǎn)擊菜單欄上的“保存”按鈕即可。
注:若要查看修改表的sql語句,必須在“保存”之前點(diǎn)擊“SQL預(yù)覽”按鈕。
第一范式:1NF是對屬性的原子性約束,要求屬性具有原子性,不可再分解;
第二范式:2NF是對記錄的惟一性約束,要求記錄有惟一標(biāo)識,即實(shí)體的惟一性;
第三范式:3NF是對字段冗余性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗余。