MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用任務(wù)式教程(微課版)單元4 創(chuàng)建與管理表_第1頁(yè)
MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用任務(wù)式教程(微課版)單元4 創(chuàng)建與管理表_第2頁(yè)
MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用任務(wù)式教程(微課版)單元4 創(chuàng)建與管理表_第3頁(yè)
MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用任務(wù)式教程(微課版)單元4 創(chuàng)建與管理表_第4頁(yè)
MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用任務(wù)式教程(微課版)單元4 創(chuàng)建與管理表_第5頁(yè)
已閱讀5頁(yè),還剩104頁(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)介

單元4創(chuàng)建與管理表《MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用任務(wù)式教程(慕課版)》學(xué)習(xí)內(nèi)容任務(wù)1操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表

2任務(wù)2操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)數(shù)據(jù)庫(kù)系統(tǒng)的組成任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引任務(wù)4實(shí)現(xiàn)學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)完整性在cjgl數(shù)據(jù)庫(kù)中有3張表:學(xué)生表xs、課程表kc和成績(jī)表cj,這些表的結(jié)構(gòu)分別如表4-1~表4-3所示,表的初始數(shù)據(jù)分別如表4-4、表4-5和表4-6所示。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表4.1.1用命令方式創(chuàng)建和管理數(shù)據(jù)表創(chuàng)建數(shù)據(jù)表的過(guò)程是定義表中數(shù)據(jù)列的過(guò)程,也是實(shí)施數(shù)據(jù)完整性(包括域完整性、實(shí)體完整性和參照完整性)約束的過(guò)程。1.查看表在MySQL中,可以用SHOWTABLES語(yǔ)句查看當(dāng)前數(shù)據(jù)庫(kù)中有哪些表。其語(yǔ)法格式如下SHOWTABLES[LIKE匹配模式];省略[LIKE匹配模式],表示查看當(dāng)前數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)表。添加[LIKE匹配模式],則按照“匹配模式”查看數(shù)據(jù)表?!?”用于匹配任意長(zhǎng)度的字符串;“_”用于僅匹配一個(gè)字符。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表【例題4.1】查看示例數(shù)據(jù)庫(kù)world中的表。執(zhí)行的SQL語(yǔ)句及結(jié)果如圖。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表在MySQL中,可以用SHOWTABLESTATUS語(yǔ)句查看數(shù)據(jù)庫(kù)中數(shù)據(jù)表的狀態(tài)信息,如數(shù)據(jù)表的名稱、存儲(chǔ)引擎、結(jié)構(gòu)文件版本號(hào)、記錄的存儲(chǔ)格式、創(chuàng)建時(shí)間等。其語(yǔ)法格式如下。SHOWTABLESTATUS[FROM數(shù)據(jù)庫(kù)名][LIKE匹配模式];【例題4.2】查看示例數(shù)據(jù)庫(kù)world中表city的狀態(tài)信息。執(zhí)行如下SQL語(yǔ)句mysql>SHOWTABLESTATUSLIKE'city'\G;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表2.創(chuàng)建表

在MySQL中,可以使用CREATETABLE語(yǔ)句創(chuàng)建表,該語(yǔ)句完整的語(yǔ)法比較復(fù)雜,主要由表創(chuàng)建定義(create_definition)、表選項(xiàng)(table_options)和分區(qū)選項(xiàng)(partition_options)等部分組成。其基本語(yǔ)法格式如下。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表語(yǔ)法說(shuō)明如下。①如果創(chuàng)建多個(gè)列,要用英文逗號(hào)將它們隔開。②列定義的完整形式比較復(fù)雜,涉及如下關(guān)鍵字。AUTO_INCREMENT:用于設(shè)置某列有自增屬性,僅用于整數(shù)列。當(dāng)插入NULL或0到一個(gè)AUTO_INCREMENT列中時(shí),列被設(shè)置為該列的最大值+1。AUTO_INCREMENT順序從1開始。每個(gè)表只能有一個(gè)AUTO_INCREMENT列,并且它必須被索引。COMMENT'string':表的注釋;最大長(zhǎng)度為60個(gè)字符。COLLATEcollation_name:用于指定表的校驗(yàn)方式。COLUMN_FORMAT:FIXED|DYNAMIC|DEFAULT。STORAGE:DISK|MEMORY。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表③FULLTEXT:表示全文索引,在檢索長(zhǎng)文本的時(shí)候效果最好,檢索短文本時(shí)建議使用Index。SPATIAL:表示空間索引,是對(duì)空間數(shù)據(jù)類型的字段創(chuàng)建的索引。⑥table_options子句:用于指定表的各種屬性。⑦[AS]query_expression:利用查詢返回的結(jié)果創(chuàng)建表,此時(shí)create_definition子句可省略。唯一索引中重復(fù)值的行根據(jù)指定的是IGNORE還是REPLACE,選擇忽略或者替換現(xiàn)有行。如果兩者都未指定,出現(xiàn)重復(fù)值時(shí)將報(bào)錯(cuò)。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表【例題4.3】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,用命令方式創(chuàng)建學(xué)生表xs1。mysql>USEcjgl;mysql>CREATETABLExs1( 學(xué)號(hào)CHAR(6), 姓名CHAR(8),

專業(yè)名CHAR(10), 性別ENUM('男','女'), 出生時(shí)間DATETIME, 總學(xué)分TINYINT(1)COMMENT'', 備注TEXT(2));

以上語(yǔ)句執(zhí)行后,可查看數(shù)據(jù)表是否創(chuàng)建成功,執(zhí)行如下語(yǔ)句。mysql>SHOWTABLES;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表3.實(shí)現(xiàn)主鍵約束、空值約束、唯一性約束、默認(rèn)約束和檢查約束完整性約束是MySQL提供的自動(dòng)保持?jǐn)?shù)據(jù)完整性的一種方法。它通過(guò)限制列中數(shù)據(jù)、記錄中的數(shù)據(jù)和表之間的數(shù)據(jù)來(lái)保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性和有效性。在MySQL中有6種約束:主鍵約束、空值約束、唯一性約束、默認(rèn)約束、外鍵約束和檢查約束。在這6種約束中,一個(gè)數(shù)據(jù)表中只能有一個(gè)主鍵約束,其他約束可以有多個(gè)。完整性約束的基本語(yǔ)法格式如下。[CONSTRAINT<約束名>]<約束類型>任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表在MySQL中,對(duì)于基本表的約束分為列約束和表約束。列約束是對(duì)某一個(gè)特定列的約束,包含在列定義中,直接跟在列的其他定義之后,用空格分隔,不必指定列名。表約束與列定義相互獨(dú)立,不包括在列定義中,通常用于對(duì)多個(gè)列一起進(jìn)行約束,與列定義之間用“,”分隔,定義表約束時(shí)必須指出要約束的列的名稱。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表此處僅介紹主鍵約束、空值約束、唯一性約束、默認(rèn)約束和檢查約束,外鍵約束將在任務(wù)4-4中介紹。(1)主鍵約束主鍵(PrimaryKey)是數(shù)據(jù)表中的一列或多列的組合,能夠唯一地確定表中的每一條記錄。在設(shè)計(jì)數(shù)據(jù)表時(shí),一般情況下都會(huì)在表中設(shè)置一個(gè)主鍵。例如,學(xué)號(hào)是學(xué)生表的主鍵,學(xué)號(hào)和課程號(hào)是成績(jī)表的主鍵。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表主鍵約束的基本語(yǔ)法格式如下。列名數(shù)據(jù)類型PRIMARYKEY--列級(jí)約束或[CONSTRAINT約束名]PRIMARYKEY(列名1,…,列名n)--表級(jí)約束主鍵約束用于定義基本表的主鍵,要求主鍵列的數(shù)據(jù)唯一,并且不允許為空。主鍵既可用于列約束,也可用于表約束。主鍵可以結(jié)合外鍵來(lái)定義不同數(shù)據(jù)表之間的關(guān)系,并且可以加快數(shù)據(jù)庫(kù)查詢的速度。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表【例題4.4】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,用命令方式創(chuàng)建課程表kc,主鍵為課程號(hào)。單字段組成的主鍵可以在定義列的同時(shí)指定。執(zhí)行如下SQL語(yǔ)句。mysql>USEcjgl;mysql>CREATETABLEkc (課程號(hào)CHAR(3)NOTNULLPRIMARYKEY, 課程名CHAR(16)NOTNULL,

開課學(xué)期TINYINTNOTNULLCHECK(開課學(xué)期>=1AND開課學(xué)期<=6),學(xué)時(shí)TINYINTNOTNULL, 學(xué)分TINYINTNULL);任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表

