網(wǎng)絡(luò)數(shù)據(jù)庫技術(shù)課程實驗指導(dǎo)_第1頁
網(wǎng)絡(luò)數(shù)據(jù)庫技術(shù)課程實驗指導(dǎo)_第2頁
網(wǎng)絡(luò)數(shù)據(jù)庫技術(shù)課程實驗指導(dǎo)_第3頁
網(wǎng)絡(luò)數(shù)據(jù)庫技術(shù)課程實驗指導(dǎo)_第4頁
網(wǎng)絡(luò)數(shù)據(jù)庫技術(shù)課程實驗指導(dǎo)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE38遼東學(xué)院自編教材網(wǎng)絡(luò)數(shù)據(jù)庫技術(shù)實驗指導(dǎo)書魯琴編(信息管理與信息系統(tǒng)專業(yè)用)信息技術(shù)學(xué)院2013年12月目錄實驗1 認識MySQL 2實驗2 數(shù)據(jù)定義 4實驗3 表數(shù)據(jù)插入、修改和刪除 8實驗4 數(shù)據(jù)查詢 12實驗5 視圖 16實驗6 索引和數(shù)據(jù)完整性 19實驗7 MySQL語言結(jié)構(gòu) 23實驗8 過程式數(shù)據(jù)庫對象的使用 26實驗9 備份與恢復(fù) 30實驗10 數(shù)據(jù)庫的安全性 33實驗11 Oracle數(shù)據(jù)庫管理 36實驗12 Oracle數(shù)據(jù)庫開發(fā) 37

實驗1 認識MySQL實驗類型:驗證型實驗課時:2指導(dǎo)教師:時間:20年月日課次:第節(jié)教學(xué)周次:第周實驗分室:實驗臺號:實驗員:實驗?zāi)康模?.掌握MySQL服務(wù)器的安裝與配置方法2.掌握MySQL命令行客戶端的使用3.了解MySQL圖形界面工具的基本情況實驗要求:掌握數(shù)據(jù)庫的基本概念、方法和原理。實驗內(nèi)容:1.MySQL服務(wù)器的下載、安裝和配置2.MySQL命令行客戶端的使用3.認識MySQLWorkbench。實驗步驟:1.MySQL服務(wù)器的下載、安裝和配置(1)登錄MySQL官方網(wǎng)站下載專區(qū)(/downloads/)。(2)下載MySQLInstallerforWindows。(3)安裝(4)配置2.MySQL命令行客戶端的使用(1)MySQL服務(wù)啟動后,運行cmd命令,打開命令行模式。在命令行方式下,練習(xí)下面的命令。(2)連接MySQL服務(wù)器運行命令“Mysql-uroot-p”,按提示輸入root用戶密碼,就以root身份登錄到MySQL服務(wù)器。(3)查看mysql幫助菜單在mysql提示符后輸入“help;”或“\h”,屏幕即顯示mysql幫助菜單,仔細閱讀其中命令及說明。(4)與數(shù)據(jù)庫無關(guān)的簡單查詢查詢MySQL的版本號和當(dāng)前日期mysql>SELECTVERSION(),CURRENT_DATE;簡單計算mysql>SELECTSIN(PI()/4),(4+1)*5;(5)查看系統(tǒng)自帶數(shù)據(jù)庫mysql>showdatabases;(6)斷開MySQL服務(wù)器連接可以在MySQL提示符下用命令QUIT(or\q)斷開連接。3.認識MySQLGUI工具—MySQLWorkbench思考題:1.當(dāng)前在MySQL官方網(wǎng)站上,能夠下載到的MySQLCommunityServer的版本號是多少。2.查看mysql幫助菜單,找到中斷當(dāng)前mysql命令的命令,并試作。3.實驗中遇到的問題及解決方法。

