版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫設(shè)計(jì)與應(yīng)用—
—
M
y
S
Q
L認(rèn)識數(shù)據(jù)庫4卸截MySQL2搭建MySQL數(shù)據(jù)庫環(huán)境3設(shè)置MySQL密碼與配置MySQL字符編碼1掌握數(shù)據(jù)庫基礎(chǔ)知識5創(chuàng)建和刪除MySQL數(shù)據(jù)庫和數(shù)據(jù)表6實(shí)踐訓(xùn)練01020304掌握數(shù)據(jù)庫基礎(chǔ)知識1掌握常用的數(shù)據(jù)庫相關(guān)概念,理解概念模型和邏輯模型,掌握常用的概念模型和邏輯模型,以及轉(zhuǎn)換規(guī)則,能夠按要求繪制E-R圖。05數(shù)據(jù)庫(Database,DB)數(shù)據(jù)庫:按照
數(shù)據(jù)結(jié)構(gòu)組織、存儲和管理數(shù)據(jù)的倉庫。存儲在計(jì)算機(jī)內(nèi)、有組織、可共享、統(tǒng)一管理數(shù)據(jù)庫管理系統(tǒng)(DBMS)數(shù)據(jù)庫管理系統(tǒng):是操作和管理數(shù)據(jù)庫的計(jì)算機(jī)軟件系統(tǒng)。建立、使用、維護(hù)數(shù)據(jù)庫,對其統(tǒng)一管理和控制,保證DB的安全性和完整性。關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)關(guān)系數(shù)據(jù)庫管理系統(tǒng):管理關(guān)系型數(shù)據(jù)庫的計(jì)算機(jī)軟件系統(tǒng)。實(shí)體-聯(lián)系模型(E-R模型)——概念模型列:屬性、字段,一組相同類型的數(shù)據(jù);行:元組、記錄,一組相關(guān)的數(shù)據(jù);域:屬性的取值范圍;關(guān)鍵字:可唯一標(biāo)識元組的屬性(集)數(shù)據(jù)表——關(guān)系模型實(shí)體:矩形;聯(lián)系:菱形;屬性:橢圓;直線:對象之間。列圖2
超市管理系統(tǒng)關(guān)系模型——數(shù)據(jù)表行列名關(guān)鍵字圖1
超市管理系統(tǒng)概念模型(E-R圖)實(shí)體實(shí)體實(shí)體實(shí)體聯(lián)系聯(lián)系聯(lián)系實(shí)體-聯(lián)系模型對應(yīng)關(guān)系模型的相關(guān)概念:實(shí)體——表實(shí)體屬性——列(字段)碼——關(guān)鍵字(主鍵)實(shí)體個(gè)體——行計(jì)算機(jī)配置建議:CPU為Intel
i5,內(nèi)存8G以上0102安裝過程中要使用超級用戶root權(quán)限(sudo)03如果機(jī)器有預(yù)安裝
的mariadb,先卸載后安裝04安裝后啟動:systemctl
start
mysqld.service搭建MySQL數(shù)據(jù)庫環(huán)境2可以在CentOS操作系統(tǒng)上安裝并啟動MySQL5.7,正確配置MySQL5.7的各項(xiàng)參數(shù),也可以在Windows操作系統(tǒng)上安裝。下述是在Linux操作系統(tǒng)上安裝時(shí)的要求。MySQL5.7版本開始默認(rèn)安裝validate_password插件0102設(shè)置MySQL密碼必須符合密碼約束條件,否則報(bào)錯(cuò)03學(xué)會修改MySQL配置文檔f04設(shè)置MySQL密碼與配置MySQL字符編碼3MySQL密碼設(shè)置必須符合密碼約束條件,如果希望設(shè)置簡單的MySQL密碼必須修改密碼約束條件。配置MySQL字符編碼需要修改MySQL的配置文件f中的相關(guān)代碼。05setglobalvalidate_password_policy=LOW;設(shè)置密碼策略強(qiáng)度為低強(qiáng)度setglobalvalidate_password_length=4;設(shè)置密碼長度為4卸載程序包0102刪除MySQL默認(rèn)文檔存儲目錄03刪除MySQL默認(rèn)安裝目錄04刪除MySQL配置文檔f卸載MySQL4能在CentOS操作系統(tǒng)下完全卸載MySQL,包括卸載程序安裝包和刪除相關(guān)配置文件。05刪除MySQL日志文檔mysqld.log010203查看當(dāng)前用戶下的數(shù)據(jù)庫:show
databases;創(chuàng)建與刪除MySQL數(shù)據(jù)庫和數(shù)據(jù)表5學(xué)會使用create
database和create
table命令創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表,學(xué)會使用drop
database和droptable命令刪除數(shù)據(jù)庫和數(shù)據(jù)表。createdatabase數(shù)據(jù)庫名;例:create
database
supermarket;--創(chuàng)建名為supermarket的數(shù)據(jù)庫在建數(shù)據(jù)庫時(shí)可以直接設(shè)置字符集和字符集排序規(guī)則。如:character
set
utf8
collate
utf8_general_ci例:create
database
supermarke
character
set
utf8
collateutf8_general_ci;0405創(chuàng)建與刪除MySQL數(shù)據(jù)庫和數(shù)據(jù)表506create
table
表名(字段名
數(shù)據(jù)類型
屬性,......);例:createtablemerchinfo(merchidchar(10)notnullprimarykey,merchnamevarchar(50)notnull,merchpricefloatnotnull,specvarchar(10)notnull,merchnumintnotnull,cautionnumintnotnull,plannumintnotnull,provideidchar(10)not
null);--創(chuàng)建名為merchinfo的數(shù)據(jù)表,注意數(shù)據(jù)類型的寫法查看當(dāng)前數(shù)據(jù)庫下的數(shù)據(jù)表:show
tables;查看數(shù)據(jù)表的數(shù)據(jù)結(jié)構(gòu):desc
表名;例:desc
merchinfo;
--查看merchinfo表的數(shù)據(jù)結(jié)構(gòu),包括表中字段的名稱、數(shù)據(jù)類型、是否為空等。drop
database
數(shù)據(jù)庫名;drop
table
表名;例:drop
table
merchinfo;
--刪除merchinfo表drop
database
supermarket;
--刪除supermarket數(shù)據(jù)庫能夠按照要求獨(dú)立安裝MySQL(CentOS和Windows都可以),建議在Windows系統(tǒng)下安裝時(shí)采用綠色安裝。具體步驟看教材或在線課程資源。能夠使用SQL語句create database和create table創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表能夠根據(jù)要求使用SQL語句drop
database和drop
table刪除數(shù)據(jù)庫和數(shù)據(jù)表完成實(shí)訓(xùn)報(bào)告。實(shí)踐訓(xùn)練:6工作任務(wù)1完成!數(shù)據(jù)庫設(shè)計(jì)與應(yīng)用—
—
M
y
S
Q
L使用數(shù)據(jù)表4刪除表中數(shù)據(jù)2向數(shù)據(jù)表中添加數(shù)據(jù)3修改表中數(shù)據(jù)1修改數(shù)據(jù)表的定義5實(shí)踐訓(xùn)練010203修改數(shù)據(jù)表的定義1以supermarket數(shù)據(jù)庫為例,學(xué)會修改數(shù)據(jù)表的定義,包括修改表的名稱、修改表中字段名稱、修改表中字段的數(shù)據(jù)類型,增加表中字段、刪除表中字段、更改表的存儲引擎。altertable
舊表名
renameto
新表名;——修改表名例:alter
table
merch
rename
to
merchinfo;--將數(shù)據(jù)表merch的表名改為merchinfoaltertable
表名
modify
字段名
數(shù)據(jù)類型;——修改表中字段的數(shù)據(jù)類型例:alter
table
merchinfo
modify
spec
varchar(10)
not
null;--將數(shù)據(jù)表merchinfo中的spec字段的數(shù)據(jù)類型修改為非空的10位變長字符型數(shù)據(jù)alter
table
表名change 舊字段名
新字段名
新數(shù)據(jù)類型;——修改表中字段名稱說明:修改字段名時(shí),也會定義數(shù)據(jù)類型,這與純粹修改字段數(shù)據(jù)類型有所不同,這里既修改字段名,也可能修改字段數(shù)據(jù)類型0607MySQL存儲引擎一般情況下默認(rèn)為:InnoDB,指MySQL數(shù)據(jù)庫中表的存儲類型。修改數(shù)據(jù)表的定義10405alter
table表名add字段名 數(shù)據(jù)類型 [屬性
位置];——增加表中字段例:alter
table
provide
add
providecontacts
varchar(10);--向provide表中添加聯(lián)系人字段,并給出數(shù)據(jù)類型altertable
表名
drop
字段名;——刪除表中字段例:alter
table
provide
drop
providecontacts;--刪除供應(yīng)商信息表中前面增加的聯(lián)系人字段altertable
表名
engine=引擎名;——修改表的存儲引擎這個(gè)修改了解即可02如果插入數(shù)據(jù)時(shí),值的個(gè)數(shù)、順序與建表時(shí)的字段的個(gè)數(shù)、順序完全一致,可省略不寫。03values后的值列表可以不只一個(gè),每個(gè)值列表都使用圓括號括起來,值列表與值列表之間使用逗號分隔。向表中添加數(shù)據(jù)(增)2會使用insert
into語句向數(shù)據(jù)表添加一行或多行數(shù)據(jù)。01 insert into
表名[(字段名列表)]
values(值列表);例:insertintomerchinfo(merchid,merchname,merchprice,spec,merchnum,cautionnum,plannum,provideid)values('S900120102','百雀羚護(hù)膚脂',10,'40g/盒',30,5,50,'G202312302');這個(gè)語句中的字段名個(gè)數(shù)、順序與建表時(shí)一致,所以可以不用寫字段名列表。02修改表中數(shù)據(jù)時(shí)可以使用一條語句修改多個(gè)字段的值03修改表中數(shù)據(jù)時(shí)如果沒有where子句,則全表中的數(shù)據(jù)都要進(jìn)行修改修改表中數(shù)據(jù)3能夠按照要求使用update語句修改表中已有的數(shù)據(jù)。01 update表名
set
字段名=值[,......][where條件子句];例:將merchinfo中的商品價(jià)格高于20元的商品價(jià)格打8折。updatemerchinfosetmerchprice=merchprice*0.8where merchprice>20;如果是全部商品都打8折,就可以不用寫where條件子句。deleate
from
表名
[where
條件子句];01020304刪除表中數(shù)據(jù)4能夠按照要求使用delete語句刪除表中數(shù)據(jù),也會使用truncate命令刪除整個(gè)表中數(shù)據(jù)。05truncate語句刪除數(shù)據(jù)后,新添加的數(shù)據(jù)將重新排序如果沒有條件子句,將刪除表中所有數(shù)據(jù)delete
from
merchinfo;--刪除merchinfo表中所有數(shù)據(jù)delete語句刪除數(shù)據(jù)后,新添加的數(shù)據(jù)仍然參照刪除前的順序排序truncatetable
表名;這個(gè)刪除語句是DDL范疇的,一旦刪除不可更改。能夠使用inser
t命令對數(shù)據(jù)表進(jìn)行數(shù)據(jù)的添加操作能夠使用update命令對數(shù)據(jù)表進(jìn)行數(shù)據(jù)的修改操作能夠使用delete命令對數(shù)據(jù)表進(jìn)行數(shù)據(jù)的刪除操作完成實(shí)訓(xùn)報(bào)告實(shí)踐訓(xùn)練:1 能夠正確使用a
l
te
r t
a
b
l
e
命令按要求修改表的定義,
尤其是添加、刪除字段5工作任務(wù)2完成!數(shù)據(jù)庫設(shè)計(jì)與應(yīng)用—
—
M
y
S
Q
L查詢單個(gè)數(shù)據(jù)表2按條件查詢3數(shù)據(jù)統(tǒng)計(jì)1認(rèn)識SELECT語句4實(shí)踐訓(xùn)練010203認(rèn)識SELECT語句1掌握SELECT語句的語法格式,學(xué)會使用基本的SELECT語句查詢單個(gè)表中的數(shù)據(jù)。select
字段名列表|*from
表名;——基本查詢作為查詢語句,select子句和from子句都是必選項(xiàng)。*代表所有字段,如果查詢結(jié)果有重復(fù)值,則要在select子句的字段名列表前面加上distinct關(guān)鍵字。select
字段名列表|*
from
表名
where
條件子句;——條件查詢where條件子句是可選項(xiàng),用于指定查詢的條件。select語句如果不作為查詢語句,還可以用來做計(jì)算,如:select
8*9;select語句除了可以作為查詢語句的子句外,本身也可以做些簡單的測試或計(jì)算,執(zhí)行結(jié)果也是列表形式。010203按條件查詢2能夠正確使用where子句的查詢條件查詢單個(gè)數(shù)據(jù)表。0405關(guān)系運(yùn)算符和邏輯運(yùn)算符用于條件表達(dá)式中關(guān)系運(yùn)算符:>,<,>=,<=,=,<>|!=;邏輯運(yùn)算符:and,or,not范圍運(yùn)算符between...and用于條件表達(dá)式中范圍運(yùn)算符包含兩個(gè)邊界值,等價(jià)于:>=小邊界值
and
<=大邊界值列表運(yùn)算符in用于條件表達(dá)式中in
后面的列表需要使用一對圓括號括起來,等價(jià)于:=值1
or
=值2
or
…模糊匹配運(yùn)算符like用于條件表達(dá)式中一般情況下,與like結(jié)合使用的通配符有%(當(dāng)前位置下的若干個(gè)字符)和_(當(dāng)前位置下的單個(gè)字符);與rlike|regexp結(jié)合使用的是正則表達(dá)式??罩蹬袛噙\(yùn)算符isnull用于條件表達(dá)式中is
null是判斷是否是空值,而=null是判斷是否等于null,此時(shí)把null當(dāng)作是一個(gè)確切的值,而不是空值。數(shù)據(jù)統(tǒng)計(jì)3能夠靈活使用聚合函數(shù)和group
by子句、order
by子句以及l(fā)imit子句等進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。010203常用聚合函數(shù):sum(),avg(),count(),max(),min()聚合函數(shù)有多種,這5種比較有代表性,且非常常用,其中sum()和avg()需要對數(shù)值型數(shù)據(jù)使用。聚合函數(shù)與group
by子句結(jié)合使用,select子句中的字段要么出現(xiàn)在聚合函數(shù)中,要么出現(xiàn)在group
by子句中在MySQL高版本中,如果查詢結(jié)果只有一行時(shí),這個(gè)規(guī)則也可不遵循。04order
by
子句是排序子句,排序方式有升序(asc)和降序(desc)兩種。order
by后面可以跟多個(gè)字段,每個(gè)字段排序都需要寫清楚是升序還是降序,默認(rèn)是升序,可不寫asc。limit
[m,]n|limit n
[offset
m],該子句是用來限制查詢結(jié)果的行數(shù)。如果偏移量m的值是0,則可以省略不寫,即限制行數(shù)就是:limit
n數(shù)據(jù)統(tǒng)計(jì)3能夠靈活使用聚合函數(shù)和group
by子句、order
by子句以及l(fā)imit子句等進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。0607列別名的使用:select
列名
as
列別名......對于select子句中出現(xiàn)聚合函數(shù)或其他形式的表達(dá)式時(shí),在查詢時(shí)往往會使用列別名以便增加查詢結(jié)果的可讀性。表別名的使用:from
表名 as
表別名......一旦在from子句中定義了表別名,則在select子句中用到表名時(shí)必須要使用別名。having子句只用于使用group
by子句時(shí),用來表示進(jìn)一步篩選having子句也是條件子句,在having子句中,可使用聚合函數(shù)作為條件。05能夠正確使用運(yùn)算符、條件子句進(jìn)行按條件查詢;能夠正確使用聚合函數(shù)、分組子句、排序子句等進(jìn)行高級查詢;能夠正確使用列別名、表別名;完成實(shí)訓(xùn)報(bào)告。實(shí)踐訓(xùn)練1
能夠按要求正確使用select語句查詢單個(gè)數(shù)據(jù)表中的所有字段或指定字段;4工作任務(wù)3
完成!數(shù)據(jù)庫設(shè)計(jì)與應(yīng)用—
—
M
y
S
Q
L查詢多個(gè)數(shù)據(jù)表2使用內(nèi)連接查詢多個(gè)數(shù)據(jù)表3使用外連接查詢多個(gè)數(shù)據(jù)表1使用交叉連接查詢多個(gè)數(shù)據(jù)表4實(shí)踐訓(xùn)練010203select
字段
名列表|*
from
表名1,表名2;使用交叉連接查詢多個(gè)數(shù)據(jù)表1掌握交叉連接的語句格式,能夠正確使用交叉連接查詢至少兩個(gè)數(shù)據(jù)表交叉連接的實(shí)質(zhì)是數(shù)學(xué)中的笛卡爾積運(yùn)算根據(jù)數(shù)學(xué)中的笛卡爾積運(yùn)算可知,如果不限制查詢結(jié)果的行數(shù)和字段數(shù),則交叉連接查詢的結(jié)果集的行數(shù)是連接的兩個(gè)表的行數(shù)的乘積,字段數(shù)是連接的兩個(gè)表的字段數(shù)的和。select
字段名列表|*from
表名1crossjoin
表名2;010203select
列名列表|*
from
表名1,表名2where 表名1.列名=表名2.列名;使用內(nèi)連接查詢多個(gè)數(shù)據(jù)表2能夠理解內(nèi)連接的含義,掌握內(nèi)連接語句格式,正確使用內(nèi)連接查詢至少兩個(gè)數(shù)據(jù)表。04內(nèi)連接使用最為廣泛,連接的兩個(gè)表要有匹配字段連接的兩個(gè)表中的匹配字段可以同名,也可以不同名,但是數(shù)據(jù)類型要匹配,原則上,做內(nèi)連接的兩個(gè)表應(yīng)該有參照關(guān)系。select
列名列表|*from
表名1
inner
join
表名2on 表名1.列名=表名2.列名;內(nèi)連接中的一種特殊形式——自連接,即對一個(gè)表的兩個(gè)副本進(jìn)行內(nèi)連接查詢在做自連接時(shí),要給同一張表取兩個(gè)表別名,自連接的連接條件要根據(jù)任務(wù)的要求使用不同的關(guān)系運(yùn)算符。使用外連接查詢多個(gè)數(shù)據(jù)表3能夠掌握正確的外連接語句格式,使用外連接查詢至少兩個(gè)數(shù)據(jù)表。MySQL中將外連接分為左外連接和右外連接010203select
列名列表|*from
表名1
left|rightouterjoin
表名2on 表名1.列名=表名2.列名;左外連接和右外連接中的左和右是相對的,表示在join關(guān)鍵字的左和右04左外連接表示的是查詢結(jié)果中包含左側(cè)表中不符合連接條件的行,同理,右外連接的查詢結(jié)果包含右側(cè)表中不符合連接條件的行掌握交叉連接、內(nèi)連接和外連接的語句格式;能夠正確使用內(nèi)連接查詢兩個(gè)或三個(gè)數(shù)據(jù)表,注意連接條件和查詢條件的異同點(diǎn);能夠正確使用外連接查詢兩個(gè)數(shù)據(jù)表,注意外連接的類別;注意在內(nèi)連接查詢和外連接查詢中表別名的使用;完成實(shí)訓(xùn)報(bào)告。實(shí)踐訓(xùn)練4工作任務(wù)4
完成!數(shù)據(jù)庫設(shè)計(jì)與應(yīng)用—
—
M
y
S
Q
L使用子查詢4使用比較測試子查詢查詢數(shù)據(jù)表2使用集合成員測試子查詢查詢數(shù)據(jù)表3使用存在性測試子查詢查詢數(shù)據(jù)表1認(rèn)識子查詢5實(shí)踐訓(xùn)練010203子查詢必須使用一對圓括號括起來認(rèn)識子查詢1掌握子查詢概念,能夠根據(jù)具體要求分析出使用子查詢的條件,并使用正確的子查詢。子查詢是指一個(gè)查詢語句嵌套在另一個(gè)查詢語句內(nèi)部,如where子句或from子句。理論上,子查詢可以出現(xiàn)在查詢語句的任意位置,但在實(shí)際應(yīng)用中,多出現(xiàn)在where子句或from子句中。外層的select語句稱為主查詢或父查詢,與子查詢相對應(yīng)。嵌套在查詢語句的子句中的select語句稱為子查詢。0102使用集合成員測試子查詢查詢數(shù)據(jù)表2能夠正確使用in或not
in運(yùn)算符將子查詢與父查詢連接進(jìn)行單表或多表數(shù)據(jù)查詢。子查詢結(jié)果是一個(gè)數(shù)據(jù)集合。子查詢的結(jié)果可能是一個(gè)多行單列的數(shù)據(jù)集合(較為常用),也可能是一個(gè)多行多列的數(shù)據(jù)集合。主查詢中的條件子句中使用列表運(yùn)算符in(not
in)例
:select *fromprovidewhereprovideidin(selectprovideidfrom
merchinfo);--
查詢已經(jīng)供應(yīng)商品的供應(yīng)商信息,此時(shí)子查詢結(jié)果是一個(gè)多行單列的數(shù)據(jù)集合select
*from
users
where
(userid,userpw)
in
(select
userid,userpw
from
users
where
username
like'張%');--
查詢所有姓張的用戶信息,此時(shí)子查詢結(jié)果是一個(gè)多行多列的數(shù)據(jù)集合,當(dāng)然,這個(gè)語句是可以不用子查詢的:select*
from
users
where
username
like
'張%';存在性測試子查詢可以是任一類子查詢,有查詢結(jié)果就表示存在結(jié)果為真0102exists測試有否定形式:not
exists03父、子查詢涉及的表不同時(shí),要建立兩個(gè)表之間的參照關(guān)系,即父表.列名=子表.列名使用存在性測試子查詢查詢數(shù)據(jù)表3能夠按照要求使用exists運(yùn)算符或not
exists運(yùn)算符將主查詢和子查詢連接起來,此時(shí)子查詢?nèi)绻c主查詢使用的表不同,還需要建立兩個(gè)表之間的參照關(guān)系。例
:select *fromprovidepwhereexists(selectprovideidfrommerchinfomwhere
videid=videid);--
查詢已經(jīng)供應(yīng)商品的供應(yīng)商信息,此時(shí)使用的是存在性測試子查詢,且子表和父表不同。比較測試子查詢還分為單值比較測試子查詢和批量比較測試子查詢010203子查詢的返回結(jié)果是一個(gè)單行單列的數(shù)據(jù),使用單值比較測試子查詢子查詢的返回結(jié)果是一個(gè)多行單列的數(shù)據(jù),使用批量比較測試子查詢04使用比較測試子查詢查詢數(shù)據(jù)表4能夠根據(jù)具體要求正確使用比較測試子查詢查詢一個(gè)或多個(gè)數(shù)據(jù)表。批量比較測試子查詢需要用到兩個(gè)關(guān)鍵字any和all>any,實(shí)質(zhì)上就是>最小值<any,實(shí)質(zhì)上就是<最大值>all,實(shí)質(zhì)上就是>最大值<all,實(shí)質(zhì)上就是<最小值=all,不存在;=any實(shí)質(zhì)上就是in運(yùn)算能夠正確分析應(yīng)該使用哪種子查詢能夠按要求正確使用集合成員測試子查詢能夠根據(jù)要求正確使用存在性測試子查詢能夠根據(jù)要求正確使用比較測試子查詢實(shí)成實(shí)訓(xùn)報(bào)告實(shí)踐訓(xùn)練5工作任務(wù)5
完成!數(shù)據(jù)庫設(shè)計(jì)與應(yīng)用—
—
M
y
S
Q
L使用索引提高數(shù)據(jù)查詢效率2刪除索引1創(chuàng)建和查看索引3實(shí)踐訓(xùn)練數(shù)據(jù)庫中的索引類似于書中的目錄。0102MySQL支持6種索引:普通索引,唯一索引,全文索引,單列索引,多列索引和空間索引03索引是單獨(dú)的、物理的數(shù)據(jù)庫結(jié)構(gòu),依賴于表的建立。創(chuàng)建和查看索引1掌握索引的分類,能夠按要求正確創(chuàng)建索引,并根據(jù)要求刪除不需要的索引。0405建表或是修改表定義時(shí),創(chuàng)建索引格式為:unique|fulltext|spatial
index
索引名(列名[(長度)][ASC|DESC])使用create
index語句創(chuàng)建索引的格式為:create
unique|fulltext|spatialindex索引名
on
表名(列名);普通索引:不附加任何限制條件的索引。唯一索引:索引列的值必須是唯一的。06創(chuàng)建和查看索引1掌握索引的分類,能夠按要求正確創(chuàng)建索引,并根據(jù)要求刪除不需要的索引。070809創(chuàng)建索引的三種情況:創(chuàng)建表的同時(shí)創(chuàng)建索引;修改表定義時(shí)添加索引;直接創(chuàng)建索引。單列索引:索引字段只有一個(gè),如果不只一個(gè),就是多列索引。createunique
indexindex_id on
users(userid,username);--
在用戶信息表中的用戶編號和用戶姓名兩個(gè)字段上創(chuàng)建一個(gè)名為index_id的唯一索引索引可以提升查詢數(shù)據(jù)的效率,但要付出時(shí)間和空間的代價(jià)。altertablestockadduniqueindex
index_stock(stockid);--
在入庫信息表中的入庫編號字段上添加一個(gè)名為index_stock的唯一索引。使用drop
index刪除索引,可以直接刪除,也可使用修改表定義的方式刪除。(兩種情況)0102drop
index
索引名
on
表名;03alter
table
表名
drop
index
索引名;刪除索引2能夠按要求正確地從指定數(shù)據(jù)表中刪除指定的索引。掌握創(chuàng)建索引的三種方式,并能夠根據(jù)要求使用三種方式創(chuàng)建索引掌握刪除索引的兩種方式,并能夠根據(jù)要求使用兩種方式刪除索引實(shí)成實(shí)訓(xùn)報(bào)告。實(shí)踐訓(xùn)練3工作任務(wù)6
完成!數(shù)據(jù)庫設(shè)計(jì)與應(yīng)用—
—
M
y
S
Q
L使用視圖提高復(fù)雜查詢語句的復(fù)用性2通過視圖修改基本表中數(shù)據(jù)1認(rèn)識視圖3實(shí)踐訓(xùn)練視圖本質(zhì)是虛擬表,實(shí)際存放的是查詢語句0102視圖中查詢語句查詢的數(shù)據(jù)表稱基本表03createview
視圖名[(字段名列表)]
as
select語句;認(rèn)識視圖1掌握視圖和基本表的含義,能夠使用create
view按要求創(chuàng)建視圖。04alter
view
視圖名[(字段名列表)]
as
select語句;05drop
view
視圖名列表;060708使用\G替代分號作為語句結(jié)束符時(shí),語句執(zhí)行結(jié)果按列輸出,即:將執(zhí)行結(jié)果的結(jié)構(gòu)旋轉(zhuǎn)90度變成縱向。認(rèn)識視圖1掌握視圖和基本表的含義,能夠使用create
view按要求創(chuàng)建視圖。查看視圖的數(shù)據(jù)結(jié)構(gòu)與查看表的數(shù)據(jù)結(jié)構(gòu)相同desc[ribe]視圖名;查看創(chuàng)建視圖的詳細(xì)信息show
create
view
視圖名;09with
check
option選項(xiàng)是可選的,如果在創(chuàng)建視圖時(shí)有這個(gè)選項(xiàng),表示通過視圖更新數(shù)據(jù)時(shí)檢查更新的數(shù)據(jù)是否符合視圖定義中的where子句設(shè)置的條件。數(shù)據(jù)表的增、改、刪操作同樣適用于視圖。0102視圖的“增”操作只能用在使用一個(gè)基本表創(chuàng)建的視圖中。03視圖的“改”操作只能用在直接引用基本表的列上。通過視圖修改基本表中數(shù)據(jù)2使用學(xué)過的增、改、刪操作通過對視圖操作達(dá)到修改基本表中數(shù)據(jù)。視圖的“刪”操作也是只能用在使用一個(gè)基本表創(chuàng)建的視圖中。040506通過視圖修改基本表中數(shù)據(jù)2使用學(xué)過的增、改、刪操作通過對視圖操作達(dá)到修改基本表中數(shù)據(jù)。例:創(chuàng)建江蘇省供應(yīng)商視圖(view_jsprovide)時(shí)設(shè)置了withcheck
option選項(xiàng)。通過視圖添加如下數(shù)據(jù):G202412001,張三日化用品有限公司,四川省成都市,02824546228。insert into
view_jsprovide
values(‘G202412001’,’張三日化用品有限公司’,’四川省成都市’,’02824546228’);語句本身是正確的,但是這行數(shù)據(jù)不符合定義視圖時(shí)的where子句條件,所以執(zhí)行時(shí)會報(bào)錯(cuò)。創(chuàng)建低價(jià)商品視圖view_cheap,具體語句如下:createviewview_cheapasselectmerchid,merchname,merchprice*1.05pricefrommerchinfowheremerchprice<5;視圖創(chuàng)建后,要通過該視圖修改商品價(jià)格:updateview_cheapset
price=price*1.1;語句本身是正確的,但是語句執(zhí)行時(shí)會報(bào)錯(cuò),只因?yàn)橐晥D中的price字段是通過運(yùn)算得到的。掌握創(chuàng)建視圖、修改視圖和刪除視圖的語句掌握通過視圖修改數(shù)據(jù)的原則完成實(shí)訓(xùn)報(bào)告實(shí)踐訓(xùn)練3工作任務(wù)7
完成!數(shù)據(jù)庫設(shè)計(jì)與應(yīng)用—
—
M
y
S
Q
L實(shí)施數(shù)據(jù)庫的數(shù)據(jù)完整性2使用約束檢查域完整性3使用約束檢查參照完整性1使用約束保證數(shù)據(jù)表內(nèi)行唯一4實(shí)踐訓(xùn)練主鍵約束的關(guān)鍵字為:primary
key0102唯一約束的關(guān)鍵字為:unique03使用約束保證數(shù)據(jù)表內(nèi)的行唯一1掌握數(shù)據(jù)完整性的概念和實(shí)體完整性的實(shí)施方法,能夠根據(jù)要求選擇合適的方法實(shí)施實(shí)體完整性保證數(shù)據(jù)表中的行是唯一的。0405自動增值約束的關(guān)鍵字為:auto_increment自動增值約束只對整型字段有效,并且是主鍵字段本身或主鍵字段的一部分。字段名
數(shù)據(jù)類型 primary
key
[默認(rèn)值]
或:[constraint約束名] primary
key(字段名列表)唯一約束的格式與主鍵約束格式完全一致一個(gè)表有且只能有一個(gè)主鍵約束,唯一約束不限0607字段名 數(shù)據(jù)類型 auto_increment08刪除約束使用altertable命令刪除主鍵約束:alter
table
表名
drop
primary
key;刪除唯一約束:alter
table
表名
drop
key|index
索引名;使用約束保證數(shù)據(jù)表內(nèi)的行唯一1例:創(chuàng)建表st,兩個(gè)字段:st_id,整型,主鍵,自動增值,st_name,可變長4位字符型,不能為空。createtablest(st_idintprimarykeyauto_increment,st_namevarchar(4)not
null);在表st的st_name字段上添加一個(gè)唯一約束。altertablestadd
unique(st_name);非空約束:字段名 數(shù)據(jù)類型
not
null0102使用約束檢查域完整性2能夠使用非空約束和默認(rèn)值約束實(shí)現(xiàn)域完整性。默認(rèn)值約束:字段名
數(shù)據(jù)類型
defalut
默認(rèn)值在創(chuàng)建表的時(shí)候可直接設(shè)置非空約束和默認(rèn)值約束,如果是在已經(jīng)存在的表上添加非空約束和默認(rèn)值約束,則需要使用修改表定義的字段數(shù)據(jù)類型。例:在provide表的provideaddress字段上設(shè)置默認(rèn)值“江蘇省”。altertableprovidemodifyprovideaddressvarchar(250)default
‘江蘇省’;使用約束檢查參照完整性3能夠正確使用外鍵約束實(shí)現(xiàn)數(shù)據(jù)庫中相關(guān)數(shù)據(jù)表的數(shù)據(jù)一致性。0102外鍵約束:[constraint
約束名]foreignkey(字段名1)references表名(字段名2)刪除外鍵約束:altertable
表名
drop
foreign
key
外鍵約束名;03刪除外鍵還需要刪除外鍵約束產(chǎn)生的索引鍵:altertable
表名
drop
key|index索引名;設(shè)置外鍵約束要注意是否定義了on
delete|update
cascade選項(xiàng)。掌握主鍵約束、唯一約束、自動增值約束的使用方法掌握外鍵約束的使用方法掌握非空約束和默認(rèn)值約束的使用方法完成實(shí)訓(xùn)報(bào)告實(shí)踐訓(xùn)練4工作任務(wù)8
完成!數(shù)據(jù)庫設(shè)計(jì)與應(yīng)用—
—
M
y
S
Q
L使用用戶自定義函數(shù)2創(chuàng)建用戶自定義函數(shù)3使用游標(biāo)1認(rèn)識用戶自定義函數(shù)4實(shí)踐訓(xùn)練0102常量:程序運(yùn)行中始終不變的量。字符串常量、數(shù)值常量、日期時(shí)間常量等。變量:全局變量、會話變量、用戶變量和局部變量03查看全局變量:select@@global.變量名;或showglobal
variables[like
'匹配模式'|where
表達(dá)式];認(rèn)識用戶自定義函數(shù)1掌握數(shù)據(jù)庫編程基礎(chǔ)知識和用戶自定義函數(shù)的創(chuàng)建語句格式,能夠根據(jù)要求創(chuàng)建簡單的用戶自定義函數(shù)并調(diào)用。0405設(shè)置全局變量:set
global
變量名=值;或set@@global.變量名=值;會話變量與全局變量類似,關(guān)鍵字換成:session常量:'Tom'、13.3、25、'2024-11-04'、'09:43:13'060708認(rèn)識用戶自定義函數(shù)1常量與系統(tǒng)變量的使用。字符串常量
數(shù)值常量 日期常量時(shí)間常量查看全局系統(tǒng)變量showglobal
variables;查看會話系統(tǒng)變量showsession
variables;091011認(rèn)識用戶自定義函數(shù)112用戶變量的使用。查看用戶變量:select
@變量名;用戶變量無需定義,可直接使用。但未給用戶變量賦值,則用戶變量的值是:NULL設(shè)置用戶變量:set
@變量名=值;或:set
@變量名:=值;set
@a=6;set
@a:=8:設(shè)置用戶變量:select
@變量名:=值
[from
子句
where子句];select
字段名1,字段名2,……
[from
子句][where子句]into
變量;select字段名1,字段名2,……into變量[from子句]
[where
子句]
;局部變量需要先定義后使用:declare變量名
數(shù)據(jù)類型
[default
默認(rèn)值];set
變量名=值|表達(dá)式;delimiter
$;
//修改語句結(jié)束符為$1314116刪除自定義函數(shù):drop
function
[if
exists]
函數(shù)名;15create
function
函數(shù)名(參數(shù)列表)returns
返回值
類型[begin]函數(shù)體return
返回值;[end]//調(diào)用時(shí),使用select語句,放在可用表達(dá)式的地方查看自定義函數(shù):show
create
function
函數(shù)名;認(rèn)識用戶自定義函數(shù)用戶自定義函數(shù)的定義。1認(rèn)識用戶自定義函數(shù)用戶自定義函數(shù)的定義。創(chuàng)建一個(gè)名為sayHello的自定義函數(shù),輸入?yún)?shù)是姓名,返回一個(gè)用于表示問候的字符串。delimiter
$$createfunctionsayHello(namevarchar(30))returns
varchar(100)beginreturnconcat('Hello',name,'!');end$$執(zhí)行sayHello自定義函數(shù),輸入?yún)?shù)為:李小龍,調(diào)用自定義函數(shù)的語句為:delimiter
;selectsayHello('李小龍');語句塊:begin
......
end0102分支結(jié)構(gòu):1)if表達(dá)式:if(條件,表達(dá)式1,表達(dá)式2)既然是表達(dá)式,就要放在任何可以放表達(dá)式的地方。創(chuàng)建用戶自定義函數(shù)2能夠使用常量、變量等按要求創(chuàng)建自定義函數(shù),完成相關(guān)功能。select
if(4>5,5,4);分支結(jié)構(gòu):2)
if語句(單層):if
條件1
then
語句1;[else
語句2;]end
if;0304分支結(jié)構(gòu):3)
if語句(嵌套):if
條件1
then
語句1;[elseif 條件2 then
語句2;]...[else
語句n;]end
if;創(chuàng)建用戶自定義函數(shù)2能夠使用常量、變量等按要求創(chuàng)建自定義函數(shù),完成相關(guān)功能。createfunction
f1()returns
intbegindeclarenintdefault
10;declaremintdefault8;ifn>mthenreturnn;elsereturn
m;end
if;end0506分支結(jié)構(gòu)之case
表達(dá)式:格式1:case
表達(dá)式when值1 then
結(jié)果1
或
語句1when
值
2
then
結(jié)果2
或
語句2[else
結(jié)果n]end格式2:casewhen
條件1
then
結(jié)果1when
條件2
then
結(jié)果2......[else
結(jié)果n]end創(chuàng)建用戶自定義函數(shù)20708創(chuàng)建用戶自定義函數(shù)209循環(huán)結(jié)構(gòu)1:while語句while
條件
do循環(huán)體;end
while;循環(huán)結(jié)構(gòu)2:loop語句loop
循環(huán)體;end
loop;loop循環(huán)本身不包括中斷循環(huán)條件,此時(shí)要設(shè)置標(biāo)簽,使用:leave 標(biāo)簽;中斷循環(huán)。當(dāng)然,這個(gè)中斷循環(huán)語句往往要與if語句結(jié)合使用。循環(huán)結(jié)構(gòu)3:repeat語句repeat循環(huán)體;until
結(jié)束循環(huán)條件end
repeat;使用游標(biāo)3能夠按照要求在用戶自定義函數(shù)中正確使用游標(biāo)。010203040506游標(biāo):用于標(biāo)識使用select語句從一個(gè)或多個(gè)基本表中選取出的一個(gè)結(jié)果集,也稱光標(biāo)。四個(gè)步驟使用游標(biāo):聲明游標(biāo)(declare),打開游標(biāo)(open),讀取游標(biāo)(fetch),關(guān)閉游標(biāo)(close)聲明游標(biāo):declare
游標(biāo)名稱
cursorfor select
語句;打開游標(biāo):open
游標(biāo)名稱;讀取游標(biāo):fetch
[next]
[from]
游標(biāo)名稱
into
變量名[,...];關(guān)閉游標(biāo):close
游標(biāo)名稱;使用游標(biāo)3能夠按照要求在用戶自定義函數(shù)中正確使用游標(biāo)。例:有表sc結(jié)構(gòu)如下:stuid
char(5),courseid
char(2),grade
int。如果創(chuàng)建一個(gè)名為avgrade的自定義函數(shù),要求使用游標(biāo)求grade字段值的平均值。createfunction
avgrade()returns
floatbegindeclareg
int;declaremfloat;declarenintdefault
0;declareflagintdefault
1;declaremarkcursorforselectgradefrom
sc;declarecontinuehandlerfornotfoundsetflag=0;set
m=0;setg=0;open
mark;fetchmarkinto
g;repeat setm=m+g;set
n=n+1;fetchmarkinto
g;until
flag=0endrepeat;setm=m/n;returnm;close
mark;end$掌握游標(biāo)的使用方法掌握用戶自定義函數(shù)的創(chuàng)建、查看、和刪除的語句格式和使用完成實(shí)訓(xùn)報(bào)告實(shí)踐訓(xùn)練1 掌握數(shù)據(jù)庫編程元素,包括常量、變量、系統(tǒng)函數(shù)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等4工作任務(wù)9
完成!數(shù)據(jù)庫設(shè)計(jì)與應(yīng)用—
—
M
y
S
Q
L使用存儲過程2創(chuàng)建、使用存儲過程1認(rèn)識存儲過程3實(shí)踐訓(xùn)練創(chuàng)建存儲過程:create
procedure0102調(diào)用存儲過程:call
存儲過程名03查看存儲過程的創(chuàng)建信息:show
create
procedure
存儲過程名;認(rèn)識存儲過程1掌握創(chuàng)建、查看、調(diào)用和刪除存儲過程的語句格式及使用方法。04刪除存儲過程:drop
procedure修改存儲過程只能修改其特征,使用alter
procedure0102游標(biāo)也可以使用在存儲過程中03調(diào)用存儲過程時(shí),注意輸出參數(shù)的使用創(chuàng)建、使用存儲過程2能夠按要求正確地創(chuàng)建存儲過程并能夠修改存儲過程中的相關(guān)特征參數(shù)。掌握創(chuàng)建存儲過程、調(diào)用存儲過程的語句格式掌握刪除存儲過程的語句格式完成實(shí)訓(xùn)報(bào)告實(shí)踐訓(xùn)練3工作任務(wù)1
0
完成!數(shù)據(jù)庫設(shè)計(jì)與應(yīng)用—
—
M
y
S
Q
L設(shè)置觸發(fā)器2創(chuàng)建并使用觸發(fā)器1認(rèn)識觸發(fā)器3實(shí)踐訓(xùn)練觸發(fā)器:特殊的存儲過程,不需要去調(diào)用執(zhí)行,由插入、刪除、更新操作自動觸發(fā)。0102觸發(fā)器專用臨時(shí)表:new和old03觸發(fā)器分類:時(shí)間(after和before)操作(insert、update和delete)認(rèn)識觸發(fā)器1掌握觸發(fā)器的基礎(chǔ)知識以及創(chuàng)建觸發(fā)器的格式,并會使用相關(guān)語句驗(yàn)證觸發(fā)器的的功能。04創(chuàng)建觸發(fā)器:createtriggercreate
trigger
觸發(fā)器名稱
after|before
i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年礦山設(shè)備租賃居間代理合同3篇
- 二零二五年餐飲店供應(yīng)鏈租賃合同范本及物流配送協(xié)議3篇
- 2025年仁愛科普版七年級科學(xué)上冊階段測試試卷含答案
- 2024年北師大版七年級地理下冊月考試卷
- 2025年華東師大版選擇性必修3化學(xué)下冊月考試卷
- 2025年浙教版九年級化學(xué)上冊月考試卷
- 2025年教科新版選擇性必修3語文下冊月考試卷含答案
- 光伏系統(tǒng)工程師工作總結(jié)
- 幼兒園自助燒烤活動方案
- 二零二五年電子元器件集中采購及研發(fā)支持合同3篇
- 割接方案的要點(diǎn)、難點(diǎn)及采取的相應(yīng)措施
- 2025至2031年中國臺式燃?xì)庠钚袠I(yè)投資前景及策略咨詢研究報(bào)告
- 第三章第一節(jié)《多變的天氣》說課稿2023-2024學(xué)年人教版地理七年級上冊
- 2025年中國電科集團(tuán)春季招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年度建筑施工現(xiàn)場安全管理合同2篇
- 建筑垃圾回收利用標(biāo)準(zhǔn)方案
- 2024年考研英語一閱讀理解80篇解析
- 樣板間合作協(xié)議
- 2024解析:第一章機(jī)械運(yùn)動-講核心(解析版)
- 屋面板的拆除與更換施工方案
- 無人機(jī)飛行區(qū)域安全協(xié)議書
評論
0/150
提交評論