以上SQL語(yǔ)句執(zhí)行后,可查看數(shù)據(jù)表是否創(chuàng)建成功,執(zhí)行如下SQL語(yǔ)句。mysql>SHOWTABLES;多字段聯(lián)合組成的主鍵只能在定義完所有列之后指定。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表【例題4.5】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,用命令方式創(chuàng)建成績(jī)表cj,主鍵為(學(xué)號(hào),課程號(hào))。執(zhí)行如下SQL語(yǔ)句。mysql>CREATETABLEcj (學(xué)號(hào)CHAR(6)NOTNULL, 課程號(hào)CHAR(3)NOTNULL, 成績(jī)TINYINT, PRIMARYKEY(學(xué)號(hào),課程號(hào)));以上SQL語(yǔ)句執(zhí)行后,可查看數(shù)據(jù)表是否創(chuàng)建成功,執(zhí)行如下SQL語(yǔ)句。mysql>SHOWTABLES;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表(2)非空約束非空約束(NOTNULL)用來(lái)控制是否允許某列的值為NULL。列的值默認(rèn)為NULL。當(dāng)某一列的值一定要不為NULL才有意義的時(shí)候,應(yīng)為其設(shè)置非空約束。非空約束的基本語(yǔ)法格式如下。列名數(shù)據(jù)類型NOTNULL非空約束只能用于定義列約束。創(chuàng)建非空約束的方法如例題4.4所示。對(duì)于使用了非空約束的字段,如果在添加數(shù)據(jù)時(shí)沒(méi)有指定值,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)報(bào)錯(cuò)。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表(3)唯一性約束唯一性約束(UNIQUE)是指一個(gè)或者多個(gè)列的組合值具有唯一性,用于防止在列中輸入重復(fù)的值。定義了唯一性約束的列稱為唯一鍵,系統(tǒng)自動(dòng)為唯一鍵創(chuàng)建唯一索引,從而保證了唯一鍵的唯一性。唯一性約束的基本語(yǔ)法格式如下。列名數(shù)據(jù)類型UNIQUE--列級(jí)約束或[CONSTRAINT<約束名>]UNIQUE(列名1,…,列名n)--表級(jí)約束例如,在學(xué)生表中,如果要避免表中的學(xué)生姓名重復(fù),就可以為姓名列設(shè)置唯一性約束。唯一性約束與主鍵約束的共同之處是它們都能夠確保表中對(duì)應(yīng)列不存在重復(fù)值,但兩者之間有著較大的區(qū)別:在一個(gè)基本表中只能定義一個(gè)主鍵約束,但可定義多個(gè)唯一性約束;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表對(duì)于指定為主鍵的一個(gè)列或多個(gè)列的組合,其中任何一個(gè)列都不能出現(xiàn)空值,而對(duì)于具有唯一性約束的唯一鍵,則允許為空,但只能有一個(gè)空值;一般創(chuàng)建主鍵約束時(shí),系統(tǒng)會(huì)自動(dòng)產(chǎn)生索引,索引的默認(rèn)類型為聚集索引,而創(chuàng)建唯一性約束時(shí),系統(tǒng)會(huì)自動(dòng)產(chǎn)生一個(gè)唯一索引,索引的默認(rèn)類型為非聚集索引。注意:不能為同一個(gè)列或一組列既定義唯一性約束,又定義主鍵約束。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表(4)默認(rèn)值約束默認(rèn)值約束(DEFAULT)用來(lái)指定某列的默認(rèn)值。當(dāng)數(shù)據(jù)表中的某個(gè)列未輸入值時(shí),系統(tǒng)自動(dòng)為其添加一個(gè)已經(jīng)設(shè)置好的值。如班里的男同學(xué)較多,學(xué)生表中的性別就可以默認(rèn)為“1”,即男。如果插入一條新記錄時(shí)沒(méi)有為某列賦值,那么系統(tǒng)會(huì)自動(dòng)將這個(gè)列賦值為1。默認(rèn)值約束的基本語(yǔ)法格式如下。列名數(shù)據(jù)類型DEFAULT默認(rèn)值約束只能用于定義列約束。默認(rèn)值約束通常用在已經(jīng)設(shè)置了非空約束的列,這樣能夠防止數(shù)據(jù)表在錄入數(shù)據(jù)時(shí)出現(xiàn)錯(cuò)誤。如果沒(méi)有為列指定默認(rèn)值,MySQL會(huì)自動(dòng)分配一個(gè)默認(rèn)值。如果列可以取NULL作為值,那么其默認(rèn)值是NULL。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表如果列被聲明為NOTNULL,那么其默認(rèn)值取決于列類型,具體說(shuō)明如下。①對(duì)于數(shù)值列,除AUTO_INCREMENT列外,其默認(rèn)值為0。而對(duì)于AUTO_INCREMENT列,其默認(rèn)值為該列的序列中的下一個(gè)數(shù)。②對(duì)于非TIMESTAMP的日期和時(shí)間類型列,其默認(rèn)值是該類型適當(dāng)?shù)摹傲恪敝?。例如,DATE類型的“零”值為“0000-00-00”。對(duì)于表中第一個(gè)TIMESTAMP列,其默認(rèn)值是當(dāng)前的日期和時(shí)間③對(duì)于非ENUM的字符串類型列,其默認(rèn)值是空字符串。對(duì)于ENUM列,其默認(rèn)值是第一個(gè)枚舉值。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表(5)檢查約束檢查約束(CHECK)用來(lái)檢查數(shù)據(jù)表中的字段值是否有效。檢查約束在創(chuàng)建表時(shí)定義,可以定義成列級(jí)約束,也可以定義成表級(jí)約束。其基本語(yǔ)法格式如下。列名數(shù)據(jù)類型CHECK(表達(dá)式)例如,課程表kc中的“開課學(xué)期”列的取值范圍應(yīng)該為1~6,所以可以設(shè)置“開課學(xué)期>=1AND開課學(xué)期<=6”,如例題4.4所示。學(xué)生表xs中的性別列的值只能是男或女,所以可以設(shè)置“性別='男'OR性別='女')”或“性別IN('男','女')”,這樣能夠減少無(wú)效數(shù)據(jù)的輸入。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表【例題4.6】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,用命令方式創(chuàng)建學(xué)生表xs,表的結(jié)構(gòu)見表4-1。創(chuàng)建一個(gè)結(jié)構(gòu)與學(xué)生表xs相同的表xs1。mysql>USEcjgl;mysql>CREATETABLExs('學(xué)號(hào)'CHAR(6)NOTNULLPRIMARYKEY,'姓名'CHAR(8)NOTNULL,'專業(yè)名'CHAR(10)NULL,'性別'ENUM('男','女')NOTNULLDEFAULT'男'CHECK(性別='男'OR性別='女'),任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表'出生時(shí)間'DATETIMENOTNULL,'總學(xué)分'TINYINT(1)NULLCOMMENT'','備注'TEXT(2)NULL);以上SQL語(yǔ)句執(zhí)行后,可查看數(shù)據(jù)表xs是否創(chuàng)建成功,執(zhí)行如下SQL語(yǔ)句。mysql>SHOWTABLES;mysql>CREATETABLExs1ASSELECT*FROMxs;查看數(shù)據(jù)表xs1是否創(chuàng)建成功,執(zhí)行如下SQL語(yǔ)句。mysql>SHOWTABLES;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表4.查看表的結(jié)構(gòu)在數(shù)據(jù)庫(kù)中創(chuàng)建表后,有時(shí)需要查看表的結(jié)構(gòu)(如表的屬性、列屬性和索引等)是否被正確定義。在MySQL中,可以使用DESCRIBE或SHOWCREATETABLE語(yǔ)句來(lái)查看數(shù)據(jù)表的結(jié)構(gòu)。(1)使用DESCRIBE語(yǔ)句查看表的結(jié)構(gòu)DESCRIBE語(yǔ)句的語(yǔ)法格式如下。DESCRIBE表名;或DESC表名;該語(yǔ)句會(huì)以表格的形式來(lái)展示表的字段信息,包括字段名、字段類型、是否為主鍵、默認(rèn)值等。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表【例題4.7】使用DESC語(yǔ)句查看學(xué)生表xs和表xs1的結(jié)構(gòu)。執(zhí)行如下SQL語(yǔ)句,結(jié)果如圖4-1所示。mysql>descxs;mysql>describexs1;其中,各個(gè)字段的含義如下。①Null:表示該列是否可以存儲(chǔ)NULL。②Key:表示該列是否已編制索引;PRI表示該列是表中主鍵的一部分,UNI表示該列是UNIQUE索引的一部分,MUL表示在該列中某個(gè)給定值允許出現(xiàn)多次。③Default:表示該列的默認(rèn)值。④Extra:表示可以獲取的與給定列有關(guān)的附加信息,如AUTO_INCREMENT等。圖4-1例題4.7的運(yùn)行結(jié)果任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表(2)使用SHOWCREATETABLE語(yǔ)句查看表的詳細(xì)結(jié)構(gòu)SHOWCREATETABLE語(yǔ)句以SQL語(yǔ)句的形式展示表結(jié)構(gòu),其語(yǔ)法格式如下。SHOWCREATETABLE表名;和DESCRIBE語(yǔ)句相比,SHOWCREATETABLE語(yǔ)句展示的內(nèi)容更加豐富,通過(guò)它可以查看表的存儲(chǔ)引擎和字符編碼,還可以在語(yǔ)句的結(jié)尾處通過(guò)\g或者\(yùn)G參數(shù)來(lái)控制展示格式。任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表【例題4.8】使用SHOWCREATETABLE語(yǔ)句查看表xs的詳細(xì)信息,該語(yǔ)句以\g或\G結(jié)尾。執(zhí)行如下SQL語(yǔ)句mysql>SHOWCREATETABLExs\G;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表5.修改表修改表指的是修改數(shù)據(jù)庫(kù)中已經(jīng)存在的數(shù)據(jù)表的結(jié)構(gòu)。在MySQL中可以使用ALTERTABLE語(yǔ)句修改表的名稱和結(jié)構(gòu),例如增加列、修改列的名稱、修改列的類型、修改列的位置、修改表的存儲(chǔ)引擎、取消表的外鍵、刪除列等。其語(yǔ)法格式如下。ALTERTABLE表名[修改選項(xiàng)][分區(qū)選項(xiàng)]其中,修改選項(xiàng)的語(yǔ)法格式如下。{RENAME[TO|AS]<新表名>|ADDCOLUMN<列名><新列定義>[FIRST|AFTER<列名>]|DROPCOLUMN<列名>任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表|CHANGECOLUMN<舊列名><新列名><新列定義>[FIRST|AFTER<列名>]|ALTERCOLUMN<列名>{SETDEFAULT<默認(rèn)值>|DROPDEFAULT}|MODIFYCOLUMN<列名><類型>[FIRST|AFTER<列名>]|CHARACTERSET<字符集名>|COLLATE<校對(duì)規(guī)則名>}任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表(1)修改表名在MySQL中可以使用ALTERTABLE語(yǔ)句修改表名,其語(yǔ)法格式如下。ALTERTABLE表名RENAME[TO|AS]<新表名>;【例題4.9】將數(shù)據(jù)表xs1的名稱改為student。執(zhí)行如下SQL語(yǔ)句。mysql>ALTERTABLExs1RENAMETOstudent;查看修改結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>SHOWTABLES;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表(2)修改表的字符集在MySQL中可以使用ALTERTABLE語(yǔ)句修改表的字符集,其語(yǔ)法格式如下。ALTERTABLE表名[DEFAULT]CHARACTERSET<字符集名>[DEFAULT]COLLATE<校對(duì)規(guī)則名>;【例題4.10】將數(shù)據(jù)表student的字符集修改為gb2312,將校對(duì)規(guī)則修改為gb2312_chinese_ci。執(zhí)行如下SQL語(yǔ)句。mysql>ALTERTABLEstudentCHARACTERSETgb2312DEFAULTCOLLATEgb2312_chinese_ci;查看修改結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>SHOWCREATETABLEstudent\G;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表(3)添加列在MySQL中可以使用ALTERTABLE語(yǔ)句為數(shù)據(jù)表添加新列,其語(yǔ)法格式如下。ALTERTABLE表名ADD<新列名><數(shù)據(jù)類型>[約束條件][FIRST|AFTER<已有列名>];【例題4.11】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,用命令方式在學(xué)生表xs的總學(xué)分后增加新列獎(jiǎng)學(xué)金等級(jí)。執(zhí)行如下SQL語(yǔ)句mysql>ALTERTABLExsADD獎(jiǎng)學(xué)金等級(jí)TINYINTNULLAFTER總學(xué)分;查看修改結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>DESCxs;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表(4)修改列名在MySQL中可以使用ALTERTABLE語(yǔ)句修改表中列的名稱,其語(yǔ)法格式如下。ALTERTABLE表名CHANGE<舊列名><新列名><新數(shù)據(jù)類型>;【例題4.12】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,用命令方式將學(xué)生表xs中的獎(jiǎng)學(xué)金等級(jí)列名改為“獎(jiǎng)學(xué)金”,數(shù)據(jù)類型不變。執(zhí)行如下SQL語(yǔ)句。mysql>ALTERTABLExsCHANGE獎(jiǎng)學(xué)金等級(jí)獎(jiǎng)學(xué)金TINYINT;查看修改結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>DESCxs;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表(5)修改字段數(shù)據(jù)類型在MySQL中可以使用ALTERTABLE語(yǔ)句修改列的數(shù)據(jù)類型,其語(yǔ)法格式如下。ALTERTABLE表名MODIFY<列名><數(shù)據(jù)類型>;【例題4.13】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,用命令方式將學(xué)生表xs中的獎(jiǎng)學(xué)金等級(jí)列的數(shù)據(jù)類型改為INT執(zhí)行如下SQL語(yǔ)句。mysql>ALTERTABLExsMODIFY獎(jiǎng)學(xué)金INT;查看修改結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>DESCxs;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表(6)修改字段的位置在MySQL中可以使用ALTERTABLE語(yǔ)句修改列在表中的排列位置,其語(yǔ)法格式如下。ALTERTABLE表名MODIFY<列名1><數(shù)據(jù)類型>FIRST|AFTER<列名2>;【例題4.14】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,用命令方式將表student中的姓名列放在表的第一位。執(zhí)行如下SQL語(yǔ)句。mysql>ALTERTABLEstudentMODIFY姓名CHAR(8)FIRST;查看修改結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>SHOWCREATETABLEstudent\G;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表(7)刪除字段在MySQL中可以使用ALTERTABLE語(yǔ)句將數(shù)據(jù)表中的某個(gè)列從表中移除,其語(yǔ)法格式如下。ALTERTABLE表名DROP<列名>;【例題4.15】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,用命令方式刪除學(xué)生表xs中名為“獎(jiǎng)學(xué)金”的列。執(zhí)行如下SQL語(yǔ)句。mysql>ALTERTABLExsDROPCOLUMN獎(jiǎng)學(xué)金;查看修改結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>DESCxs;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表(8)修改數(shù)據(jù)表的存儲(chǔ)引擎在MySQL中可以使用ALTERTABLE語(yǔ)句修改數(shù)據(jù)表的存儲(chǔ)引擎,其語(yǔ)法格式如下。ALTERTABLE表名ENGINE=新存儲(chǔ)引擎名;【例題4.16】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,用命令方式更改表student的存儲(chǔ)引擎為MyISAM。執(zhí)行如下SQL語(yǔ)句。mysql>ALTERTABLEstudentENGINE=MyISAM;查看修改結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>SHOWCREATETABLEstudent\G;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表6.刪除表在MySQL數(shù)據(jù)庫(kù)中,使用DROPTABLE語(yǔ)句可以刪除一個(gè)或多個(gè)不再需要的表,其語(yǔ)法格式如下。DROPTABLE[IFEXISTS]<表名1>[,<表名2>,...]任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表【例題4.17】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,用命令方式刪除表student和xs表xs。執(zhí)行如下SQL語(yǔ)句。DROPTABLEstudent;查看刪除結(jié)果。mysql>SHOWTABLES;mxsql>DROPTABLExs;任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表4.1.2使用MySQLWorkbench圖形化工具創(chuàng)建和管理數(shù)據(jù)表1.創(chuàng)建數(shù)據(jù)表打開MySQLWorkbench,在SCHEMAS欄中展開當(dāng)前默認(rèn)的cjgl數(shù)據(jù)庫(kù),右擊Tables,在彈出式菜單中選擇CreateTable…,如圖4-2所示。圖4-2選擇CreateTable…任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表打開創(chuàng)建數(shù)據(jù)表的界面,如圖4-3所示,在上方區(qū)域填寫表信息,如在TableName文本框中輸入數(shù)據(jù)表的名稱xs。在中間區(qū)域的列名欄填寫列名,在數(shù)據(jù)類型欄通過(guò)下拉列表選擇數(shù)據(jù)類型,通過(guò)控制PK列復(fù)選框的勾選情況來(lái)設(shè)置數(shù)據(jù)表的主鍵約束,若勾選,該列就是數(shù)據(jù)表的主鍵;取消勾選,則取消該列的主鍵約束。同理,可以通過(guò)NN列的勾選情況設(shè)置數(shù)據(jù)表的非空約束;通過(guò)UQ列的勾選情況設(shè)置數(shù)據(jù)表的唯一約束;通過(guò)AI列的勾選情況設(shè)置主鍵的值為自動(dòng)增長(zhǎng)等。在Default/Expression列中編輯字段的默認(rèn)值或檢查約束的表達(dá)式。也可以在下方編輯區(qū)逐行編輯表的列信息。圖4-3創(chuàng)建表的界面任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表編輯完數(shù)據(jù)表的基本信息后單擊Apply按鈕,彈出一個(gè)確認(rèn)對(duì)話框,其中有自動(dòng)生成的當(dāng)前操作的SQL語(yǔ)句,如圖4-4所示。確認(rèn)無(wú)誤后,單擊Apply按鈕,在彈出的對(duì)話框中直接單擊Finish按鈕,執(zhí)行相應(yīng)的SQL語(yǔ)句,即可完成xs數(shù)據(jù)表的創(chuàng)建。此時(shí),在cjgl數(shù)據(jù)庫(kù)的Tables節(jié)點(diǎn)下可以看到xs表。圖4-4創(chuàng)建表的SQL語(yǔ)句任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表2.查看數(shù)據(jù)表右擊需要查看的xs數(shù)據(jù)表,在彈出式菜單中選擇TableInspector,如圖4-5所示,即可查看數(shù)據(jù)表xs的結(jié)構(gòu)信息,如圖4-6所示。其中,Info選項(xiàng)卡中顯示了xs表的名稱、存儲(chǔ)引擎、列數(shù)、空間大小等信息。Columns選項(xiàng)卡中顯示了xs表中列的信息,包括列名、數(shù)據(jù)類型、默認(rèn)值、非空標(biāo)識(shí)、字符集、校對(duì)規(guī)則和使用權(quán)限等信息。DDL選項(xiàng)卡中顯示了生成xs表的SQL語(yǔ)句。圖4-5選擇TableInspector圖4-6數(shù)據(jù)表的結(jié)構(gòu)信息任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表3.修改數(shù)據(jù)表在SCHEMAS欄中的cjgl數(shù)據(jù)庫(kù)的Tables下,右擊需要修改的xs數(shù)據(jù)表,在圖4-5所示的彈出式菜單中選擇AlterTable…,即可打開圖4-7所示的窗口,修改數(shù)據(jù)表的基本信息和結(jié)構(gòu)。在這里可以修改數(shù)據(jù)表的名稱,編輯數(shù)據(jù)表的列信息,包括編輯列名、編輯數(shù)據(jù)類型、新建列,右擊列通過(guò)彈出式菜單來(lái)操作列(如上下移動(dòng)、復(fù)制、剪切、粘貼、刪除列),也可以通過(guò)上下拖曳列來(lái)調(diào)整列的順序編輯完成后,單擊Apply按鈕,可以預(yù)覽當(dāng)前操作的SQL語(yǔ)句,單擊Apply按鈕,在彈出的對(duì)話框中直接單擊Finish按鈕,執(zhí)行相應(yīng)的SQL語(yǔ)句,即可完成對(duì)xs數(shù)據(jù)表的修改。圖4-7修改數(shù)據(jù)表的窗口任務(wù)1

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的表4.刪除數(shù)據(jù)表在SCHEMAS欄中的cjgl數(shù)據(jù)庫(kù)的Tables下,右擊需要?jiǎng)h除的數(shù)據(jù)表,在圖4-5所示的彈出式菜單中選擇DropTable…,打開圖4-8所示的刪除數(shù)據(jù)表對(duì)話框。如果選擇ReviewSQL,則會(huì)顯示刪除數(shù)據(jù)表操作對(duì)應(yīng)的SQL語(yǔ)句,如圖4-9所示。單擊Execute按鈕就可以刪除xs表。如果選擇DropNow,則會(huì)直接執(zhí)行刪除操作。圖4-8刪除數(shù)據(jù)表對(duì)話框圖4-9刪除數(shù)據(jù)表操作對(duì)應(yīng)的SQL語(yǔ)句表創(chuàng)建成功以后,需要先向表中插入數(shù)據(jù),及時(shí)修改錯(cuò)誤數(shù)據(jù),當(dāng)數(shù)據(jù)不再使用時(shí),要?jiǎng)h除數(shù)據(jù)。對(duì)表中數(shù)據(jù)的增、刪、改、查是數(shù)據(jù)庫(kù)中最常見的數(shù)據(jù)操作,在MySQL中可以分別使用INSERT語(yǔ)句、UPDATE語(yǔ)句和DELETE語(yǔ)句實(shí)現(xiàn)對(duì)表中記錄的插入、更新和刪除操作。本任務(wù)將介紹在MySQL中如何使用命令方式和圖形化工具操作數(shù)據(jù)表中的記錄。任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)4.2.1用命令方式向數(shù)據(jù)表中插入數(shù)據(jù)在MySQL中,可以使用INSERT語(yǔ)句向數(shù)據(jù)表中插入一條或多條記錄,也可以向數(shù)據(jù)表中的指定列插入數(shù)據(jù),還可以將一個(gè)表的查詢結(jié)果插入另一個(gè)表中。INSERT語(yǔ)句的基本語(yǔ)法格式如下。INSERTINTO表名[(<列名1>[,…,<列名n>])]VALUES(值1)[,…,(值n)];任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)1.向數(shù)據(jù)表中插入一條記錄向表中的所有列插入數(shù)據(jù)時(shí)有如下兩種方法。①指定全部列名。此時(shí)列名的順序可以不是表中列定義時(shí)的順序,但要保證值的順序與列的順序相同。②省略全部列名。此時(shí)需要為表的每一個(gè)列指定值,并且值的順序必須和數(shù)據(jù)表中列定義時(shí)的順序相同。【例題4.18】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中創(chuàng)建一個(gè)與學(xué)生表xs結(jié)構(gòu)相同的表student,向表student中插入如下的一行記錄。(001112,劉國(guó)梁,計(jì)算機(jī)應(yīng)用,男,1/30/20000:0:0,46)執(zhí)行如下SQL語(yǔ)句。任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)mysql>CREATETABLEstudentASSELECT*FROMxs;mysql>INSERTINTOstudent(姓名,學(xué)號(hào),專業(yè)名,性別,出生時(shí)間,總學(xué)分,備注)VALUES('劉國(guó)梁','001112','計(jì)算機(jī)應(yīng)用','男','2000-1-300:0:0',46,NULL);或mysql>INSERTINTOstudentVALUES('001112','劉國(guó)梁','計(jì)算機(jī)應(yīng)用','男','2000-1-300:0:0',46,NULL);查看插入結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>SELECT*FROMstudent;任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)2.向數(shù)據(jù)表中插入多條記錄當(dāng)使用單條INSERT語(yǔ)句插入多條記錄時(shí),只需將每條記錄用圓括號(hào)括起來(lái)即可,即一個(gè)列名對(duì)應(yīng)多個(gè)列值。這樣處理比使用多條INSERT語(yǔ)句更快?!纠}4.19】向?qū)W生成績(jī)管理數(shù)據(jù)庫(kù)cjgl的表student中插入如下的兩行記錄。(001113,劉國(guó)梁,計(jì)算機(jī)應(yīng)用,男,1/30/20000:0:0,46)(001114,馬龍,計(jì)算機(jī)應(yīng)用,男,6/12/20000:0:0,46)任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)執(zhí)行如下SQL語(yǔ)句。mysql>INSERTINTOstudentVALUES('001113','劉國(guó)梁','計(jì)算機(jī)應(yīng)用','男','2000-1-300:0:0',46,NULL),('001114','馬龍','計(jì)算機(jī)應(yīng)用','男','2000-6-120:0:0',46,NULL);查看插入結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>SELECT*FROMstudent;任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)3.向數(shù)據(jù)表中的指定列插入數(shù)據(jù)可以使用INSERT語(yǔ)句向表的指定列中插入數(shù)據(jù),其他列的值為表定義時(shí)的默認(rèn)值。【例題4.20】向?qū)W生成績(jī)管理數(shù)據(jù)庫(kù)cjgl的表student中插入如下記錄。(001115,樊振東,男,2/12/20010:0:0)執(zhí)行如下SQL語(yǔ)句。mysql>INSERTINTOstudent(學(xué)號(hào),姓名,性別,出生時(shí)間)VALUES('001115','樊振東','男','2001-2-120:0:0');查看插入結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>SELECT*FROMstudent;任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)4.向數(shù)據(jù)表中插入查詢得到的記錄集在某些業(yè)務(wù)中,需要把查詢到的多條記錄復(fù)制到另一個(gè)表中來(lái)滿足業(yè)務(wù)需求。在MySQL數(shù)據(jù)庫(kù)中,利用INSERT語(yǔ)句可以將SELECT語(yǔ)句的查詢結(jié)果插入另一個(gè)表中,這樣可以快速地從一個(gè)或多個(gè)表中向另一個(gè)表中插入滿足條件的多條記錄。其基本語(yǔ)法格式如下。INSERTINTO表名1(列名1)SELECT列名2FROM表名2WHERE<條件表達(dá)式>LIMIT0,n;此語(yǔ)句的功能為將從表2中查詢到的符合條件的記錄插入表1中,表2中原來(lái)的記錄保持不變。其中,“LIMIT0,n”用于指定查詢出多少條記錄,即從第幾條記錄開始返回。任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)【例題4.21】向?qū)W生成績(jī)管理數(shù)據(jù)庫(kù)cjgl的表student中插入學(xué)生表xs的所有記錄。執(zhí)行如下SQL語(yǔ)句。mysql>INSERTINTOstudentSELECT*FROMxs;查看插入結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>SELECT*FROMstudent;任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)4.2.2用命令方式更新數(shù)據(jù)表中的數(shù)據(jù)在MySQL中,使用UPDATE語(yǔ)句可以更新表中的所有記錄,也可以更新表中滿足更新條件的記錄,其基本語(yǔ)法格式如下。UPDATE表名SET<列名1>=值1[,<列名2>=值2,…][WHERE子句]任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)1.更新數(shù)據(jù)表中的所有記錄如果忽略WHERE子句,MySQL將更新表中所有的行。【例題4.22】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,將student表中的所有學(xué)生的總學(xué)分都增加10。執(zhí)行如下SQL語(yǔ)句。mysql>UPDATEstudentSET總學(xué)分=總學(xué)分+10;查看更新結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>SELECT*FROMstudent;任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)2.更新數(shù)據(jù)表中的特定記錄根據(jù)WHERE子句的條件確定要更新的記錄?!纠}4.23】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,將student表中學(xué)號(hào)為001221的同學(xué)的專業(yè)改為“軟件技術(shù)”。執(zhí)行如下SQL語(yǔ)句。mysql>UPDATEstudentSET專業(yè)='軟件技術(shù)'WHERE學(xué)號(hào)='001221';查看更新結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>SELECT*FROMstudent;任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)4.2.3用命令方式刪除數(shù)據(jù)表中的數(shù)據(jù)在MySQL中,可以使用DELETE語(yǔ)句或TRUNCATETABLE語(yǔ)句來(lái)刪除表數(shù)據(jù)。(1)使用DELETE語(yǔ)句刪除數(shù)據(jù)。使用DELETE語(yǔ)句可以刪除表的一行或者多行數(shù)據(jù),其語(yǔ)法格式如下。DELETEFROM表名[WHERE子句]其中,WHERE子句用于指定刪除條件。如果沒(méi)有WHERE子句,將刪除表中的所有記錄。任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)【例題4.24】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,刪除student表中學(xué)號(hào)為001112的記錄。刪除student表中所有網(wǎng)絡(luò)技術(shù)專業(yè)的學(xué)生記錄。執(zhí)行如下SQL語(yǔ)句。mysql>DELETEFROMstudentWHERE學(xué)號(hào)='001112';查看刪除結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>SELECT*FROMstudentWHERE學(xué)號(hào)='001112';執(zhí)行如下SQL語(yǔ)句mysql>DELETEFROMstudentWHERE專業(yè)名='網(wǎng)絡(luò)技術(shù)';查看刪除結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>SELECT*FROMstudent;任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)(2)使用TRUNCATETABLE語(yǔ)句刪除表使用TRUNCATETABLE語(yǔ)句可以刪除表中的所有數(shù)據(jù),其語(yǔ)法格式如下。TRUNCATE[TABLE]表名【例題4.25】在學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,刪除student表中的所有記錄。執(zhí)行如下SQL語(yǔ)句,查看刪除結(jié)果。mysql>DELETEFROMstudent;mysql>SELECT*FROMstudent;執(zhí)行如下SQL語(yǔ)句。mysql>TRUNCATETABLEstudent;查看表student是否存在,執(zhí)行如下SQL語(yǔ)句。mysql>SHOWTABLES;任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)(3)DETELE語(yǔ)句和TRUNCATE語(yǔ)句的區(qū)別①雖然兩者都能用于刪除表中的所有數(shù)據(jù),但TRUNCATE語(yǔ)句只能用于刪除表中的所有記錄,而DELETE語(yǔ)句可用于刪除滿足條件的部分記錄。②DELETE是DML類型的語(yǔ)句。使用DELETE語(yǔ)句時(shí),是逐行刪除記錄,每刪除一條記錄都會(huì)在日志中有相應(yīng)記錄,配合事件回滾可以找回?cái)?shù)據(jù)。TRUNCATE是DDL類型的語(yǔ)句。TRUNCATE語(yǔ)句在刪除表數(shù)據(jù)時(shí)是直接刪除原來(lái)的表,并重新創(chuàng)建一個(gè)同結(jié)構(gòu)的表,不會(huì)在日志中記錄刪除的內(nèi)容。因此,使用TRUNCATE語(yǔ)句刪除表數(shù)據(jù)后,原數(shù)據(jù)不可恢復(fù),且執(zhí)行刪除操作的速度比DELETE語(yǔ)句快。③使用TRUNCATE語(yǔ)句刪除表中的數(shù)據(jù)后,系統(tǒng)會(huì)重新設(shè)置自增字段的計(jì)數(shù)器,默認(rèn)初始值由1開始。而使用DELETE語(yǔ)句時(shí),自增字段的值為刪除時(shí)該字段的最大值加1。當(dāng)不需要某表時(shí),用DROP語(yǔ)句;當(dāng)要保留某表,但要?jiǎng)h除其中的所有記錄時(shí),用TRUNCATE語(yǔ)句;當(dāng)要?jiǎng)h除部分記錄時(shí),用DELETE語(yǔ)句。任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)4.2.4使用MySQLWorkbench圖形化工具管理數(shù)據(jù)表中的數(shù)據(jù)