實驗2 數(shù)據(jù)定義實驗類型:驗證型實驗課時:1指導(dǎo)教師:時間:20年月日課次:第節(jié)教學(xué)周次:第周實驗分室:實驗臺號:實驗員:實驗?zāi)康模?.了解MySQL數(shù)據(jù)庫的存儲引擎的分類;2.了解表的結(jié)構(gòu)特點;3.了解MySQL的基本數(shù)據(jù)類型;4.了解空值概念;5.學(xué)會命令行方式和界面方式進行數(shù)據(jù)定義實驗要求:1.掌握數(shù)據(jù)庫設(shè)計的基本方法,設(shè)計用于企業(yè)管理的員工管理數(shù)據(jù)庫。2.創(chuàng)建用于企業(yè)管理的員工管理數(shù)據(jù)庫,確定數(shù)據(jù)庫中有哪些表,以及所包含的各表的結(jié)構(gòu),還要了解MySQL的常用數(shù)據(jù)類型。3.掌握數(shù)據(jù)定義相關(guān)SQL語句。實驗內(nèi)容:設(shè)計用于企業(yè)管理的員工管理數(shù)據(jù)庫用命令行方式創(chuàng)建數(shù)據(jù)庫和表用界面方式創(chuàng)建數(shù)據(jù)庫和表實驗步驟:設(shè)計用于企業(yè)管理的員工管理數(shù)據(jù)庫要建立企業(yè)管理系統(tǒng),對員工的基本信息(包括員工編號,姓名,性別,出生日期,學(xué)歷,參加工作時間,地址,電話號碼),部門基本信息(部門號,部門名,備注),以及員工薪水信息(薪水編號,收入,支出,年月)進行管理,根據(jù)要求設(shè)計數(shù)據(jù)庫。(1)畫出E-R圖(2)將E-R圖轉(zhuǎn)換為關(guān)系模式員工(員工編號,姓名,性別,出生日期,學(xué)歷,參加工作時間,地址,電話號碼,部門號)部門(部門號,部門名,備注)員工薪水(薪水編號,收入,支出,年月,員工編號)(3)確定各數(shù)據(jù)表的結(jié)構(gòu)要求:將下面三個表中帶底紋的空的單元格填上對應(yīng)的值。員工信息表:Employees列名數(shù)據(jù)類型長度是否允許為空說明EmployeeIDchar6No員工編號,主鍵Namevarchar10No姓名Sexchar1No性別BirthdaydateNo出生日期Educationchar4No學(xué)歷WorkYeardateYes參加工作時間Addressvarchar20Yes地址PhoneNumberchar12Yes電話號碼部門信息表:Departments列名數(shù)據(jù)類型長度是否允許為空說明DepartmentIDchar3No部門編號,主鍵DepartmentNamevarchar20No部門名NotetextYes備注員工薪水情況表:Salary列名數(shù)據(jù)類型長度是否允許為空說明SalaryIDchar12No薪水編號,主鍵InComefloatNo收入OutComefloatNo支出Timechar7No薪水年月2.使用SQL命令創(chuàng)建數(shù)據(jù)庫和表⑴使用SQL命令創(chuàng)建用于企業(yè)管理的員工管理數(shù)據(jù)庫YGGL打開MySQL命令行客戶端,輸入管理員密碼登錄,使用CREATE語句創(chuàng)建YGGL數(shù)據(jù)庫。CreatedatabaseYGGL;⑵使用命令行方式創(chuàng)建數(shù)據(jù)庫YGGL中各表首先將YGGL數(shù)據(jù)庫變成當(dāng)前活動的數(shù)據(jù)庫UseYGGL;創(chuàng)建部門信息表DepartmentsCreatetableDepartments(DepartmentIDchar(3)notnull,DepartmentNamevarchar(20)notnull,Notetext,Primarykey(DepartmentID));創(chuàng)建員工信息表EmployeesCreatetableEmployees(EmployeeIDchar(6)notnull,Namechar(10)notnull,Educationchar(4)notnull,Birthdaydatenotnull,Sexchar(2)notnulldefault1,WorkYeartinyint(1),Addressvarchar(20),PhoneNumberchar(12),DepartmentIDchar(3)notnull,Primarykey(EmployeeID),Foreignkey(DepartmentID)referencesDepartments(DepartmentID));建員工薪水情況表SalaryCreatetableSalary(SalaryIDchar(12)notnull,InComefloatnotnull,OutComefloatnotnull,Timechar(7)notnull,EmployeeIDchar(6)notnull,Primarykey(SalaryID),Foreignkey(EmployeeID)referencesEmployees(EmployeeID));建一個結(jié)構(gòu)與Employees表結(jié)構(gòu)相同的空表Employees1;CreatetableEmployees1(EmployeeIDchar(6)notnull,Namechar(10)nutnull,Educationchar(4)notnull,Birthdaydatenotnull,Sexchar(2)notnulldefault’1’,WorkYeartinyint(1),Addressvarchar(20),PhoneNumberchar(12),DepartmentIDchar(3)notnull,Primarykey(EmployeeID)Primarykey(DepartmentID));⑶使用命令刪除數(shù)據(jù)庫和表刪除表Employees1;DroptableEmployees1;刪除數(shù)據(jù)庫YGGL;DropdatabaseYGGL;3.使用界面工具創(chuàng)建數(shù)據(jù)庫YGGL和其中的表。⑴創(chuàng)建數(shù)據(jù)庫YGGL⑵創(chuàng)建數(shù)據(jù)庫YGGL中的表⑶刪除數(shù)據(jù)庫YGGL中的表⑷刪除數(shù)據(jù)庫YGGL思考題:1.當(dāng)創(chuàng)建數(shù)據(jù)庫YGGL時,其中的數(shù)據(jù)存儲在磁盤上什么位置?當(dāng)創(chuàng)建了三個數(shù)據(jù)表(Employees,Departments和Salary)時,其對應(yīng)的數(shù)據(jù)文件的名字分別是什么?2.什么是表的存儲引擎?在MySQL5.5.5.以前版本,默認的存儲引擎是MyISAM。在MySQL5.5.5以后,默認的存儲引擎是什么?3.實驗中遇到的問題及解決方法。

