《數(shù)據(jù)庫系統(tǒng)與應(yīng)用技術(shù)》習(xí)題及答案匯 第1-10章 數(shù)據(jù)庫概述 -數(shù)據(jù)庫應(yīng)用案例_第1頁
《數(shù)據(jù)庫系統(tǒng)與應(yīng)用技術(shù)》習(xí)題及答案匯 第1-10章 數(shù)據(jù)庫概述 -數(shù)據(jù)庫應(yīng)用案例_第2頁
《數(shù)據(jù)庫系統(tǒng)與應(yīng)用技術(shù)》習(xí)題及答案匯 第1-10章 數(shù)據(jù)庫概述 -數(shù)據(jù)庫應(yīng)用案例_第3頁
《數(shù)據(jù)庫系統(tǒng)與應(yīng)用技術(shù)》習(xí)題及答案匯 第1-10章 數(shù)據(jù)庫概述 -數(shù)據(jù)庫應(yīng)用案例_第4頁
《數(shù)據(jù)庫系統(tǒng)與應(yīng)用技術(shù)》習(xí)題及答案匯 第1-10章 數(shù)據(jù)庫概述 -數(shù)據(jù)庫應(yīng)用案例_第5頁
已閱讀5頁,還剩62頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章數(shù)據(jù)庫概述PAGE31.9本章習(xí)題一、單選題1.第一代電子計算機問世的時間是()。A.1937年 B.1946年C.1958年 D.1995年答案:B.1946年2.?dāng)?shù)據(jù)庫中,數(shù)據(jù)的物理獨立性是指()。A.數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)的相互獨立B.用戶程序與DBMS的相互獨立C.用戶的應(yīng)用程序與存儲在磁盤上的數(shù)據(jù)庫中的數(shù)據(jù)是相互獨立的D.應(yīng)用程序與數(shù)據(jù)庫中數(shù)據(jù)的邏輯結(jié)構(gòu)相互獨立答案:C.用戶的應(yīng)用程序與存儲在磁盤上的數(shù)據(jù)庫中的數(shù)據(jù)是相互獨立的3.?dāng)?shù)據(jù)庫系統(tǒng)通常采用三級模式結(jié)構(gòu):外模式、模式和內(nèi)模式,這三級模式分別對應(yīng)數(shù)據(jù)庫的()。A.基本表、存儲文件和視圖B.視圖、基本表和存儲文件C.基本表、視圖和存儲文件D.視圖、存儲文件和基本表答案:B.視圖、基本表和存儲文件4.在數(shù)據(jù)庫系統(tǒng)中,一般由DBA使用DBMS提供的授權(quán)功能為不同用戶授權(quán),目的是保證數(shù)據(jù)庫的()。A.正確性 B.安全性C.一致性 D.完整性答案:B.安全性5.在數(shù)據(jù)庫系統(tǒng)中,視圖是一個()。A.真實存在的表,并保存了待查詢的數(shù)據(jù) B.真實存在的表,只有部分?jǐn)?shù)據(jù)來源于基本表 C.虛擬表,查詢時只能從一個基本表中導(dǎo)出 D.虛擬表,查詢時可以從一個或者多個基本表或視圖中導(dǎo)出答案:D.虛擬表,查詢時可以從一個或者多個基本表或視圖中導(dǎo)出6.采用三級結(jié)構(gòu)/兩級映像的數(shù)據(jù)庫體系結(jié)構(gòu),如果對數(shù)據(jù)庫的一張表創(chuàng)建聚簇索引,改變的是數(shù)據(jù)庫的()。A.用戶模式 B.外模式C.模式 D.內(nèi)模式答案:D.內(nèi)模式7.在數(shù)據(jù)庫系統(tǒng)中,()用于對數(shù)據(jù)庫中全部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征進(jìn)行描述。A.外模式 B.模式C.內(nèi)模式 D.存儲模式答案:B.模式8.在數(shù)據(jù)庫系統(tǒng)中,外模式、模式和內(nèi)模式分別描述()層次上的數(shù)據(jù)特性。A.概念視圖、用戶視圖和內(nèi)部視圖 B.用戶視圖、內(nèi)部視圖和概念視圖 C.概念視圖、內(nèi)部視圖和用戶視圖 D.用戶視圖、概念視圖和內(nèi)部視圖答案:D.用戶視圖、概念視圖和內(nèi)部視圖9.E-R模型向關(guān)系模型轉(zhuǎn)換時,三個實體之間多對多的聯(lián)系m:n:p應(yīng)當(dāng)轉(zhuǎn)換為一個獨立的關(guān)系模式,且該關(guān)系模式的主鍵由()組成。A.多對多聯(lián)系的屬性B.三個實體的主鍵C.隨意一個實體的主鍵D.隨意兩個實體的主鍵答案:B.三個實體的主鍵10.在關(guān)系數(shù)據(jù)庫設(shè)計中用()來表示實體及實體之間的聯(lián)系。A.樹結(jié)構(gòu) B.封裝結(jié)構(gòu)C.二維表結(jié)構(gòu) D.圖結(jié)構(gòu)答案:C.二維表結(jié)構(gòu)11.關(guān)系代數(shù)中的連接操作是由()操作組合而成的。A.選擇和投影 B.選擇和笛卡兒積C.投影、選擇、笛卡兒積 D.投影和笛卡兒積答案:B.選擇和笛卡兒積12.?dāng)?shù)據(jù)庫管理系統(tǒng)的簡稱是()。A.DBMS B.DBC.DBS D.DBA答案:A.DBMS13.下列哪個不是關(guān)系數(shù)據(jù)庫的基本特征()。A.數(shù)據(jù)以表格形式存儲 B.數(shù)據(jù)之間存在關(guān)聯(lián)關(guān)系C.支持集合操作 D.支持面向?qū)ο缶幊檀鸢福篋.支持面向?qū)ο缶幊?4.在關(guān)系數(shù)據(jù)庫中實現(xiàn)表與表之間的聯(lián)系是通過()實現(xiàn)的。A.實體完整性規(guī)則 B.參照完整性規(guī)則 C.用戶自定義的完整性規(guī)則 D.值域答案:B.參照完整性規(guī)則15.下列哪個選項不是數(shù)據(jù)庫管理系統(tǒng)(DBMS)的功能()。A.數(shù)據(jù)定義 B.數(shù)據(jù)操作C.數(shù)據(jù)控制 D.數(shù)據(jù)轉(zhuǎn)換 答案:B.數(shù)據(jù)操作16.關(guān)系型數(shù)據(jù)庫是()的集合。A.表 B.記錄C.碼 D.屬性答案:A.表17.表是()的集合。A.約束 B.記錄 C.碼 D.索引答案:B.記錄18.屬性指的是表中的一個()。A.記錄 B.列 C.元組 D.碼答案:B.列19.對于兩個關(guān)系E和F,()的運算結(jié)果的任一元組,同時屬于E和F。A.E×FB.E∪FC.E∩FD.E-F答案:C.E∩F20.在一個關(guān)系表中,表的行代表()。A.關(guān)系 B.外碼C.元組 D.屬性答案:C.元組21.關(guān)系的完整性約束不包含()。A.實體完整性B.參照完整性C.屬性完整性D.用戶定義完整性答案:D.用戶定義完整性22.在一個關(guān)系型數(shù)據(jù)庫中,參照完整性約束可以通過()來實現(xiàn)。A.主碼B.候選碼C.外碼D.屬性答案:C.外碼23.關(guān)系型數(shù)據(jù)庫中常用的查詢語言不包括()。A.域關(guān)系演算B.元組關(guān)系演算C.導(dǎo)航式語言D.關(guān)系代數(shù)答案:C.導(dǎo)航式語言24.E-R圖向關(guān)系模式轉(zhuǎn)換時,實體標(biāo)識符轉(zhuǎn)換為關(guān)系的()。A.碼B.元組C.記錄D.約束答案:A.碼25.一個取值域是原子的,是指該域的元素是()單元。A.不同的B.不可分的C.常量D.不可見的答案:B.不可分的二、填空題1.?dāng)?shù)據(jù)庫的三級模式一般是指、、,兩級映像是指、。答案:外模式、模式、內(nèi)模式,模式/內(nèi)模式的映像、外模式/模式的映像2.?dāng)?shù)據(jù)庫系統(tǒng)設(shè)計員可通過外模式、概念模式和來描述視圖層、邏輯層、物理層上的數(shù)據(jù)特性。答案:內(nèi)模式3.?dāng)?shù)據(jù)庫的視圖、基本表和存儲文件的結(jié)構(gòu)分別對應(yīng)、概念模式和內(nèi)模式。答案:外模式4.?dāng)?shù)據(jù)的物理獨立性和數(shù)據(jù)的邏輯獨立性可以通過修改和外模式/概念模式的映像來保證的。答案:概念模式/內(nèi)模式5.E-R圖由實體、屬性和三個要素構(gòu)成。答案:聯(lián)系6.?dāng)?shù)據(jù)模型的三要素是、、。答案:數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作、數(shù)據(jù)完成性約束7.E-R圖中,實體之間的聯(lián)系一般有一對一、一對多和。答案:多對多8.關(guān)系的完整性共分為3類,分別是實體完整性、參照完整性和。答案:用戶自定義完整性9.關(guān)系運算的運算對象是。答案:關(guān)系三、簡答題1.請簡述數(shù)據(jù)庫的三級模式及兩級映像?答案:三級模式是外模式、模式、內(nèi)模式,兩級映像是模式/內(nèi)模式的映像、外模式/模式的映像關(guān)系的完整性約束有哪些?答案:關(guān)系的完整性約束有:實體完整性,參考完整性、用戶自定義完整性數(shù)據(jù)模型的三要素有哪些?答案:數(shù)據(jù)模型的三要素有:數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)操作,數(shù)據(jù)完整性約束E-R圖中實體之間的聯(lián)系有哪些?答案:有一對一,一對多和多對多2.7本章習(xí)題一、單選題1.?dāng)?shù)據(jù)庫管理系統(tǒng)中用于定義和描述數(shù)據(jù)庫邏輯結(jié)構(gòu)的語言稱為()。A.數(shù)據(jù)定義語言 B.數(shù)據(jù)查詢語言C.數(shù)據(jù)操縱語言 D.數(shù)據(jù)結(jié)構(gòu)語言答案:A.數(shù)據(jù)定義語言2.下列選項中,不是SQL組成部分的是()。A.DCL B.DDLC.DML D.SSL答案:D.SSL3.SQL集數(shù)據(jù)查詢、數(shù)據(jù)操縱、數(shù)據(jù)定義和數(shù)據(jù)控制功能于一體,其中,CREATE、DROP、ALTER語句是實現(xiàn)哪種功能()。A.數(shù)據(jù)查詢 B.數(shù)據(jù)操縱C.數(shù)據(jù)定義 D.數(shù)據(jù)控制答案:B.數(shù)據(jù)操縱4.SQL中INT類型占用幾個字節(jié)()。A.1 B.2C.4 D.8答案:C.45.VARCHAR的最大長度是()。A.32 B.128C.255 D.65535答案:D.655356.采用三級結(jié)構(gòu)/兩級映像的數(shù)據(jù)庫體系結(jié)構(gòu),如果對數(shù)據(jù)庫的一張表創(chuàng)建索引,改變的是數(shù)據(jù)庫的(D)。A.用戶模式 B.外模式C.模式 D.內(nèi)模式答案:D.內(nèi)模式7.SQL語言支持關(guān)系數(shù)據(jù)庫的三級模式結(jié)構(gòu),其中視圖對應(yīng)()。A.外模式 B.模式C.內(nèi)模式 D.存儲模式答案:A.外模式8.SQL語言支持關(guān)系數(shù)據(jù)庫的三級模式結(jié)構(gòu),其中基本表對應(yīng)()。A.外模式 B.模式C.內(nèi)模式 D.存儲模式答案:B.模式9.SQL語言支持關(guān)系數(shù)據(jù)庫的三級模式結(jié)構(gòu),其中存儲文件對應(yīng)()。A.外模式 B.模式C.內(nèi)模式 D.存儲模式答案:A.外模式10.SELECT1+'10'的結(jié)果是()。A.1 B.11C.101 D.110答案:B.1111.SELECT10+'10a'的結(jié)果是()。A.10 B.20C.1010a D.20a答案:B.2012.SELECT10+'a'的結(jié)果是()。A.10 B.20C.10a D.a答案:A.1013.SELECTCONCAT(10+'a')的結(jié)果是()。A.10 B.20C.10a D.a答案:A.1014.SELECT'a'+'b'的結(jié)果是()。A.0 B.aC.ab D.b答案:A.015.SELECTCONCAT('a'+'b')的結(jié)果是()。A.0 B.aC.ab D.b 答案:C.ab二、填空題1.SQL語言支持關(guān)系數(shù)據(jù)庫的三級模式結(jié)構(gòu),其中視圖(view)對應(yīng),基本表(basetable)對應(yīng),存儲文件(storedfile)對應(yīng)。答案:外模式、模式、內(nèi)模式SQL的全稱是。答案:StucturedQueryLanguage3.?dāng)?shù)據(jù)定義子語言用來定義數(shù)據(jù)庫模式,簡記為。答案:DDL數(shù)據(jù)操縱子語言用來表示用戶對數(shù)據(jù)庫的操作請求,簡記為。答案:DML三、簡答題1.SQL的主要功能有哪些?答案:數(shù)據(jù)查詢,數(shù)據(jù)定義,數(shù)據(jù)操縱,數(shù)據(jù)控制。數(shù)據(jù)操縱的主要作用是什么?答案:用于對數(shù)據(jù)庫中數(shù)據(jù)的查詢、添加、刪除、修改等操作。3.?dāng)?shù)據(jù)定義的主要作用是什么?答案:用來定義數(shù)據(jù)庫模式、表、視圖、索引等。3.6本章習(xí)題一、單項選擇題1.MySQL數(shù)據(jù)庫中,通常使用()可以將已存在的數(shù)據(jù)庫指定為當(dāng)前數(shù)據(jù)庫。A.USES B.USEDC.USE D.USING答案:C.USE2.創(chuàng)建數(shù)據(jù)庫時,()確保數(shù)據(jù)庫不存在時才執(zhí)行創(chuàng)建的語句。A.IFEXISTSB.IFNOTEXISTSC.IFEXISTD.IFNOTEXIST答案:B.IFNOTEXISTS3.可以用于修改數(shù)據(jù)庫的語句是()。A.ALTERDATABASEB.CHANGEDATABASEC.CREATEDATABASED.MODIFYDATABASE答案:A.ALTERDATABASE4.創(chuàng)建數(shù)據(jù)表時,不允許一個列為空使用的關(guān)鍵字是()。A.NONULLB.NOBLANKC.NOTNULLD.NOTBLANK答案:C.NOTNULL5.只修改列的數(shù)據(jù)類型所使用的語句正確的是()。A.ALTERTABLE...UPDATECOLUMN B.ALTERTABLE...ALTERCOLUMN C.ALTERTABLE...CHANGECOLUMN D.ALTERTABLE...MODIFYCOLUMN答案:D.ALTERTABLE...MODIFYCOLUMN6.唯一性約束與主鍵約束的區(qū)別是()。A.唯一性約束的字段值可以不唯一 B.唯一性約束的字段不可以為空值 C.唯一性約束的字段可以為空值 D.唯一性約束的字段的值不可以有重復(fù)值答案:C.唯一性約束的字段可以為空值 7.使字段的輸入值小于50的約束是()。A.UNIQUE B.CHECKC.PRIMARYKEY D.FOREIGNKEY答案:B.CHECK8.建立索引的主要目的是()。A.節(jié)省存儲空間 B.提高安全性 C.提高數(shù)據(jù)更新速度 D.提高查詢速度答案:D.提高查詢速度9.以下不能創(chuàng)建索引的語句是()。A.ALTERINDEXB.CREATEINDEXC.ALTERTABLED.CREATETABLE答案:A.ALTERINDEX10.以下不屬于MySQL索引類型的是()。A.唯一索引 B.非空值索引C.全文索引 D.主鍵答案:B.非空值索引11.有關(guān)索引的說法不正確的是()。A.創(chuàng)建索引能提高數(shù)據(jù)插入的性能 B.索引建立得太多,會降低數(shù)據(jù)插入、修改、刪除的進(jìn)度C.建立索引可以使檢索操作更迅速 D.數(shù)據(jù)量小的表不建議使用索引答案:A.創(chuàng)建索引能提高數(shù)據(jù)插入的性能 12.以下關(guān)于視圖的敘述不正確的是()。A.視圖有表結(jié)構(gòu)文件B.視圖中不保存數(shù)據(jù)C.視圖僅能查詢數(shù)據(jù) D.創(chuàng)建視圖時,WITHCHECKOPTION語句不是必需的答案:C.視圖僅能查詢數(shù)據(jù)13.以下關(guān)于視圖和表的敘述正確的是()。A.每一個視圖都對應(yīng)一個表 B.視圖是表的一個鏡像備份C.視圖在創(chuàng)建時會派生出數(shù)據(jù) D.刪除視圖不會影響對應(yīng)的基本表答案:D.刪除視圖不會影響對應(yīng)的基本表14.以下語句可以用于創(chuàng)建視圖的表的操作是()。A.UPDATE B.DELETE C.INSERT D.SELECT答案:D.SELECT15.以下不可以查看視圖定義的語句是()。A.SHOWCREATEVIEW B.SHOWVIEWC.SHOWTABLESSTATUS D.SHOWTABLES答案:B.SHOWVIEW二、填空題1.在MySQL中,默認(rèn)值即關(guān)鍵字。答案:DEFAULT2.數(shù)據(jù)的完整性一般包括實體完整性、和用戶定義的完整性。答案:參照完整性3.在MySQL中可通過約束保證實體完整性,通過約束保證參照完整性,通過和約束保證用戶定義完整性。答案:PRIMARYKEY、FOREIGNKEY、CHECK、NIQUE4.使用ALTERTABLE語句中修改列的子句包括、、。答案:ALTER[COLUMN]、CHANGE[COLUMN]、MODIFY[COLUMN]5.索引的關(guān)鍵字是。答案:INDEX|KEY6.在ALTERTABLE語句中添加一個列使用的關(guān)鍵字是。答案:ADD7.在已有的表上創(chuàng)建索引使用語句和語句。答案:CREATEINDEX、ALTERTABLE8.除了ALTERTABLE可以刪除索引之外,刪除索引的語句有語句。答案:DROPINDEX9.索引按照用途分類可以分為、、、、。答案:普通索引、唯一索引、主鍵索引、全文索引、空間索引10.修改視圖定義使用的語句是。答案:ALTERVIEW三、簡答題1.在定義數(shù)據(jù)庫中,包括了那些語句?答案:數(shù)據(jù)庫定義語句(DDL,DataDefinitionLanguage)是用于定義和管理數(shù)據(jù)庫對象結(jié)構(gòu)的SQL語句集合。SQL最常見的DDL主要包括CREATE、ALTER、DROP等語句。2.什么是表?簡述表的構(gòu)成。答案:在數(shù)據(jù)庫中,表是用來存儲數(shù)據(jù)的基本單位。

