數(shù)據(jù)庫(kù)學(xué)習(xí)筆記_第1頁(yè)
數(shù)據(jù)庫(kù)學(xué)習(xí)筆記_第2頁(yè)
數(shù)據(jù)庫(kù)學(xué)習(xí)筆記_第3頁(yè)
數(shù)據(jù)庫(kù)學(xué)習(xí)筆記_第4頁(yè)
數(shù)據(jù)庫(kù)學(xué)習(xí)筆記_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、數(shù)據(jù)庫(kù)學(xué)習(xí)筆記Sql基本操作1、基本操作CRUD(增刪改查)2、將sql基本操作根據(jù)操作對(duì)象分類:庫(kù)操作,表操作(字段),數(shù)據(jù)操作。2.1庫(kù)操作:對(duì)數(shù)據(jù)庫(kù)的增刪改查;2.1.1新增數(shù)據(jù)庫(kù):基本語(yǔ)法:Create datebase 數(shù)據(jù)庫(kù)名字 庫(kù)選項(xiàng)庫(kù)選項(xiàng):用來(lái)約束數(shù)據(jù)庫(kù),分為兩個(gè)選項(xiàng)l 字符集設(shè)定:charset(數(shù)據(jù)存儲(chǔ)的編碼格式):常用的有GBK與UTF8l 校對(duì)集設(shè)定:collate(數(shù)據(jù)比較的規(guī)則)當(dāng)創(chuàng)建數(shù)據(jù)庫(kù)的sql語(yǔ)句執(zhí)行之后,發(fā)生了什么?1、 在數(shù)據(jù)庫(kù)系統(tǒng)中增加了對(duì)應(yīng)的數(shù)據(jù)庫(kù)信息;2、 會(huì)在保存數(shù)據(jù)的文件夾下:Date目錄,創(chuàng)建一個(gè)對(duì)應(yīng)數(shù)據(jù)庫(kù)名字的文件夾;3、 每個(gè)數(shù)據(jù)庫(kù)下都有一

2、個(gè)opt文件,保存了庫(kù)選項(xiàng)。2.1.2:查看數(shù)據(jù)庫(kù):1、查看所有數(shù)據(jù)庫(kù)Show databases;2、查看指定部分的數(shù)據(jù)庫(kù):模糊查詢Show databases like pattern;-pattern是匹配模式%:表示匹配多個(gè)字符;_:表示匹配單個(gè)字符;3、查看數(shù)據(jù)庫(kù)創(chuàng)建語(yǔ)句:Show create database 數(shù)據(jù)庫(kù)名字;eg: SHOW CREATE DATABASE imooc;數(shù)據(jù)庫(kù)在執(zhí)行sql語(yǔ)句之前會(huì)優(yōu)化sql,系統(tǒng)保存的結(jié)果是優(yōu)化后的結(jié)果。2.1.3更新數(shù)據(jù)庫(kù):數(shù)據(jù)庫(kù)名字不可修改;數(shù)據(jù)庫(kù)的修改僅限庫(kù)選項(xiàng):字符集和校對(duì)集(校對(duì)集依賴字符集)。Alter database