實驗3 表數(shù)據(jù)插入、修改和刪除實驗類型:驗證型實驗課時:1指導(dǎo)教師:時間:20年月日課次:第節(jié)教學(xué)周次:第周實驗分室:實驗臺號:實驗員:實驗?zāi)康模簩W(xué)會命令行方式和界面方式進行數(shù)據(jù)更新,包括數(shù)據(jù)插入、修改和刪除。實驗要求:掌握數(shù)據(jù)更新相關(guān)SQL語句,包括數(shù)據(jù)插入、修改和刪除。實驗內(nèi)容:1.命令行方式數(shù)據(jù)插入、修改和刪除。2.界面方式進行數(shù)據(jù)操縱,包括數(shù)據(jù)插入、修改和刪除。實驗準備:在實驗2中,用于實驗的YGGL數(shù)據(jù)庫中的3個表已經(jīng)建立,現(xiàn)在要將各表的樣本數(shù)據(jù)添加到各表中。樣本數(shù)據(jù)如表1,2,3所示。表1Employees表數(shù)據(jù)樣本編號姓名性別出生日期學(xué)歷參加工作時間住址電話部門號000001王林11966-01-23大專1989-07-23中山路32-1-508833556682010008伍容華11976-03-28本科1998-09-20北京東路100-2833213211020010王向容11982-12-09碩士2004-12-05四牌樓10-0-108837923611020018李麗01960-07-30大專1984-08-09中山東路102-2834133011102201劉明11972-10-18本科1995-10-08虎距路100-2836066085102208朱俊11965-09-28碩士1992-06-28牌樓巷5-3-106847088175108991鐘敏01979-08-10碩士2005-08-10中山路10-3-105833467223111006張石兵11974-10-01本科1996-09-01解放路34-1-203845634185210678林濤11977-04-02大專1977-04-02中山北路24-35834673363302566李玉珉11968-09-20本科1968-09-20熱和路209-3587659914308759葉凡11978-11-18本科1978-11-18北京西路3-7-52833089014504209陳林琳01969-09-03大專1969-09-03漢中路120-4-12844681584表2Departments表數(shù)據(jù)樣本部門號部門名稱備注部門號部門名稱備注1財務(wù)部Null4研發(fā)部Null2人力資源部Null5市場部Null3經(jīng)理辦公室Null表3Salary表數(shù)據(jù)樣本編號收入支出年月員工編號2012120000012100.8123.092012-120000012012120100081582.6288.032012-1201000820121202001028601982012-120200102012120200182347.681802012-120200182012121022012569.88185.652012-1210220120121210220819801002012-121022082012121089913259.98281.522012-121089912012121110061987.0179.582012-1211100620121221067822401212012-122106782012123025662980.7210.22012-123025662012123087592531.98199.082012-123087592012125042092066.151082012-125042092012110000012100.8120.092012-110000012012110100081582.6280.032012-1101000820121102001028602002012-110200102012110200182347.681902012-110200182012111022012569.881882012-1110220120121110220819801002012-111022082012111089913259.98280.522012-111089912012111110061987.01882012-1111100620121121067822401292012-112106782012113025662980.7222012-113025662012113087592531.981992012-113087592012115042092066.151102012-11504209實驗步驟:使用SQL語句向表中插入數(shù)據(jù)(1)INSERT命令向表中插入樣本數(shù)據(jù)。insertintodepartmentsvalues('1','財務(wù)部',null);insertintodepartmentsvalues('2','人力資源部',null);insertintodepartmentsvalues('3','經(jīng)理辦公室',null);insertintodepartmentsvalues('4','研發(fā)部',null);insertintodepartmentsvalues('5','市場部',null);insertintoemployeesvalues('000001','王林','大專','1966-01-23','1',8,'中山路32-1-508','83355668','2');insertintosalaryvalues('000001',2100.8,123.09,'2012-12','2');⑶REPLACE命令運行下面二條命令,將二者結(jié)果的不同總結(jié)一下,寫入下面紫色底紋部分。INSERTINTOemployees(EmployeeID,Name,Education,Birthday,Sex,WorkYear,Address,PhoneNumber,DepartmentID)VALUES('000001','李林','大專','1966-01-23','1','1986-01-23','中山路32-1-508','83355668','2');REPLACEINTOemployees(EmployeeID,Name,Education,Birthday,Sex,WorkYear,Address,PhoneNumber,DepartmentID)VALUES('000001','李林','大專','1966-01-23','1','1986-01-23','中山路32-1-508','83355668','2');使用SQL語句更新表數(shù)據(jù)將編號為’011112’的職工的收入改為2890Updatesalarysetincome=2890whereEmployeeID=’011112;’將所有職工的收入增加100Updatesalarysetincome=income+100;使用SQL語句刪除表數(shù)據(jù)刪除表Employee中編號為’011112’的職工的信息。DeletefromemployeeswhereEmployeeID=’011112’;刪除所有收入大于2500的職工信息DeletefromemployeeswhereEmployeeIDin(selectEmployeeIDfromsalarywhereincome>2500);使用TRUNCATETABLE語句刪除表中所有行Truncatetablesalary;使用界面工具向表中插入數(shù)據(jù)使用界面工具修改表中數(shù)據(jù)思考題:1.比較SQL語句和界面工具在實現(xiàn)數(shù)據(jù)插入、更改和刪除時,哪種方法更強大?為什么?2.實驗中遇到的問題及解決方法。