每個表由一系列行(記錄)和列(字段)組成。表結(jié)構(gòu)由表的列(字段)定義,每個列都有一個名稱和數(shù)據(jù)類型。數(shù)據(jù)按照行(記錄)存儲,每一行表示一個數(shù)據(jù)項。表構(gòu)成要素主要有表名、列/字段、行/記錄、主鍵、數(shù)據(jù)類型、約束、索引、表關(guān)系等,其中列/字段代表數(shù)據(jù)的某個屬性;行/記錄代表一條完整的數(shù)據(jù)記錄;主鍵是唯一標(biāo)識表中的每一行的列(或列組合);外鍵用于建立表與表之間的關(guān)聯(lián),確保數(shù)據(jù)的完整性;數(shù)據(jù)類型定義列可以存儲的數(shù)據(jù)格式,包括整數(shù)、字符串、日期/時間、布爾值等;約束保用于限制列的數(shù)據(jù)規(guī)則;索引用于提高查詢速度的數(shù)據(jù)結(jié)構(gòu)。3.簡述創(chuàng)建表、查看表、修改、刪除表使用的語句。答案:創(chuàng)建表、查看表、修改、刪除表使用的語句分別如下:(1)創(chuàng)建表:CREATETABLE(2)查看表:SHOWTABLES表示查看所有表;DESCRIBE查看表的結(jié)構(gòu);SHOWCREATETABLE查看建表語句;(3)修改表:ALTERTABLE(4)刪除表:DROPTABLE4.什么是主鍵約束?什么是外鍵約束?答案:(1)主鍵約束用于唯一標(biāo)識表中的每一行記錄的一個或一組列,具有唯一性、非空性、唯一標(biāo)識等;(2)外鍵約束用于外鍵約束用于建立和強制兩個表之間的關(guān)聯(lián)關(guān)系,它指向另一個表的主鍵,具有參考完整性。5.如何理解索引?索引關(guān)鍵詞的選取原則有哪些?答案:(1)索引是一個排序的列表,在這個列表中存儲著索引的值和包含這個值的數(shù)據(jù)所在行的物理地址,可以大大加快查詢的速度,使用索引后可以不用掃描全表來定位某行的數(shù)據(jù),而是先通過索引表找到該行數(shù)據(jù)對應(yīng)的物理地址然后訪問相應(yīng)的數(shù)據(jù)。索引的作用類似于書的目錄,可以根據(jù)目錄中的頁碼快速找到所需的內(nèi)容。(2)索引關(guān)鍵詞的選取原則主要包括限制表中索引的數(shù)量,對經(jīng)常查詢的字段應(yīng)該建立索引,但要避免對不必要的字段建立索引;避免對經(jīng)常更新的表建立過多的索引;數(shù)據(jù)量小的表不建議使用索引;在取值重復(fù)率較大的字段上不要建立索引;為經(jīng)常需要進(jìn)行排序、分組和連接查詢的字段建立索引等。6.索引與約束有什么關(guān)系?答案:索引和約束是數(shù)據(jù)庫設(shè)計中兩個緊密相關(guān)但又有區(qū)別的重要概念,它們共同維護(hù)著數(shù)據(jù)的完整性和查詢效率。約束的實現(xiàn)依賴于索引,索引是約束的技術(shù)基礎(chǔ)。索引是為了快速定位特定數(shù)據(jù),提高查詢效率,通過創(chuàng)建數(shù)據(jù)結(jié)構(gòu)加速查找實現(xiàn),可以獨立存在,主要有唯一索引、主鍵索引、普通索引、組合索引、全文索引、空間索引等;而約束是為了保證數(shù)據(jù)的完整性而實現(xiàn)的一套機制,它具體的根據(jù)各個不同的數(shù)據(jù)庫的實現(xiàn)而有不同的工具(約束),通過定義數(shù)據(jù)規(guī)則限制實現(xiàn),通常需要索引支持;主要包括非空約束、唯一約束、主鍵約束、外鍵約束、自增約束、默認(rèn)約束、檢查約束等。總之,在數(shù)據(jù)庫設(shè)計時,應(yīng)先明確業(yè)務(wù)規(guī)則,再考慮查詢模式。約束保證數(shù)據(jù)正確性,索引保證操作高效性,二者協(xié)同工作才能構(gòu)建健壯的數(shù)據(jù)庫系統(tǒng)。7.視圖與基表有什么區(qū)別與聯(lián)系?視圖與SELECT語句有何關(guān)系?答案:(1)視圖是從一個或者多個基本表中導(dǎo)出的表,是已經(jīng)編譯好的SQL語句,而表不是;視圖沒有實際的物理記錄,不占用物理空間,而表相反;視圖是查看表內(nèi)容的窗口,是查看數(shù)據(jù)表的一種方法,視圖可以不給用戶接觸表,使得用戶不知道表結(jié)構(gòu),具有更大的安全性;視圖只是邏輯概念的存在,只能由創(chuàng)建的語句來修改。而表可以隨時對它進(jìn)行修改;視圖的建立和刪除只影響視圖本身,不影響對應(yīng)的基本表;聯(lián)系:視圖(View)是在基本表之上建立的表,它的結(jié)構(gòu)(即所對應(yīng)的列)和內(nèi)容(即所有數(shù)據(jù)行)都來自基本表。一個視圖可以對應(yīng)一個或多個基本表。視圖是基本表的抽象和在邏輯意義上建立的新關(guān)系。(2)視圖與SELECT語句的關(guān)系主要體現(xiàn)在視圖中保存的就是一條SELECT語句。?視圖是一個虛擬表,它不包含實際的數(shù)據(jù),而是保存了創(chuàng)建該視圖的SELECT語句。當(dāng)通過視圖查詢數(shù)據(jù)時,數(shù)據(jù)庫會執(zhí)行保存的SELECT語句,就像執(zhí)行一個普通的SELECT語句一樣。?四、操作題職工社團(tuán)管理數(shù)據(jù)庫employee,包含三張數(shù)據(jù)表職工表、社會團(tuán)體表、參加表,表的結(jié)構(gòu)如表1所示。表1employee數(shù)據(jù)庫表的結(jié)構(gòu)表名列名數(shù)據(jù)類型約束條件職工(emp)職工號char(3)主鍵姓名varchar(10)非空年齡tinyint默認(rèn)值25性別CHAR(1)無約束籍貫VARCHAR(10)無約束社會團(tuán)體(org)編號char(3)主鍵名稱varchar(20)無約束負(fù)責(zé)人char(3)外鍵活動地點varchar(20)無約束參加(attend)職工號char(3)主鍵、外鍵編號char(3)主鍵、外鍵參團(tuán)日期Date無約束使用SQL語句完成以下題目。1.使用MySQLWorkbench創(chuàng)建職工社團(tuán)管理數(shù)據(jù)庫employee,并作為當(dāng)前數(shù)據(jù)庫,按照表1的結(jié)構(gòu)要求使用SQL語句創(chuàng)建表,并查看表“參加”的基本結(jié)構(gòu)。答案:--創(chuàng)建數(shù)據(jù)庫employeeCREATEDATABASEIFNOTEXSISTSemployeeDEFAULTCHARACTERSETgb2312DEFAULTCOLLATEgb2312_chinese_ci;--使用employee作為當(dāng)前數(shù)據(jù)庫useemployee;CREATETABLEemp(職工號char(3)primarykey,姓名varchar(10)notnull,年齡tinyintdefault25,性別char(1),籍貫varchar(10));CREATETABLEorg(編號char(3)primarykey,名稱varchar(20),負(fù)責(zé)人char(3),活動地點varchar(20),FOREIGNKEY(負(fù)責(zé)人)REFERENCES職工(職工號));CREATETABLEattend(職工號char(3),編號char(3),參團(tuán)日期date,PRIMARYKEY(職工號,編號),CONSTRAINT`參加_fk1`FOREIGNKEY(`職工號`)REFERENCES`職工`(`職工號`),CONSTRAINT`參加_fk2`FOREIGNKEY(`編號`)REFERENCES`社會團(tuán)體`(`編號`))ENGINE=InnoDBDEFAULTCHARSET=gb2312;--查看參加表結(jié)構(gòu)alterDESCemp1;2.復(fù)制表“emp”表的結(jié)構(gòu)為“emp1”表,修改emp1表,增加一列“comment”,數(shù)據(jù)類型為Varchar(30),可以為空值,查看emp1的基本結(jié)構(gòu)后刪除該列。答案:CREATETABLEempASSELECT*FROMemp1;ALTERtableemp1ADDCOLUMNcommentVARCHAR(30)NULL;DESCemp1;3.使用SQL語句修改emp表中年齡字段的默認(rèn)值為20。答案:ALTERTABLEempALTERCOLUMN年齡SETDEFAULT20;4.使用CREATEINDEX語句對表emp的姓名、性別列創(chuàng)建復(fù)合唯一索引idx_namesex,并查看表emp上的索引信息。答案:CREATEINDEXidx_namesexONemp(姓名,性別);SHOWINDEXFROMemp;5.刪除索引idx_namesex,再次查看emp上的索引信息。答案:DROPINDEXidx_namesexONemp;SHOWINDEXFROMemp;6.在employee數(shù)據(jù)庫中創(chuàng)建一個基于emp表的視圖emp_info_view,要求視圖中只有職工的姓名、性別、籍貫。答案:USEemployee;CREATEVIEWemp_info_viewASSELECT姓名,性別,籍貫FROMemp;7.使用CREATEORREPLACE修改(6)中創(chuàng)建的emp_info_view視圖,使得emp_info_view視圖增加一個職工號列,并利用SELECT語句查看視圖信息。答案:CREATEORREPLACEVIEWemp_info_vie(職工號,姓名,性別,籍貫)ASSELECT職工號,姓名,性別,籍貫FROMemp;8.修改emp_info_view視圖為表新增一位名職工號為e20,姓名為“陳珊”的女職工,其中,籍貫為“廣東清遠(yuǎn)”,并利用SELECT語句查看視圖數(shù)據(jù)信息。答案:INSERTINTOemp_info_viewVALUES("e20","陳珊","女","廣東清遠(yuǎn)");SELECT*FROMemp_info_view;9.刪除emp_info_view視圖,利用SHOWTABLES查看視圖。答案:DROPVIEWemp_info_view;SHOWTABLES;10.刪除attend表,刪除數(shù)據(jù)庫employee。答案:DROPTABLEattend;DROPDATABASEemployee;4.6本章習(xí)題一.單項選擇題1.查詢語句SELECT中可以使用()關(guān)鍵字將查詢結(jié)果中的重復(fù)行屏蔽。A.ALL B.DISTINCTC.DISTINCTROW D.以上答案都不正確答案:B.DISTINCT2.SELECT語句選項中對查詢數(shù)據(jù)進(jìn)行排序的關(guān)鍵詞是()。A.WHEREB.LIMITC.GROUPBYD.ORDERBY答案:A.WHERE3.以下選項中不是比較運算符的是()。A.ANDB.ALLC.SOMED.ANY答案:A.AND4.以下選項不是聚合函數(shù)是()。A.COUNT B.AVERAGE C.SUMD.AVG答案:B.AVERAGE5.MYSQL中,指定一個已有數(shù)據(jù)庫作為當(dāng)前數(shù)據(jù)庫的關(guān)鍵字是()。A.USING B.USED C.USE D.USES答案:C.USE 6.SQL語句中,與表達(dá)式“編號NOTIN(‘id1’,’id2’)”功能相同的表達(dá)式是()。A.編號=‘id1’AND編號=’id2’ B.編號!=‘id1’OR編號!=’id2’ C.編號=‘id1’OR編號=’id2’ D.編號!=‘id1’AND編號!=’id2’ 答案:C.編號=‘id1’OR編號=’id2’ 7.要查詢職工信息表中職工姓“張”的職工情況,可用()命令。A.SELECT*FROM職工信息表WHERE姓名LIKE'張_'; B.SELECT*FROM職工信息表WHERE姓名LIKE'張%';C.SELECT*FROM職工信息表WHERE姓名LIKE'%張%';D.SELECT*FROM職工信息表WHERE姓名LIKE'_張%';答案:B.SELECT*FROM職工信息表WHERE姓名LIKE'張%';8.MySQL中,可以將多個表進(jìn)行連接查詢的是()。A.JOINB.LIKE C.UNION D.MERGE答案:A.JOIN9.以下說法中錯誤的是()。A.GROUPBY子句用例分組WHERE子句的輸出B.WHERE子句用來篩選FROM子句中自定的操作所產(chǎn)生的行C.聚合函數(shù)需要和GROUPBY一起使用D.HAVING子句用來從FROM的結(jié)果中篩選行答案:D.HAVING子句用來從FROM的結(jié)果中篩選行10.以下插入記錄正確的選項是()。A.INSERTINTOemp(ename,sal)values(v1,v2,v3); B.INSERTINTOemp(ename)values(v1,v2,v3);C.INSERTINTOemp(ename,hiredate,sal)values(v1,v2,v3);D.INSERTINTOemp(ename,hiredate,sal)values(v1,v2); 答案:C.INSERTINTOemp(ename,hiredate,sal)values(v1,v2,v3);11.有三張表,它們的記錄行數(shù)分別為5行,2行和6行,三個表進(jìn)行交叉連接后,結(jié)果集中共有()行數(shù)據(jù)。A.不確定 B.40C.32 D.60答案:D.6012.下面可以通過聚合函數(shù)的結(jié)果來過濾查詢結(jié)果集的SQL子句是()。A.WHERE子句B.HAVING子句C.ORDERBY子句D.GROUPBY子句答案:B.HAVING子句13.SQL語句中,“AGEIN(20,22)”d的語義是()。A.AGE<22ANDAGE>20 B.AGE<=22ANDAGE>=20 C.AGE=20ANDAGE=22 D.AGE=20ORAGE=22 答案:D.AGE=20ORAGE=22 14.SQL語言的數(shù)據(jù)操作語句包括SELECT.INSERT.UPDATE和DELETE,其中最重要也是使用最頻繁的語句是()。A.UPDATE B.DELETE C.INSERT D.SELECT答案:B.DELETE 15.語句select*fromcitylimit3,7;,以下描述正確的是()。A.獲取第3條到第9條記錄B.獲取第3條到第10條記錄C.獲取第4條到第10條記錄D.獲取第4條到第9條記錄答案:D.獲取第4條到第9條記錄16.在MySQL中,有關(guān)UPDATE語句和REPLACE語句,說法錯誤的是()。A.UPDATE在沒有匹配記錄時什么都不做。B.REPLACE可以選擇性地更新記錄的一部分字段。C.REPLACE在有重復(fù)記錄時更新,在沒有重復(fù)記錄時插入。D.UPDATE可以選擇性地更新記錄的一部分字段。答案:B.REPLACE可以選擇性地更新記錄的一部分字段。二.填空題1.在MySQL中,默認(rèn)值即關(guān)鍵字。答案:DEFAULT2.操作“元組<ALL(集合)”的語義是,“元組<ANY(集合)”的語義是。答案:元組值小于集合中的每一元組值、元組值小于集合中的任一元組值3.使用SELECT語句結(jié)合ORDERBY子句可對查詢結(jié)果排序表示升序,表示降序。答案:ASC、DESC4.表達(dá)式中的通配符“%”表示、“_”(下劃線)表示。答案:任意多個、任意一個5.檢索姓名字段中含有“明”的表達(dá)式為:。答案:姓名LIKE“%明%”6.HAVING子句與WHERE子句很相似,區(qū)別在于:WHERE子句作用的對象是,HAVING子句作用的對象是。答案:分組7.表示年齡在10-20歲之間的SQL語句條件是。答案:Between10and208.在成績表中,查詢語文課成績最好的三名學(xué)生的學(xué)生姓名,正確的語句。答案:SELECT姓名FROM成績表ORDERBY語文DESCLIMIT0,3;9.查找有購買“網(wǎng)頁設(shè)計”這本書的訂單信息,SELECT語句如下,請補充完整。select*fromsellwhere圖書編號(select圖書編號frombookwhere書名='網(wǎng)頁設(shè)計');答案:IN簡答題1.SQL語言有什么特點,包括哪幾個子句?簡述各個子句的功能。答案:SQL語言特點包括綜合統(tǒng)一、高度非過程化、面向集合的操作方式、以同一種語法結(jié)構(gòu)提供兩種使用方式(SQL是自含式語言又是嵌入式語言)等,主要包括SELECT子句、FROM子句、WHERE子句、GROUPBY子句、HAVING子句、ORDERBY子句、LIMIT子句等,其功能分別如下:(1)SELECT子句指定要查詢的列或計算表達(dá)式(2)FROM子句指定數(shù)據(jù)來源的表或視圖;(3)WHERE子句:過濾行數(shù)據(jù);(4)GROUPBY子句是分組聚合計算;(5)HAVING子句:過濾分組后的結(jié)果;(6)ORDERBY子句是用來排序結(jié)果集;(7)LIMIT子句用來限制查詢結(jié)果返回的記錄數(shù)量。2.什么是子查詢?IN子查詢、EXISTS子查詢、比較子查詢各有何功能?答案:子查詢也稱為嵌套查詢,指在一個查詢內(nèi)部包含另一個查詢,子查詢是一個SELECT查詢,嵌套在SELECT、INSERT、UPDATE、DELETE語句或其他子查詢的WHERE子句或HAVING子句中。IN子查詢檢查主查詢的值是否存在于子查詢結(jié)果集中;EXISTS子查詢檢查子查詢是否返回任何行(布爾測試),不需要返回任何實際數(shù)據(jù),只需返回一個真或假值,其中,EXISTS表示存在,NOTEXISTS表示不存在;比較子查詢將主查詢的值與子查詢的單個結(jié)果進(jìn)行比較,子查詢必須返回單行(除非使用ALL/ANY)。3.使用JOIN連接查詢中,如何指定連接的多個表的表名?如何指定連接條件?答案:使用JOIN連接查詢中,基本語法格式如下:SELECT*FROM表名AJOIN表名BON表名A.列名=表名B.列名JOIN表名CON表名B.列名=表名C.列名其中利用FROM子句中指定主表,使用JOIN子句指定要連接的表,利用ON指定連接條件。4.簡述聚合函數(shù),并介紹幾個常用的聚合函數(shù)。答案:聚合函數(shù)聚合函數(shù)是對一組值執(zhí)行計算并返回單個值的函數(shù),通常與GROUPBY子句一起使用來對結(jié)果集進(jìn)行分組匯總。常用的聚合函數(shù)有COUNT()、SUM()、AVG()、MAX()、MIN()等。5.內(nèi)連接與外連接有何區(qū)別?左外連接與右外連接有何區(qū)別?答案:(1)內(nèi)連接與外連接的區(qū)別:內(nèi)連接(INNERJOIN)是最常用的連接類型之一,它根據(jù)兩個或多個表之間的共同列值來聯(lián)接這些表。在內(nèi)連接中,只有在連接的表之間有匹配的值時,才會返回結(jié)果;外連接(OUTERJOIN)它可以返回兩個或多個表之間所有的匹配和不匹配的數(shù)據(jù)。(2)外連接又可以分為左外連接、右外連接、全外連接等,其中左外連接返回左表中的所有行,加上右表中匹配的行,若右表中無匹配,則右表字段顯示為NULL;右外連接返回右表中的所有行,加上左表中匹配的行,若左表無匹配,則左表字段顯示為NULL。6.什么是聯(lián)合查詢?簡述其功能。答案:聯(lián)合查詢是一種將多個SELECT語句的結(jié)果集合并為一個結(jié)果集的SQL操作。其功能主要是結(jié)果集合并、垂直組合、數(shù)據(jù)整合等,其中結(jié)果集合并是將多個查詢返回的數(shù)據(jù)合并為單個結(jié)果集;垂直組合可以將多個查詢結(jié)果按列對齊后垂直堆疊;數(shù)據(jù)整合可以合并來自不同表或相同表但條件不同的數(shù)據(jù)。四.操作題將職工社團(tuán)管理數(shù)據(jù)庫employee進(jìn)行恢復(fù)到第三章已創(chuàng)建的數(shù)據(jù)庫,三張數(shù)據(jù)表包括職工表、社會團(tuán)體表、參加表。按照要求完成以下題目。表1職工表(emp)職工號姓名年齡性別籍貫e01張國華46男湖南e02趙子琪30女湖南e03劉小霞20女河北e04張濤25男湖北e05高琪雅23女河北e06王方29男河南e07劉長輝38男河北e08周密18女湖南表2社會團(tuán)體表(org)編號名稱負(fù)責(zé)人活動地點g01愛電影e012樓201g02籃球先鋒e03室內(nèi)籃球場g03攝影家協(xié)會e013樓306g04美食家e054樓407g05游戲天地e035樓電競室g06愛運動e074樓404g07寵物世界e022樓209表1參加表(join)職工號編號參團(tuán)日期e01g012018-08-08e01g032019-02-05e01g072016-05-05e02g012020-06-10e02g072016-10-18e03g042017-08-20e03g052020-08-14e05g042018-08-13e06g012018-06-08e06g042018-06-09e06g062017-10-16e06g072017-03-20e07g012017-04-14e07g03nulle07g062015-12-151.利用SQL語句向三張表中插入數(shù)據(jù)記錄,三張表的數(shù)據(jù)分別如表1-表3所示。答案:#向第3章已創(chuàng)建的數(shù)據(jù)庫和表插入數(shù)據(jù)INSERTINTOempVALUES('e01','張國華','46','男','湖南');INSERTINTOempVALUES('e02','趙子琪','30','女','湖南');INSERTINTOempVALUES('e03','劉小霞','20','女','河北');INSERTINTOempVALUES('e04','張濤','25','男','湖北');INSERTINTOempVALUES('e05','高琪雅','23','女','河北');INSERTINTOempVALUES('e06','王方','29','男','河南');INSERTINTOempVALUES('e07','劉長輝','38','男','河北');INSERTINTOempVALUES('e08','周密','18','女','湖南');#`社會團(tuán)體`INSERTINTOorgVALUES('g01','愛電影','e01','2樓201');INSERTINTOorgVALUES('g02','籃球先鋒','e03','室內(nèi)籃球場');INSERTINTOorgVALUES('g03','攝影家協(xié)會','e01','3樓306');INSERTINTOorgVALUES('g04','美食家','e05','4樓307');INSERTINTOorgVALUES('g05','游戲天地','e03','5樓電競室');INSERTINTOorgVALUES('g06','我愛乒乓','e07','4樓404');INSERTINTOorgVALUES('g07','寵物世界','e01','2樓209');##參加alterINSERTINTOattendVALUES('e01','g01','2018-08-08');INSERTINTOattendVALUES('e01','g03','2019-02-05');INSERTINTOattendVALUES('e01','g06','2016-05-05');INSERTINTOattendVALUES('e02','g01','2020-06-10');INSERTINTOattendVALUES('e02','g07','2016-10-18');INSERTINTOattendVALUES('e03','g04','2017-08-20');INSERTINTOattendVALUES('e03','g05','2020-08-14');INSERTINTOattendVALUES('e05','g04','2018-08-13');INSERTINTOattendVALUES('e06','g01','2018-06-08');INSERTINTOattendVALUES('e06','g04','2018-06-09');INSERTINTOattendVALUES('e06','g06','2017-10-16');INSERTINTOattendVALUES('e06','g07','2017-03-20');INSERTINTOattendVALUES('e07','g01','2017-04-14');INSERTINTOattendVALUES('e07','g03',null);INSERTINTOattendVALUES('e07','g06','2015-12-15');2.在employee數(shù)據(jù)庫中使用SELECT進(jìn)行基本查詢。(1)在職工表(emp)中,查詢每個職工的職工號、姓名、性別。(2)查詢職工表(emp)編號為e02的職工姓名和籍貫。(3)查詢職工表(emp)所有籍貫為“湖南”的女職工的姓名和年齡。答案:(1)SELECT職工號,姓名,性別FROMemp;(2)SELECT姓名,籍貫FROMempWHERE職工號='e02';(3)SELECT姓名,年齡FROMempWHERE籍貫='湖南'AND性別='女';3.使用SELECT語句進(jìn)行條件查詢。(1)在參加表(attend)中查詢參團(tuán)日期在2016-2017內(nèi)的職工號、社團(tuán)編號和參團(tuán)日期。(2)查詢參加表(attend)中參團(tuán)編號為g04的職工人數(shù)。(3)查詢職工表(emp)中參團(tuán)編號為g07的職工號和參團(tuán)日期。(4)查詢職工表(emp)中職工的姓名和年齡,查詢結(jié)果按年齡從大到小排序。(5)查詢職工表(emp)中所有姓“劉”的職工號和姓名。答案:(1)SELECT職工號,社團(tuán)編號,參團(tuán)日期FROMattendWHEREYEAR(參團(tuán)日期)BETWEEN2016AND2017;(2)SELECT編號,COUNT(*)AS參加人數(shù)FROMattendWHERE編號='g04';(3)SELECT職工號,參團(tuán)日期FROMempWHERE編號='g07';(4)SELECT姓名,年齡FROMempORDERBY年齡DESC;(5)SELECT職工號,姓名FROMempWHERE姓名LIKE'劉%';4.對職工表(emp),查詢職工的職工號、姓名、性別、年齡及籍貫,查詢結(jié)果先按照性別的由小到大排序,性別相同的再按職工號由大到小排序。答案:SELECT職工號,姓名,性別,年齡,籍貫FROMempORDERBY性別,職工號DESC;5.使用GROUPBY子句查詢參加表(attend)中,各個職工號的參團(tuán)編號。答案:SELECT職工號,GROUP_CONCAT(編號)AS參團(tuán)列表FROMattendGROUPBY職工號;6.使用UNION運算符對職工表(emp)中姓“劉”的職工號,籍貫為‘湖南’的職工號、姓名返回在一個表中。答案:SELECT職工號,姓名FROMempWHERE姓名LIKE'劉%'UNIONSELECT職工號,姓名FROMempWHERE籍貫='湖南';7.嵌套查詢(1)在職工表(emp)中查找與“劉小霞”性別相同的所有職工姓名、編號。(2)使用IN子查詢查找所參團(tuán)編號為g01、g07的職工號、姓名、性別。(3)使用ANY子查詢查找職工號為e01的參團(tuán)日期比e02號參團(tuán)日期最早還要晚的參團(tuán)編號和參團(tuán)日期。(4)使用ALL子查詢女性職工比男性職工出生年份晚的職工姓名、年齡。答案:(1)USEEMPLOYEE;SELECT職工號,姓名FROMempWHERE性別=(SELECT性別FROMempWHERE姓名='劉小霞');(2)SELECT職工號,姓名,性別FROMempWHERE編號IN(SELECT編號FROMempWHERE編號='g01'AND編號='g07');(3)SELECT編號,參團(tuán)日期FROMattendWHERE職工號='e01'ANDYEAR(參團(tuán)日期)>ANY(SELECTYear(參團(tuán)日期)FROMattendWHERE職工號='e02');(4)SELECT姓名,年齡FROM職工WHERE性別='女'AND年齡<ALL(SELECT年齡FROM職工WHERE性別='男');8.連接查詢(1)查詢參團(tuán)日期在2016年-2017年范圍內(nèi)的職工號、姓名、參團(tuán)編號、日期。(2)使用INNERJOIN連接方式查詢參與“寵物世界”社團(tuán)的職工號、姓名、參團(tuán)日期。(3)查詢每個職工所參加社團(tuán)的數(shù)量,要求列出職工號、姓名、參團(tuán)數(shù)量。(4)使用左外連接查詢每個職工參與的社團(tuán)編號,要求列出職工號、姓名、參團(tuán)數(shù),沒有參團(tuán)的職工的數(shù)為空。答案:(1)SELECTe.職工號,e.姓名,a.編號,a.參團(tuán)日期FROM職工ase,參加asa,社會團(tuán)體asoWHEREe.職工號=a.職工號ANDa.編號=o.編號andYEAR(a.參團(tuán)日期)BETWEEN2016AND2017;(2)SELECTemp.職工號,emp.姓名,參加.參團(tuán)日期FROMempINNERJOIN參加ONemp.職工號=attend.職工號INNERJOINorgONorg.編號=attendence.編號WHEREorg.名稱="寵物世界";(3)SELECTemp.職工號,emp.姓名,COUNT(attend.編號)AS參團(tuán)數(shù)量FROM職工,attendWHEREemp.職工號=attend.職工號GROUPBY職工.職工號;(4)SELECTemp.職工號,emp.姓名,COUNT(attend.編號)AS參團(tuán)數(shù)量FROMempLEFTOUTERJOINattendONemp.職工號=attend.職工號GROUPBYemp.職工號;5.6本章習(xí)題一、單選題1.存儲過程與函數(shù)的區(qū)別之一是存儲過程不能包含?()A.SET語句B.局部變量?C.RETURN語句?D.游標(biāo)?答案?:?C.RETURN語句?存儲過程可以接受參數(shù),這些參數(shù)不包括?()。A.IN參數(shù)B.OUT參數(shù)C.INOUT參數(shù)?D.STATIC參數(shù)??答案?:?D.STATIC參數(shù)?以下哪個不是存儲過程的特點?()。A.可以封裝復(fù)雜的SQL語句B.可以提高代碼的重用性C.可以提高數(shù)據(jù)庫的安全性?D.可以直接查詢數(shù)據(jù)庫中的數(shù)據(jù)??答案?:?D.可以直接查詢數(shù)據(jù)庫中的數(shù)據(jù)存儲過程可以返回?()。A.只能返回一個值?B.可以返回多個值(通過OUT參數(shù))?C.不能返回值D.只能返回狀態(tài)碼?答案?:?B.可以返回多個值(通過OUT參數(shù))以下哪個不是存儲過程的優(yōu)勢?()。A.減少網(wǎng)絡(luò)流量B.提高執(zhí)行效率C.增強代碼的可讀性?D.增加數(shù)據(jù)庫的存儲負(fù)擔(dān)?答案?:?D.增加數(shù)據(jù)庫的存儲負(fù)擔(dān)存儲過程可以嵌套調(diào)用其他存儲過程嗎??()A.不可以?B.可以?C.取決于MySQL的版本D.取決于存儲過程的定義?答案?:?B.可以在自定義函數(shù)中,可以使用哪些控制結(jié)構(gòu)?()A.僅能使用IF語句B.可以使用IF、CASE、LOOP等控制結(jié)構(gòu)C.僅能使用LOOP語句D.不能使用任何控制結(jié)構(gòu)?答案:B.可以使用IF、CASE、LOOP等控制結(jié)構(gòu)在MySQL中,自定義函數(shù)的定義必須包含哪兩個部分?()A.函數(shù)名和函數(shù)體B.函數(shù)名和返回類型C.參數(shù)列表和函數(shù)體D.返回類型和參數(shù)列表?答案:A.函數(shù)名和函數(shù)體?自定義函數(shù)的執(zhí)行是在哪個上下文中進(jìn)行的?()A.服務(wù)器級B.數(shù)據(jù)庫級C.會話級D.用戶級?答案:B.數(shù)據(jù)庫級在自定義函數(shù)中,如何處理異?;蝈e誤?()A.使用TRY-CATCH塊B.使用DECLAREHANDLER語句C.不支持異常處理D.使用ERROR語句?答案:B.使用DECLAREHANDLER語句填空題與自定義函數(shù)相比,存儲過程不能包含語句。答案:return存儲過程的參數(shù)按照輸入輸出的區(qū)別可分為、、。答案:in,out,inout局部變量用______語句聲明,且只能在語句塊BEGIN...END中使用。答案:declare常用的循環(huán)語句有、、。答案:while,loop,repeat存儲過程中若需返回結(jié)果集,可用______語句輸出結(jié)果集。答案:select函數(shù)執(zhí)行完后,需通過語句返回結(jié)果。答案:return退出循環(huán)的關(guān)鍵字是______,而跳過當(dāng)前循環(huán)的關(guān)鍵字是______?。答案:LEAVE、ITERATE?函數(shù)中如需使用臨時表,在創(chuàng)建臨時表時使用______關(guān)鍵字?。答案:CREATETEMPORARY需授予用戶執(zhí)行自定義函數(shù)的權(quán)限使用命令______。答案:GRANTEXECUTE定義異常處理程序時,使用______語句聲明處理方式?。答案:DECLAREHANDLER操作題創(chuàng)建存儲過程p_info(),輸出“HelloMySQL”。