打開MySQLWorkbench,在SCHEMAS欄中展開當(dāng)前默認(rèn)的cjgl數(shù)據(jù)庫(kù),展開Tables,右擊xs表,在圖4-5所示的彈出式菜單中選擇SelectRows–Limit1000,打開圖4-10所示的編輯數(shù)據(jù)表的界面,即可對(duì)xs表中的數(shù)據(jù)進(jìn)行編輯操作,其中,Edit欄中包含3個(gè)按鈕,分別為“修改”“插入”“刪除”按鈕。任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)圖4-10編輯數(shù)據(jù)表數(shù)據(jù)編輯完成后單擊Apply按鈕,可以預(yù)覽當(dāng)前操作的SQL語(yǔ)句,如圖4-11所示。在下一個(gè)彈出的對(duì)話框中直接單擊Finish按鈕,即可完成對(duì)數(shù)據(jù)表xs中數(shù)據(jù)的修改。任務(wù)2

操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)圖4-11當(dāng)前操作的SQL語(yǔ)句索引是MySQL中十分重要的數(shù)據(jù)庫(kù)對(duì)象,常用于實(shí)現(xiàn)數(shù)據(jù)的快速查詢,是數(shù)據(jù)庫(kù)性能調(diào)優(yōu)技術(shù)的基礎(chǔ)。4.3.1認(rèn)識(shí)索引1.索引的概念在MySQL中,訪問(wèn)數(shù)據(jù)表的行數(shù)據(jù)有如下兩種方式。①順序訪問(wèn),即在表中從頭到尾逐行掃描,直到找到符合條件的所有行。順序訪問(wèn)的實(shí)現(xiàn)比較簡(jiǎn)單,但是當(dāng)表中有大量數(shù)據(jù)的時(shí)候,效率非常低。②索引訪問(wèn),即通過(guò)遍歷索引來(lái)直接訪問(wèn)表中的行。使用這種方式的前提是為表創(chuàng)建一個(gè)索引。所謂索引就是根據(jù)數(shù)據(jù)表中的一列或若干列,按照一定順序創(chuàng)建的列值與記錄行之間的對(duì)應(yīng)關(guān)系表,類似于書籍的目錄,可以快速定位需要的信息,而無(wú)須從頭到尾查閱整本書。索引存儲(chǔ)了指定列數(shù)據(jù)值的指針,在列上創(chuàng)建了索引之后,查找數(shù)據(jù)時(shí)可以直接根據(jù)列的索引找到對(duì)應(yīng)記錄行的位置,從而快速地查找到數(shù)據(jù),提高了數(shù)據(jù)庫(kù)的查詢性能。任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引2.索引的類型索引是在存儲(chǔ)引擎中實(shí)現(xiàn)的,每種存儲(chǔ)引擎的索引不一定完全相同,并且每種存儲(chǔ)引擎也不一定支持所有索引類型。按照索引結(jié)構(gòu)的特點(diǎn),MySQL中支持的索引主要分為B-Tree索引和Hash索引兩種類型。MyISAM和InnoDB存儲(chǔ)引擎只支持B-Tree索引。按照索引值的特點(diǎn),可以將索引分為以下幾類。(1)普通索引普通索引是MySQL中的基本索引類型,是由KEY或INDEX定義的索引,允許在定義索引的列中插入重復(fù)值和空值。它可以創(chuàng)建在任何數(shù)據(jù)類型的列上。任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引(2)唯一索引唯一索引是由UNIQUE定義的索引,索引列的值必須是唯一的,但允許有空值。如果是組合索引,則列值的組合必須是唯一的。主鍵索引是一種特殊的唯一索引。唯一索引要求所有數(shù)據(jù)行中任意兩行的被索引列或索引列組合中不能存在重復(fù)值,包括不能有兩個(gè)NULL。因此,創(chuàng)建唯一索引的列最好設(shè)置為NOTNULL。對(duì)于已創(chuàng)建了唯一索引的數(shù)據(jù)表,當(dāng)向表中添加記錄或修改原有記錄時(shí),系統(tǒng)將檢查添加的記錄或修改后的記錄是否滿足唯一性的要求,如果不滿足這個(gè)條件,系統(tǒng)會(huì)給出信息,提示操作失敗。任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引(3)單列索引和組合索引單列索引指只包含單個(gè)列的索引。組合索引是在數(shù)據(jù)表的多個(gè)列的組合上創(chuàng)建的索引,只有在查詢條件中使用了這些列的左邊列時(shí),索引才會(huì)被使用。使用組合索引時(shí)遵循最左前綴集合原則。(4)全文索引全文索引是由FULLTEXT定義的索引,是指在定義索引的列上支持值的全文查找。它用于查找文本中的關(guān)鍵詞,而不是直接比較索引中的值。它只能創(chuàng)建在CHAR、VARCHAR或TEXT類型的列上。FULLTEXT用于搜索長(zhǎng)文本時(shí)效果最好。任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引(5)空間索引空間索引是由SPATIAL定義的索引,只能在空間數(shù)據(jù)類型的列上創(chuàng)建,MySQL的空間數(shù)據(jù)類型有GEOMETRY、POINT、LINESTRING、POLYGON等4種。任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引3.索引的優(yōu)缺點(diǎn)在數(shù)據(jù)庫(kù)中創(chuàng)建索引主要有以下作用。①可以大大加快數(shù)據(jù)查詢的速度。②在使用ORDERBY、GROUPBY子句進(jìn)行數(shù)據(jù)查詢時(shí),利用索引可以顯著減少排序和分組的時(shí)間。③通過(guò)創(chuàng)建唯一索引可以保證數(shù)據(jù)表中每一行數(shù)據(jù)的唯一性。④實(shí)現(xiàn)表與表之間的參照完整性時(shí),可以加速表與表之間的連接。任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引索引使查詢速度提高也是有代價(jià)的,主要表現(xiàn)在以下幾個(gè)方面。①索引本身需要占用磁盤空間。②創(chuàng)建和維護(hù)索引需要耗費(fèi)時(shí)間,并且隨著數(shù)據(jù)量的增加耗費(fèi)的時(shí)間也會(huì)增加。③當(dāng)對(duì)表中的數(shù)據(jù)進(jìn)行增、刪、改操作時(shí),數(shù)據(jù)庫(kù)要執(zhí)行額外的操作來(lái)維護(hù)索引。例如,向有索引的表中插入記錄時(shí),數(shù)據(jù)庫(kù)系統(tǒng)會(huì)按照索引進(jìn)行排序,這樣就降低了插入記錄的速度,插入大量記錄時(shí)對(duì)速度的影響會(huì)更加明顯。所以,設(shè)計(jì)索引時(shí)需要綜合考慮索引的優(yōu)點(diǎn)和缺點(diǎn),科學(xué)地設(shè)計(jì),才能使數(shù)據(jù)庫(kù)整體性能提高。任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引4.索引的創(chuàng)建原則在實(shí)際操作過(guò)程中,創(chuàng)建索引時(shí)需要考慮以下原則。①索引并非越多越好。②不要在數(shù)據(jù)量小的表中創(chuàng)建索引。③避免對(duì)經(jīng)常更新的表創(chuàng)建過(guò)多的索引。④盡量使用占用存儲(chǔ)空間小的、具有簡(jiǎn)單數(shù)據(jù)類型的列創(chuàng)建索引。⑤為常作為查詢條件的列創(chuàng)建索引。⑥為經(jīng)常需要進(jìn)行排序、分組和連接操作的列創(chuàng)建索引。⑦不要在包含NULL值的列上創(chuàng)建索引。⑧在經(jīng)常更新修改的列上不要?jiǎng)?chuàng)建索引。⑨選用字符串作為索引時(shí),應(yīng)盡可能指定前綴長(zhǎng)度。任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引4.3.2用命令方式創(chuàng)建索引MySQL支持多種方法來(lái)創(chuàng)建索引,可以在創(chuàng)建表的同時(shí)通過(guò)指定索引列來(lái)創(chuàng)建索引,也可以在已有表上使用CREATEINDEX語(yǔ)句或ALTERTABLE語(yǔ)句創(chuàng)建索引,使用CREATEINDEX語(yǔ)句一次只能創(chuàng)建一個(gè)索引,使用ALTERTABLE語(yǔ)句一次可以創(chuàng)建多個(gè)索引。1.查看索引可以使用SHOWINDEX語(yǔ)句查看指定數(shù)據(jù)庫(kù)的表中已經(jīng)存在的索引,其語(yǔ)法格式如下。SHOWINDEXFROM表名[FROM<數(shù)據(jù)庫(kù)名>]【例題4.26】查看成績(jī)管理數(shù)據(jù)庫(kù)cjgl的學(xué)生表xs中已定義的索引。執(zhí)行如下SQL語(yǔ)句。mysql>SHOWINDEXFROMxsFROMcjgl;任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引2.使用CREATEINDEX語(yǔ)句在已有表上創(chuàng)建索引可以使用CREATEINDEX語(yǔ)句為指定的表按照指定的列創(chuàng)建索引,其語(yǔ)法格式如下。CREATE[UNIQUE|FULLTEXT|SPATIAL]INDEX|KEY[索引名]