實驗4 數(shù)據(jù)查詢實驗類型:設(shè)計型實驗課時:3指導(dǎo)教師:時間:20年月日課次:第節(jié)教學(xué)周次:第周實驗分室:實驗臺號:實驗員:實驗?zāi)康模赫莆諗?shù)據(jù)查詢SQL命令實驗要求:掌握數(shù)據(jù)查詢SELECT語句的語法格式實驗內(nèi)容:1.SELECT語句的基本使用2.子查詢的使用3.連接查詢的使用4.GROUPBY、ORDERBY和LIMIT子句的使用實驗步驟:說明:按實驗步驟對數(shù)據(jù)庫YGGL中的三個表進行數(shù)據(jù)查詢,三個表結(jié)構(gòu)如下(具體參看實驗2):Departments(DepartmentID,DepartmentName,Note)Employees(EmployeeID,Name,Sex,Birthday,Education,WorkYear,Address,PhoneNumber,DepartmentID)Salary(SalaryID,InCome,OutCome,Time,EmployeeID)要求:填上正確SQL語句。1.SELECT語句的基本使用(1)查詢每個部門的所有數(shù)據(jù)select*fromemployees;(2)查詢每個雇員的地址和電話selectName,Address,PhoneNumberfromemployees;(3)查詢每個雇員的學(xué)歷,消除重復(fù)行。selectdistinctName,Educationfromemployees;(8)查詢1970年以后出生的員工姓名和地址。select Name,Addressfromemployeeswhereyear(birthday)>1970;(5)查詢女員工的地址和電話,并使用AS子句將結(jié)果中各列的標題分別指定為地址、電話。selectAddressas地址,PhoneNumberas電話fromemployeeswheresex='0';(6)查詢員工2012年12月的薪水號和收入水平,收入為2000元以下顯示為低收入,2000-3000元顯示為中等收入,3000元以上顯示為高收入。selectSalaryID,casewhen(InCome-OutCome)<'2000'then'低收入'when(Income-OutCome)<'3000'then'中等收入'when(InCome-OutCome)>='3000'then'高收入'endas收入水平fromsalarywhereTime>'2012-11';(7)查詢每個員工當(dāng)前月的實際收入。selectEmployeeID,InCome-OutComeas實際收入fromsalarywhereTime>'2012-11';(8)查詢每個員工的年齡。selectName,year(now())-year(birthday)as年齡fromemployees;(9)找出其地址中不含有“中山”兩字的員工的號碼、部門號和地址。selectEmployeeID,DepartmentID,AddressfromemployeeswhereAddressnotlike'中山%';(10)找出員工號碼中倒數(shù)第二個數(shù)字為0的員工的姓名、地址和學(xué)歷。selectName,Address,EducationfromemployeeswhereEmployeeIDlike'%0_';(11)查詢所有2012年11月收入在2000到3000之間的員工號碼。selectEmployeeIDfromsalarywhere(InCome-OutCome)between'2000'and'3000'andtime>'2012-11';查詢所有工作時間不在3到6年之間的所有員工的員工號,員工名和工作時間。selectEmployeeID,Name,WorkYearfromemployeeswhereWorkYearnotbetween'3'and'6';2.子查詢的使用(1)查詢在財務(wù)部工作的雇員的情況。select*fromemployees,departmentswhereemployees.DepartmentID=departments.DepartmentIDandDepartmentName='財務(wù)部';(2)查詢與李麗在同一個部門工作的所有員工的編號和姓名。 selectName,EmployeeIDfromemployeeswhereDepartmentID=(selectDepartmentIDfromemployeeswhereName='李麗');(3)查詢與朱俊是同樣學(xué)歷的的所有員工的編號、姓名和出生日期。selectEmployeeID,Name,BirthdayfromemployeeswhereEducation=(selectEducationfromemployeeswherename='朱俊');3.連接查詢的使用(1)用全連接方法查詢在財務(wù)部工作的雇員的情況。select*fromemployees,departmentswhereemployees.DepartmentID=departments.DepartmentIDandDepartmentName='財務(wù)部';(2)用全連接方法查詢與李麗在同一個部門工作的所有員工的編號和姓名。selecta.Name,a.EmployeeIDfromemployeesasa,employeesasbwherea.DepartmentID=b.DepartmentIDand='李麗';(3)用全連接方法查詢與朱俊是同樣學(xué)歷的所有員工的編號、姓名和出生日期。selecta.Name,a.EmployeeID,a.Birthdayfromemployeesasa,employeesasbwherea.Education=b.Educationandb.Name='朱俊';(4)用內(nèi)連接方法查詢不在財務(wù)部工作的所有員工信息。select*fromemployeesinnerjoindepartmentson(employees.DepartmentID=departments.DepartmentID)andDepartmentName!='財務(wù)部';4.GROUPBY,ORDERBY,LIMIT子句的使用(1)查詢男員工和女員工的人數(shù)。selectsex,count(sex)fromemployeesgroupbysex;(2)按部門列出該部門的員工人數(shù)。selectDepartmentName,count(employeeID)as人數(shù)fromemployees,departmentswhereemployees.DepartmentID=departments.DepartmentIDgroupbyDepartmentName;(3)查詢員工數(shù)超過2人的部門名稱和員工數(shù)量。selectDepartmentName,count(employeeID)as人數(shù)fromemployees,departmentswhereemployees.DepartmentID=departments.DepartmentIDgroupbyemployees.DepartmentIDhavingcount(employeeID)>2;(4)將Salary表中按員工當(dāng)月收入降序排列。selecttime,SalaryID,InComefromsalaryorderbytime,InComedesc;(5)查詢Employees表中前5位員工信息。select*fromemployeeslimit5;思考題:實驗中遇到的問題及解決方法。