3、 數(shù)據(jù)庫(kù)名字 庫(kù)選項(xiàng);Charset/character set 字符集;Collate 校對(duì)集;2.1.4刪除數(shù)據(jù)庫(kù):Drop database 數(shù)據(jù)庫(kù)名字;當(dāng)刪除數(shù)據(jù)庫(kù)語(yǔ)句執(zhí)行之后發(fā)生了什么?1、 在數(shù)據(jù)庫(kù)內(nèi)部看不到對(duì)應(yīng)的數(shù)據(jù)庫(kù);2、 在對(duì)應(yīng)的數(shù)據(jù)庫(kù)存儲(chǔ)的文件夾內(nèi),數(shù)據(jù)庫(kù)名字對(duì)應(yīng)的文件夾也被刪除(級(jí)聯(lián)刪除:里面的數(shù)據(jù)表全部刪除),數(shù)據(jù)庫(kù)刪除不可逆。2.2表操作表與字段密不可分2.2.1新增數(shù)據(jù)表語(yǔ)法:Create table if not exists 表名(字段名字 數(shù)據(jù)類型(x),(如果數(shù)據(jù)類型是字符型,需要將字符長(zhǎng)度加上)字段名字 數(shù)據(jù)類型,···

4、83;··· -最后一行不需要逗號(hào))表選項(xiàng);If not exists :如果表名不存在則創(chuàng)建,如果存在則不執(zhí)行創(chuàng)建代碼:檢查功能;表選項(xiàng):控制表的表現(xiàn),字符集:charset/character set 具體字符集;-保證表中數(shù)據(jù)存儲(chǔ)的字符集;校對(duì)集:collate 具體校對(duì)集;存儲(chǔ)引擎:engine 具體存儲(chǔ)引擎(innodb和myisam);任何一個(gè)表的設(shè)計(jì)都必須指定數(shù)據(jù)庫(kù)方案1:顯示的指定表所屬的數(shù)據(jù)庫(kù)Create table if not exists 數(shù)據(jù)庫(kù)名.表名();-將當(dāng)前數(shù)據(jù)表創(chuàng)建到指定的數(shù)據(jù)庫(kù)下。方案2:隱式的指定數(shù)據(jù)表所屬數(shù)據(jù)庫(kù):先進(jìn)入到某

5、個(gè)數(shù)據(jù)庫(kù)環(huán)境,然后這樣創(chuàng)建的數(shù)據(jù)表自動(dòng)歸屬到該數(shù)據(jù)庫(kù)。進(jìn)入數(shù)據(jù)庫(kù)環(huán)境:use 數(shù)據(jù)庫(kù)名字;2.2.2查看數(shù)據(jù)表1、查看所有表 show tables;2、查看部分表:模糊匹配:Show tables likepattern;%:表示匹配多個(gè)字符;_:表示匹配單個(gè)字符;3、 查看表的創(chuàng)建語(yǔ)句;Show create table 表名;4.查看表結(jié)構(gòu):查看表中的字段信息Desc/describe/show columns(列)from 表名;2.2.3修改數(shù)據(jù)表2.2.3.1修改表本身表本身可以修改:表名和表選項(xiàng);1、修改表名:Rename table 老表名 to 新表名;2、修改表選項(xiàng):A 2

6、.2.3.2修改字段(增、刪、改、查)1、新增字段:Alter table 表名 addcolumn 字段名 數(shù)據(jù)類型 列屬性 位置;位置:字段名可以存放表中任意位置First:第一個(gè)位置;After:在哪個(gè)字段之后:after 字段名;默認(rèn)的是在最后一個(gè)字段之后。2、修改字段:Alter table 表名 modify 字段名 數(shù)據(jù)類型【屬性】【位置】;3、重命名字段Alter table 表名 change 舊字段 新字段名 數(shù)據(jù)類型【屬性】【位置】;4、 刪除字段:Alter table 表名 drop字段名;注意:如果表中已經(jīng)存在數(shù)據(jù),那么刪除字段會(huì)清空該字段的所有數(shù)據(jù)(不可逆)。2.

