版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
數(shù)據(jù)庫設(shè)計與應(yīng)用—
—
M
y
S
Q
L認識數(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實踐訓(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ù)的倉庫。存儲在計算機內(nèi)、有組織、可共享、統(tǒng)一管理數(shù)據(jù)庫管理系統(tǒng)(DBMS)數(shù)據(jù)庫管理系統(tǒng):是操作和管理數(shù)據(jù)庫的計算機軟件系統(tǒng)。建立、使用、維護數(shù)據(jù)庫,對其統(tǒng)一管理和控制,保證DB的安全性和完整性。關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)關(guān)系數(shù)據(jù)庫管理系統(tǒng):管理關(guān)系型數(shù)據(jù)庫的計算機軟件系統(tǒng)。實體-聯(lián)系模型(E-R模型)——概念模型列:屬性、字段,一組相同類型的數(shù)據(jù);行:元組、記錄,一組相關(guān)的數(shù)據(jù);域:屬性的取值范圍;關(guān)鍵字:可唯一標識元組的屬性(集)數(shù)據(jù)表——關(guān)系模型實體:矩形;聯(lián)系:菱形;屬性:橢圓;直線:對象之間。列圖2
超市管理系統(tǒng)關(guān)系模型——數(shù)據(jù)表行列名關(guān)鍵字圖1
超市管理系統(tǒng)概念模型(E-R圖)實體實體實體實體聯(lián)系聯(lián)系聯(lián)系實體-聯(lián)系模型對應(yīng)關(guān)系模型的相關(guān)概念:實體——表實體屬性——列(字段)碼——關(guān)鍵字(主鍵)實體個體——行計算機配置建議:CPU為Intel
i5,內(nèi)存8G以上0102安裝過程中要使用超級用戶root權(quán)限(sudo)03如果機器有預(yù)安裝
的mariadb,先卸載后安裝04安裝后啟動:systemctl
start
mysqld.service搭建MySQL數(shù)據(jù)庫環(huán)境2可以在CentOS操作系統(tǒng)上安裝并啟動MySQL5.7,正確配置MySQL5.7的各項參數(shù),也可以在Windows操作系統(tǒng)上安裝。下述是在Linux操作系統(tǒng)上安裝時的要求。MySQL5.7版本開始默認安裝validate_password插件0102設(shè)置MySQL密碼必須符合密碼約束條件,否則報錯03學(xué)會修改MySQL配置文檔f04設(shè)置MySQL密碼與配置MySQL字符編碼3MySQL密碼設(shè)置必須符合密碼約束條件,如果希望設(shè)置簡單的MySQL密碼必須修改密碼約束條件。配置MySQL字符編碼需要修改MySQL的配置文件f中的相關(guān)代碼。05setglobalvalidate_password_policy=LOW;設(shè)置密碼策略強度為低強度setglobalvalidate_password_length=4;設(shè)置密碼長度為4卸載程序包0102刪除MySQL默認文檔存儲目錄03刪除MySQL默認安裝目錄04刪除MySQL配置文檔f卸載MySQL4能在CentOS操作系統(tǒng)下完全卸載MySQL,包括卸載程序安裝包和刪除相關(guān)配置文件。05刪除MySQL日志文檔mysqld.log010203查看當前用戶下的數(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è)置字符集和字符集排序規(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ù)類型的寫法查看當前數(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ù)庫能夠按照要求獨立安裝MySQL(CentOS和Windows都可以),建議在Windows系統(tǒng)下安裝時采用綠色安裝。具體步驟看教材或在線課程資源。能夠使用SQL語句create database和create table創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表能夠根據(jù)要求使用SQL語句drop
database和drop
table刪除數(shù)據(jù)庫和數(shù)據(jù)表完成實訓(xùn)報告。實踐訓(xùn)練:6工作任務(wù)1完成!數(shù)據(jù)庫設(shè)計與應(yīng)用—
—
M
y
S
Q
L使用數(shù)據(jù)表4刪除表中數(shù)據(jù)2向數(shù)據(jù)表中添加數(shù)據(jù)3修改表中數(shù)據(jù)1修改數(shù)據(jù)表的定義5實踐訓(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ù)據(jù)類型,這與純粹修改字段數(shù)據(jù)類型有所不同,這里既修改字段名,也可能修改字段數(shù)據(jù)類型0607MySQL存儲引擎一般情況下默認為: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=引擎名;——修改表的存儲引擎這個修改了解即可02如果插入數(shù)據(jù)時,值的個數(shù)、順序與建表時的字段的個數(shù)、順序完全一致,可省略不寫。03values后的值列表可以不只一個,每個值列表都使用圓括號括起來,值列表與值列表之間使用逗號分隔。向表中添加數(shù)據(jù)(增)2會使用insert
into語句向數(shù)據(jù)表添加一行或多行數(shù)據(jù)。01 insert into
表名[(字段名列表)]
values(值列表);例:insertintomerchinfo(merchid,merchname,merchprice,spec,merchnum,cautionnum,plannum,provideid)values('S900120102','百雀羚護膚脂',10,'40g/盒',30,5,50,'G202312302');這個語句中的字段名個數(shù)、順序與建表時一致,所以可以不用寫字段名列表。02修改表中數(shù)據(jù)時可以使用一條語句修改多個字段的值03修改表中數(shù)據(jù)時如果沒有where子句,則全表中的數(shù)據(jù)都要進行修改修改表中數(shù)據(jù)3能夠按照要求使用update語句修改表中已有的數(shù)據(jù)。01 update表名
set
字段名=值[,......][where條件子句];例:將merchinfo中的商品價格高于20元的商品價格打8折。updatemerchinfosetmerchprice=merchprice*0.8where merchprice>20;如果是全部商品都打8折,就可以不用寫where條件子句。deleate
from
表名
[where
條件子句];01020304刪除表中數(shù)據(jù)4能夠按照要求使用delete語句刪除表中數(shù)據(jù),也會使用truncate命令刪除整個表中數(shù)據(jù)。05truncate語句刪除數(shù)據(jù)后,新添加的數(shù)據(jù)將重新排序如果沒有條件子句,將刪除表中所有數(shù)據(jù)delete
from
merchinfo;--刪除merchinfo表中所有數(shù)據(jù)delete語句刪除數(shù)據(jù)后,新添加的數(shù)據(jù)仍然參照刪除前的順序排序truncatetable
表名;這個刪除語句是DDL范疇的,一旦刪除不可更改。能夠使用inser
t命令對數(shù)據(jù)表進行數(shù)據(jù)的添加操作能夠使用update命令對數(shù)據(jù)表進行數(shù)據(jù)的修改操作能夠使用delete命令對數(shù)據(jù)表進行數(shù)據(jù)的刪除操作完成實訓(xùn)報告實踐訓(xùn)練:1 能夠正確使用a
l
te
r t
a
b
l
e
命令按要求修改表的定義,
尤其是添加、刪除字段5工作任務(wù)2完成!數(shù)據(jù)庫設(shè)計與應(yīng)用—
—
M
y
S
Q
L查詢單個數(shù)據(jù)表2按條件查詢3數(shù)據(jù)統(tǒng)計1認識SELECT語句4實踐訓(xùn)練010203認識SELECT語句1掌握SELECT語句的語法格式,學(xué)會使用基本的SELECT語句查詢單個表中的數(shù)據(jù)。select
字段名列表|*from
表名;——基本查詢作為查詢語句,select子句和from子句都是必選項。*代表所有字段,如果查詢結(jié)果有重復(fù)值,則要在select子句的字段名列表前面加上distinct關(guān)鍵字。select
字段名列表|*
from
表名
where
條件子句;——條件查詢where條件子句是可選項,用于指定查詢的條件。select語句如果不作為查詢語句,還可以用來做計算,如:select
8*9;select語句除了可以作為查詢語句的子句外,本身也可以做些簡單的測試或計算,執(zhí)行結(jié)果也是列表形式。010203按條件查詢2能夠正確使用where子句的查詢條件查詢單個數(shù)據(jù)表。0405關(guān)系運算符和邏輯運算符用于條件表達式中關(guān)系運算符:>,<,>=,<=,=,<>|!=;邏輯運算符:and,or,not范圍運算符between...and用于條件表達式中范圍運算符包含兩個邊界值,等價于:>=小邊界值
and
<=大邊界值列表運算符in用于條件表達式中in
后面的列表需要使用一對圓括號括起來,等價于:=值1
or
=值2
or
…模糊匹配運算符like用于條件表達式中一般情況下,與like結(jié)合使用的通配符有%(當前位置下的若干個字符)和_(當前位置下的單個字符);與rlike|regexp結(jié)合使用的是正則表達式??罩蹬袛噙\算符isnull用于條件表達式中is
null是判斷是否是空值,而=null是判斷是否等于null,此時把null當作是一個確切的值,而不是空值。數(shù)據(jù)統(tǒng)計3能夠靈活使用聚合函數(shù)和group
by子句、order
by子句以及l(fā)imit子句等進行數(shù)據(jù)統(tǒng)計。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é)果只有一行時,這個規(guī)則也可不遵循。04order
by
子句是排序子句,排序方式有升序(asc)和降序(desc)兩種。order
by后面可以跟多個字段,每個字段排序都需要寫清楚是升序還是降序,默認是升序,可不寫asc。limit
[m,]n|limit n
[offset
m],該子句是用來限制查詢結(jié)果的行數(shù)。如果偏移量m的值是0,則可以省略不寫,即限制行數(shù)就是:limit
n數(shù)據(jù)統(tǒng)計3能夠靈活使用聚合函數(shù)和group
by子句、order
by子句以及l(fā)imit子句等進行數(shù)據(jù)統(tǒng)計。0607列別名的使用:select
列名
as
列別名......對于select子句中出現(xiàn)聚合函數(shù)或其他形式的表達式時,在查詢時往往會使用列別名以便增加查詢結(jié)果的可讀性。表別名的使用:from
表名 as
表別名......一旦在from子句中定義了表別名,則在select子句中用到表名時必須要使用別名。having子句只用于使用group
by子句時,用來表示進一步篩選having子句也是條件子句,在having子句中,可使用聚合函數(shù)作為條件。05能夠正確使用運算符、條件子句進行按條件查詢;能夠正確使用聚合函數(shù)、分組子句、排序子句等進行高級查詢;能夠正確使用列別名、表別名;完成實訓(xùn)報告。實踐訓(xùn)練1
能夠按要求正確使用select語句查詢單個數(shù)據(jù)表中的所有字段或指定字段;4工作任務(wù)3
完成!數(shù)據(jù)庫設(shè)計與應(yīng)用—
—
M
y
S
Q
L查詢多個數(shù)據(jù)表2使用內(nèi)連接查詢多個數(shù)據(jù)表3使用外連接查詢多個數(shù)據(jù)表1使用交叉連接查詢多個數(shù)據(jù)表4實踐訓(xùn)練010203select
字段
名列表|*
from
表名1,表名2;使用交叉連接查詢多個數(shù)據(jù)表1掌握交叉連接的語句格式,能夠正確使用交叉連接查詢至少兩個數(shù)據(jù)表交叉連接的實質(zhì)是數(shù)學(xué)中的笛卡爾積運算根據(jù)數(shù)學(xué)中的笛卡爾積運算可知,如果不限制查詢結(jié)果的行數(shù)和字段數(shù),則交叉連接查詢的結(jié)果集的行數(shù)是連接的兩個表的行數(shù)的乘積,字段數(shù)是連接的兩個表的字段數(shù)的和。select
字段名列表|*from
表名1crossjoin
表名2;010203select
列名列表|*
from
表名1,表名2where 表名1.列名=表名2.列名;使用內(nèi)連接查詢多個數(shù)據(jù)表2能夠理解內(nèi)連接的含義,掌握內(nèi)連接語句格式,正確使用內(nèi)連接查詢至少兩個數(shù)據(jù)表。04內(nèi)連接使用最為廣泛,連接的兩個表要有匹配字段連接的兩個表中的匹配字段可以同名,也可以不同名,但是數(shù)據(jù)類型要匹配,原則上,做內(nèi)連接的兩個表應(yīng)該有參照關(guān)系。select
列名列表|*from
表名1
inner
join
表名2on 表名1.列名=表名2.列名;內(nèi)連接中的一種特殊形式——自連接,即對一個表的兩個副本進行內(nèi)連接查詢在做自連接時,要給同一張表取兩個表別名,自連接的連接條件要根據(jù)任務(wù)的要求使用不同的關(guān)系運算符。使用外連接查詢多個數(shù)據(jù)表3能夠掌握正確的外連接語句格式,使用外連接查詢至少兩個數(shù)據(jù)表。MySQL中將外連接分為左外連接和右外連接010203select
列名列表|*from
表名1
left|rightouterjoin
表名2on 表名1.列名=表名2.列名;左外連接和右外連接中的左和右是相對的,表示在join關(guān)鍵字的左和右04左外連接表示的是查詢結(jié)果中包含左側(cè)表中不符合連接條件的行,同理,右外連接的查詢結(jié)果包含右側(cè)表中不符合連接條件的行掌握交叉連接、內(nèi)連接和外連接的語句格式;能夠正確使用內(nèi)連接查詢兩個或三個數(shù)據(jù)表,注意連接條件和查詢條件的異同點;能夠正確使用外連接查詢兩個數(shù)據(jù)表,注意外連接的類別;注意在內(nèi)連接查詢和外連接查詢中表別名的使用;完成實訓(xùn)報告。實踐訓(xùn)練4工作任務(wù)4
完成!數(shù)據(jù)庫設(shè)計與應(yīng)用—
—
M
y
S
Q
L使用子查詢4使用比較測試子查詢查詢數(shù)據(jù)表2使用集合成員測試子查詢查詢數(shù)據(jù)表3使用存在性測試子查詢查詢數(shù)據(jù)表1認識子查詢5實踐訓(xùn)練010203子查詢必須使用一對圓括號括起來認識子查詢1掌握子查詢概念,能夠根據(jù)具體要求分析出使用子查詢的條件,并使用正確的子查詢。子查詢是指一個查詢語句嵌套在另一個查詢語句內(nèi)部,如where子句或from子句。理論上,子查詢可以出現(xiàn)在查詢語句的任意位置,但在實際應(yīng)用中,多出現(xiàn)在where子句或from子句中。外層的select語句稱為主查詢或父查詢,與子查詢相對應(yīng)。嵌套在查詢語句的子句中的select語句稱為子查詢。0102使用集合成員測試子查詢查詢數(shù)據(jù)表2能夠正確使用in或not
in運算符將子查詢與父查詢連接進行單表或多表數(shù)據(jù)查詢。子查詢結(jié)果是一個數(shù)據(jù)集合。子查詢的結(jié)果可能是一個多行單列的數(shù)據(jù)集合(較為常用),也可能是一個多行多列的數(shù)據(jù)集合。主查詢中的條件子句中使用列表運算符in(not
in)例
:select *fromprovidewhereprovideidin(selectprovideidfrom
merchinfo);--
查詢已經(jīng)供應(yīng)商品的供應(yīng)商信息,此時子查詢結(jié)果是一個多行單列的數(shù)據(jù)集合select
*from
users
where
(userid,userpw)
in
(select
userid,userpw
from
users
where
username
like'張%');--
查詢所有姓張的用戶信息,此時子查詢結(jié)果是一個多行多列的數(shù)據(jù)集合,當然,這個語句是可以不用子查詢的:select*
from
users
where
username
like
'張%';存在性測試子查詢可以是任一類子查詢,有查詢結(jié)果就表示存在結(jié)果為真0102exists測試有否定形式:not
exists03父、子查詢涉及的表不同時,要建立兩個表之間的參照關(guān)系,即父表.列名=子表.列名使用存在性測試子查詢查詢數(shù)據(jù)表3能夠按照要求使用exists運算符或not
exists運算符將主查詢和子查詢連接起來,此時子查詢?nèi)绻c主查詢使用的表不同,還需要建立兩個表之間的參照關(guān)系。例
:select *fromprovidepwhereexists(selectprovideidfrommerchinfomwhere
videid=videid);--
查詢已經(jīng)供應(yīng)商品的供應(yīng)商信息,此時使用的是存在性測試子查詢,且子表和父表不同。比較測試子查詢還分為單值比較測試子查詢和批量比較測試子查詢010203子查詢的返回結(jié)果是一個單行單列的數(shù)據(jù),使用單值比較測試子查詢子查詢的返回結(jié)果是一個多行單列的數(shù)據(jù),使用批量比較測試子查詢04使用比較測試子查詢查詢數(shù)據(jù)表4能夠根據(jù)具體要求正確使用比較測試子查詢查詢一個或多個數(shù)據(jù)表。批量比較測試子查詢需要用到兩個關(guān)鍵字any和all>any,實質(zhì)上就是>最小值<any,實質(zhì)上就是<最大值>all,實質(zhì)上就是>最大值<all,實質(zhì)上就是<最小值=all,不存在;=any實質(zhì)上就是in運算能夠正確分析應(yīng)該使用哪種子查詢能夠按要求正確使用集合成員測試子查詢能夠根據(jù)要求正確使用存在性測試子查詢能夠根據(jù)要求正確使用比較測試子查詢實成實訓(xùn)報告實踐訓(xùn)練5工作任務(wù)5
完成!數(shù)據(jù)庫設(shè)計與應(yīng)用—
—
M
y
S
Q
L使用索引提高數(shù)據(jù)查詢效率2刪除索引1創(chuàng)建和查看索引3實踐訓(xùn)練數(shù)據(jù)庫中的索引類似于書中的目錄。0102MySQL支持6種索引:普通索引,唯一索引,全文索引,單列索引,多列索引和空間索引03索引是單獨的、物理的數(shù)據(jù)庫結(jié)構(gòu),依賴于表的建立。創(chuàng)建和查看索引1掌握索引的分類,能夠按要求正確創(chuàng)建索引,并根據(jù)要求刪除不需要的索引。0405建表或是修改表定義時,創(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)建表的同時創(chuàng)建索引;修改表定義時添加索引;直接創(chuàng)建索引。單列索引:索引字段只有一個,如果不只一個,就是多列索引。createunique
indexindex_id on
users(userid,username);--
在用戶信息表中的用戶編號和用戶姓名兩個字段上創(chuàng)建一個名為index_id的唯一索引索引可以提升查詢數(shù)據(jù)的效率,但要付出時間和空間的代價。altertablestockadduniqueindex
index_stock(stockid);--
在入庫信息表中的入庫編號字段上添加一個名為index_stock的唯一索引。使用drop
index刪除索引,可以直接刪除,也可使用修改表定義的方式刪除。(兩種情況)0102drop
index
索引名
on
表名;03alter
table
表名
drop
index
索引名;刪除索引2能夠按要求正確地從指定數(shù)據(jù)表中刪除指定的索引。掌握創(chuàng)建索引的三種方式,并能夠根據(jù)要求使用三種方式創(chuàng)建索引掌握刪除索引的兩種方式,并能夠根據(jù)要求使用兩種方式刪除索引實成實訓(xùn)報告。實踐訓(xùn)練3工作任務(wù)6
完成!數(shù)據(jù)庫設(shè)計與應(yīng)用—
—
M
y
S
Q
L使用視圖提高復(fù)雜查詢語句的復(fù)用性2通過視圖修改基本表中數(shù)據(jù)1認識視圖3實踐訓(xùn)練視圖本質(zhì)是虛擬表,實際存放的是查詢語句0102視圖中查詢語句查詢的數(shù)據(jù)表稱基本表03createview
視圖名[(字段名列表)]
as
select語句;認識視圖1掌握視圖和基本表的含義,能夠使用create
view按要求創(chuàng)建視圖。04alter
view
視圖名[(字段名列表)]
as
select語句;05drop
view
視圖名列表;060708使用\G替代分號作為語句結(jié)束符時,語句執(zhí)行結(jié)果按列輸出,即:將執(zhí)行結(jié)果的結(jié)構(gòu)旋轉(zhuǎn)90度變成縱向。認識視圖1掌握視圖和基本表的含義,能夠使用create
view按要求創(chuàng)建視圖。查看視圖的數(shù)據(jù)結(jié)構(gòu)與查看表的數(shù)據(jù)結(jié)構(gòu)相同desc[ribe]視圖名;查看創(chuàng)建視圖的詳細信息show
create
view
視圖名;09with
check
option選項是可選的,如果在創(chuàng)建視圖時有這個選項,表示通過視圖更新數(shù)據(jù)時檢查更新的數(shù)據(jù)是否符合視圖定義中的where子句設(shè)置的條件。數(shù)據(jù)表的增、改、刪操作同樣適用于視圖。0102視圖的“增”操作只能用在使用一個基本表創(chuàng)建的視圖中。03視圖的“改”操作只能用在直接引用基本表的列上。通過視圖修改基本表中數(shù)據(jù)2使用學(xué)過的增、改、刪操作通過對視圖操作達到修改基本表中數(shù)據(jù)。視圖的“刪”操作也是只能用在使用一個基本表創(chuàng)建的視圖中。040506通過視圖修改基本表中數(shù)據(jù)2使用學(xué)過的增、改、刪操作通過對視圖操作達到修改基本表中數(shù)據(jù)。例:創(chuàng)建江蘇省供應(yīng)商視圖(view_jsprovide)時設(shè)置了withcheck
option選項。通過視圖添加如下數(shù)據(jù):G202412001,張三日化用品有限公司,四川省成都市,02824546228。insert into
view_jsprovide
values(‘G202412001’,’張三日化用品有限公司’,’四川省成都市’,’02824546228’);語句本身是正確的,但是這行數(shù)據(jù)不符合定義視圖時的where子句條件,所以執(zhí)行時會報錯。創(chuàng)建低價商品視圖view_cheap,具體語句如下:createviewview_cheapasselectmerchid,merchname,merchprice*1.05pricefrommerchinfowheremerchprice<5;視圖創(chuàng)建后,要通過該視圖修改商品價格:updateview_cheapset
price=price*1.1;語句本身是正確的,但是語句執(zhí)行時會報錯,只因為視圖中的price字段是通過運算得到的。掌握創(chuàng)建視圖、修改視圖和刪除視圖的語句掌握通過視圖修改數(shù)據(jù)的原則完成實訓(xùn)報告實踐訓(xùn)練3工作任務(wù)7
完成!數(shù)據(jù)庫設(shè)計與應(yīng)用—
—
M
y
S
Q
L實施數(shù)據(jù)庫的數(shù)據(jù)完整性2使用約束檢查域完整性3使用約束檢查參照完整性1使用約束保證數(shù)據(jù)表內(nèi)行唯一4實踐訓(xùn)練主鍵約束的關(guān)鍵字為:primary
key0102唯一約束的關(guān)鍵字為:unique03使用約束保證數(shù)據(jù)表內(nèi)的行唯一1掌握數(shù)據(jù)完整性的概念和實體完整性的實施方法,能夠根據(jù)要求選擇合適的方法實施實體完整性保證數(shù)據(jù)表中的行是唯一的。0405自動增值約束的關(guān)鍵字為:auto_increment自動增值約束只對整型字段有效,并且是主鍵字段本身或主鍵字段的一部分。字段名
數(shù)據(jù)類型 primary
key
[默認值]
或:[constraint約束名] primary
key(字段名列表)唯一約束的格式與主鍵約束格式完全一致一個表有且只能有一個主鍵約束,唯一約束不限0607字段名 數(shù)據(jù)類型 auto_increment08刪除約束使用altertable命令刪除主鍵約束:alter
table
表名
drop
primary
key;刪除唯一約束:alter
table
表名
drop
key|index
索引名;使用約束保證數(shù)據(jù)表內(nèi)的行唯一1例:創(chuàng)建表st,兩個字段:st_id,整型,主鍵,自動增值,st_name,可變長4位字符型,不能為空。createtablest(st_idintprimarykeyauto_increment,st_namevarchar(4)not
null);在表st的st_name字段上添加一個唯一約束。altertablestadd
unique(st_name);非空約束:字段名 數(shù)據(jù)類型
not
null0102使用約束檢查域完整性2能夠使用非空約束和默認值約束實現(xiàn)域完整性。默認值約束:字段名
數(shù)據(jù)類型
defalut
默認值在創(chuàng)建表的時候可直接設(shè)置非空約束和默認值約束,如果是在已經(jīng)存在的表上添加非空約束和默認值約束,則需要使用修改表定義的字段數(shù)據(jù)類型。例:在provide表的provideaddress字段上設(shè)置默認值“江蘇省”。altertableprovidemodifyprovideaddressvarchar(250)default
‘江蘇省’;使用約束檢查參照完整性3能夠正確使用外鍵約束實現(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選項。掌握主鍵約束、唯一約束、自動增值約束的使用方法掌握外鍵約束的使用方法掌握非空約束和默認值約束的使用方法完成實訓(xùn)報告實踐訓(xùn)練4工作任務(wù)8
完成!數(shù)據(jù)庫設(shè)計與應(yīng)用—
—
M
y
S
Q
L使用用戶自定義函數(shù)2創(chuàng)建用戶自定義函數(shù)3使用游標1認識用戶自定義函數(shù)4實踐訓(xùn)練0102常量:程序運行中始終不變的量。字符串常量、數(shù)值常量、日期時間常量等。變量:全局變量、會話變量、用戶變量和局部變量03查看全局變量:select@@global.變量名;或showglobal
variables[like
'匹配模式'|where
表達式];認識用戶自定義函數(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認識用戶自定義函數(shù)1常量與系統(tǒng)變量的使用。字符串常量
數(shù)值常量 日期常量時間常量查看全局系統(tǒng)變量showglobal
variables;查看會話系統(tǒng)變量showsession
variables;091011認識用戶自定義函數(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
默認值];set
變量名=值|表達式;delimiter
$;
//修改語句結(jié)束符為$1314116刪除自定義函數(shù):drop
function
[if
exists]
函數(shù)名;15create
function
函數(shù)名(參數(shù)列表)returns
返回值
類型[begin]函數(shù)體return
返回值;[end]//調(diào)用時,使用select語句,放在可用表達式的地方查看自定義函數(shù):show
create
function
函數(shù)名;認識用戶自定義函數(shù)用戶自定義函數(shù)的定義。1認識用戶自定義函數(shù)用戶自定義函數(shù)的定義。創(chuàng)建一個名為sayHello的自定義函數(shù),輸入?yún)?shù)是姓名,返回一個用于表示問候的字符串。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表達式:if(條件,表達式1,表達式2)既然是表達式,就要放在任何可以放表達式的地方。創(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
表達式:格式1:case
表達式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è)置標簽,使用:leave 標簽;中斷循環(huán)。當然,這個中斷循環(huán)語句往往要與if語句結(jié)合使用。循環(huán)結(jié)構(gòu)3:repeat語句repeat循環(huán)體;until
結(jié)束循環(huán)條件end
repeat;使用游標3能夠按照要求在用戶自定義函數(shù)中正確使用游標。010203040506游標:用于標識使用select語句從一個或多個基本表中選取出的一個結(jié)果集,也稱光標。四個步驟使用游標:聲明游標(declare),打開游標(open),讀取游標(fetch),關(guān)閉游標(close)聲明游標:declare
游標名稱
cursorfor select
語句;打開游標:open
游標名稱;讀取游標:fetch
[next]
[from]
游標名稱
into
變量名[,...];關(guān)閉游標:close
游標名稱;使用游標3能夠按照要求在用戶自定義函數(shù)中正確使用游標。例:有表sc結(jié)構(gòu)如下:stuid
char(5),courseid
char(2),grade
int。如果創(chuàng)建一個名為avgrade的自定義函數(shù),要求使用游標求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$掌握游標的使用方法掌握用戶自定義函數(shù)的創(chuàng)建、查看、和刪除的語句格式和使用完成實訓(xùn)報告實踐訓(xùn)練1 掌握數(shù)據(jù)庫編程元素,包括常量、變量、系統(tǒng)函數(shù)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等4工作任務(wù)9
完成!數(shù)據(jù)庫設(shè)計與應(yīng)用—
—
M
y
S
Q
L使用存儲過程2創(chuàng)建、使用存儲過程1認識存儲過程3實踐訓(xùn)練創(chuàng)建存儲過程:create
procedure0102調(diào)用存儲過程:call
存儲過程名03查看存儲過程的創(chuàng)建信息:show
create
procedure
存儲過程名;認識存儲過程1掌握創(chuàng)建、查看、調(diào)用和刪除存儲過程的語句格式及使用方法。04刪除存儲過程:drop
procedure修改存儲過程只能修改其特征,使用alter
procedure0102游標也可以使用在存儲過程中03調(diào)用存儲過程時,注意輸出參數(shù)的使用創(chuàng)建、使用存儲過程2能夠按要求正確地創(chuàng)建存儲過程并能夠修改存儲過程中的相關(guān)特征參數(shù)。掌握創(chuàng)建存儲過程、調(diào)用存儲過程的語句格式掌握刪除存儲過程的語句格式完成實訓(xùn)報告實踐訓(xùn)練3工作任務(wù)1
0
完成!數(shù)據(jù)庫設(shè)計與應(yīng)用—
—
M
y
S
Q
L設(shè)置觸發(fā)器2創(chuàng)建并使用觸發(fā)器1認識觸發(fā)器3實踐訓(xùn)練觸發(fā)器:特殊的存儲過程,不需要去調(diào)用執(zhí)行,由插入、刪除、更新操作自動觸發(fā)。0102觸發(fā)器專用臨時表:new和old03觸發(fā)器分類:時間(after和before)操作(insert、update和delete)認識觸發(fā)器1掌握觸發(fā)器的基礎(chǔ)知識以及創(chuàng)建觸發(fā)器的格式,并會使用相關(guā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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療健康大數(shù)據(jù)分析流程探討
- 2026年文學(xué)知識競賽試題及答案詳解
- 2026年語言學(xué)家跨語言交際能力測試題
- 2026年金融投資風(fēng)險管理5S策略評估題庫及答案
- 2026年會計師實務(wù)操作財務(wù)報表編制實操試題
- 2026年軟件開發(fā)工程師認證題庫考試題集及答案解析
- 2026年計算機視覺與圖像處理專業(yè)認證題目
- 2026年投資顧問知識考點詳解與模擬試題
- 2026年會計從業(yè)知識題庫財務(wù)報表分析題集
- 2026年人力資源管理實戰(zhàn)技巧題庫與答案解析
- 江蘇省鹽城市大豐區(qū)四校聯(lián)考2025-2026學(xué)年七年級上學(xué)期12月月考歷史試卷(含答案)
- 我國校企合作發(fā)展歷程:二十年綜述
- 能源與動力工程測試技術(shù) 課件 第二章 測量技術(shù)的基本知識確定
- 大學(xué)生心理健康教育(第三版)課件 第九章 珍惜生命 追求幸福
- 做人做事培訓(xùn)課件
- 預(yù)制板粘貼碳纖維加固計算表格
- 辦公樓裝飾裝修工程施工組織設(shè)計方案
- 《出境旅游領(lǐng)隊實務(wù)》課件
- 2024智能網(wǎng)聯(lián)汽車自動駕駛功能仿真試驗方法及要求
- DL-T-5759-2017配電系統(tǒng)電氣裝置安裝工程施工及驗收規(guī)范
- 盈虧問題完整
評論
0/150
提交評論