ON表名(列名[(length)][ASC|DESC][,…]);任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引【例題4.27】在成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,為學(xué)生表xs的“姓名”列創(chuàng)建名為idx_xs_xm的普通索引。添加索引之前,使用SHOWINDEX語(yǔ)句查看指定表中已創(chuàng)建的索引。執(zhí)行如下SQL語(yǔ)句。mysql>CREATEINDEXidx_xs_xmONxs(姓名);使用SHOWCREATETABLE語(yǔ)句查看表結(jié)構(gòu),檢查索引是否創(chuàng)建成功。mysql>SHOWCREATETABLExs\G使用EXPLAIN語(yǔ)句查看索引是否正在使用。mysql>EXPLAINSELECT*FROMxsWHERE姓名='王元'\G任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引【例題4.28】在成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,在成績(jī)表cj的“學(xué)號(hào)”列和“課程號(hào)”列上創(chuàng)建組合索引。執(zhí)行如下SQL語(yǔ)句。mysql>CREATEINDEXidx_cjONcj(學(xué)號(hào),課程號(hào));查看創(chuàng)建結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>SHOWCREATETABLEcj\G任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引3.在創(chuàng)建表時(shí)創(chuàng)建索引在使用CREATETABLE語(yǔ)句創(chuàng)建索引時(shí),可以采用直接在某個(gè)列定義后面添加INDEX的方式。其語(yǔ)法格式如下。CREATETABLE表名