7、2.4刪除數(shù)據(jù)表Drop table 表名1,表名2,表名3···;可以一簇刪除多張表。2.3數(shù)據(jù)操作:2.3.1新增數(shù)據(jù):兩種方案:方案1、給全表字段插入數(shù)據(jù),不需要指定字段列表;要求數(shù)據(jù)的值出現(xiàn)的順序必須與表中設(shè)計(jì)的字段出現(xiàn)的順序一致,凡是非數(shù)值數(shù)據(jù)都需要使用引號(hào)(建議使用單引號(hào))包裹。Insert into 表名 values(值列表)【,(值列表)】;-可以一次插入多條數(shù)據(jù)。方案2、給部分字段插入數(shù)據(jù),需要選定字段列表,字段列表出現(xiàn)的順序與字段的順序無(wú)關(guān),但是值列表的順序必須與選定的字段的順序一致Insert into 表名(字段列表)values (值列

8、表)【,(值列表)】;2.3.2查看數(shù)據(jù):1、查看所有數(shù)據(jù)Select * from 表名;2、查看指定字段,指定條件的數(shù)據(jù)Select 字段列表 from 表名 【where條件】;2.3.3更新數(shù)據(jù):Update 表名 set 字段 = 值【where條件】;-建議都有where:要不是更新全部2.3.4刪除數(shù)據(jù):Delete from 表名【where條件】;3、中文數(shù)據(jù)問(wèn)題中文數(shù)據(jù)問(wèn)題本質(zhì)是字符集問(wèn)題。4、數(shù)據(jù)類型(列類型)Sql中將數(shù)據(jù)類型分為三大類:數(shù)值類型,字符串類型和時(shí)間類型4.1、整數(shù)型(tinyint,int)常用Tinyint和Int。SQL中的數(shù)據(jù)類型全部都是默認(rèn)有符號(hào)

9、,分正負(fù);有的時(shí)候需要使用無(wú)符號(hào)的數(shù)據(jù),需要給數(shù)據(jù)類型限定:int unsigned,-無(wú)符號(hào)從0開(kāi)始。顯示寬度沒(méi)有特別的含義,只是默認(rèn)告訴用戶可以顯示的形式而已,實(shí)際上用戶可以控制的,這種控制不會(huì)改變數(shù)據(jù)本身的大小。顯示寬度的意義:5、列屬性列屬性:真正約束字段的是數(shù)據(jù)類型,但是數(shù)據(jù)類型的約束很單一,需要有一些額外的約束,來(lái)更加保證數(shù)據(jù)的合法性。列屬性有很多:NULL/NOTNULL,default,Primary key,unique key,auto_increment,comment5.1、空屬性兩個(gè)值:NULL(默認(rèn)的)和NOT NULL雖然默認(rèn)為空,但實(shí)際開(kāi)發(fā)中,盡可能保證所有數(shù)據(jù)

10、都不為空,因?yàn)榭諗?shù)據(jù)沒(méi)有意義,也無(wú)法參加運(yùn)算。5.2、列描述列描述:comment,描述,沒(méi)有實(shí)際含義:是專門用來(lái)描述字段的,會(huì)根據(jù)表創(chuàng)建語(yǔ)句保存,用來(lái)給程序員(數(shù)據(jù)庫(kù)管理員)來(lái)進(jìn)行了解的。5.3、默認(rèn)值默認(rèn)值:某一種數(shù)據(jù)會(huì)經(jīng)常性的出現(xiàn)某一個(gè)具體的值,可以在一開(kāi)始便指定好,在需要真實(shí)數(shù)據(jù)的時(shí)候,用戶可以選擇性的使用默認(rèn)值。6、 字段屬性6.1、主鍵:主鍵:primary key,主要的鍵,一張表只能有一個(gè)主鍵,用來(lái)唯一的約束該字段里的數(shù)據(jù),不能重復(fù)。6.1.1增加主鍵增加主鍵的三種方式:1、 創(chuàng)建表時(shí)直接在字段之后跟primary key關(guān)鍵字(主鍵本身不允許為空)優(yōu)點(diǎn):直接;缺點(diǎn):只能使用一

11、個(gè)字段作為主鍵。2、 創(chuàng)建表的時(shí)候,在所有字段之后使用primary key(主鍵字段列表)來(lái)創(chuàng)建主鍵(如果有多個(gè)字段為主鍵,可以是復(fù)合主鍵)3、 當(dāng)表已經(jīng)創(chuàng)建好之后,再次額外追加主鍵,可以通過(guò)修改表字段屬性,也可以直接追加。Alter table 表名 add primary key(字段列表)前提:表中字段對(duì)應(yīng)的數(shù)據(jù)本身是獨(dú)立的(不重復(fù))。6.1.2主鍵約束主鍵對(duì)應(yīng)的字段中數(shù)據(jù)不允許重復(fù),一旦重復(fù),數(shù)據(jù)操作失敗。6.1.3更新主鍵&刪除主鍵沒(méi)有辦法更新主鍵,主鍵必須先刪除,才能增加。Alter table 表名 drop primary key; 6.1.4、主鍵分類6.2、自動(dòng)增