實驗5 視圖實驗類型:驗證型實驗課時:1指導(dǎo)教師:時間:20年月日課次:第節(jié)教學(xué)周次:第周實驗分室:實驗臺號:實驗員:實驗?zāi)康模?.掌握視圖的概念和作用2.掌握視圖的創(chuàng)建方法3.掌握如何查詢和修改視圖實驗要求:了解視圖的概念及相關(guān)操作實驗內(nèi)容:創(chuàng)建視圖查詢視圖更新視圖刪除視圖在界面工具中操作視圖實驗步驟:說明:按實驗步驟對數(shù)據(jù)庫YGGL中的三個表進行數(shù)據(jù)查詢,三個表結(jié)構(gòu)如下(具體參看實驗2):Departments(DepartmentID,DepartmentName,Note)Employees(EmployeeID,Name,Sex,Birthday,Education,WorkYear,Address,PhoneNumber,DepartmentID)Salary(SalaryID,InCome,OutCome,Time,EmployeeI)要求:填上正確答案。1.創(chuàng)建視圖(1)創(chuàng)建YGGL數(shù)據(jù)庫上的視圖DS_VIEW,視圖包含Departments表的全部列。CREATEVIEWDS_VIEWASSELECT*FROMDepartments;(2)創(chuàng)建YGGL數(shù)據(jù)庫上的視圖ES_VIEW,視圖包含員工號碼、姓名和當(dāng)年總實際收入。CREATE

VIEW

Employees_view(EmployeeID,Name,realIncome)

AS

SELECT

Employees.EmployeeID,Name,Income-OutComeFROM

Employees,salary

WHERE

Employees.EmployeeID=salary.EmployeeID

;(3)創(chuàng)建視圖,包含員工號碼、姓名、所在部門和實際收入這幾列。查詢視圖從視圖DS_VIEW中查詢出部門號為3的部門名稱。select

DepartmentName

from

DS_view

where

DepartmentID='3';(2)從視圖ES_VIEW中查詢出姓名為“王林”的員工的實際收入。select

RealIncome

from

Employees_view

where

Name='王林';更新視圖在更新視圖前需要了解可更新視圖的概念,了解什么視圖是不可以進行修改的。更新視圖真正更新的是與視圖關(guān)聯(lián)的表。向視圖DS_VIEW中插入一行數(shù)據(jù):6,廣告部,廣告業(yè)務(wù)。insert

into

DS_VIEW

values('6','廣告部','廣告業(yè)務(wù)')執(zhí)行完該命令后,使用SELECT語句分別查看視圖DS_VIEW和基本表Departments中發(fā)生的變化。(用語言描述)嘗試向視圖ES_VIEW中插入一行數(shù)據(jù),看看會發(fā)生什么情況。(用語言描述)(2)修改視圖DS_VIEW,將部門號為5的部門的部門名稱修改為“生產(chǎn)車間”。update

DS_VIEW

set

DepartmentName='生產(chǎn)車間'

where

DepartmentID='5';執(zhí)行完該命令后,使用SELECT語句分別查看視圖DS_VIEW和基本表Departments中發(fā)生的變化。(用語言描述)(3)刪除視圖DS_VIEW中部門號為“1”的數(shù)據(jù)。delect

from

DS_VIEW

where

DepartmentID='1';刪除視圖刪除視圖DS_VIEW。DropVIEWDS_VIEW;在界面工具中操作視圖(1)創(chuàng)建視圖。(2)編輯視圖。(3)刪除視圖。思考題:1.視圖ES_VIEW中無法插入和刪除數(shù)據(jù),其中的RealIncome列值也無法修改,為什么?2.總結(jié)視圖和基本表的區(qū)別。3.實驗中遇到的問題及解決方法。

實驗6 索引和數(shù)據(jù)完整性實驗類型:驗證型實驗課時:2指導(dǎo)教師:時間:20年月日課次:第節(jié)教學(xué)周次:第周實驗分室:實驗臺號:實驗員:實驗?zāi)康模?.掌握索引的使用方法2.掌握數(shù)據(jù)完整性的實現(xiàn)方法。實驗要求:了解索引和數(shù)據(jù)完整性的相關(guān)知識。實驗內(nèi)容:創(chuàng)建索引刪除索引數(shù)據(jù)完整性實驗步驟:說明:按實驗步驟對數(shù)據(jù)庫YGGL中的三個表進行操作,三個表結(jié)構(gòu)如下(具體參看實驗2):Departments(DepartmentID,DepartmentName,Note)Employees(EmployeeID,Name,Sex,Birthday,Education,WorkYear,Address,PhoneNumber,DepartmentID)Salary(SalaryID,InCome,OutCome,Time,EmployeeID)要求:將實驗步驟填上正確答案。創(chuàng)建索引a)使用CREATEINDEX語句創(chuàng)建索引1)對YGGL數(shù)據(jù)庫上的Employees表中的DepartmentID列建立索引。USE