答案:delimiter//createProcedurep_info()readssqldatabeginselect‘HelloMySQL’as輸出信息;end//創(chuàng)建存儲過程p_printInfo(),輸入社團(tuán)編號,輸出社團(tuán)編號、社團(tuán)名稱和活動地點。答案:delimiter//createProcedurep_printInfo(inCIDchar(3))readssqldatabeginselect編號,名稱,活動地點from社會團(tuán)體where編號=CID;end//創(chuàng)建存儲過程p_join(),輸入職工號、社團(tuán)編號,輸出職工號、社團(tuán)編號、活動地點和參團(tuán)日期。答案:delimiter//createProcedurep_join(inWIDchar(3),inCIDchar(3))readssqldatabeginselect職工號,編號as社團(tuán)編號,活動地點,參團(tuán)日期from職工,社會團(tuán)體where職工.職工號=社會團(tuán)體.職工號and職工.職工號=WIDand社團(tuán)編號=CID;end//創(chuàng)建函數(shù)f_sum(intn),輸入n,返回1+2+...+n的值。答案:delimitercreatefunctionf_sum(intn)returnsintnosqldatabegindeclareiintdefault1;declaresintdefault0;whilei<=ndosets=s+i;seti=i+1;endwhile;returnn;end//5.創(chuàng)建函數(shù)f_mul(intk,inti),當(dāng)i為1時,計算以k為半徑的圓的面積;當(dāng)i為2時,計算以k為正方形邊長的面積;當(dāng)i為3時,計算以k為正方體邊長的體積。delimiter//createfunctionf_mul(intk,inti)returnsdouble(6,2)nosqlbegincasewheni=1thenreturn3.14*k*k;wheni=2thenreturnk*k;elsereturnk*k*k;endcase;end//6.4本章習(xí)題一、單選題1.?下列說法中錯誤的是?()。A.常用觸發(fā)器有INSERT、UPDATE、DELETE三種B.對于同一張數(shù)據(jù)表,可以同時有兩個BEFOREUPDATE觸發(fā)器C.NEW臨時表在INSERT觸發(fā)器中用來訪問被插入的行D.OLD臨時表中的值只讀,不能被更新?答案?:B.對于同一張數(shù)據(jù)表,可以同時有兩個BEFOREUPDATE觸發(fā)器??觸發(fā)器不能觸發(fā)的事件是?()。A.INSERTB.UPDATEC.DELETED.SELECT?答案?:D.SELECT?以下哪個不是觸發(fā)器的特點?()。A.觸發(fā)器是自動執(zhí)行的B.觸發(fā)器可以通過CALL語句顯式調(diào)用C.觸發(fā)器是響應(yīng)特定事件而自動執(zhí)行的D.觸發(fā)器可以包含復(fù)雜的SQL語句?答案?:B.觸發(fā)器可以通過CALL語句顯式調(diào)用?對于同一個表,可以定義多少個觸發(fā)器??()A.只能定義一個B.可以定義多個C.最多定義三個(INSERT、UPDATE、DELETE)D.取決于數(shù)據(jù)庫的大小?答案?:B.可以定義多個??在觸發(fā)器中,OLD和NEW關(guān)鍵字分別代表什么??()A.OLD代表更新前的數(shù)據(jù),NEW代表更新后的數(shù)據(jù)B.OLD代表更新后的數(shù)據(jù),NEW代表更新前的數(shù)據(jù)C.OLD和NEW都代表更新后的數(shù)據(jù)D.OLD和NEW都代表更新前的數(shù)據(jù)?答案?:A.OLD代表更新前的數(shù)據(jù),NEW代表更新后的數(shù)據(jù)在MySQL中,觸發(fā)器是否可以訪問外部表的數(shù)據(jù)??()A.可以B.不可以C.取決于觸發(fā)器的定義D.取決于MySQL的版本?答案?:A.可以?在MySQL中,用于查看已定義事件的語句是?()A.SHOWEVENTSB.SELECTEVENT_SCHEMA,EVENT_NAMEFROMINFORMATION_SCHEMA.EVENTSC.SHOWCREATEEVENTevent_nameD.DESCRIBEEVENTS?答案?:A.SHOWEVENTS?MySQL事件調(diào)度器默認(rèn)是?()A.開啟的B.關(guān)閉的C.由系統(tǒng)決定D.取決于MySQL版本?答案?:B.關(guān)閉的要開啟MySQL事件調(diào)度器,應(yīng)修改的系統(tǒng)變量是?()A.event_schedulerB.scheduler_eventC.event_enableD.enable_event?答案?:A.event_scheduler以下哪個不是MySQL事件調(diào)度器可以設(shè)置的頻率??()A.YEARLYB.MONTHLYC.WEEKLYD.DAILY_HOURLY?答案?:D.DAILY_HOURLY填空題根據(jù)觸發(fā)時間的差異性,觸發(fā)器可分為包括______和______兩種?。答案:BEFORE、AFTER根據(jù)觸發(fā)事件的不同,觸發(fā)器可分為_____、______和______三種。答案:INSERT、UPDATE、DELETE定義觸發(fā)器時使用語句FOREACHROW,表示觸發(fā)時機為______?。答案:每一行數(shù)據(jù)創(chuàng)建觸發(fā)器需要用戶具有______權(quán)限?。?答案?:CREATETRIGGERMySQL事件是基于______的預(yù)定義任務(wù),需啟用事件調(diào)度器才能生效?。?答案?:時間調(diào)度查看事件調(diào)度器狀態(tài)的系統(tǒng)變量是______?。?答案?:event_scheduler若需禁用某個事件,使用命令______?。?答案?:ALTEREVENT事件名DISABLE事件執(zhí)行最后一次若需保留該事件,定義事件時應(yīng)添加進(jìn)行說明?。答案:ONCOMPLETIONPRESERVE操作題基于職工表創(chuàng)建一insert觸發(fā)器,每新增一條職工記錄,把員工姓名顯示出來。答案:delimiter//createtriggertri_insertafterinserton職工foreachrowbeginselect姓名into@wnamefrom職工where職工號=NEW..職工號;end//select@wname;基于社團(tuán)表創(chuàng)建一delete觸發(fā)器,每刪除一條社團(tuán)記錄,對應(yīng)刪掉參加表對應(yīng)記錄。答案:delimiter//createtriggertri_deleteafterdeleteon社會團(tuán)體foreachrowbegindeletefrom參加where編號=OLD.編號;end//基于參團(tuán)表創(chuàng)建一Update觸發(fā)器,每修改一條參團(tuán)記錄,將該記錄舊狀態(tài)存到oldData表中。答案:delimiter//createtriggertri_deleteafterdeleteon社會團(tuán)體foreachrowbegindeletefrom參加where編號=OLD.編號;end//創(chuàng)建一事件,要求從下周開始,到“2025-12-3012:00:00”,每隔一周統(tǒng)計一次不同社團(tuán)參團(tuán)人數(shù)。答案:createeventevt_countOnScheduleEvery1weekStartsnow()+interval1weekEnds‘2025-12-3012:00:00’Doselect編號,count(*)as社團(tuán)參加人數(shù)from參加groupby編號;創(chuàng)建一事件,要求每年年底30號(12月30日),清空一下參團(tuán)表數(shù)據(jù)。答案:createeventevt_truncateOnScheduleEvery1yearStartsat‘2025-12-3012:00:00’Dotruncatetable參加;創(chuàng)建一事件,要求從當(dāng)下開始立即執(zhí)行,每一季度備份一次參團(tuán)表。答案:CreateEventevt_backupDataOnScheduleEvery1quarterStarsatnow()DoSelect*Srom參加 intooutfile'C:/ProgramData/MySQL/MySQLServer8.0/Uploads/參加.txt'fieldsterminatedby','optionallyenclosedby'"'linesterminatedby'#';7.4本章習(xí)題一、單選題1.事務(wù)是由哪個MySQL組件來實現(xiàn)的?()?A.存儲引擎B.查詢緩存C.連接池D.索引?答案:A.存儲引擎??以下哪個MySQL存儲引擎不支持事務(wù)?()?InnoDBMyISAMNDBFalcon?答案:MyISAM??事務(wù)的原子性是指什么?()?事務(wù)中的操作要么全部完成,要么全部不完成事務(wù)中的操作可以部分完成事務(wù)中的操作可以并發(fā)執(zhí)行事務(wù)中的操作必須按順序執(zhí)行?答案:A.事務(wù)中的操作要么全部完成,要么全部不完成??事務(wù)的隔離性是通過什么機制來實現(xiàn)的?()?A.鎖機制B.重做日志C.回滾日志D.多版本并發(fā)控制?答案:D.多版本并發(fā)控制??以下哪個不是事務(wù)的特性?()?原子性一致性隔離性并發(fā)性?答案:D.并發(fā)性??在MySQL中,哪個隔離級別可能發(fā)生臟讀?()?讀未提交讀提交可重復(fù)讀串行化?答案:A.讀未提交??在MySQL中,默認(rèn)的事務(wù)隔離級別是什么?()?讀未提交讀提交可重復(fù)讀串行化?答案:C.可重復(fù)讀鎖在數(shù)據(jù)庫系統(tǒng)中的主要作用是什么?()?A.提高查詢速度B.管理對共享資源的并發(fā)訪問,保持?jǐn)?shù)據(jù)完整性和一致性C.減少數(shù)據(jù)存儲空間D.增加數(shù)據(jù)庫連接數(shù)?答案:B.管理對共享資源的并發(fā)訪問,保持?jǐn)?shù)據(jù)完整性和一致性??MySQL中的全局鎖主要用于什么場景?()?A.高并發(fā)讀寫操作B.數(shù)據(jù)庫備份C.數(shù)據(jù)遷移D.性能優(yōu)化?答案:B.數(shù)據(jù)庫備份???MySQL中的意向鎖(IntentionLock)是什么級別的鎖?()?A.行級鎖B.表級鎖C.頁級鎖D.全局鎖?答案:B.表級鎖??二、填空題顯式開啟事務(wù)的SQL語句是、。?答案?:BEGIN、STARTTRANSACTION事務(wù)回滾使用命令,提交事務(wù)使用命令?。?答案?:ROLLBACK、COMMITMySQL默認(rèn)事務(wù)隔離級別是。?答案?:REPEATABLEREAD最高隔離級別是,其代價是______并發(fā)性能?。?答案?:SERIALIZABLE、降低設(shè)置事務(wù)自動提交模式的系統(tǒng)變量是(默認(rèn)值為on表示開啟)?。?答案?:AUTOCOMMIT創(chuàng)建保存點的語句是,回滾到保存點的語句是?。?答案?:SAVEPOINT、ROLLBACKTO死鎖發(fā)生時,MySQL會通過______機制自動終止其中一個事務(wù)?。?答案?:死鎖檢測MyISAM存儲引擎默認(rèn)使用______鎖,InnoDB支持______鎖和______鎖兩種粒度的鎖?。 ?答案?:表級,行級、表級共享鎖(S鎖)允許事務(wù)______數(shù)據(jù),排他鎖(X鎖)允許事務(wù)______數(shù)據(jù)?。?答案?:讀取、修改(或刪除/更新)在高并發(fā)寫入場景中,應(yīng)優(yōu)先選擇______鎖以減少鎖沖突?。?答案?:行級三、問答題什么是事務(wù)?事務(wù)的基本特性是什么?答案:事務(wù)是數(shù)據(jù)庫操作的最小邏輯單元,由一組不可分割的操作組成。這些操作要么?全部成功執(zhí)行?,要么?全部失敗回滾?,確保數(shù)據(jù)的一致性。事務(wù)的基本特性是原子性、一致性、隔離性、持久性。服務(wù)器關(guān)于事務(wù)是否自動提交的系統(tǒng)參數(shù)是什么?如何設(shè)置?答案:MySQL中控制事務(wù)自動提交的系統(tǒng)參數(shù)為@@?AUTOCOMMIT?,默認(rèn)值為ON。查看其狀態(tài)的語句:SHOWVARIABLESLIKE'autocommit';設(shè)置其狀態(tài)的語句:SETAUTOCOMMIT=1;或SETAUTOCOMMIT=0;什么是并發(fā)調(diào)度?并發(fā)調(diào)度可能會有造成什么異常?答案:MySQL中,并發(fā)調(diào)度?指數(shù)據(jù)庫系統(tǒng)允許多個事務(wù)在時間段上重疊執(zhí)行,以提升資源利用率和系統(tǒng)吞吐量?。通過并發(fā)調(diào)度,事務(wù)可以并行操作,但需通過鎖機制或MVCC(多版本并發(fā)控制)保證數(shù)據(jù)一致性?。并發(fā)調(diào)度可能會有造成以下異常:丟失更新、臟讀、不可重復(fù)讀、幻讀。簡述鎖機制原理。答案:鎖是數(shù)據(jù)庫協(xié)調(diào)并發(fā)訪問的核心機制,通過控制共享資源的訪問規(guī)則,確保數(shù)據(jù)一致性和事務(wù)隔離性。MySQL的鎖機制由存儲引擎實現(xiàn)(如InnoDB),主要分為?共享鎖(S鎖)?和?排他鎖(X鎖)?兩類。鎖的粒度可分為行級鎖、頁級鎖和表級鎖。InnoDB鎖機制的核心特性:(1)MVCC(多版本并發(fā)控制)。通過版本鏈實現(xiàn)非鎖定讀(如普通SELECT),提升讀并發(fā)性能,避免與寫操作沖突。(2)死鎖處理。InnoDB自動檢測死鎖(如等待圖算法),并強制回滾代價較小的事務(wù)。(3)?鎖升級機制。InnoDB無需鎖升級(單個鎖與多個鎖開

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論