12、長(zhǎng)自增長(zhǎng):當(dāng)對(duì)應(yīng)字段不給值或者給默認(rèn)值或者給NULL時(shí),自增長(zhǎng)被系統(tǒng)觸發(fā),系統(tǒng)會(huì)從當(dāng)前字段中已有的最大值進(jìn)行+1操作,得到一個(gè)新的不同字段。自增長(zhǎng)通常與主鍵配合使用;自增長(zhǎng)的特點(diǎn):auto_increment6.2.1新增自增長(zhǎng)1、 任何一個(gè)字段做自增長(zhǎng),前提本身必須是一個(gè)索引(key一欄有值);2、 字段必須是數(shù)字,而且是整型;3、 一張表最多只能有一個(gè)自增長(zhǎng)。6.2.2自增長(zhǎng)使用當(dāng)對(duì)應(yīng)字段不給值或者給默認(rèn)值或者給NULL時(shí),自增長(zhǎng)被系統(tǒng)觸發(fā),系統(tǒng)會(huì)從當(dāng)前字段中已有的最大值進(jìn)行+1操作,得到一個(gè)新的不同字段。如果自增長(zhǎng)對(duì)應(yīng)字段輸入了值,那么自增長(zhǎng)將失效,但是下一次還是能自動(dòng)的自增長(zhǎng)(從最大值

13、+1)如何確定下一次自增長(zhǎng)是什么?可以通過(guò)查看創(chuàng)建表語(yǔ)句6.2.3修改自增長(zhǎng)自增長(zhǎng)如果涉及到字段改變,必須先刪除自增長(zhǎng)后增加(因?yàn)橐粡埍碇荒苡幸粋€(gè)自增長(zhǎng))。修改當(dāng)前自增長(zhǎng)已經(jīng)存在的值,修改只能比當(dāng)前已有的自增長(zhǎng)的最大值大,不能小,(小不生效)。Alter table 表名 auto_increment =?;6.2.4刪除字增長(zhǎng)自增長(zhǎng)是一個(gè)屬性,可以通過(guò)modify來(lái)進(jìn)行修改(保證字段里沒(méi)有auto_increment即可)Alter table 表名 modify 字段 類型。6.3、唯一鍵一張表往往有許多字段需要具有唯一性,數(shù)據(jù)不能重復(fù),但是一張表中只能有一個(gè)主鍵,唯一鍵(unique k

14、ey)就可以解決多個(gè)字段需要唯一性約束的問(wèn)題。唯一鍵本質(zhì)與主鍵差不多,唯一鍵默認(rèn)的允許自動(dòng)為空,而且可以對(duì)個(gè)為空(空字段不參與唯一性比較)。6.3.1增加唯一鍵基本與主鍵差不多1、在創(chuàng)建表時(shí),字段之后直接跟unique/unique key2、在所有字段之后增加unique key (字段列表);-復(fù)合唯一。4、 在創(chuàng)建表之后增加唯一鍵;6.3.2唯一鍵約束唯一鍵與主鍵本質(zhì)相同,唯一的區(qū)別就是唯一鍵默認(rèn)允許為空,而且是多空;如果唯一鍵也不允許為空,與主鍵的約束作用是一致的。6.3.3更新唯一鍵&刪除唯一鍵更新唯一鍵:先刪除后新增(唯一鍵可以有多個(gè),可以不刪除)1、刪除唯一鍵Alter