YGGL;

CREATE

INDEX

depart_ind

ON

Employees((2)在Employees表的Name列和Address列上建立復(fù)合索引。CREATE

INDEX

Ad_ind

ON

Employees((3)在Departments表的DepartmentName列建立唯一性索引。CREATE

UNIQUE

INDEX

Dep_ind

ON

Departments

(DepartmentName);

(4)使用SHOWINDEX語句查看Employees表的索引。SHOW

INDEX

FROM

Employees;

b)使用ALTERTABLE語句向表中添加索引(1)向Employees表中的出生日期列添加一個唯一性索引,姓名列和性別列添加一個復(fù)合索引。ADD

UNIQUE

INDEX

date_ind(Birthday),

ADD

INDEX

na_ind(Name,Sex);

刪除表Departments的主鍵。ALTER

TABLE

Departments

DROP

PRIMARY

KEY;

將表Departments的DepartmentID列設(shè)為主鍵。ALTER

TABLE

Departments

ADD

PRIMARY

KEY(DepartmentID);

c)在創(chuàng)建表(CREATETABLE)時創(chuàng)建索引創(chuàng)建與表Departments表相同結(jié)構(gòu)的表Departments1,將DepartmentName列設(shè)為主鍵,DepartmentID列上建立一個索引CREATE

TABLE

Departments1

(

DepartmentID

char(3),

DepartmentName

varchar(20),

Note

text,

PRIMARY

KEY

(DepartmentName),

INDEX

DID_ind(DepartmentID)

);

d)界面方式創(chuàng)建索引刪除索引(1)使用DROPINDEX語句刪除表Employees上的索引depart_ind,。DROP

INDEX

depart_ind

ON

Employees;

(2)使用ALTERTABLE刪除表Departments的主鍵和索引Dep_ind。ALTER

TABLE

Departments

DROP

PRIMARY

KEY,

DROP

INDEX

Dep_ind;

數(shù)據(jù)完整性(1)創(chuàng)建一個表Employees3,只含EmployeeID,Name,Sex和Education列。將Name設(shè)為主鍵,EmployeeID為替代鍵CREATE

TABLE

Employees3(EmployeeID

char(6)

NOT

NULL,

Name

varchar(10)

PRIMARY

KEY,

Sex

char(1),Education

char(4),

UNIQUE(EmployeeID)

);(2)創(chuàng)建一個表Salary1,其結(jié)構(gòu)同salary。要求所有Salary1表上出現(xiàn)的EmployeeID都要出現(xiàn)在Employees表中,利用完整性約束實現(xiàn),要求當(dāng)刪除或修改Employees表上的EmployeeID列時,Salary1表中的EmployeeID值也會隨之變化。CREATETABLESalary1(EmployeeIDchar(6)NOTNULLPRIMARYKEY,InComeFloatNOTNULL,OutComeFloatNOTNULL,FOREIGNKEY(EmployeeID)REFERENCESSalary(EmployeeID)ONUPDATECASCADEONDELETECASCADE)ENGINE=InnoDBDEFAULTCHARSET=gb2312;(3)將表Salary中的數(shù)據(jù)插入到表Salary1中。Insertintosalary1select*fromsalary;(4)刪除或更新表employees中的數(shù)據(jù)時,觀察表Salary1中的數(shù)據(jù)有何變化(用語言表述)?(5)創(chuàng)建一個表Employees4,只考慮號碼和性別列,性別只能包含男或女。CREATETABLEEmployees4(號碼char(6)NOTNULL,性別char(1)NOTNULLCHECK(性別IN('男','女')));思考題:1.添加主鍵和添加普通索引有什么區(qū)別?答:主鍵一定是唯一性索引,唯一性索引并不一定就是主鍵。所謂主鍵就是能夠唯一標識表中某一行的屬性或?qū)傩越M,一個表只能有一個主鍵,但可以有多個候選索引。因為主鍵可以唯一標識某一行記錄,所以可以確保執(zhí)行數(shù)據(jù)更新、刪除的時候不會出現(xiàn)張冠李戴的錯誤。主鍵除了上述作用外,常常與外鍵構(gòu)成參照完整性約束,防止出現(xiàn)數(shù)據(jù)不一致。數(shù)據(jù)庫在設(shè)計時,主鍵起到了很重要的作用。主鍵可以保證記錄的唯一和主鍵域非空,數(shù)據(jù)庫管理系統(tǒng)對于主鍵自動生成唯一索引,所以主鍵也是一個特殊的索引。一個表中可以有多個唯一性索引,但只能有一個主鍵主鍵列不允許空值,而唯一性索引列允許空值。2.實驗中遇到的問題及解決方法。答:1.備份時mysqldump中沒有空格,databases前注意有兩個破折號。2.任何隊列的操作都將導(dǎo)致表掃描,它包括數(shù)據(jù)庫函數(shù)、計算表達式等等,查詢時要盡可能將操作移至等號右邊。

