版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
習(xí)題1
1.什么是數(shù)據(jù)?什么是信息?什么是數(shù)據(jù)處理?
數(shù)據(jù)是指存儲(chǔ)在某一種媒體上的能夠識(shí)別的物理符號(hào),用來記錄事物的情況,用類型和值
來表征。不同的數(shù)據(jù)類型,記錄的事物性質(zhì)不同。
信息是經(jīng)過加工處理的有用的數(shù)據(jù)。數(shù)據(jù)只有經(jīng)過提煉和抽象變成有用的數(shù)據(jù)才能成為
信息。信息仍以數(shù)據(jù)的形式表現(xiàn)。
數(shù)據(jù)處理是指將數(shù)據(jù)加工轉(zhuǎn)換成信息的過程。數(shù)據(jù)處理也叫信息處理。通過處理數(shù)據(jù)可
以獲得信息,通過分析和篩選信息可以產(chǎn)生決策。
2.什么是數(shù)據(jù)庫管理系統(tǒng)?什么是數(shù)據(jù)庫?什么是數(shù)據(jù)庫應(yīng)用系統(tǒng)?什么是數(shù)據(jù)庫系
統(tǒng)?
數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementsystem,簡稱DBMS)是用戶和操作系統(tǒng)之間的數(shù)
據(jù)管理軟件,用于管理和組織數(shù)據(jù)庫的創(chuàng)建、訪問、操作和維護(hù)。
數(shù)據(jù)庫(Database,簡稱DB)是指長期存儲(chǔ)在計(jì)算機(jī)內(nèi)的,按一定數(shù)據(jù)模型組織、存儲(chǔ)、
管理、可共享的數(shù)據(jù)集合,它包含了數(shù)據(jù)的結(jié)構(gòu)、關(guān)系和約束等信息。
數(shù)據(jù)庫應(yīng)用系統(tǒng)是基于數(shù)據(jù)庫的應(yīng)用軟件系統(tǒng),通過對數(shù)據(jù)庫的操作和管理來實(shí)現(xiàn)特定
的業(yè)務(wù)功能。
數(shù)據(jù)庫系統(tǒng)(Databasesystem,簡稱DBS)是由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫應(yīng)用系統(tǒng)
組成的集成系統(tǒng),它是由硬件、軟件、數(shù)據(jù)和人員組合起來為用戶提供信息服務(wù)的系統(tǒng),是
存儲(chǔ)介質(zhì)、處理對象和管理系統(tǒng)的集合體。
3.什么是數(shù)據(jù)庫系統(tǒng)的三級(jí)模式結(jié)構(gòu)?并畫圖表示。
數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)是按三級(jí)結(jié)構(gòu)、二級(jí)映象來組織的,以滿足不同層次的用戶對數(shù)據(jù)的
需求。這個(gè)結(jié)構(gòu)稱為數(shù)據(jù)庫的體系結(jié)構(gòu),也稱三級(jí)模式結(jié)構(gòu)。這種結(jié)構(gòu)是從數(shù)據(jù)庫管理系統(tǒng)的
角度來看的,是數(shù)據(jù)庫系統(tǒng)內(nèi)部的體系結(jié)構(gòu)。三級(jí)模式(外模式、模式、內(nèi)模式)是對數(shù)據(jù)的三
個(gè)抽象級(jí)別,二級(jí)映象在DBMS內(nèi)部實(shí)現(xiàn)這三個(gè)抽象層次的聯(lián)系和轉(zhuǎn)換。
4.信息有哪三種世界?分別具有什么特點(diǎn)?它們之間有什么聯(lián)系?
信息分為現(xiàn)實(shí)世界、信息世界、U算機(jī)世界。
信息的現(xiàn)實(shí)世界是指人們要管理的客觀存在的各種事物、事務(wù)之間的相互聯(lián)系及事物的
發(fā)生、變化過程。它客觀存在而不依賴于人們的思想。
信息世界是現(xiàn)實(shí)世界在人們頭腦中的反映,人們用思維,以現(xiàn)實(shí)世界為基礎(chǔ)作進(jìn)一步的抽
象,對事物進(jìn)行選擇、命名、分類等抽象工作之后,并用文字符號(hào)表示出來,就形成了信息世界。
計(jì)算機(jī)世界是將信息世界中的信息經(jīng)過人們的抽象和組織,按照特定的數(shù)據(jù)結(jié)構(gòu),即數(shù)據(jù)
模型,將數(shù)據(jù)存儲(chǔ)在計(jì)算機(jī)中。
信息的三種世界之間是可以進(jìn)行轉(zhuǎn)換的。人們常常首先將現(xiàn)實(shí)世界中客觀存在的事物或
對象抽象為某一種信息結(jié)構(gòu),這種結(jié)構(gòu)并不依賴于計(jì)算機(jī)系統(tǒng),是人們認(rèn)識(shí)的概念模型。然后再
將概念模型轉(zhuǎn)換為計(jì)算機(jī)上某一具體的DBMS支持的數(shù)據(jù)模型。
5.解釋概念模型中常用的概念:實(shí)體、屬性、碼、域、實(shí)體型、實(shí)體集、聯(lián)系。
實(shí)體:客觀存在并且可以互相區(qū)別的事物稱為實(shí)體。
屬性:實(shí)體所具有的某一特征稱為屬性。
碼:能在一個(gè)實(shí)體集中惟一標(biāo)識(shí)一個(gè)實(shí)體的屬性稱為碼。
域:某個(gè)(些)屬性的取值范圍稱為該屬性的域。
實(shí)體型:用實(shí)體名及其屬性名集合來抽象和刻畫的同類實(shí)體,稱為實(shí)體型。
實(shí)體集:同類型的實(shí)體集合稱為實(shí)體集。
聯(lián)系:聯(lián)系在信息世界中反映為實(shí)體(型)內(nèi)部的聯(lián)系和實(shí)體(型)之間的聯(lián)系。
?91?
習(xí)題2
1.簡述關(guān)系模型的完整性規(guī)則。
關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件。關(guān)系模型中可以有三類完整性約束:
實(shí)體完整性、參照完整性和用戶定義的完整性。其中實(shí)體完整性和參照完整性是關(guān)系模型必
須滿足的完整性約束條件,被稱做是關(guān)系的兩個(gè)不變性,應(yīng)該由關(guān)系系統(tǒng)自動(dòng)支持。
2.關(guān)系具有什么特點(diǎn)?
通常將關(guān)系模型成為關(guān)系或表,一個(gè)關(guān)系對應(yīng)一張二維表。
3.什么是關(guān)系規(guī)范化?美系規(guī)范化的目的是什么?關(guān)系規(guī)范化的基本方法是什么?INF至
BCNF,它們之間的關(guān)系是什么?
一個(gè)低一級(jí)范式的關(guān)系模式,通過分解可以轉(zhuǎn)換為若干個(gè)高一級(jí)范式的關(guān)系模式,這種過
程稱為關(guān)系的規(guī)范化。
關(guān)系的規(guī)范化主要目的是解決數(shù)據(jù)庫中數(shù)據(jù)冗余、插入異常、刪除異常和更新異常等數(shù)
據(jù)存儲(chǔ)問題。
關(guān)系規(guī)范化的基本方法是逐步消除關(guān)系模式中不合適的數(shù)據(jù)依賴,使關(guān)系模式達(dá)到某種
程度的分離,也就是說,不要將若干事物混在一起,而要彼此分開,用個(gè)關(guān)系表示一事或一
物,所以,規(guī)范化的過程也被認(rèn)為是“單一化”的過程。
從第一范式至BCNF,它們之間的關(guān)系是BCNFq3NFG2NFqiNFo從第一范式到第二范式,
消除了非主屬性對碼的部分函數(shù)依賴;從第二范式到第三范式,消除了非主屬性對碼的傳遞
函數(shù)依賴;從第三范式到BCNF,消除了關(guān)系中冗余的碼。
4.指出下列關(guān)系各屬于第幾范式。
1)學(xué)生(學(xué)號(hào),姓名,課程號(hào),成績);
2)學(xué)生(學(xué)號(hào),姓名,性別);
3)學(xué)生(學(xué)號(hào),姓名,院系名,院系地址);
4)員工(員工編號(hào),基本工資,崗位級(jí)別,崗位工資,獎(jiǎng)金,工資總額);
5)供應(yīng)商(供應(yīng)商編號(hào),零件號(hào),零件名,單價(jià),數(shù)量)。
答:
1)學(xué)生(學(xué)號(hào),姓名,課程號(hào),成績);
該關(guān)系屬于第二范式。因?yàn)閷W(xué)生的成績是依賴于學(xué)生和課程的關(guān)系,不是學(xué)生的屬性,
所以需要將其拆分成兩個(gè)關(guān)系:學(xué)生(學(xué)號(hào),姓名)和成績(學(xué)號(hào),課程號(hào),成績)。
2)學(xué)生(學(xué)號(hào),姓名,性別);
該關(guān)系屬于第一范式。每個(gè)屬性都是原子的,沒有重復(fù)的屬性。
3)學(xué)生(學(xué)號(hào),姓名,院系名,院系地址);
習(xí)題3
1.通過系統(tǒng)服務(wù)管理器啟動(dòng)或停止MySQL服務(wù)。
1)打開命令提示符或終端窗口,以管理員身份運(yùn)行。
2)輸入以下命令啟動(dòng)MySQL服務(wù):
在Windows上,輸入netstartmysql
如果MySQL服務(wù)已經(jīng)在運(yùn)行,可以使用以下命令停止MySQL服務(wù):
3)在Windows上,輸入netstopmysql。
2.通過MySQL的命令行客戶端程序先登錄MySQL服務(wù)器,再退出MySQL。
要通過MySQL的命令行客戶端程序登錄MySQL服務(wù)器并退出,可以按照以下步驟進(jìn)行
操作:
1)打開命令提示符或終端窗口。
2)輸入以下命令以登錄MySQL服務(wù)器:
mysql-u用戶名-p
其中,“用戶名”是你在MySQL服務(wù)器上的用戶名。執(zhí)行該命令后,系統(tǒng)會(huì)提示你輸入
密碼。
3)輸入密碼并按下回車鍵。如果密碼正確,你將成功登錄到MySQL服務(wù)器,并且命令
行提示符會(huì)變?yōu)閙ysql>o
4)在MySQL服務(wù)器上執(zhí)行你需要的操作,例如執(zhí)行SQL查詢、創(chuàng)建數(shù)據(jù)庫等。
5)當(dāng)你完成操作后,可以使用以下命令退出MySQL客戶端程序:
exit
或者按下Ctrl+D組合鍵。
3.在命令提示符窗口中,如何以管理員身份登錄MySQL服務(wù)器,使用什么命令?
使用以下命令:
mysql-uroot-p
其中,root是MySQL服務(wù)器上的管理員賬戶名。執(zhí)行該命令后,系統(tǒng)會(huì)提示你輸入密
碼,
習(xí)題4
1.使用MySQLCommandLineClient登錄MySQL服務(wù)器,先用SQL語句創(chuàng)建book數(shù)據(jù)
庫,再查看MySQL系統(tǒng)中還存在哪些數(shù)據(jù)庫,查看支持的存儲(chǔ)引擎類型。
I)打開命令提示符或終端窗口。
2)輸入以下命令以登錄MySQL服務(wù)器:
mysql-u用戶名-p
其中,“用戶名”是你在MySQL服務(wù)器上的用戶名。執(zhí)行該命令后,系統(tǒng)會(huì)提示你輸入
密沼。
3)輸入密碼并按下回車鍵。如果密碼正確,你將成功登錄到MySQL服務(wù)器,并且命令
行提示符會(huì)變?yōu)椤癿ysql>"。
4)使用以下SQL語句創(chuàng)建名為book的數(shù)據(jù)庫:
CREATEDATABASEbook;
5)使用以下SQL語句查看MySQL系統(tǒng)中存在的數(shù)據(jù)庫:
SHOWDATABASES;
6)使用以下SQL語句查看支持的存儲(chǔ)引擎類型:
SHOWENGINES;
2.在NavicatforMySQL中,先使用SQL語句創(chuàng)建salary_managemen數(shù)據(jù)庫,再使用
菜單方式刪除salary_managemen數(shù)據(jù)庫。
CREATEDATABASEsalary_managemen;
?6?
習(xí)題5
有一個(gè)員工工資管理數(shù)據(jù)庫salary_managemen,包括三個(gè)表:部門表department>員工
表employee和工資表salary,這三個(gè)表的結(jié)構(gòu)見表5-8、表5-9和表5-10。
表5-8部門表department的結(jié)構(gòu)
歹IJ名數(shù)據(jù)類型約束說明
部門編號(hào)定長字符串,長度為2主犍,非空值部門編號(hào):2位數(shù)字
部門名變長字符串,長度為2。非空值部門名:2U個(gè)字符
負(fù)責(zé)人變長字符串,長度為I0空值部門負(fù)責(zé)人:I0個(gè)字符
人數(shù)整數(shù)類型空值部門人數(shù)INT
表5-9員工表employee的結(jié)構(gòu)
列名數(shù)據(jù)類型約束說明
部門編號(hào)定長字符串,長度為2非空值部門編號(hào)
員工編號(hào)定長字符串,長度為4主鍵,非空值員工編號(hào),4位數(shù)字
姓名變長字符串,長度為10非空值姓名
性別定長字符串,長度為】非空值件別
續(xù)表
歹U名數(shù)據(jù)類型約束說明
生日DATE生日
入職時(shí)間DATE入職時(shí)間
離職時(shí)間DATE離職時(shí)間
在職狀態(tài)定長字符串,長度為2在職狀態(tài):在職、離職、休假
表5-10工資表salary的結(jié)構(gòu)
歹IJ名數(shù)據(jù)類型約束說明
部門編號(hào)定長字符串,長度為2非空值部門編號(hào)
員工編號(hào)定長字符串,長度為4非空值員工編號(hào)
姓名變長字符串,長度為10非空值姓名
年月標(biāo)識(shí)DATE非空值年月標(biāo)識(shí)
基本工資DECIMAL(10,2)崗位工資
績效工資DECIMAL(10,2)績效工資
補(bǔ)貼DECIMAL(10.2)補(bǔ)貼
扣款DECIMAU10.2)扣款
應(yīng)發(fā)工資DECIMAL/10.2)應(yīng)發(fā)工資
社保代扣DECIMALS0,2)社保代扣
實(shí)發(fā)工資DECIMAL(10,2)結(jié)算實(shí)發(fā)
1.用SQL語句創(chuàng)建數(shù)據(jù)庫salary_managcmcno
CREATEDATABASEsalary_managemen;
2.用SQL語句創(chuàng)建3個(gè)表:部門表department>員工表employee和工資表salary,存
儲(chǔ)引擎和字符編碼均采用默認(rèn)值。
USEsalary_managemen;
DROPTABLEIFEXISTSdepartment;
CREATETABLEdepartment
(
部門編號(hào)CHAR(2)PRIMARYKEYNOTNULL,
部門名VARCHARQO)NOTNULL,
負(fù)責(zé)人VARCHAR(IO),
人數(shù)INT
DROPTABLEIFEXISTSemployee;
CREATETABLEemployee
(
部門編號(hào)CHAR(2)NOTNULL,
員工編號(hào)CHAR(4)PRIMARYKEYNOTNULL,
姓名VARCHAR(IO)NOTNULL,
才生別CHAR(l)NOTNULL,
生日DATE,
入職時(shí)間DATE,
離職時(shí)間DATE,
在職狀態(tài)CHAR(2)
DROPTABLEIFEXISTSsalary;
CREATETABLEsalary
(
部門編號(hào)CHAR(2)NOTNULL,
員工編號(hào)CHAR(4)NOTNULL,
姓名VARCHAR(IO)NOTNULL,
年月標(biāo)識(shí)DATENOTNULL,
基本工資DECIMAL。0,2),
績效工資DECIMAL。0,2),
補(bǔ)貼DECIMAL。0,2),
扣款DECIMAL。0,2),
?8?
應(yīng)發(fā)工資DECIMAL410,2),
社保代扣DECIMAL。0,2),
實(shí)發(fā)工資DECIMAL(10,2)
習(xí)題6
重新定義員工工資管理數(shù)據(jù)庫salary_managemen中的表利聯(lián)系,包括部門表department
員工表employee和工資表salary。這三個(gè)表的結(jié)構(gòu)見表6-3、表6-4和表6-5。
表6-3部門表department的結(jié)構(gòu)
歹IJ名數(shù)據(jù)類型約束說明
部門編號(hào)定長字符串,K度為2主鍵部門編號(hào):2位數(shù)字
部門名變長字符串,長度為20非空值部門名:20個(gè)字符
負(fù)W人變長字符串,長度為10空值部門負(fù)責(zé)人:10個(gè)字符
人數(shù)整數(shù)類型空值部門人數(shù)INT
表6-4員工表employee的結(jié)構(gòu)
歹U名數(shù)據(jù)類型約束說明
部門編號(hào)定長字符串,長度為2外鍵部門編號(hào)
員工編號(hào)定長字符串,長度為4主鍵員工編號(hào):4位數(shù)字
姓名變長字符串,長度為10非空值姓名
性別定長字符串,長度為1非空值,默認(rèn)男性別狀態(tài):男、女
生日DATE檢查約束,生日生日
入職時(shí)間DATE入職時(shí)間
離職時(shí)間DATE檢查約束,離職時(shí)間大于入職時(shí)間離職時(shí)間
在職狀態(tài)定長字符串,長度為2默認(rèn)值約束,默認(rèn)在職在職狀態(tài):在職、離職、休假
表6-5工資表salary的結(jié)構(gòu)
歹U名數(shù)據(jù)類型約束說明
部門編號(hào)定長字符串,長度為2外鍵部門編號(hào)
員工編號(hào)定長字符串,長度為4主鍵員工編號(hào)
姓名變長字符串,氏度為10非空值姓名
年月標(biāo)識(shí)DATE主鍵年月標(biāo)識(shí)
基本工資DECIMAL。0,2)崗位工資
績效工資DECIMAL。0,2)績效工資
補(bǔ)貼DECIMAL(IO,2)補(bǔ)貼
扣款DECIMAL(IO,2)扣款
應(yīng)發(fā)工資DECIMAL(IO,2)應(yīng)發(fā)工資
社保代扣DECIMAL(IO,2)社保代扣
實(shí)發(fā)工資DECIMAL(10.2)結(jié)算實(shí)發(fā)
1.用SQL語句創(chuàng)建數(shù)據(jù)庫salary_managemen
?10?
DROPDATABASEIFEXISTSsalary_managemen;
CREATEDATABASEsalary_managemen;
2.用SQL語句創(chuàng)建上述三個(gè)表,即部門表departments員工表employee和工資表salary,
存儲(chǔ)引擎和字符編碼都采用默認(rèn)值。
USEsalary_managemen;
DROPTABLEIFEXISTSdepartment;
CREATETABLEdepartment
(
部門編號(hào)CHAR(2)PRIMARYKEY,
部門名VARCHAR(20)NOTNULL,
負(fù)責(zé)人VARCHAR(IO),
人數(shù)INT
DROPTABLEIFEXISTSemployee;
CREATETABLEemployee
(
部門編號(hào)CHAR(2)REFERENCESdepartment(部門編號(hào))ONUPDATERESTRICT
ONDELETERESTRICT,
員工編號(hào)CHAR(4)PRIMARYKEY,
姓名VARCHAR(IO)NOTNULL,
性別ENUMC男;女)NOTNULLDEFAULT'男二
生日DATECHECK(生日>,1970-1-I1),#列級(jí)只能引用本列的字段
入職時(shí)間DATE,
離職時(shí)間DATE,
在職狀態(tài)ENUM('在職'離職'休假')NOTNULLDEFAULT'在職',
CONSTRAINTCK_employeeCHECK(離職時(shí)間〉入職時(shí)間)
DROPTABLEIFEXISTSsalary;
CREATETABLEsalary(
部門編號(hào)CHAR(2),
員工編號(hào)CHAR⑷,
姓名VARCHAR(IO)NOTNULL,
年月標(biāo)識(shí)DATE,
基本工資DECIMAL。0,2),
績效工資DECIMAL/10,2),
補(bǔ)貼DECIMAL。0,2),
扣款DECIMALS0,2),
應(yīng)發(fā)工資DECIMAL。0,2),
社保代扣DECIMAL。0,2),
實(shí)發(fā)工資DECIMALS0,2),
CONSTRAINTPK^salaryPRIMARYKEY(員工編號(hào),年月標(biāo)識(shí)),
CONSTRAINTFK_salaryFOREIGNKEY(音B門編號(hào))REFERENCESdepartment(部門
編號(hào))ONUPDATECASCADEONDELETECASCADE
);
3.先顯示salary表的外鍵約束,然后刪除salary表的外鍵約束;再顯示salary表表的創(chuàng)
建語句,最后再添加該表的外鍵約束。
1)在MySQL中,可以使用以下SQL語句來顯示salary表的外鍵約束:
SHOWCREATETABLEsalary;
執(zhí)行以上語句后,將會(huì)顯示salary表的創(chuàng)建語句,其中包含了外鍵約束的定義。
2)刪除salary表的外鍵約束:
ALTERTABLEsalaryDROPFOREIGNKEYFK.salary;
3)再顯示salary表表的創(chuàng)建語句:
SHOWCREATETABLEsalary;
4)添加該表的外鍵約束:
ALTERTABLEsalary
ADDCONSTRAINTFK_salaryFOREIGNKEY(部門編號(hào))REFERENCES
departmenl(部門編號(hào))ONUPDATECASCADEONDELETECASCADE;
?12?
習(xí)題7
1.員工工資管理數(shù)據(jù)庫salary_managemen中3個(gè)表的記錄分別見表7-5、表7-6和表7-7o
表7-5department表中的記錄
部門編號(hào)部門名負(fù)責(zé)人人數(shù)
II人力部劉一5
21研發(fā)部李四60
31市場都周八40
41財(cái)務(wù)部吳九3
表7-6employee表中的記錄
部門編號(hào)員工編號(hào)姓名性別生日入職時(shí)間離職時(shí)間在職狀態(tài)
111132劉一女1998-10-232021-04-10在職
111152除一女1995-09-122020-05-15在職
II1163張三男1992-12-252021-08-012022-04-30離職
212151李匹男1990-07-082020-11-01在職
212175王五男1992-05-072021-03-01在職
212192趙六女1998-06-152021-05-012022-03-31離職
313121孫七女1996-10-142020-08-10在職
313122周八女1998-09-202021-04-01在職
414125吳九女1997-12-282022-06-19在職
414128鄭十女1991-11-192022-08-01在職
表7-7salary表中的記錄
部門編號(hào)員工編號(hào)姓名年月標(biāo)識(shí)基本工資績效工資補(bǔ)貼扣款應(yīng)發(fā)工資社保代扣實(shí)發(fā)工資
II1132劉一2022-05-01300040002000-500
II1152陳二2022-05-013(X)()4(XM)100()-50()
111163張三2022-05-01300040001000-500
212151李四2022-05-01400050003000-500
212175王五2022-05-01400050002000-500
212192趙六2022-05-01400050001000-500
313121孫七2022-05-015(X)06(XX)200()-500
313122周八2022-05-015(X)()6(X)()20()()-50()
414125吳九2022-05-01600070003000-500
414128鄭十2022-05-01600070002000-500
II1132劉一2022-06-01300040003000-500
111152陳二2022-06-01300040001000-500
212151李四2022-06-014(X)05(X)()20()()-50()
212175王五2022-()6-014(X)05(X)()20()()-50()
313121孫七2022-06-01500060003000-600
313122周八2022-06-01500060002000-600
414125吳九2022-06-01600070003000-800
414128鄭十2022-06-01600070002000-800
用SQL語句插入表中所有記錄。
USEsalary_managemen;
INSERTINTOd叩anmem(部門編號(hào),部門名,負(fù)責(zé)人,人數(shù))
VALUES
人力部劉一5),
C21」研發(fā)部/李四:60),
(3市場部:周八140),
('417財(cái)務(wù)部7吳九;3);
INSERTINTOemployee(部門編號(hào),員工編號(hào),姓名,性別,生日,入職時(shí)間,離職時(shí)間,
在職狀態(tài))
VALUES
('1171132','劉一','女','1998-10-23','2021-04-10',NULLJ在職)
('1「,’1152','陳二','女','1995-09-12','2020-05-15',NULL,,在職),
('11','1163','張三','男丁1992-12-25;'2021-08-01','2022-04-30','離職'),
('2'2151「李四「男’1990-07-08','2020-11-0NULL,'在職'),
('21',‘2175’,‘王五','男',’1992-05-07丁2021-03-0「,NULL」在職)
('21丁2192」趙六丁女71998-06-1572021-05-01','2022-03-31丁離職'),
('31,‘3121’,'孫七丁女丁1996-10-14丁2020-0800',NULL,'在職'),
('31丁3122丁周八「女’1998-09-20','2021-04-01',NULLJ在職)
('41,‘4125’,'吳九丁女丁1997?12?28','2022?06?19',NULL,'在職'),
('41',‘4128‘,‘鄭十‘,‘女',’1991-11-19','2022-08-01',NULL,'在職');
INSERTINTOsalary(部門編號(hào),員工編號(hào),姓名,年月標(biāo)識(shí),基本工資,績效工資,補(bǔ)貼,
扣款)
VALUES
('1「,’1132','劉一','2022-05-01','3000','4000','2000','-500'),
('1「,’1152','陳二','2022-05-01','3000',4000','1000','-500'),
('1「,’1163','張三','2022-05-01','3000','4000','1000','-500'),
C2r,'215T,*2022-05-01;'40001,'5000','3000','-500'),
C2T,,2175;'3E5L;,2022-05-01;'4000;'5000',,2000','-500'),
?14?
('21\'2192',A','2022-05-01;'4000','5000','1000','-500'),
OV,3121','2022-05-01;'5000','6000;'2000;'-5001),
⑶,,'3122「周八「2022-05-01丁5000「6000丁2000「-500)
('4「,'4125/吳九'2022-05-01','6000丁7000」3000「500'),
('41',4128','鄭十'2022-05-01','6000丁7000','2000','-500'),
(IT,'1132',^lj—\'2022-06-0r,3000','4000',3000,,,-500,),
('1一,'1152','陳二'2022-06-01','3000','4000','1000','-500'),
(2r,1215r,'2022-06-0r,'4000','5000;2000','-500'),
('21J2175','王五','2022?06?01','4000','5000','2000','-500'),
(3T,13121','2022-06-01;'5000','6000\'SOOO1,'-600'),
(311,,3122','2022-06-01;'50001,'6000;7000','-6001),
('41','4125丁吳九丁2022-06-01'6000丁7000「3000丁-800'),
(14r,4128','2022-06-Or,'6000','7000\^OOO1,'-800');
2.在salary表中,計(jì)算年月標(biāo)識(shí)為2022-05-01的所有記錄,計(jì)算方法如下:
應(yīng)發(fā)工資=基本工資+績效工資+補(bǔ)貼?扣款
假設(shè):社保代扣=(基本工資+績效工資+補(bǔ)貼)*30%
實(shí)發(fā)工資=應(yīng)發(fā)工資?社保代扣
寫出實(shí)現(xiàn)以上功能的SQL語句。
UPDATEsalary
SET應(yīng)發(fā)工資=基本工資+績效工資+補(bǔ)貼-扣款,
社保代扣=(基本工資+績效工資+補(bǔ)貼)*0.30,
實(shí)發(fā)工資=應(yīng)發(fā)工資-社保代扣
WHERE年月標(biāo)識(shí)=,2022-05-01';
習(xí)題8
1.在salary_managemen數(shù)據(jù)庫中,查詢employee表中的所有記錄。
USEsalary_managcmcn;
SELECT*FROMemployee;
2.查詢employee表中的“員工編號(hào)”、“姓名”、“性別”和“生口”列的所有記錄。
SELECT員工編號(hào),姓名,性別,生日FROMemployee;
3.在employee表中查詢“入職時(shí)間”在2021年以前的員工記錄。
SELECT*FROMemployeeWHEREYEAR(入職時(shí)間)<2021;
4.在salary表中,查詢“基本工資”在4000?5000元范圍內(nèi)的員工記錄,并顯示“部
門名”。
SELECTsalary.部門編號(hào),department.部門名,員工編號(hào),姓名,年月標(biāo)識(shí),基本工資,績
效工資,補(bǔ)貼,扣款,應(yīng)發(fā)工資,社保代扣,實(shí)發(fā)工資
FROMsalaryINNERJOINdepartment
ONsalary.部門編號(hào)二deparlmenl.部門編號(hào)
WHERE基本工資BETWEEN4000AND5000;
?16?
習(xí)題9
1.在salary_managemen數(shù)據(jù)庫的department表中,定義“部門編號(hào)”為唯一索引,以
升序排列。然后查看在department表上的索引。
USEsalary_managemen;
CREATEUNIQUEINDEXdep_noONdeparlment(部門編號(hào)ASC);
SHOWINDEXFROMdeparlment;
2.在employee表中,創(chuàng)建“部門編號(hào)”和“員工編號(hào)”的多歹U索弓I。然后查看在employee
表上的索引。
CREATEINDEXdep_empONemployee(部門編號(hào),員工編號(hào));
SHOWINDEXFROMemployee;
習(xí)題10
1.在salary_managemen數(shù)據(jù)庫的employee表中,創(chuàng)建名為view_employee的視圖,要
求該視圖包含employee表上所有列和在職員工的記錄,且要求今后對該視圖數(shù)據(jù)的修改都必
須符合這個(gè)條件。
USEsalary_managemen;
DROPVIEWIFEXISTSview_employee;
CREATEVIEWview_employee
ASSELECT*FROMemployeeWHERE在職狀態(tài)二'在職,
WITHCHECKOPTION;
2.使用view_employee觀圖統(tǒng)計(jì)每個(gè)部門的員工人數(shù)。
SELECT部門編號(hào),COUNT(*)人數(shù)FROMview_employee
GROUPBY部門編號(hào);
?18?
習(xí)題11
1.在salary_managemen數(shù)據(jù)庫中,創(chuàng)建自定義函數(shù),給定姓名,并返回該員工編號(hào)。
USEsalary_managcmcn;
CREATEFUNCTIONfu_gel_id(nameCHAR(IO))
RETURNSCHAR(4)#返回的員工編號(hào)的字符串寬度
DETERMINISTIC
BEGIN
DECLAREemp_idCHAR(4);#返回的員工編號(hào)
SELECT員工編號(hào)INTOemp.idFROMemployeeWHERE姓名二name;
IFemp_idISNULLTHEN
RETURN'沒有該員工';
ELSE
RETURNemp_id;#返|§1字符串
ENDIF;
END
SELECTfu_get」d('張三
2.創(chuàng)建自定義函數(shù),給定部門編號(hào),并返回該部門的部門名、負(fù)責(zé)人和人數(shù)。
CREATEFUNCTIONfu_get_dep(dep_idCHAR(2))
RETURNSCHAR(50)#返回的部門信息字符串的寬度
DETERMINISTIC
BEGIN
DECLAREdep.messageCHAR(50);#返回的部門信息
DECLAREdep_name,dep_headCHAR(20);
DECLAREdep_noINT;
SELECT部門名,負(fù)責(zé)人,人數(shù)INTOdep_name,dep_head,dep_noFROMdepartment
WHERE部門編號(hào):dep_id;
IFdep_nameISNULLTHEN
RETURN'沒有該部門';
ELSE
SETdep_message=CONCAT(dep_id,dep_name,'負(fù)責(zé)人:',dep_head,,人
數(shù):\dep_no);#連接字符串并賦值
RETURNdep_message;#返回的部門信息字符串
ENDIF;
END;
SELECTfu_get_dep('31');
習(xí)題12
1.在salary_managemen數(shù)據(jù)庫中,創(chuàng)建存儲(chǔ)過程,給定員工編號(hào),查詢其全部工資記
錄,
CREATEPROCEDUREpr_id(INemp_idCHAR(4))
READSSQLDATA
COMMEN「給定員工編號(hào),查詢其全部工資記錄,
BEGIN
SELECT*FROMsalaryWHERE員工編號(hào)一emp_id;
END;
CALLpr_id('1152');
2.創(chuàng)建存儲(chǔ)過程,給定部門編號(hào),在employee表中統(tǒng)計(jì)該部門在職人數(shù)并顯示。
CREATEPROCEDUREpr_emp(INdep_idCHAR(2),OUTdep_noINT)
DETERMINISTIC
BEGIN
SELECTCOUNTS)INTOdep_noFROMemployee
WHERE部門編號(hào)二dep_idAND在職狀態(tài)二'在職';
END;
SET@d_id='21';
SET@d_no=();
CALLpr_emp(@d_id,@d_no);
SELECT@d_no;
3.創(chuàng)建存儲(chǔ)過程,在employee表中統(tǒng)計(jì)所有部門的在職人數(shù),并保存到department
表中。
UPDATEdepartment
SET人數(shù)=(
SELECTCOUNT。
FROMemployee
WHEREemployee.部門編號(hào)=department.部門編號(hào)ANDemployee.在職狀態(tài)='在
職,
);
CREATEPROCEDUREpr_calculatcEmployccCount()
BEGIN
UPDATEdepartment
?20?
SET人數(shù)二(
SELECTCOUNT(*)
FROMemployee
WHEREemployee.部門編號(hào)=d叩ailment.部門編號(hào)ANDemployee.在職狀態(tài)
二'在職,
);
END;
這個(gè)存儲(chǔ)過程使用了子查詢來統(tǒng)計(jì)每個(gè)部門的在職人數(shù),并將結(jié)果更新到department表
中的“人數(shù)”字段中。子查詢中的條件是employee表中的“部門編號(hào)”與外部查詢中的
department表中的“部門編號(hào)”相匹配。
CALLpr_calculateEmployeeCount();
SELECT*FROMdepartment;
4.創(chuàng)建存儲(chǔ)過程,計(jì)算所有員工的應(yīng)發(fā)工資、實(shí)發(fā)工資,并保存到salary表中。
CREATEPROCEDUREpr_salary_all()
READSSQLDATA
BEGIN
UPDATEsalarySET應(yīng)發(fā)工資=基本工資+績效工資+補(bǔ)貼-扣款,
社保代扣=(基本工資+績效工資+補(bǔ)貼)*0.30,
實(shí)發(fā)工資=應(yīng)發(fā)工資-社保代扣;
END;
CALLpr_salary_all();
5.創(chuàng)建存儲(chǔ)過程,在這個(gè)存儲(chǔ)過程中創(chuàng)建一個(gè)游標(biāo),在employee表中統(tǒng)計(jì)所有部門的
在職人數(shù),并保存到department表中。
CREATEPROCEDUREpr_calculateEmployeeCount_cur()
BEGIN
DECLAREdepartment_idINT;
DECLAREcmploycc_count1NT;
DECLAREdoneBOOLEANDEFAULTFALSE;
DECLAREcurCURSORFORSELECT部門編號(hào)FROMdepartment;
DECLARECONTINUEHANDLERFORNOTFOUNDSETdone=TRUE;
OPENcur;
read_loop:LOOP
FETCHcurINTOdepartment_id;
IFdoneTHEN
LEAVEread_loop;
ENDIF;
SELECTCOUNT(*)INTOemployee_countFROMemployee
WHERE部門編號(hào)=department_idAND在職狀態(tài)='在職';
UPDATEdepartmentSET人數(shù)=employee_count
WHERE部門編號(hào)=department_id;
ENDLOOP;
CLOSEcur;
END;
這個(gè)存儲(chǔ)過程會(huì)創(chuàng)建一個(gè)游標(biāo),遍歷department表中的每個(gè)部門,然后在employee表中
統(tǒng)計(jì)該部門的在職人數(shù),并將結(jié)果更新到department表中的“人數(shù)”字段中。
CALLpr_calculateEmpIoyeeCount_cur();
SELECT*FROMdepartment;
?22?
習(xí)題13
1.在salary_managemen數(shù)據(jù)庫中的employee表上定義一個(gè)觸發(fā)器tr_employee_delete,
當(dāng)該員工離職時(shí),把該員工的信息添加到被刪除員工記錄的表employee_delete中,然后刪除
employee表中該員工的記錄。
USEsalary_managemen;
-創(chuàng)建被刪除員工記錄的表employee_delete
CREATETABLEIFNOTEXISTSemployee_delete(
department_idCHAR(2),#部門編號(hào)
employee_idCHAR(4),#員工編號(hào)
employee_nameVARCHAR(10),#姓名
employee_sexCHAR(1),#性另1」
employee_birthdayDATE,#生日
entry_dateDATE,#入職時(shí)間
resignation_dateDATE#離職時(shí)間
);
SHOWTRIGGERS;
DROPTRIGGERIFEXISTStr_eniployee_delete;
-創(chuàng)建觸發(fā)器lr_employee_deleie
CREATETRIGGERtr_employee_delete
AFTERDELETEONemployee
FOREACHROW
BEGIN
INSERTINTOemployce_dclete(dcpartmcnt_id,cmployce_id,cmployce_name,
employee_sex,
employee_birthday,enlry_date,resignation_date)
VALUES(OLD.部門編號(hào),OLD.員工編號(hào),OLD.姓名,OLD.性別,OLD.生日,OLD.A
職時(shí)間,CURDATE。);
END;
以上代碼中,首先創(chuàng)建了一個(gè)名為empk)yee_delete的表,用于存儲(chǔ)被刪除員工的信息。
然后創(chuàng)建了一個(gè)名為tr_employee_delete的觸發(fā)器,當(dāng)employee表中的記錄被刪除時(shí),觸發(fā)
器會(huì)將被刪除員工的信息插入到employee_delete表中。
最后,通過執(zhí)行DELETE語句來刪除employee表中指定員工的記錄。指定要?jiǎng)h除的員
工的實(shí)際編號(hào)。
--刪除employee表中的員工記錄,刪除1163號(hào)員工,觸發(fā)執(zhí)行tr_employee_delete
DELETEFROMemployeeWHERE員工編號(hào)=,1163,;
—查看employee表中的記錄
SELECT*FROMemployee;
—查看cmploycc_dclctc表中的記錄
SELECT*FROMemplo)ee_delele;
2.創(chuàng)建事件ev_count,每月1日自動(dòng)計(jì)算每個(gè)部門的員工人數(shù),并更新到department
表中。
—?jiǎng)?chuàng)建事件ev_count
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度金融科技平臺(tái)技術(shù)服務(wù)合同范本2篇
- 2024房產(chǎn)異業(yè)聯(lián)盟合作合同樣本版B版
- 2024年跨境電商商鋪?zhàn)赓U及運(yùn)營合同3篇
- 2024年美食制作合作協(xié)議2篇
- 2024年度客運(yùn)站聘用班車司機(jī)勞動(dòng)合同(升級(jí)版)3篇
- 2024日照房屋租賃合同
- 三方商業(yè)地產(chǎn)轉(zhuǎn)租條款:正式協(xié)議版A版
- 2024年鏟車油料供應(yīng)與回收合同
- 2024購車所需民間借款合同
- 2024年限酒店前臺(tái)接待工作人員協(xié)議版
- 2024年世界職業(yè)院校技能大賽高職組“關(guān)務(wù)實(shí)務(wù)組”賽項(xiàng)參考試題庫(含答案)
- 超市項(xiàng)目投標(biāo)書模板
- 耐火材料行業(yè)競爭格局分析(如市場份額、競爭優(yōu)劣勢等)
- 倉儲(chǔ)配送合同范本
- 《機(jī)器學(xué)習(xí)(含實(shí)驗(yàn)實(shí)踐)》課程教學(xué)大綱(機(jī)械設(shè)計(jì)制造及其自動(dòng)化專業(yè))
- 食堂燃?xì)獍踩珜m?xiàng)培訓(xùn)
- 技術(shù)服務(wù)保障措施以及保障措施服務(wù)計(jì)劃書
- 【數(shù)學(xué)】小學(xué)四年級(jí)口算題大全(10000道)
- SIEMENS西門子SIMATICET200SP分布式I-O系統(tǒng)手冊
- 床旁教學(xué)方法
- 果膠與腸道菌群關(guān)聯(lián)
評(píng)論
0/150
提交評(píng)論