15、table 表名 drop index 索引名字;唯一鍵默認(rèn)使用字段名作為索引名字。6.4、索引幾乎所有的索引都建立在字段之上索引:系統(tǒng)根據(jù)某種算法,將已有的數(shù)據(jù)(未來(lái)可能新增的數(shù)據(jù))單獨(dú)建立一個(gè)文件,文件能夠?qū)崿F(xiàn)快速的匹配數(shù)據(jù),并且能快速的找到對(duì)應(yīng)表中的記錄。索引的意義:1、 提升查詢數(shù)據(jù)的效率;2、 約束數(shù)據(jù)的有效性(唯一性等);增加索引的前提條件:索引本身會(huì)產(chǎn)生索引文件(有時(shí)候可能比數(shù)據(jù)文件還大),會(huì)非常耗費(fèi)磁盤空間,Mysql中提供多種索引:1、 主鍵索引:primary key;2、 唯一索引:unique key;3、 全文索引:fulltext index;4、 普通索引:ind

16、ex全文索引:針對(duì)文章內(nèi)部的關(guān)鍵字進(jìn)行索引,全文索引最大的一個(gè)問(wèn)題在于如何確定關(guān)鍵字。英文很容易:英文單詞與單詞之間有空格;中文很難:沒(méi)有空格,而且中文可以各種隨意組合(分詞:sphinx)。7、 數(shù)據(jù)的高級(jí)操作數(shù)據(jù)操作:增刪改查7.1新增數(shù)據(jù)基本語(yǔ)法:Insert into 表名 【(字段列表) values (值列表)】;7.2查詢數(shù)據(jù)基本語(yǔ)法:Select 字段列表/* from 表名 【where 條件】完整語(yǔ)法:Select【select 選項(xiàng)】字段列表【字段別名】/* from 數(shù)據(jù)源 【where 條件子句】【group by 子句】【having 子句】【order by 子句

17、】【limit 子句】;1、 select 選項(xiàng):select對(duì)查出來(lái)的結(jié)果的處理方式。All:默認(rèn)的,保留所有結(jié)果;Discinct:去重,查出來(lái)的結(jié)果,將重復(fù)的給去除(所有字段都相同)。2、 字段別名:字段別名:當(dāng)數(shù)據(jù)進(jìn)行查詢出來(lái)的時(shí)候,有時(shí)候名字并不一定就滿足需求(多表查詢的時(shí)候,會(huì)有同名字段)需要對(duì)字段名進(jìn)行重命名:別名。語(yǔ)法:字段名 【as】 別名;3、 數(shù)據(jù)源數(shù)據(jù)源:數(shù)據(jù)的來(lái)源,關(guān)系型數(shù)據(jù)庫(kù)的來(lái)源都是數(shù)據(jù)表,本質(zhì)上只要保證數(shù)據(jù)表類似二維表,最終都可以作為數(shù)據(jù)源。數(shù)據(jù)源分為多種:?jiǎn)伪頂?shù)據(jù)源,多表數(shù)據(jù)源,查詢語(yǔ)句;1、 單表數(shù)據(jù)源:select * from 表名;2、 多表數(shù)據(jù)名:s

18、elect * from 表名1,表名2,····;(笛卡爾積沒(méi)什么卵用)3、 子查詢:數(shù)據(jù)來(lái)源是一條查詢語(yǔ)句(查詢語(yǔ)句的結(jié)果是二維表)Select * from (select 語(yǔ)句) as 表名;4、where子句where子句:用來(lái)判斷數(shù)據(jù),篩選數(shù)據(jù)。Where子句返回結(jié)果,0或者1,0代表false,1代表true。判斷條件:條件查詢1:要求找出學(xué)生id為1或者3或者5的學(xué)生;條件查詢2: 查詢區(qū)間落在180,190身高之間的學(xué)生;Between本身是閉區(qū)間,between左邊的值必須小于或者等于右邊的值。4、 group by子句group b

19、y :分組的意思,根據(jù)某個(gè)字段進(jìn)行分組(相同一組,不同的分到不同組)基本語(yǔ)法:Group by 字段名;分組的意義在于統(tǒng)計(jì)數(shù)據(jù)(按組統(tǒng)計(jì),按分組字段進(jìn)行數(shù)據(jù)統(tǒng)計(jì))SQL提供一系列統(tǒng)計(jì)函數(shù):Count();統(tǒng)計(jì)分組后的記錄數(shù),每一組有多少記錄;Max();統(tǒng)計(jì)每組中最大值;Min();統(tǒng)計(jì)每組中最小值;Avg();統(tǒng)計(jì)平均值;Sum();統(tǒng)計(jì)和;Count()函數(shù),里面可以使用兩種參數(shù),*代表統(tǒng)計(jì)記錄,字段名代表統(tǒng)計(jì)對(duì)應(yīng)的字段(NULL 不統(tǒng)計(jì));分組會(huì)自動(dòng)排序,根據(jù)分組字段自動(dòng)排序,默認(rèn)升序。Group by 字段 【asc|desc(降序)】;-對(duì)分組結(jié)果合并之后的整個(gè)結(jié)果進(jìn)行排序。多字段分

20、組:先根據(jù)一個(gè)字段進(jìn)行分組,然后對(duì)分組后的結(jié)果再次按照其他字段進(jìn)行分組。5、 having子句having子句:與where子句一樣,進(jìn)行條件判斷的。Where是對(duì)磁盤數(shù)據(jù)進(jìn)行判斷的,進(jìn)入內(nèi)存之后,會(huì)進(jìn)行分組操作,分組結(jié)果就需要having來(lái)處理。Having能做where能做的幾乎所有事情,但where卻不能做having能做的很多事情。5.1、分組統(tǒng)計(jì)的結(jié)果或者說(shuō)統(tǒng)計(jì)函數(shù)都只有having能夠使用。5.2、having能夠使用字段別名但where不能,where是從磁盤取數(shù)據(jù),所以名字只可能是字段名,別名是在字段進(jìn)入到內(nèi)存后才產(chǎn)生的。6、 Order by子句:Order by:排序,根據(jù)

21、某個(gè)字段進(jìn)行升序后者降序排序,依賴校對(duì)集。基本語(yǔ)法:Order by 字段名 【asc|desc】;-asc是升序(默認(rèn)的),desc是降序。排序可以進(jìn)行多字段排序,先根據(jù)某個(gè)字段進(jìn)行排序,然后排序好的內(nèi)部再按照某個(gè)數(shù)據(jù)進(jìn)行再次排序。7、 limit子句limit子句是一種限制結(jié)果的語(yǔ)句:限制數(shù)量。Limit有兩種使用方式:7.1、只用來(lái)限制長(zhǎng)度(數(shù)據(jù)量),limit數(shù)據(jù)量;7.2、限制起始位置,限制數(shù)量;limit起始位置,長(zhǎng)度;8、 數(shù)據(jù)庫(kù)事務(wù)的基本特性數(shù)據(jù)庫(kù)事務(wù)概念什么是數(shù)據(jù)庫(kù)事務(wù)?事務(wù)(transaction)是由一系列操作序列構(gòu)成的程序執(zhí)行單元,這些操作要么都做,要么都不做,是一個(gè)不

22、可分割的工作單位。數(shù)據(jù)庫(kù)事務(wù)的四個(gè)基本性質(zhì)(ACID)1. 原子性(Atomicity)事務(wù)的原子性是指事務(wù)中包含的所有操作要么全做,要么全不做(all or none)。2. 一致性(Consistency)在事務(wù)開(kāi)始以前,數(shù)據(jù)庫(kù)處于一致性的狀態(tài),事務(wù)結(jié)束后,數(shù)據(jù)庫(kù)也必須處于一致性狀態(tài)。拿銀行轉(zhuǎn)賬來(lái)說(shuō),一致性要求事務(wù)的執(zhí)行不應(yīng)改變A、B 兩個(gè)賬戶的金額總和。如果沒(méi)有這種一致性要求,轉(zhuǎn)賬過(guò)程中就會(huì)發(fā)生錢無(wú)中生有,或者不翼而飛的現(xiàn)象。事務(wù)應(yīng)該把數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)轉(zhuǎn)換到另外一個(gè)一致性狀態(tài)。3. 隔離性(Isolation)事務(wù)隔離性要求系統(tǒng)必須保證事務(wù)不受其他并發(fā)執(zhí)行的事務(wù)的影響,也即要達(dá)到這

23、樣一種效果:對(duì)于任何一對(duì)事務(wù)T1 和 T2,在事務(wù) T1 看來(lái),T2 要么在 T1 開(kāi)始之前已經(jīng)結(jié)束,要么在 T1 完成之后才開(kāi)始執(zhí)行。這樣,每個(gè)事務(wù)都感覺(jué)不到系統(tǒng)中有其他事務(wù)在并發(fā)地執(zhí)行。4. 持久性(Durability)一個(gè)事務(wù)一旦成功完成,它對(duì)數(shù)據(jù)庫(kù)的改變必須是永久的,即便是在系統(tǒng)遇到故障的情況下也不會(huì)丟失。數(shù)據(jù)的重要性決定了事務(wù)持久性的重要性。9、 關(guān)系:將實(shí)體與實(shí)體的關(guān)系,反映到最終數(shù)據(jù)表的設(shè)計(jì)上來(lái):將關(guān)系分為三種:一對(duì)一,一對(duì)多(多對(duì)一)和多對(duì)多。所有的關(guān)系指的都是表與表之間的關(guān)系。9.1一對(duì)一:一張表的一條記錄只能與另一張表的一條記錄一一對(duì)應(yīng),反之亦然。9.2一對(duì)多 9.3多對(duì)

24、多:連接查詢;join,使用方式:左表join右表左表:在join關(guān)鍵字左邊的表右表:在join關(guān)鍵字右邊的表10.1交叉連接(理解為取并集)交叉連接(全連接,理解為取并集):cross join,從一張表中循環(huán)取出每一條記錄,每條記錄都去另一張表進(jìn)行匹配,匹配一定保留(沒(méi)有條件匹配),而連接本身字段就會(huì)增加(保留),最終形成的結(jié)果叫做笛卡爾積?;菊Z(yǔ)法:左表 cross join 右表;=from 左表,右表;注意1、是先進(jìn)行連接,后進(jìn)行查詢;2、笛卡爾積沒(méi)有意義,應(yīng)該盡量避免使用;3、交叉連接的意義,保證連接這種結(jié)構(gòu)的完整性。10.2內(nèi)連接(取交集)內(nèi)連接:【inner】join ,從左表

25、中取出每一條記錄,去右表中與所有的記錄進(jìn)行匹配,匹配必須是左表中某個(gè)條件與右表中相同最終才會(huì)保留結(jié)果,否則不保留?;菊Z(yǔ)法:左表 【inner】join 右表 on 左表.字段 = 右表.字段;on表示連接條件,條件字段就是代表相同的業(yè)務(wù)含義。字段別名以及表別名的使用:在查詢數(shù)據(jù)的時(shí)候,不同表有同名字段,這個(gè)時(shí)候需要加上表名才能區(qū)分,而表名太長(zhǎng),通??梢允褂脛e名。內(nèi)連接可以沒(méi)有連接條件:沒(méi)有on之后的內(nèi)容,這個(gè)時(shí)候系統(tǒng)會(huì)保留所有結(jié)果(笛卡爾積),相當(dāng)于交叉連接。內(nèi)連接還可以使用where代替on關(guān)鍵字(where沒(méi)有on效率高)10.3外連接外連接:outer join,以某張表為主,取出里面

26、的所有記錄,然后每條與另外一張表進(jìn)行連接,不管能不能匹配上條件,最終都會(huì)保留,能匹配,正確保留;不能匹配,其他表的字段都置為NULL。外連接分為2種:左連接(left join)與右連接(right join)基本語(yǔ)法:左表 left/right join 右表 on 左表.字段 = 右表.字段;雖然左連接和右連接有主表的差異,但是顯示的結(jié)果:左表的數(shù)據(jù)在左邊,右表的數(shù)據(jù)在右邊,左右表連接可以互轉(zhuǎn)。10.4自然連接自然連接;natural join ,就是自動(dòng)匹配連接條件,系統(tǒng)以字段名字作為匹配模式(同名字段就可作為條件,多個(gè)同名字段都作為條件)自然連接分為:自然內(nèi)連接和自然外連接。自然內(nèi)連接

27、:左表natural join 右表;自然外連接:左表 natural left/right join 右表;11、外鍵外鍵:foreign key,外面的鍵(鍵不在自己表中);如果一張表中有一個(gè)字段(非主鍵)指向另外一張表的主鍵,那么將該字段稱之為外鍵。11.1增加外鍵外鍵可以在創(chuàng)建表的時(shí)候或者創(chuàng)建表之后增加(但是要考慮數(shù)據(jù)問(wèn)題)1、創(chuàng)建表的時(shí)候增加外鍵:在所有的表字段之后,使用foreign key(外鍵字段)references 外部表(主鍵字段)2、 在新增表之后增加外鍵 修改表結(jié)構(gòu)Alter table 表名 add 【constraint 外鍵名字】foreign key(外鍵字段

28、)references 父表(主鍵字段)12、聯(lián)合查詢聯(lián)合查詢:將多次查詢(多條select語(yǔ)句),在記錄上進(jìn)行拼接(字段不會(huì)增加)基本語(yǔ)法:多條select語(yǔ)句構(gòu)成:每一條select語(yǔ)句獲取的字段必須嚴(yán)格一致(但是字段類型無(wú)關(guān))Select 語(yǔ)句1Union【union選項(xiàng)】Select 語(yǔ)句2、Union選項(xiàng)與select選項(xiàng)一樣有2個(gè);All:保留所有(不管重復(fù))Distinct:去重(整個(gè)重復(fù)):默認(rèn)的。聯(lián)合查詢的意義:1、 查詢統(tǒng)一張表,但是需求不同,如查詢學(xué)生信息,男生身高升序,女生身高降序。2、 多表查詢,多張表的結(jié)構(gòu)是完全一樣的,保存的數(shù)據(jù)結(jié)構(gòu)也是一樣的。order by 的

29、使用在聯(lián)合查詢中,order by 不能直接使用,需要對(duì)查詢語(yǔ)句使用括號(hào)才行;若要order by 生效,必須搭配limit,limit使用限定的最大數(shù)即可。13、子查詢子查詢:sub query ,查詢是在某個(gè)查詢結(jié)果之上進(jìn)行的(一條select語(yǔ)句中包含另外一條select語(yǔ)句)。子查詢的分類:按位置分類;按結(jié)果分類。按位置分類:子查詢(select語(yǔ)句)在外部查詢(select語(yǔ)句)中出現(xiàn)的位置。From子查詢:子查詢跟在from之后;Where子查詢:子查詢出現(xiàn)在where條件中;Exists子查詢:子查詢出現(xiàn)在exists里面。按結(jié)果分類:根據(jù)子查詢得到的數(shù)據(jù)進(jìn)行分類(理論上講任何一

30、個(gè)子查詢得到的結(jié)果都可以理解為二維表)標(biāo)量子查詢:子查詢得到的結(jié)果是一行一列;列子查詢:子查詢得到的結(jié)果是一列多行;行子查詢:子查詢得到的結(jié)果是多行一列(多行多列)上面幾個(gè)出現(xiàn)的位置都是在where之后表子查詢:子查詢得到的結(jié)果是多行多列(出現(xiàn)的位置是在from之后)。13.1標(biāo)量子查詢14、視圖:視圖:view是一種有結(jié)構(gòu)(有行有列)但是沒(méi)結(jié)果(結(jié)構(gòu)中不存放真實(shí)數(shù)據(jù))的虛擬表,虛擬表的結(jié)構(gòu)來(lái)源不是自己定義,而是從對(duì)應(yīng)的基表中產(chǎn)生(視圖的數(shù)據(jù)來(lái)源)。14.1創(chuàng)建視圖基本語(yǔ)法:Create view 視圖名字 as select 語(yǔ)句;-select語(yǔ)句可以是普通查詢,可以是連接查詢,可以是聯(lián)合查詢,可以是子查詢。14.2查看視圖查看視圖:查看視圖的結(jié)構(gòu)視圖是一張?zhí)摂M表,表的所有查看

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論