實驗7 MySQL語言結(jié)構(gòu)實驗類型:驗證型實驗課時:2指導(dǎo)教師:時間:20年月日課次:第節(jié)教學(xué)周次:第周實驗分室:實驗臺號:實驗員:實驗?zāi)康模?.掌握常量的分類及使用2.掌握變量的分類及使用3.掌握各種運算符和表達式4.掌握系統(tǒng)函數(shù)的使用實驗要求:了解MySQL支持的各種數(shù)據(jù)類型了解MySQL各種運算符的功能及使用方法了解MySQL系統(tǒng)內(nèi)置函數(shù)的作用實驗內(nèi)容:常量的使用變量的使用運算符的使用系統(tǒng)函數(shù)的使用實驗步驟:說明:按實驗步驟對數(shù)據(jù)庫YGGL中的三個表進行操作,三個表結(jié)構(gòu)如下(具體參看實驗2):Departments(DepartmentID,DepartmentName,Note)Employees(EmployeeID,Name,Sex,Birthday,Education,WorkYear,Address,PhoneNumber,DepartmentID)Salary(SalaryID,InCome,OutCome,Time,EmployeeID)要求:將實驗步驟中紫色底紋部分填上正確答案。常量的使用(1)計算194和142的乘積(2)獲取以下這串字母的值:'I\nlove\nMySQL'系統(tǒng)變量的使用(1)獲取現(xiàn)在的MySQL版本號(2)獲取當(dāng)前的系統(tǒng)時間(3)獲取當(dāng)前的系統(tǒng)日期用戶變量的使用(1)參照YGGL數(shù)據(jù)庫,創(chuàng)建一個名為female的用戶變量,并在SELECT語句中使用該局部變量查找表中所有女職工的編號,姓名。(2)定義一個變量,用于描述YGGL數(shù)據(jù)庫中的Salary表中員工000001的當(dāng)月實際收入,然后查詢該變量。運算符的使用(1)使用算術(shù)運算符“-”查詢員工的實際收入。(2)使用邏輯運算符“AND”查看以下語句的結(jié)果。SELECT(7>6)AND('A'='B');對上面語句的執(zhí)行結(jié)果進行分析。系統(tǒng)函數(shù)的使用(1)將數(shù)1.32656四舍五入取整,將1.32656保留小數(shù)點后2位小數(shù)。(2)求財務(wù)部雇員總?cè)藬?shù)。(3)返回Employees表中員工號最左端四個字符。(4)獲得當(dāng)前的日期和時間。(5)查詢YGGL數(shù)據(jù)庫中員工號為000001的員工出生的年份。(6)計算Employees表中每個員工的年齡。思考題:實驗中遇到的問題及解決方法。

實驗8 過程式數(shù)據(jù)庫對象的使用實驗類型:驗證型實驗課時:4指導(dǎo)教師:時間:20年月日課次:第節(jié)教學(xué)周次:第周實驗分室:實驗臺號:實驗員:實驗?zāi)康模赫莆沾鎯^程的創(chuàng)建和調(diào)用方法掌握MySQL的流程控制語句掌握MySQL游標的使用4.掌握存儲函數(shù)的創(chuàng)建和調(diào)用方法5.掌握觸發(fā)器的創(chuàng)建和使用6.掌握事件的創(chuàng)建和使用實驗要求:掌握存儲過程、存儲函數(shù)、觸發(fā)器和事件的相關(guān)知識實驗內(nèi)容:存儲過程存儲函數(shù)觸發(fā)器實驗步驟:說明:按實驗步驟對數(shù)據(jù)庫YGGL中的三個表進行操作,三個表結(jié)構(gòu)如下(具體參看實驗2):Departments(DepartmentID,DepartmentName,Note)Employees(EmployeeID,Name,Sex,Birthday,Education,WorkYear,Address,PhoneNumber,DepartmentID)Salary(SalaryID,InCome,OutCome,Time,EmployeeID)要求:將實驗步驟中紫色底紋部分填上正確答案。存儲過程創(chuàng)建存儲過程,要求當(dāng)一個員工的工作年頭大于6年時將其轉(zhuǎn)到經(jīng)理辦公室工作。調(diào)用該存儲過程并查看結(jié)果。(2)創(chuàng)建存儲過程,使用游標計算本科及以上學(xué)歷的員工在總員工數(shù)中所占的比例。調(diào)用該存儲過程并查看結(jié)果。存儲函數(shù)(1)分別創(chuàng)建存儲函數(shù)和存儲過程,判斷員工是否在研發(fā)部工作,若是則返回其學(xué)歷,若不是則返回字符串“NO”。DELIMITER$$CREATEDEFINER=`root`@`localhost`PROCEDURE`find_xl`(inbhchar(3),outxlchar(4))BEGINdeclarebmbhchar(20);selecteducation,departmentnameintobmbhfromemployees,departmentswheredepartments.departmentid=employees.departmentidandemployeeid=bh;ifbmbh='研發(fā)部'thensetxl=education;elsesetxl='no';endif;END$$DELIMITER$$CREATEDEFINER=`root`@`localhost`FUNCTION`find_xl`(bhchar(6))RETURNSchar(20)CHARSETutf8BEGINdeclarebmbhchar(6);selectdepartmentnameintobmbhfromemployees,departmentswheredepartments.departmentid=employees.departmentidandemployeeid=bh;ifbmbh='研發(fā)部'thenreturn(selecteducationfromemployeeswhereemployeeid=bh);elsereturnno;endif;END$$分別定義和調(diào)用存儲函數(shù)和存儲過程,完成功能:按指定員工號和年份,返回這個職工在這個年度的總收入.DELIMITER$$CREATEDEFINER=`root`@`localhost`PROCEDURE`find_Saraly`(inbhchar(6),innfchar(7),outzsrfloat)BEGINselectincome-outcomeassumsrfromsalarywhereemployeeid=bhandtime=nf;END$$DELIMITER$$CREATEDEFINER=`root`@`localhost`FUNCTION`find_salary`(bhchar(6),nfchar(7))RETURNSfloatBEGINreturn(selectincome-outcomeassumsrfromsalarywhereemployeeid=bhandtime=nf);END$$3.觸發(fā)器在yggl數(shù)據(jù)庫中新建一個表:獎懲(獎懲編號,獎懲時間,獎懲類型,獎懲備注,員工編號)其中主鍵為獎懲編號,外鍵為員工編號,參照Employees(employeeID)獎懲類型的值為“獎勵”和“處罰”.創(chuàng)建觸發(fā)器,當(dāng)插入【獎懲】時,相應(yīng)的觸發(fā)器觸發(fā),如果【獎懲類型】為獎勵,將salary表中當(dāng)月收入加100,如果【獎懲類型】為處罰,將salary表中當(dāng)月收入減100思考題:本次實驗中遇到的問題及解決方法。