(列名數(shù)據(jù)類型[完整性約束條件],

UNIQUE|FULLTEXT|SPATIAL]INDEX|KEY索引名(列名[(length)][ASC|DESC]),)任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引【例題4.29】在成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,在課程表kc的“課程名”列上創(chuàng)建唯一索引idx_kc。執(zhí)行如下SQL語(yǔ)句。mysql>CREATETABLEkc

(課程號(hào)CHAR(3)NOTNULLPRIMARYKEY,

課程名CHAR(16)NOTNULL,

開課學(xué)期TINYINTNOTNULLCHECK(開課學(xué)期>=1AND開課學(xué)期<=6),

學(xué)時(shí)TINYINTNOTNULL,

學(xué)分TINYINTNULL,

UNIQUEINDEXidx_kc(課程名));查看創(chuàng)建結(jié)果,執(zhí)行如下SQL語(yǔ)句。mysql>SHOWCREATETABLEkc\G任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引4.3.3用命令方式管理索引1.修改索引在MySQL中沒(méi)有修改索引的語(yǔ)句,可以通過(guò)刪除原索引,再根據(jù)需要?jiǎng)?chuàng)建一個(gè)同名的索引來(lái)實(shí)現(xiàn)修改索引的操作。2.刪除索引不再需要的索引會(huì)降低表的更新速度,影響數(shù)據(jù)庫(kù)的性能,可以使用DROPINDEX或ALTERTABLE語(yǔ)句將其刪除。DROPINDEX語(yǔ)句在內(nèi)部被映射到ALTERTABLE語(yǔ)句中,其語(yǔ)法格式如下。DROPINDEX索引名ON表名任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引【例題4.30】在成績(jī)管理數(shù)據(jù)庫(kù)cjgl中,刪除xs表的索引idx_xs_xm。執(zhí)行如下SQL語(yǔ)句。mysql>SHOWINDEXFROMxs\Gmysql>DROPINDEXidx_xs_xmONxs;查看索引是否刪除,執(zhí)行如下SQL語(yǔ)句。mysql>SHOWINDEXFROMxs\G任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引4.3.4使用MySQLWorkbench圖形化工具創(chuàng)建和管理索引1.創(chuàng)建索引在MySQLWorkbench中,打開修改數(shù)據(jù)表的窗口,單擊下方的Indexes選項(xiàng)卡,打開圖4-12所示的創(chuàng)建和管理索引對(duì)話框任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引圖4-12創(chuàng)建和管理索引對(duì)話框在IndexName列中輸入索引名idx_xs_xm,從Type下拉列表中選擇UNIQUE,IndexColumns欄會(huì)自動(dòng)顯示學(xué)生表xs中的所有列名,勾選“姓名”復(fù)選框,在IndexOptions欄中的StorageType下拉列表中選擇BTREE,其他參數(shù)采用默認(rèn)值,如圖4-13所示。任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引圖4-13相關(guān)參數(shù)設(shè)置設(shè)置完成后,單擊Apply按鈕,出現(xiàn)圖4-14所示的應(yīng)用腳本對(duì)話框。單擊Apply按鈕,進(jìn)入完成對(duì)話框,單擊Finish按鈕,即可完成在cjgl數(shù)據(jù)庫(kù)的學(xué)生表xs的“姓名”列上創(chuàng)建唯一索引idx_xs_xm。在MySQLWorkbench中創(chuàng)建其他索引的操作步驟基本相同。任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引圖4-14應(yīng)用腳本對(duì)話框2.管理索引(1)修改索引利用MySQLWorkbench修改索引,可以修改索引的名字、類型、索引引用列和索引參數(shù)等,操作方法與創(chuàng)建索引基本相同。(2)刪除索引在圖4-13所示的界面中,右擊要?jiǎng)h除的索引idx_xs_xm,在彈出式菜單中選擇DeleteSelected,如圖4-15所示。任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引圖4-15選擇DeleteSelected單擊Apply按鈕,出現(xiàn)圖4-16所示的刪除索引的應(yīng)用腳本對(duì)話框。再單擊Apply按鈕,進(jìn)入完成對(duì)話框。單擊Finish按鈕,即可完成索引的刪除。任務(wù)3操作學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的索引圖4-16刪除索引的應(yīng)用腳本對(duì)話框4.4.1認(rèn)識(shí)數(shù)據(jù)完整性數(shù)據(jù)完整性是指數(shù)據(jù)庫(kù)中的數(shù)據(jù)在邏輯上的一致性和準(zhǔn)確性。使用完整性約束的目的是防止不合法的數(shù)據(jù)進(jìn)入基表中。數(shù)據(jù)庫(kù)的完整性是通過(guò)數(shù)據(jù)庫(kù)內(nèi)容的完整性約束來(lái)實(shí)現(xiàn)的,用來(lái)表明數(shù)據(jù)庫(kù)的存在狀態(tài)是否合理。在MySQL中,數(shù)據(jù)完整性包括實(shí)體完整性、域完整性和參照完整性。每一種數(shù)據(jù)完整性,都可以由不同的約束類型來(lái)實(shí)現(xiàn)。對(duì)于數(shù)據(jù)庫(kù)的每個(gè)操作都要判定其是否符合完整性約束,只有當(dāng)全部判定為符合時(shí)才可以執(zhí)行。當(dāng)選擇使用哪種方法維護(hù)數(shù)據(jù)完整性時(shí),需要考慮系統(tǒng)開銷和功能。一般來(lái)說(shuō),就系統(tǒng)開銷而言,使用約束的系統(tǒng)開銷最低,其次為使用默認(rèn)值和規(guī)則的系統(tǒng),開銷最高的是使用觸發(fā)器和存儲(chǔ)過(guò)程的系統(tǒng);而就功能而言,功能最強(qiáng)的是觸發(fā)器和存儲(chǔ)過(guò)程,其次為默認(rèn)值和規(guī)則,最后是約束。因此,使用何種方法,要看具體情況。對(duì)于一些基本的完整性邏輯,盡量使用約束或規(guī)則,如對(duì)字段值的合法性限定等,只有在需要復(fù)雜的業(yè)務(wù)規(guī)則時(shí),才使用觸發(fā)器和存儲(chǔ)過(guò)程。任務(wù)4實(shí)現(xiàn)學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)完整性4.4.2用命令方式實(shí)現(xiàn)數(shù)據(jù)完整性1.實(shí)施實(shí)體完整性實(shí)體完整性又稱行完整性,它要求表中的每一行必須是唯一的??梢酝ㄟ^(guò)主鍵約束、唯一約束、索引或標(biāo)識(shí)屬性來(lái)實(shí)現(xiàn)實(shí)體完整性。2.實(shí)施域完整性域完整性又稱列完整性,用于判斷某一個(gè)列的輸入是否有效,以保證數(shù)據(jù)庫(kù)中的數(shù)據(jù)取值的合理性。域完整性的實(shí)現(xiàn)方法有:通過(guò)定義列的數(shù)據(jù)類型來(lái)實(shí)現(xiàn);通過(guò)定義CHECK約束、默認(rèn)值和非空屬性等來(lái)限定數(shù)據(jù)的格式及取值范圍,以確保有效的數(shù)據(jù)輸入列中。任務(wù)4實(shí)現(xiàn)學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)完整性3.實(shí)施參照完整性(1)參照完整性的概念參照完整性又稱引用完整性,要求對(duì)兩個(gè)關(guān)聯(lián)的表進(jìn)行數(shù)據(jù)插入和刪除操作時(shí),它們之間的數(shù)據(jù)是一致的。這兩個(gè)表中一個(gè)稱為主表,一個(gè)稱為從表。所謂主表也稱父表或引用表(ReferencedTable),即對(duì)于兩個(gè)具有關(guān)聯(lián)關(guān)系的表而言,關(guān)聯(lián)字段中主鍵所在的那個(gè)表,而關(guān)聯(lián)字段中外鍵所在的那個(gè)表稱為從表也稱子表或被引用表。例如對(duì)于cjgl數(shù)據(jù)庫(kù)中的學(xué)生表和成績(jī)表而言,學(xué)號(hào)是學(xué)生表的主鍵、成績(jī)表的外鍵,所以學(xué)生表是主表,成績(jī)表是從表。主表和從表間的參照完整性是通過(guò)定義主鍵和外鍵之間的對(duì)應(yīng)關(guān)系來(lái)實(shí)現(xiàn)的。任務(wù)4實(shí)現(xiàn)學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)完整性外鍵用來(lái)建立主表與從表的關(guān)聯(lián)關(guān)系,為兩個(gè)表的數(shù)據(jù)建立連接。它可以由一列或多列組成。外鍵可以不是從表的主鍵,但必須關(guān)聯(lián)主表的主鍵,且關(guān)聯(lián)字段的個(gè)數(shù)必須相同、數(shù)據(jù)類型必須匹配,否則系統(tǒng)會(huì)報(bào)錯(cuò)。外鍵可以為空值,若不為空值,則每一個(gè)外鍵值必須等于主表中主鍵的某個(gè)值。從表定義外鍵后,不允許刪除主表中具有關(guān)聯(lián)關(guān)系的行,從而保持兩個(gè)表數(shù)據(jù)的一致性、完整性。一個(gè)表可以有一個(gè)或多個(gè)外鍵。例如,對(duì)于cjgl數(shù)據(jù)庫(kù)中的課程表和成績(jī)表來(lái)說(shuō),將課程號(hào)定義為課程表的主鍵、成績(jī)表的外鍵,從而建立主表和從表之間的聯(lián)系,實(shí)現(xiàn)了參照完整性。此時(shí),成績(jī)表有學(xué)號(hào)和課程號(hào)兩個(gè)外鍵。任務(wù)4實(shí)現(xiàn)學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)完整性(2)實(shí)現(xiàn)參照完整性的方法可通過(guò)創(chuàng)建外鍵約束的方法來(lái)實(shí)物表的參照完整性。①創(chuàng)建表時(shí)定義外鍵約束。在CREATETABLE語(yǔ)句中,通過(guò)FOREIGNKEY關(guān)鍵字來(lái)指定外鍵,其語(yǔ)法格式如下。CREATETABLE表名(外鍵列名數(shù)據(jù)類型[FOREIGNKEY]REFERENCES主表名(主鍵列名),…);或[CONSTRAINT外鍵約束名]FOREIGNKEY(外鍵列名)REFERENCES主表名(主鍵列名)任務(wù)4實(shí)現(xiàn)學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中表的數(shù)據(jù)完整性【例題4.31】在成績(jī)管理數(shù)據(jù)庫(kù)cjgl中創(chuàng)建學(xué)生表xs和成績(jī)表cj,同時(shí)實(shí)現(xiàn)兩表的參照完整性在定義外鍵前必須先創(chuàng)建主表并定義主表的主鍵。主表為學(xué)生表xs,定義學(xué)號(hào)為主鍵。執(zhí)行如下SQL語(yǔ)句。mysql>CREATETABLExs('學(xué)號(hào)'CHAR(6)NOTNULLPRIMARYKEY,'姓名'CHAR(8)NOTNULL,'專業(yè)名'CHAR(10)NULL,'性別'ENUM('男','女')NOTNULLDEFAULT'男'CHECK(性別='男'OR性別='女'),'

溫馨提示

  • 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)論