0% found this document useful (0 votes)
36 views34 pages

BT CSDL

Uploaded by

Minh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF or read online on Scribd
0% found this document useful (0 votes)
36 views34 pages

BT CSDL

Uploaded by

Minh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF or read online on Scribd
You are on page 1/ 34
Bai Tap TH He QT CSDL - file bai tap hé Quan tri co s6 dv liéu (2021-2022) Bai tip Thye hanh Hé Quin Tri Co sé Di Ligu Module 1. Tim hiéu Co’ s& dir ligu AdventureWork2008 - Tao va quan tri co s& dir ligu — Database file — File group Muc tigu: - Tim higu co sé dit ligu Adventure Work2008R2 Tao va quan tri co s6 dit ligu Database - Tao va quan ly cae Table (Bang dit ligu) = Tao luge 45 quan hé (Relationship Diagram) - Tao, sita, x6a va 4p dung céc kigu di ligu trong SQL Server 2008 ~ Biét mét sé thi tue try gidp vé Database va Datatype ~ Xay dung céc ring bude (Constraint) cho ede bang = Thém, sira, xéa va truy van dit ligu M6 ta CSDL AdventureWork 2008R2: Gém 6 luge dd * Dbo ¢ HumanResouree Person Production Purchasing Sales Bai tGp Thye hanh Hé Quan Tri Co s6 Di AdventureWorks 1a m6t co sé dit ligu mu duge tao ra dé sir dung trong ging day méi phién ban cia Microsoft SQL Server. AdventureWorks 1a mét co sé dit ligu quan ly ban hang ciia m6t céng ty da quéc gia chuyén A bin ¢: xudt mat hang kim loai va xe dap thé thao dén cdc thi truéng Bac My, chau Au va chau A. Co sé hoat déng cia né nim 6 Bothell, Washington, nhung nhan vién cita ho va cae doi ban hang ciia cdc khu vue duge bé tri trén khip co 86 trén thj trudng cia ho. Cong ty dang tim kiém dé mé réng thi phan cia minh bang cach nhdm dén khdch hang tt nhét cia ho, va mé rong sin phdm sin c6 cia minh théng qua mt trang web bén ngoai Té chite va y nghia cua cac luge dé trong CSDL: Schema Contains objects related to Examples HumanResources | Employees of Employee Table Adventure Works Department Table Cycles. Person Names and addresses of Contact Table individual customers, Address Table vendors, and StateProvince Table employees Production Products manufactured BillOfMaterials Table and sold by Adventure Product Table Works Cycles. WorkOrder Table Purchasing Vendors from who parts PurchaseOrderDetail Table and products are purchased. | PurchaseOrderHeader Table Vendor Table Sales Customers and sales- Customer Table related data. SalesOrderDetail Table SalesOrderHeader Table I. Thye hién cac thao tac trén co’ sé dir ligu AdventureWorks2008R2 1. Tao mét diagram gém cdc bang lién quan dén Customer va Product nhu hinh & trang sau: Bai tap Thye hinh Hé Quan Tri Co sé Dit Ligu 2. Tim hiéu field lién két gitta cdc bang (Khéa chinh va kha ngoai) [Production] [Product] [Person]. [BusinessEntity] [Production] [ProductCostHistory] | [Sales] [Store] [Production] [ProductListPriceHistory] | [Sales].[Customer] [Production],[ProductSubcategory] __ | [Sales].[SalesTerritory] [Production] [ProductCategory] [Sales].[SalesPerson] [Purchasing] [PurchaseOrderDetail] __ | [Sales}.[SalesOrderHeader] [Purchasing] [PurchaseOrderHeader] _ | [Sales] [SalesOrderDetail] [Purchasing] [Vendor] [HumanResources].[Employee] [Purchasing] [ProductVendor] [HumanResources] [EmployeeDepartmentHistory] Sir dung T-SQL tao mét co sé dir ligu moi tén SmallWorks, véi 2 file group tén SWUserDatal va SWUserData2, lu theo duéng dan T:\HoTen\TenTapTin. CREATE DATABASE SmallWorks ON PRIMARY ( NAME = 'SmallWorksPrimary’, FILENAME = 'T:\HoTen\Smallworks.mdf' , SIZE = 10MB, FILEGROWTH = 20%, MAXSIZE = 5@MB )s FILEGROUP SWUserData1 ( NAME = 'SmallWorksData1', FILENAME = 'T:\HoTen\SmallWorksData1.ndf" , SIZE = 10MB, FILEGROWTH = 20%, MAXSIZE = 5@MB Bai tip Thye hanh Hé Quan Tri Co sé Di Ligu FILEGROUP SwWUserData2 ( NAME = 'SmallWorksData2', FILENAME = 'T:\HoTen\SmallworksData2.ndf' , SIZE = 10MB, FILEGROWTH = 20%, MAXSIZE = S@MB ) LOG ON ¢ NAME = 'SmallWorks_log', FILENAME = ‘T:\HoTen\SmallWorks_log.1df", SIZE = 10MB, FILEGROWTH = 10%, MAXSIZE = 2@MB ) Dang SSMS dé xem két qua: Click phai trén tén cia CSDL vita tao a. Chon filegroups, quan sat két qua: * C6 bao nhiéu filegroup, ligt ké tén cc filegroup hién tai * Filegroup mic dinh 1a gi? b. Chon file, quan sat c6 bao nhiéu database file? 4, Ding T-SQL tgo thém m6t filegroup tén Test1FG1 trong SmallWorks, sau dé add thém 2 file filedat1_.ndf va filedat2.ndf dung lung SMB vio filegroup Test1FG1 Dung SSMS xem két qua. 5. Ding T-SQL tao thém mét mét file thir cp filedat3.ndf dung Iugng 3MB trong filegroup Test1FG1. Sau dé siza kich thie tap tin nay lén SMB. Ding SSMS xem két qua. Ding T-SQL xéa file tht cdp filedat3.ndf. Ding SSMS xem két qua 6. X6a filegroup Test! FG1? Ban c6 x6a duge khng? Néu khong gidi thich? Muén xa duge ban phai lim gi? 7. Xem lai thudc tinh (properties) cia CSDL SmallWorks bang cita sé thude tinh properties va bang thi tuc hé thdng sp_helpDb, sp_spaceUsed, sp_helpFile. Quan sét va cho biét cdc trang thé hign théng tin gi?. 8. Tai cita sé properties cia CSDL SmallWorks, chon thudc tinh ReadOnly, sau d6 déng cita sé properties. Quan sat mau sic cla CSDL. Ding lénh T-SQL gé bd thude tinh ReadOnly va dit thude tinh cho phép nhigu ngudi sit dung CSDL SmallWorks. 9. Trong CSDL SmallWorks, tao 2 bang mdi theo cau tric nhu sau: 5. Bai tép Thye hinh Hg Quan Tri Co sé Dit Ligu CREATE TABLE dbo,Person ( PersonID int NOT NULL, FirstName varchar(50) NOT NULL, MiddleName varchar(50) NULL, LastName varchar(50) NOT NULL, EmailAddress nvarchar(50) NULL ) ON SWUserDatal CREATE TABLE dbo.Product ( ProductID int NOT NULL, ProductName varchar(75) NOT NULL, ProductNumber nvarchar(25) NOT NULL, StandardCost money NOT NULL, ListPrice money NOT NULL ) ON SWUserData2 10. Chén dir ligu vao 2 bang trén, lay dit ligu tir bang Person va bang Product trong AdventureWorks2008 (luu ¥: chi rd tén co sé dit ligu va luge 43), dang 1énh Insert...Seleet... Diing Ignh Select * dé xem dit ligu trong 2 bang Person va bang Product trong SmallWorks. 11, Ding SSMS, Detach co sé dir ligu SmallWorks ra khoi phién lam viée cua SQL. 12, Ding SSMS, Attach co sé dit ligu SmallWorks vio SQL BAI TAP VE NHA: Yéu cu sinh vién lam va ngp lai cho gido vién truée b hoc hom sau \HoTen\Sales, cdc thong sé tity y, trong CSDL Sales che cing vige sa 1. Tao cdc kidu dit ligu ngudi ding sau Name Schema [Data Type ] Length | Storage | Allow Nulls Mota dbo nvarchar [40 30 Yes IDKH dbo char 10 10 No DT dbo char 12 50 yes 2. Tao cdc bang theo cu tric sau: -6- Bai tap Thye hinh Hé Quan Tri Co sé Di Ligu SanPham HoaDon Attribute name Datatype Attribute name | Datatype Masp char(6) MaHD Char(10) TenSp varchar(20) NgayLap Date NgayNhap Date NgayGiao Date DVT char(10) Makh IDKH SoLuongTon Int DienGiai Mota DonGiaNhap mone; ChiTietD KhachHang Attribute name | Datatype MaKH IDKH MaHD Char(10) TenKH Nvarchar(30_ Masp Char(6) Diachi Nvarchar(40 Soluong int Dienthoai DT Trong Table HoaDon, sita cét DienGiai thinh nvarchar(100) |. Thém vao bang SanPham e6t TyLeHoaHong float X¢a ct NgayNhap trong bang SanPham Tao cae rang bude khéa chinh va khéa ngoai cho cc bang trén Thém vao bang HoaDon cic ring bude sau: — NgayGiao >= NgayLap — MaHD gém 6 ky ty, 2 ky ty dau 1a chit, cdc ky tu cdn lai — Gia tri mac dinh ban dau cho et NgayLap lu6n lu6n 1a ngay hign hinh 8. Thém vao bang San pham cac rang budc s — SoLuongTon chi nhap tir 0 dén 500 = DonGiaNhap lén hon 0 — Gid tri mac dinh cho NgayNhap 1a ngay hign hnh = DVT chi nhap vio céc gid tri ‘KG’, ‘Thing’, “Hdp’ 9. Ding Iénh T-SQL nhfp dit ligu vao 4 table trén, dit ligu ty y, cha y ede rang bude cia méi Table 10. X6a 1 héa don bat ky trong bang HoaDon. Cé xéa duge khéng? Tai sao? Néu vin muén xéa thi phai diing cdch ndo? 11. Nhap 2 ban ghi méi vio bang ChiTietHD véi MaHD = ‘H1D999999999" va MaHD=~"1234567890". Cé nh§p duge khéng? Tai sao? 12, Déi tén CSDL Sales thinh BanHang 13. Tao thr muc T:\QLBH, chép CSDL BanHang vio thw mue nay, ban ¢6 sao chép duge khéng? Tai sao? Muén Sau khi sao sao chép duge ban phai lam g chép, ban thy hign Attach CSDL vao lai SQL. Bai tap Thy hinh Hé Quan Tri Co sé Dit Ligu 14, Tgo ban BackUp cho CSDL BanHang 15. Xéa CSDL BanHang 16. Phuc hdi lai CSDL BanHang. 8 Downloaded by Thanh Nguyen (h.nguyenun@gmaiLcom) Bai tip Thye hanh Hé Quan Tri Co sé Di Ligu Module 2. Thao tac dif liéu c Muec tigu: — On lai céc edu trie cau Ignh select c6 lénh gom nhém, Subquery NS 1) C&u lénh SELECT sir dung cac ham théng ké véi cac ménh dé Group by va Having: 1) Liét ké danh sich cdc héa don (SalesOrderID) lap trong thang 6 nim 2008 c6 tong tién >70000, théng tin gm SalesOrderID, Orderdate, SubTotal, trong dé SubTotal =SUM(OrderQty*U1 2) Dém ting sé khach hang va téng tién cua nhimg khach hang thudc cac quéc gia itPrice). 6 ma ving 1a US (lay thong tin ti cae bang Sales.SalesTerritory, Sales. Customer, Sales.SalesOrderHeader, Sales.SalesOrderDetail). Théng tin 6 khich hing (CountOfCust), téng tién (SubTotal) véi SubTotal = SUM(OrderQty*UnitPrice) bao gdm TerritoryID, ting 3) Tinh téng tj gid cia nhimg héa don véi Ma theo dai giao hang (CarrierTrackingNumber) cé 3 ky tw dau la 4BD, thong tin bao gém SalesOrderID, CarrierTrackingNumber, SubTotal=SUM (OrderQty*UnitPrice) 4) Liét ké cée sin phim (Product) cé don gid (UnitPrice)<25 va sé Ivgng ban trung binh >5, thng tin gdm ProductID, 5) Ligt JobTitle, CountOfPerson=Count(*) lame, AverageOfQty. é cde eéng vige (JobTitle) c6 tng sé nhan vién >20 ngudi, théng tin gom 6) Tinh tng s6 Igng va tong tri gid ciia cae san phdm do cdc nha cung cp 06 tén két thic bing ‘Bicycles’ va téng tri gid > 800000, théng tin gdm BusinessEntityID, Vendor_Name, ProductID, SumOfQty, SubTotal (ste dung cdc bang [Purchasing]. [Vendor], [Purchasing] .[PurchaseOrderHeader] va ([Purchasing].[PurchaseOrderDetail]) 7) Ligt tri gid >10000, thong tin gdm ProductID, Product_Name, CountOfOrderID va sin phim cé trén 500 don dat hang trong qui 1 nim 2008 va cé téng SubTotal Bai tip Thye hanh Hé Quan Tri Co sé Di Ligu 8) Liét ké danh sich céc khdch hang cé trén 25 héa don dat hang tir nim 2007 dén 2008, thong tin gdm ma khach (PersonID) , hg tén (FirstName +" ‘+ LastName as FullName), Sé héa don (CountOfOrders). 9) Liét ké nhig san phim cé tén bit diu véi ‘Bike’ va ‘Sport’ cé téng sé lugng ban trong méi nam trén 500 san phim, théng tin gdm ProductID, Name, CountOfOrderQty, Year. (Dit ligu 1d) Sales.SalesOrderDetail va Production.Product) tir cdc bang Sales.SalesOrderHeader, 10) Ligt ké nhiing phong ban 6 hrong (Rate: long theo gid) trung binh >30, thong tin gdm Ma phong ban (DepartmentID), tén phong ban (Name), Luong trung binh (AvgofRate). Di liguti cée bing [HumanResources] [Department], [HumanResources].[EmployeeDepartmentHistory], [HumanResources] [EmployeePayHistory]. 1) Subquery 1) Liét ké cdc san phim gém cdc théng tin Product Names va Product ID cé trén 100 don dat hang trong thang 7 nam 2008 2) Liét ké cae sin pham (ProductID, Name) c6 sé héa don dat hang nhiéu nhat trong thang 7/2008 3) Hién thj thong tin ciia khach hang cé s6 don dat hang nhieu nhat, thong tin gom: CustomerID, Name, CountOfOrder 4) Lift ké cde sin phim (ProductID, Name) thuge mé hinh san pham do dai tay véi tén bat dau véi “Long-Sleeve Logo Jersey”, ding phép IN va EXISTS, (st dung bang Production. Product va Production. ProductModel) -10- Bai tip Thye hanh Hé Quan Tri Co sé Dit Ligu 5) Tim cdc mé hinh sin phim (ProductModelID) ma gid niém yét (list price) 161 da cao hon gid trung binh cia tit ca cde mé hinh, 6) Ligt ké cdc sin phim gém cae thong tin ProductID, Name, cé téng sé Iugng 5000 (ding IN, EXISTS) 7) Ligt ké nhimg san phim (ProductID, UnitPrice) c6 don gid (UnitPrice) cao nhit trong bang Sales. SalesOrderDetail 8) Liét ké cdc sin pham khéng cé don dat hang nao théng tin gém ProductID, Nam; ding 3 cdch Not in, Not exists va Left join. 9) Ligt ké ede nhan vién khGng lap héa don tir sau ngay 1/5/2008, théng tin gm EmployeelD, FirstName, LastName (dit ligu. str 2—sbang HumanResources Employees va Sales SalesOrdersHeader) 10)Ligt ké danh sch cdc khach hang (CustomerID, Name) c6 héa don dat hang trong nam 2007 nhung khéng cé héa don dat hang trong nam 2008. BAI TAP VE NHA: Hin thwe cdc rang bude toan ven dit ligu ‘Yéu cdu sinh vien ty 1am va ndp lai cho gido vién & budi thyc hanh tuan sau ~\ — Thue hign céc ring bude toan ven dé ligu: Primary key,Foreign key, Domain, Check, Default. (r Myc tigu: — Tim hiéu cascading constraint trong thao tac update va delete / 1) Tao hai bang mdi trong co sé dit ligu AdventureWorks2008 theo cau tric sau: create table MyDepartment ( DepID smallint not null primary key, DepName nvarchar(5@), GrpName nvarchar(5@) ) create table MyEmployee ( EmpID int not null primary key, FrstName nvarchar(5@), MidName “Ue Bai tip Thye hanh Hé Quan Tri Co sé Dit Ligu nvarchar(5@), LstName nvarchar(5@), DepID smallint not null foreign key references MyDepartment(DepID) ) 2) Ding lénh insert select from chén dit ligu cho bang MyDepartment, lay dit ligu tir bang [HumanResour. es].[Department]. 3) Twong ty cau 2, chén 20 ding dir liéu cho bing MyEmployee lay dit ligu tir2 bang [Person].[Person] va [HumanResources] . [EmployeeDepartmentHistory] 4) Ding Ignh delete x6a | record trong bang MyDepartment véi DepID=1, c6 thure hién duge khéng? Vi sao? 5) Thém mét default constraint vio field DepID trong bang MyEmployee, v6i gid tr) mic dinh 1a 1. 6) Nhap thém m4t record méi trong bing MyEmployee, theo ca phap sau: insert into MyEmployee (EmpID, FrstName, MidName, LstName) values(1, ‘Nguyen’, ‘Nhat','Nam'). Quan sat gia tri trong field depID ciia record méi thém. 7) Xéa foreign key constraint trong bang MyEmployee, thiét lap lai khéa ngoai DepID tham chié delete set default. jén DepID ciia bang MyDepartment véi thude tinh on 8) Xéa mét record trong bing MyDepartment c6 DepID=7, quan sat két qui trong hai bang MyEmployee va MyDepartment 9) Xéa foreign key trong bing MyEmployee. Higu chinh ring bude khéa ngogi DepID trong bing MyEmployee, thiét lap thudc tinh on delete cascade va on update cascade 10)Thye hign x6a mét record trong bing MyDepartment vai DepID =3, 06 thye hién duge khéng? 11)Thém rang bude cheek vao bang MyDepartment tai field GrpName, chi cho phép nhan thém nhing Department thudc group Manufacturing -12- Bai tip Thye hanh Hé Quan Tri Co sé Dit Ligu 12)Thém rang buge check vo bing [HumanResources].[Employee], tai c6t BirthDate, chi cho phép nhép thém nhan vién méi cé6 tuéi tir 18 dén 60 -13- Bai tap Thye hinh Hé Quan Tri Co sé Dit Ligu Module 3. View Myc tigu — Tao view, thao tac trén view = Tim hiéu XM 1) Tao view dbo.vw Products hin thi danh séch cée sin phim tir bang c thuge tinh ciia view Production.Product va bang Production.ProduetCostllistory. Théng tin bao gm ProductID, Name, Color, Size, Style, StandardCost, EndDate, StartDate 2) Tao view List_Product_View chtta danh sch ic sin phim cé trén $00 don dat hang trong qui 1 nm 2008 va 6 téng tri gid >10000, théng tin gdm ProduetID, Product_Name, CountOfOrderID va SubTotal. 3) Tao view dbo.vw_CustomerTotals hién thj tng tién ban duge (total sales) tir ct TotalDue cia méi khach hang (customer) theo thang va theo nm. Théng tin gom CustomerID, YEAR(OrderDate) AS OrderYear, MONTH(OrderDate) AS OrderMonth, SUM(TotalDue), 4) Tao view tra ‘dng sd lugng san phim (Total Quantity) ban duge cia méi nhan vién theo timg nam. Théng tin gdm SalesPersonID, Order ear, sumOfOrderQty 5) Tao view ListCustomer_view chita danh séch cae khach hang c6 trén 25 héa don dat hang tir nim 2007 dén 2008, théng tin gdm ma khach (PersonID) , ho tén (FirstName +' '+ LastName as FullName), $6 héa don (Count0fOrders), 6) Tao view ListProduct_view chita danh s ich nhig san pham cé tén bat dau véi ‘Bike’ va ‘Sport’ cé ting s6 lrgng ban trong mdi nam trén 50 sin pham, thong tin gdm ProductID, Name, SumOfOrderQty, Year. (dit ligu lay tir céc bang Sales.SalesOrderHeader, Sales.SalesOrderDetail, va Production. Product) 7) Tao view List_department_View chtta danh sach cdc phong ban ¢6 wong (Rate: luong theo gid) trung binh >30, thong tin gdm Ma phong ban (DepartmentID), tén phéng ban (Name), Luong trung binh (AvgOfRate). Dit ligu tir cdc bang [HumanResources] [Department], -14- Bai tip Thye hanh Hé Quan Tri Co sé Dit Ligu [HumanResources].[EmployeeDepartmentHistory], [HumanResources] .[EmployeePayHistory]. 8) Tao view Sales.vw_OrderSummary véi tir khéa WITH ENCRYPTION gdm. OrderYear (nim cia ngay 14p), OrderMonth (thang ctia ngay lap), OrderTotal (téng tién). Sau dé xem théng tin va trg gidp vé ma lénh ctia view nay 9) Tao view Production.vwProducts véi tir kha WITH SCHEMABINDING gém ProductID, Name, StartDate,EndDate,ListPrice ciia bang Product va bing ProductCostHistory. Xem théng tin cia View. Xéa cét ListPrice cua bing Product. Cé xéa duge khéng? Vi sao? 10) Tao view view_Department véi tir kha WITH CHECK OPTION chi chita cae phng thuge nhom cé tén (GroupName) la “Manufacturing” va “Quality Assurance”, théng tin gém: DepartmentID, Name, GroupName. a. Chén thém mét phong ban méi thuge nhém khéng thuge hai nhém “Manufacturing” va “Quality Assurance” théng qua view vita tao. C6 chén duge khéng? Giai thich, b. Chén thém mét phéng méi thuge nhém “Manufacturing” vi mot phéng thudc nhém “Quality Assurance”. c. Ding cau Ignh Select xem két qua trong bing Department. -15- Bai tap Thye hinh Hé Quan Tri Co sé Dit Ligu Module 4, Batch, Stored Procedure, Function Muc ti Hiéu va biét cach lap trinh trong SQL = Viét cde batch Tao va thye thi cdc logi stored procedure va function = Stored Procedure © Tham sé input va output — Function gdm 3 loai ©. Scalar Function © Table valued Function © Multi statement table valued Function 1) Batch 1) Viét mét batch khai béo bién @tongsoHD chita téng sé héa don cia sin phim c6 ProductID="778"; néu @tongsoHD>500 thi in ra chudi “San pham 778 c6 trén 500 don hang”, nguge Igi thi in ra chudi “Sin phim 778 c6 it don dit hang” 2) Viét mét doan Batch véi tham sé @makh va @n chita sé héa don ctia khach @nam chia nim lap héa don (vi dy @nam=2008), néu ‘Khach hing @makh cé @n héa don trong nim 2008” ang @makh, tham s @n>0 thi in ra chudi nguge lai néu @n=0 thi in ra chudi “Khach hing @makh khéng ¢6 héa don nao trong nim 2008” 3) Viét mot batch tinh sé tién giém cho nhimg héa don (SalesOrderlD) c6 ting tign>100000, théng tin gdm [SalesOrderID], SubTotal-SUM((LineTotal]), Discount (tién giam), véi Discount duge tinh nhur sau: * Nhiing héa don c6 SubTotal<100000 thi khéng giam, * SubTotal tir 100000 dén <120000 thi giim 5% cua SubTotal * SubTotal tir 120000 dén <150000 thi giim 10% ciia SubTotal © SubTotal tir 150000 tré Ién thi giam 15% ciia SubTotal -16- Bai tip Thye hanh Hé Quan Tri Co sé Dit Ligu (Goi }: Ding cdu tritc Case... When ...Then ...) 4) Viét m§t Batch véi 3 tham sé: @mance, @masp, @soluongce, chita gia tri cia cée field [ProductID],[BusinessEntity[D],[OnOrderQty], véi gid tri truyén cho che bién @mance, @masp (vd: @mance=1650, @masp=4), thi chong trinh gan gid tri twong img cia field [OnOrderQty] cho bién @soluongee, néu @soluongee tra vé gid tr 14 null thi in ra chudi “Nha cung cp 1650 khéng cung i (vd: @soluongee=5) thi in chudi “Nha cung cAp 1650 phim 4”, nguge cung cap san phim 4 véi sé lugng 1a 5” (Goi Ji: Dit ligu ldy tie [Purchasing].[ProductVendor]) 5) Viét mOt batch thye hign ting hrong gig (Rate) cia nhan vién trong [HumanResources].[EmployeePayHistory] theo digu kign sau: Khi téng luong gig cia tit ca nhan vién Sum(Rate)<6000 thi cap nhat tang hrong gid Ién 10%, néu sau khi cp nhat ma Ivong gid cao nhit ciia nhin vién >150 thi dig. WHILE (SELECT SUM(rate) FROM [HumanResources]. [EmpLoyeePayHistory])<6000 BEGIN UPOATE [HumanResources].[EmpLoyeePayHistory] SET rate = rate*1.1 IF (SELECT MAX(rate) FROM [HumanResources].[EmployeePayHistory]) > 15@ BREAK ELSE CONTINUE END Il) Stored Procedure: 1) Viét mét tha tue tinh tng tién thu (TotalDue) cua méi khdch hang trong mét thang bat ky cia mét nam bat ky (tham sé thang va nm) duge nhap ti ban phim, théng tin gdm: CustomerID, SumOfTotalDue =Sum(TotalDue) 2) Viét mot thi tye ding 48 xem doanh thu tir diu nam cho dén ngay hign tai cia lau véo va mét tham s6 dau ra. Tham m6t nhan vién bat ky, voi mot tham sé @SalesPerson nh§n gid tri du vao theo chi dinh khi goi thi tue, tham sé @SalesYTD duge sir dung dé chita gia tri tra vé cia thi tuc. -I7- Bai tap Thyc hanh Hé Quan Tri Co sé Dit Ligu 3) Viét mét thi tuc tra vé mét danh sch ProductID, ListPrice cia cc sin phim cd gid bin khéng vugt qua mt gia trj chi djnh (tham sé input @MaxPrice) 4) Viét tha tue tn NewBonus cp nhat lai tién thuong (Bonus) cho 1 nhan vién bén hing (SalesPerson), dya trén tng doanh thu cia nhan vién d6. Mite thing méi bang mirc thuéng hién tai céng thém 1% téng doanh thu. Théng tin bao gom [SalesPersonID], NewBonus (thudng méi), SumOfSubTotal. Trong dé: SumOfSubTotal =sum(SubTotal) ‘NewBonus = Bonus sum(SubTotal)*0.01 5) Viét mét thu tuc ding dé xem théng tin cta nhom san phim (ProductCategory) gS input), théng tin gm: ProductCategoryID, Name, SumOfQty. Dit ligu tir bang 6 lugng (OrderQty) dit hang cao nhit trong mot nim tay ¥ (tham s ProductCategory, ProductSubCategory, Product va SalesOrderDetail. (Lamu y: ding Sub Query) 6) Tao thi tue da tén 14 TongThu cé tham sé vao 14 ma nhan vién, tham s6 du ra 1a téng tri gid cdc héa don nhan vién dé ban dugc. St dung lénh RETURN 4é tra vé trang thai thanh céng hay that bai cua thu tyc. 7) Tao tha tuc hién thi tén va s6 tién mua cia cita hing mua nhiéu hang nhat theo nim di cho. 8) Viét tha tuc Sp_InsertProduct cé tham sé dang input ding dé chén mét mau tin vio bang Production.Product. Yéu cdu: chi thém vao cdc trudmg c6 gid tri not null va céc field la khéa ngoai. 9) Viet thu tuc XoaHD, ding dé x6a 1 héa don trong bang Sales.SalesOrderHeader khi biét SalesOrderID. Luu y : truée khi xda miu tin trong Sales.SalesOrderHeader thi phai xéa céc mau tin cia hod don dé trong Sales SalesOrderDetail 10)Viét tha tac Sp_Update_Product cé tham sé Productld ding dé tang listprice Ién 10% né san pham nay t6n tai, ngugc lai hign théng bao khéng 6 sin pham nay. -18- Bai tip Thye hanh Hé Quan Tri Co sé Dit Ligu IM) Function — Scalar Function 1) Viét ham tén CountOfEmployees (dang scalar function) véi tham sé @mapb, gid ti truyén vo ldy tir field [DepartmentID], ham tra vé sé nhan vién trong phéng ban twong img. Ap dung ham da viét vao eau truy van liét ké danh sach cde phéng ban véi sé nhan vién cia méi phéng ban, théng tin gdm: [DepartmentID], Name, countOfEmp véi countOfEmp= CountOfEmployees([DepartmentID)). (Dit ligu lay tie bang [HumanResources]. [EmpLoyeeDepartmentHistory] va [HumanResources] [Department]) tion) véi tham sé vao 1a 2) Viét ham tén 1a InventoryProd (dang scalar fur @ProductID va @LocationID tra vé sé lwong tén kho ctia san pham trong khu vue tuong img véi gid tri ctia tham sé (Dit ligu Idy tir bang[Production]. [Productinventory]) 3) Viét ham tén SubTotalOfEmp (dang scalar function) tra vé tong doanh thu cla mét nhan vién trong mot thang thy y trong mét nim thy y, véi tham sé vio @EmpllD, @MonthOrder, @YearOrder (Thang tin ldy tit bang [Sales] .[SalesOrderHeader]) — Table Valued Functions: 4) Viét ham SumOfOrder véi hai tham s6 @thang va @nam tra vé danh sach cdc héa don (SalesOrderID) lap trong thang va nim duge truyén vao tir 2 tham sé @thang va @nam, cé tong tién >70000, théng tin gom SalesOrderID, OrderDate, SubTotal, trong d6 SubTotal ~sum(OrderQty*UnitPrice). 5) Viét him tén NewBonus tinh lai tién thuéng (Bonus) cho nhan vién ban hang (SalesPerson), dya trén tng doanh thu ctia méi nhan vién, mite thuéng méi bing mie thiong hign tai ting thém 1% téng doanh thu, théng tin bao gém [SalesPersonID], NewBonus (thuéng méi), SumOfSubTotal. Trong do: = SumOfSubTotal =sum(SubTotal), — NewBonus ~ Bonus+ sum(SubTotal)*0.01 6) Viét ham tén SumOfProduct véi tham sé dau vao la @MaNCC (VendorlD), -19- Bai tip Thye hanh Hé Quan Tri Co sé Dit Ligu ham ding dé tinh téng sé long (SumOfQty) va téng tri gid (SumOfSubTotal) ct cdc sin phim do nha cung cdp @MaNCC cung cép, théng tin gdm ProductID, SumO Product, SumOfSubTotal (ste dung céc bing [Purchasing]. [Vendor] [Purchasing]. [PurchaseOrderHeader] va [Purchasing].[PurchaseOrderDetail]) 7) Viét ham t théng tin gdm SalesOrderID, [SubTotal], Discount; trong 46 Discount duge tinh Discount_Fune tinh s6 tin gidm trén cde héa don (SalesOrderID), nu sau: Néu [SubTotal]<1000 thi Discount-0 Néu 1000<=[SubTotal]<5000 thi Discount = 5%[SubTotal] Néu 5000<=[SubTotal]<10000 thi Discount = 10%[SubTotal] Néu [SubTotal>=10000 thi Discount = 15%[SubTotal] Gi J: Ste dung Case.. When ... Then ... case when SubTotal<1@@@ then @ when SubTotal>=10@0 and SubTotal<5@@@ then [SubTotal]*@.@5 when SubTotal>=5@@0 and SubTotal<1@@@@ then [SubTotal]*®.1 else SubTotal*@.15 end (Sit dung dit ligu tir hang [Sales]. [SalesOrderHeader]) 8) Viét ham TotalOfEmp véi tham sé @MonthOrder, @YearOrder dé tinh tong doanh thu ciia cde nhan vién bin hang (SalePerson) trong thang va nim duge truyén vao 2 tham sé, théng tin gém [SalesPersonID], Total, voi Total=Sum([SubTotal]) — Multi-statement Table Valued Functions: 9) Viét lai cdc cau 5,6,7,8 bang Multi-statement table valued function 10) Viét ham tén SalaryOfEmp tra vé két qua ld bang Iuong cia nhan vién, véi tham sé vio li @MaNV (gid tri cia [BusinessEntityID]), théng tin gdm BusinessEntityID, FName, LName, Salary (gid tri cia c6t Rate). Néu gid tri cia tham sé truyén vao 14 Ma nhan vién khde Null thi két qua la bing long cla nhan vién dé. Vi dy thye thi ham: select * from SalaryOfEmp (288) ID FName LName Salary 1 (B88) Roche! Valdez 25.3846 Ba ‘ip Thye ha Hé Quan Tri Co sé Di Két qua li: Néu gid tri truyén vao 1a Null thi két qua la bang long cia ca nhan vién Vi du: thye thi ham select * from SalaryOfEmp(Nul Két qua la 316 record Liane Sanchez Duffy Tambuelo Wiaters Watters Watters Eicksen Goldberg Mller (Dit ligu iy tie 2 bang [HumanResources].[EmployeePayHistory] va [Person]. [Person] ) -21- Bai tip Thye hanh Hé Quin Tri Co s6 Dit Ligu Module 5. TRIGGER Sinh vién hiéu duoc khdi niém vai tro ciia trigger trong CSDL, phan biét loai trigger, hién the duoc céc loi trigger trén CSDL AdventureWorks — Trigger chi co thé dugc kich hoat mét cach te déng boi mét trong céc lénh Insert, Update, Delete. — Khi m6t trigger dugc kich hoat. © Ditligu duge insert hoc update sé duge chita trong bang Inserted © Dit ligu bj delete dugc chita trong bang Deleted. Inserted vi Deleted la 2 bang tam chi cé gid tri bén trong trigger, thudng ding dé kiém tra dit ligu truéc khi commit hay roll back — Cé thé dp dung trigger cho View = Loai trigger: © INSTEAD OF trigger: bé qua céc hanh déng kich hoat trigger (cée thao tac insert, delete, update), thay vao dé né sé thyc hign céc cau Iénh bén trong trigger. Thuong ding trong View véi cic chite nding sau: "Cap nhét nhiéu bang trong view cing mot hie = Tang diéu kién rang bude trén cde thude tinh so voi CHECK "Dinh gid trang thai cia bang rude va sau khi cp nhdt dit ligu. = Cho phép tir choi mot phan cdc cau lénh va thc thi phan con lai © AFTER trigger (FOR): duege thyc thi sau khi cée cau lénh SOL the thi thanh cong. AFTER trigger la trigger mac dinh khi ding tir FOR. = Khéng ding trong view ) 1. Tao m6t Instead of trigger thyc hign trén view. Thy hign theo cae bude sau: — Tao méi 2 bang M_Employees va M_Department theo cau tric sau: create table M_Department DepartmentID int not null primary key, Name nvarchar(50). GroupName nvarchar(50) -22- Bai tip Thye hanh Hé Quan Tri Co sé Di Ligu create table M_Employees EmployeeID int not null primary key, Firstname nvarchar(50), ‘MiddleName nvarchar(50). LastName nvarchar(50). DepartmentID int foreign key references M_Department(DepartmentID) 10 mét view tén EmpDepart_View bao gém cac field: EmployeelD, FirstName, MiddleName, LastName, DepartmentID, Name, GroupName, dya trén 2 bing M_Employees vi M_Department. — Tao mot trigger tén InsteadOf Trigger thye hign tn view EmpDepart_View, ding d& chén dit ligu vao céc bang M_Employees va M_Department khi chén m6t record méi théng qua view EmpDepart_View. Dir ligu test: insert EmpDepart_view values(1, 'Nguyen''Hoang’,'Huy’, 11,'Marketing','Sales') 4 Két qua Deparment Nave goupName 1 | Marketing Soles Employee!0 inane WiddeName LastName DeparimertiD 7 i Nguyen Hoang Huy 1 2, Tao mét trigger thyc hién trén bang MySalesOrders cé chite nang thiét lap 46 uu tién ciia Khich hang (CustPriority) khi ngudi ding thye hign cae thao téc Insert, Update va Delete trén bang MySalesOrders theo diéu kién nhu sau: téng tién Sum(SubTotal) ciia khach hang dudi 10,000 $ thi dé wu tién cia khach hang (CustPriority) 1a 3 ng tién Sum(SubTotal) cia khich hang tir 10,000 $ dén duéi 50000 $ thi d@ wu tién cia khdch hang (CustPriority) 14 2 - Na — Néu tng tién Sum(SubTotal) ciia khdch hang tir 50000 $ tré 1én thi d6 wu tién cla khich hang (CustPriority) 1a 1 Cae bude thye hign: — Tao bang MCustomers va MSalesOrders theo cau tric sau: create table MCustomer ( CustomerID int not null primary key, CustPriority int -23- Bai tip Thye hanh Hé Quan Tri Co sé Di Ligu ) create table MSalesOrders SalesOrderID int not null primary key. OrderDate date, SubTotal money, CustomerID int foreign key references MCustomer(CustomerID) ) — Chen dit ligu cho bang MCustomers, lay dit ligu tir bing Sales.Customer, nhung chi ly CustomerlD>30100 va CustomerID<30118, e6t CustPriority cho gid tri null. — Chén dit ligu cho bang MSalesOrders, ly dit ligu tir bing Sales.SalesOrderHeader, chi lay nhiing héa don cia khach hang c6 trong bing Khach hang. — Viét trigger dé ldy dit ligu tir 2 bang inserted va deleted. — Vide iu lénh kiém tra viée thyc thi ciia trigger vita tao bing x6a hoc update mt record trén bang MSalesOrders Vidt mét trigger thye hign trén bang MEmployees sao cho khi ngudi ding thye hign chén thém mét nhan vién moi vio bang MEmployees thi chuong trinh c4p nhat sé nhan vién trong cot NumOfEmployee cia bang MDepartment. Néu tong nhan vién cia phong tong mg <-200 thi cho phép chén thém, nguge lai thi hign thj théng bo “B6 phan da da nhin vin” va hy giao tic. Céc bude thyc hign: — Tao méi 2 bing MEmployees va MDepartment theo cdu tric sau: create table MDepartment © DepartmentID int not null primary key, ‘Name nvarchar(50), NumOfEmployee int ) create table MEmployees ( EmployeelD int not null, FirstName nvarchar(50), MiddleName nvarchar(50), LastName nvarchar(50). DepartmentID int foreign key references MDepartment(DepartmentID), constraint pk_emp_depart primary key(EmployeeID, DepartmentID) -24- Bai tap Thyc hinh Hé Quan Trj Co sé Du Ligu — Chén dit ligu cho bang MDepartment, lay dir ligu tir bing Department, edt NumOfEmployee gin gid tri NULL, bing MEmployees liy tr bing EmployeeDepartmentHistory — Viét trigger theo yéu cau trén va viét cau Iénh hién thye trigger 4, Bang [Purchasing].[Vendor], chia thong tin cia nha cung cdp, thuge tinh CreditRating hign thj thong tin danh gia mite tin dung, ¢6 cdc gid tri: 1 = Superior 2= Excellent = Above average 4= Average 5 = Below average Viét mt trigger nhim dim bio khi chén thém mt record méi yao bing [Purchasing].[PurchaseOrderHeader], néu Vender cé CreditRating=5 thi hién thi thong bao khong cho phép chén va ding théi hity giao tac. Dit ligu test INSERT INTO Purchasing.PurchaseOrderHeader _ (RevisionNumber, — Status, EmployeeID, VendorID, ShipMethodID, OrderDate, ShipDate, SubTotal, TaxAmt, Freight) VALUES ( 2 ,3, 261, 1652, 4 ,GETDATE( ,GETDATE() , 44594.55, ,3567,564, ,1114.8638 ); 5, Viét mét trigger thuc hign trén bang ProductInventory (luu théng tin sé luongsan phim trong kho). Khi chén thém mét don dat hang vao bing SalesOrderDetail vii sé lugng xéc dinh trong field uct) en tn OrderQty, néu sé Iugng trong kho Quantity> OrderQty thi cap nhat lai sé wong = trong ~—kho OrderQty, nguge lai néu Quantity=0 thi xuat Quantity= Quantit thong bao “Kho hét hang” va déng thai hniy giao tac. -25- Bai tip Thye hanh Hé Quan Tri Co sé Di Ligu 6. Tao trigger c4p nhat tién thuéng (Bonus) cho nhan vién ban hang SalesPerson, khi ngudi ding chén thém mét record méi trén bing SalesOrderHeader, theo quy dinh nhw sau: Néu téng tign bin duge cia nhan vién c6 héa don méi nhap vio bang SalesOrderHeader cé gia tri >10000000 thi tang tien thuéng lén 10% cia mite thudng hign tai. Cach thye hign: * Tao hai bang méi M_SalesPerson va M_SalesOrderHeader create table M_SalesPerson SalePSID int not null primary key. TerritoryID int, BonusPS money ) create table M_SalesOrderHeader ( SalesOrdID int not null primary key. OrderDate date SubTotalOrd money. SalePSID int foreign key references M_SalesPerson(SalePSID) * Chen dé ligu cho hai bang trén léy tir SalesPerson va SalesOrderHeader chon nhimg field tong img véi 2 bang méi tao. * Vidt trigger cho thao tic insert trén bing M_SalesOrderHeader, khi trigger thyc thi thi dir ligu trong bang M_SalesPerson duge c4p nhat. -26- Bai tp Thye hinh Hé Quan Tri Co sé Du Ligu Module 6, ROLE - PERMISSION Sir dung SSMS (Sql Server Management Studio) dé thyc hién céc thao téc sau: 1) Ding nh§p vao SQL bing SQL Server authentication, tdi khodn sa. Sit dung T- SQL. 2) Tao hai login SQL server Authentication User2 va User3 3) Tao mét database user User? img véi login User? va mt database user User3 img v6i login User3 trén CSDL Adventure Works2008. 4) Tao 2 két néi dén server théng qua login User2 va User3, sau dé thye hién cdc thao téc tray cp CSDL cita 2 user tong img (VD: thyc hign céu Select). C6 thye hign duge khong? 5) Gan quyén select trén Employee cho User2, kiém tra két qua. Xéa quyén select trén Employee cho User2. Ngat 2 két néi cua User2 va User3 6) Tra Iai két ndi cia sa, tao mét user-defined database Role tén Employee_Role trén CSDL AdventureWorks2008, sau dé gan cde quyén Select, Update, Delete cho Employee Role. 7) Thém cac User2 va User3 vao Employee_Role. Tao lai 2 két néi dén server thong qua login User2 va User’ thy hign cdc thao tac sau: a) Tai két néi v6i User2, thyc hién cau Iénh Select dé xem théng tin cia bang Employee b) Tai két néi cia User3, thye hign cAp nhat JobTitle="Sale Manager’ ciia nhan vign c6 BusinessEntityID=1 ©) Tai két ndi User2, ding cau Iénh Select xem lai két qua. 4) Xéa role Employee_Role, (qué trinh xéa role ra sao?) -27- Bai tp Thyc hinh Hé n Tri Co sé DU Ligu Module 7. TRANSACTION Muc tigu: a} = Sinh vién hiéu khai nigm vé transaction, 4 thugc tinh co ban cia transaction, co ché hoat déng ctta transaction = Hién thee dugc transaction trong mét ngit canh cu thé XM / I. SINGLE TRANSACTION Autocommit mode 1A ché d quin ly giao dich mic dinh cia SQL Server Database Engine. Mdi lénh Transact-SQL durge Commit hoje Rollback khiné hoan thanh. 1) Thém vio bang Department mét dong dit liu tiy y bang cau lénh INSERT..VALUES... a) ‘Thue hign lénh chén thém vao bang Department mot ding dit ligu tly ¥ bing cach thyc hign Iénh Begin tran va Rollback, ding cau Iénh Select * From Department xem két qua. b) Thue hign cau 1é & qua. autocommit cla SQL Server (SET IMPLICIT_TRANSACTIONS ON). Tao doan batch gdm cac thao tac: th trén v6i 1énh Commit va kiém tra — Thém mét ding vao bing Department — Tao m6t bang Test (ID int, Name nvarchar(10)) — Thém mét ding vio Test — ROLLBACK; — Xem dé liéu & bang Department va Test dé kiém tra dit liéu, giai thich két qua, 3) Viét doan batch thye hign cae thao tée sau (lu y thyc hign Iénh SET XACT_ABORT ON: néu cau Iénh T-SQL lam phat sinh 16i run-time, toin b6 giao dich duge chim ditt va Rollback) Cau Iénh SELECT véi phép chia 0 :SELECT 1/0 as Dummy nhat mt dong trén bang Department véi DepartmentID="9" (id nay khéng tén tai) — Xba mt ding khéng tn tai trén bing Department (DepartmentID ="66") sm mét dong bat ky vao bang Department COMMIT; ‘Thy thi doan batch, quan sit két qua va cdc thong bao I6i va giai thich két qua. -28- Bai tp Thye hanh Hé Quin Tri Co sé Dt Ligu 4) Thye hign lgnh s ju Ignh 18i sé rollback, transaction van tiép tuc’ ET XACT_ABORT OFF (nhing sau dé thye thi lai cdc thao tae cla doan batch 6 cau 3. Quan sat két qua va giai thich két qua? Il, CONCURRENT TRANSACTIONS (Cie giao téc ding thai) 1) Tao bang Accounts (AccountID int NOT NULL PRIMARY KEY, balance int NOT NULL CONSTRAINT unloanable_account CHECK (balance >= 0) Chén dit ligu: INSERT INTO Accounts (acctID, INSERT INTO Accounts (acctID,] 2) SET TRANSACTION ISOLATION LEVEL 'T TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SNAPSHOT | SERIALIZABLE tha — READ UNCOMMITTED: cé t lance) VALUES (101,100); nce) VALUES (202,2000); joc nhimg dong dang duge higu chinh bai cdc transaction khée nhung chua commit — READ COMMITTED: khéng thé dgc nhimg dong dang hiéu chinh béi nhiing transaction khdc ma chwa commit 3) M@2 cira sé Query cia SQL server, thiét lap SET TRANSACTION ISOLATION LEVEL READ COMMITTED 6 ca 2 cita sé (tam goi la client A bén trdi, va client B bén phai) — Bi: Client A, client B: cing thye hign Ignh SELECT trén bang Accounts yéi AccountID =101 — B2: Client A cap nhit account trén AccountID =101, balance =1000-200 — B3: lient B cap nhat account trén AccountID =101, balance =1000-500 — B4: Client A: SELECT trén Accounts véi AccountID =101; COMMIT; -29- Bai tp Thye hinh Hé Quan Tri Co sé Dt Ligu — BS: “lient B: SELECT trén Accounts véi AccountID =101; COMMIT; Quan sat két qua hién thi va giai thich. 4) Thiét lp ISOLATION LEVEL REPEATABLE READ (khong thé doc duge dit ligu da duoc higu chinh nhung cha commit béi céc transaction khéc va khong cb transaction khdc 6 thé higu chinh dit liu da duoc doc béi cdc giao dich hién tai cho dén transaction hién tai hodn thanh) 6 2 client. Thye hién yéu cau sau: B1: Client A, client B: cing thyc hién lénh SELECT trén bang Accounts voi AccountID =101 — B2: Client A cp nh§t accounts trén AccountID =101, balance =1000-200 — B3: Client B cp nh§t accounts trén AccountID =101, balance =1000-500. — Ba: lient A: SE) trén Accounts véi AccountID =101; COMMIT; Quan sat két qua hign thi va giai thich. 5) Gia sir e6 2 giao dich chuyén tién tir tai khoan 101 va 202 nhu sau: — Client A chuyén 1008 tir tai khoan 101 sang 202 — Client B chuyén 2008 tir tAi khoan 202 sang 101. Viét céc Iénh tong img 6 2 client dé kiém soat cdc giao dich xay ra ding 6) Xéa tit ed dir ligu eda bing Accounts. Thém lai cic dong méi INSERT INTO Accounts (AccountID balance) VALUES (101,1000); INSERT INTO Accounts (AccountID balance) VALUES (202,200); — BI: Client A: cp nhit balan iia account gidm di 100 cho AecountID =101, cAp nhat balance cua account ting lén 100 cho AccountID =202 — B2: Client B: thiét lap ISOLATION LEVEL READ UNCOMMITTED SELECT * FROM Accounts COMMIT; -30- Bai tp Thye hanh Hé Quin Tri Co sé Dt Ligu — B3: Client A: ROLLBACK; SELECT * FROM Accounts; COMMIT; Quan sat két qua va gidi thich. 7) Xéa tit ca dir ligu eda bang Account, thém lai céc ding méi INSERT INTO Accounts (AccountID , balance) VALUES (101,1000); INSERT INTO Accounts (AccountID balance) VALUES (202,2000); ~ Bi: lient A: thiét lip ISOLATION LEVEL REPEATABLE READ: Lay ra céc Accounts cé Balance>1000 - B2: Client B: INSERT INTO Accounts (AecountID , balance) VALUES (303,300); COMMIT; - B3: Client Az SELECT * FROM Accounts WHERE balance > 1000; COMMIT; Quan sit két qua va giai thich. -31- Bai tp Thyc hinh Hé n Tri Co sé DU Ligu Module 8. Bao tri co s@ dir ligu } Myc tigu: — Backup va Recovery co’ sé dit ligu 1. Trong SQL Server, tao thiét bi backup 6 tén adv2008back Iuu trong thu myc TAbackup\adv2008back.bak 2, Attach CSDL AdventureWorks2008, chon mode recovery cho CSDL nay [a full, rdi thye hign full backup vao thiét bj backup vira tao 3. M@ CSDL Adventure Works2008, tao mét transaction gidm gid tét ca mat hang xe dap trong bang Product xudng $15 néu tng tr} gia cae mat hang xe dap khéng thap hon 60%, 4. Thue hién cdc backup sau cho CSDL AdventureWorks2008, tat c backup déu hu vio thiét bj backup vira tao a, Tao 1 differential backup b. Tao 1 transaction log backup 5. (Lau ¥ 6 bude 7 thi CSDL AdventureWorks2008 sé bi x6a. Hay Ién ké hogch phuc hdi co sé dit ligu cho cdc hoat déng trong cau 5, 6) Xa moi ban ghi trong bang Person, EmailAddress, tao 1 transaction log backup 6. Thye hign lénh: a. Bé sung thém 1 sé phone méi cho nhan vién cé ma sé business 14 10000 nhu sau: INSERT INTO Person.PersonPhone VALUES (10000,'123-456- 7890',1,GETDATE() b, Sau dé tao 1 differential backup cho AdventureWorks2008 va hu vao thiét bj backup vita tao chu ¥ gid hé théng ciia may. Doi | phat sau, x6a bing Sales.ShoppingCartltem 7. X6a CSDL AdventureWorks2008 8. Bé khéi phuc lai CSDL: a. Nhu lic ban dau (truéc c4u 3) thi phai restore thé nao? b. G tinh trang gia xe dap da duge cap nhat va bang Person. EmailAddress vin cén nguyén chua bj xéa (trade cau 5) thi can phai restore thé nao’ é i duge chi y trong cau 6c thi thyc hign vige restore lai CSDL AdventureWorks2008 ra sao? 9. Thye hign dogn Ignh sau: CREATE DATABASE Plan2Recover; USE Plan2Recover; CREATE TABLE TI ( -32- Bai tp Thye hanh Hé Quin Tri Co sé Dt Ligu PK INT Identity PRIMARY KEY, Name VARCHAR(IS) » Go INSERT T1 VALUES (‘Full’); Go BACKUP DATABASE Plan2Recover TO DISK ='T: Tiép tuc thy hign cdc Iénh sau: INSERT T1 VALUES (‘Log 1'); Go BACKUP Log Plan2Recover TO DISK ="T:\P2R.bak’ WITH NAME = 'P2R_Log'; tue thye hign cdc Iénh sau: INSERT T1 VALUES (‘Log 2’); Go BACKUP Log Plan2Recover TO DISK ='T:\P2R.bak' WITH NAME = 'P2R_Log'; X6a CSDL vita tao, rdi thye hién qua trinh khéi phuc nhw sau: Use Master; RESTORE DATABASE Plan2Recover FROM DISK = 'TAP2R.bak’ With FILE = 1, NORECOVERY; RESTORE LOG Plan2Recover FROM DISK ="T:\P2R.bak' With FILE = 2, NORECOVERY; TORE LOG Plan2Recover FROM DISK ="T:\P2R. bak’ With FILE = 3, RECOVERY: KIEM TRA BAI TAP THUC HA! -33-

You might also like