實驗9 備份與恢復(fù)實驗類型:驗證型實驗課時:2指導(dǎo)教師:時間:20年月日課次:第節(jié)教學(xué)周次:第周實驗分室:實驗臺號:實驗員:實驗?zāi)康模?.掌握界面方式下數(shù)據(jù)庫的備份和還原2.掌握使用SQL語句進行數(shù)據(jù)庫備份和恢復(fù)3.掌握使用客戶端程序進行數(shù)據(jù)庫的備份和還原實驗要求:理解數(shù)據(jù)庫的備份和還原的重要性及基本方法實驗內(nèi)容:1.界面方式下進行數(shù)據(jù)庫備份和還原2.SQL語句進行數(shù)據(jù)庫備份和還原3.使用客戶端程序進行數(shù)據(jù)庫的備份和還原實驗步驟:說明:按實驗步驟對數(shù)據(jù)庫YGGL中的三個表進行操作,三個表結(jié)構(gòu)如下(具體參看實驗2):Departments(DepartmentID,DepartmentName,Note)Employees(EmployeeID,Name,Sex,Birthday,Education,WorkYear,Address,PhoneNumber,DepartmentID)Salary(SalaryID,InCome,OutCome,Time,EmployeeID)要求:將實驗步驟中紫色底紋部分填上正確答案。1.界面方式下進行數(shù)據(jù)庫備份和還原(1)在MySQLWorkbench中進行數(shù)據(jù)庫YGGL的備份。(2)在MySQLWorkbench中進行數(shù)據(jù)庫YGGL的恢復(fù)。2.用SQL語句進行數(shù)據(jù)庫備份和還原使用SQL語句只能備份和恢復(fù)表的內(nèi)容,如果表的結(jié)構(gòu)損壞,則要先恢復(fù)表的結(jié)構(gòu)才能恢復(fù)數(shù)據(jù)。(1)備份。備份YGGL數(shù)據(jù)庫中的Employees表到D盤FILE文件夾下Employees.txt文件中:執(zhí)行完后,查看D盤FILE文件夾下是否有Employees.txt文件。(2)恢復(fù)。先刪除Employees表中的幾行數(shù)據(jù),再使用LOADDATA語句恢復(fù)Employees表。執(zhí)行完后使用SELECT語句查看Employees表的數(shù)據(jù)變化。3.使用客戶端工具進行數(shù)據(jù)庫的備份和還原(1)使用mysqldump備份表和數(shù)據(jù)庫使用mysqldump命令備份數(shù)據(jù)庫YGGL的Salary表:查看D盤FILE文件夾下是否有名為Salary.sql的文件。使用mysqldump命令備份整個YGGL數(shù)據(jù)庫:(2)使用mysql恢復(fù)數(shù)據(jù)庫為了方便查看效果,先刪除YGGL數(shù)據(jù)庫中的Employees表,然后使用mysql命令恢復(fù)數(shù)據(jù)庫YGGL:查看數(shù)據(jù)庫YGGL的內(nèi)容是否恢復(fù)。(3)使用mysqlimport恢復(fù)表數(shù)據(jù)。Mysqlimport的功能和LOADDATAINFILE語句是一

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論