Bài Tập Hệ Quản Trị CSDL

24 2.6K 2
Bài Tập Hệ Quản Trị CSDL

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

I. Câu lệnh SELECT sử dụng các hàm thống kê với các mệnh đề Group by và Having1)Liệt kê danh sách các hóa đơn (SalesOrderID) lặp trong tháng 6 năm 2008 có tổng tiền >70000, thông tin gồm SalesOrderID, Orderdate, SubTotal, trong đó SubTotal =sum(OrderQtyUnitPrice).2)Đếm tổng số khách hàng và tổng tiền của những khách hàng thuộc các quốc gia có mã vùng là US (lấy thông tin từ các bảng SalesTerritory, Sales.Customer, Sales.SalesOrderHeader, Sales.SalesOrderDetail). Thông tin bao gồm TerritoryID, tổng số khách hàng (countofCus), tổng tiền (Subtotal) với Subtotal = SUM(OrderQtyUnitPrice)3)Tính tổng trị giá của những hóa đơn với Mã theo dõi giao hàng (CarrierTrackingNumber) có 3 ký tự đầu là 4BD, thông tin bao gồm SalesOrderID, CarrierTrackingNumber, SubTotal=sum(OrderQtyUnitPrice) 4)Liệt kê các sản phẩm (product) có đơn giá (unitPrice)5, thông tin gồm ProductID, name, AverageofQty5)Liệt kê các công việc (JobTitle) có tổng số nhân viên >20 người, thông tin gồm JobTitle, countofPerson=count()6)Tính tổng số lượng và tổng trị giá của các sản phẩm do các nhà cung cấp có tên kết thúc bằng ‘Bicycles’ và tổng trị giá >800000, thông tin gồm BusinessEntityID, Vendor_name, ProductID, sumofQty, SubTotal(sử dụng các bảng Purchasing.Vendor Purchasing.PurchaseOrderHeader và Purchasing.PurchaseOrderDetail)7) Liệt kê các sản phẩm có trên 500 đơn đặt hàng trong quí 1 năm 2008 và có tổng trị giá >10000, thông tin gồm ProductID, Product_name, countofOrderID và Subtotal8)Liệt kê danh sách các khách hàng có trên 25 hóa đơn đặt hàng từ năm 2007 đến 2008, thông tin gồm mã khách (PersonID) , họ tên (FirstName + + LastName as fullname), Số hóa đơn (CountOfOrders).9)Liệt kê những sản phẩm có tên bắt đầu với ‘Bike’ và ‘Sport’ có tổng số lượng bán trong mỗi mỗi năm trên 500 sản phẩm, thông tin gồm ProductID, Name, CountofOrderQty, year. (dữ liệu lấy từ các bảng Sales.SalesOrderHeader, Sales.SalesOrderDetail, and Production.Product)10)Liệt kê những phòng ban có lương (Rate: lương theo giờ) trung bình >30, thông tin gồm Mã phòng ban (DepartmentID), tên phòng ban (name), Lương trung bình (AvgofRate). Dữ liệu từ các bảng HumanResources.Department, HumanResources.EmployeeDepartmentHistory, HumanResources.EmployeePayHistory.

Hệ Quản Trị Cơ Sở Dữ Liệu Mục Lục: Tìm hiểu Cơ sở liệu AdventureWork2008 - Tạo quản trị sở liệu – Database file – File group Mục tiêu: - Tìm hiểu sở liệu AdventureWork2008 Tạo quản trị sở liệu Database Tạo quản lý Table (Bảng liệu) Tạo lược đồ quan hệ (Relationship Diagram) Tạo, sửa, xóa áp dụng kiểu liệu SQL Server 2008 Biết số thủ tục trợ giúp database Datatype Xây dựng ràng buộc (constraint) cho bảng Thêm, sửa, xóa truy vấn liệu Mô tả CSDL AdventureWork2008: Gồm lược đồ • • • • • • Dbo Humanresource Person Production Purchasing Sales AdventureWorks sở liệu mẫu tạo để sử dụng giảng dạy phiên Microsoft SQL Server AdventureWorks sở liệu quản lý bán hàng công ty đa quốc gia sản xuất bán mặt hàng kim loại xe đạp thể thao đến thị trường Bắc Mỹ, châu Âu châu Á Cơ sở hoạt động nằm Bothell, Washington, nhân viên họ đội bán hàng khu vực bố trí khắp sở thị trường họ Công ty tìm kiếm để mở rộng thị phần cách nhắm đến khách hàng tốt họ, mở rộng sản phẩm sẵn có thông qua trang web bên Tổ chức ý nghĩa lược đồ CSDL Schema Contains objects related to Examples HumanResource s Employees of Adventure Works Cycles Employee Table Department Table Person Names and addresses of individual customers, vendors, and employees Contact Table Address Table StateProvince Table I Production Products manufactured and sold by Adventure Works Cycles BillOfMaterials Table Product Table WorkOrder Table Purchasing Vendors from who parts and products are purchased PurchaseOrderDetail Table PurchaseOrderHeader Table Vendor Table Sales Customers and sales-related data Customer Table SalesOrderDetail Table SalesOrderHeader Table Thực thao tác sở liệu AdventureWorks2008 Tạo diagram gồm bảng liên quan đến Customer Product hình trang sau SalesPerson (Sales) BusinessEntityID TerritoryID SalesQuota Bonus CommissionPct SalesYTD SalesLastYear rowguid ModifiedDate ProductCategory (Production) ProductCategor SalesTerritory (Sales) Name TerritoryID rowguid Name ModifiedDate CountryRegionCode [Group] SalesYTD SalesLastYear CostYTD CostLastYear ProductSubcategory (Production) rowguid ProductSubcategoryID ModifiedDate ProductCategoryID Name rowguid ModifiedDate Store (Sales) Customer (Sales) BusinessEntityID StoreID Name TerritoryID SalesPersonID AccountNumber Demographics rowguid rowguid ModifiedDate Product (Production) ModifiedDate WeightUnitMeasureCode Weight DaysToManufacture ProductLine StartDate Style BusinessEntity (Person) EndDate ProductSubcategoryID BusinessEntityID ProductModelID rowguid SellStartDate ModifiedDate SellEndDate DiscontinuedDate rowguid ProductVendor (Purchasing) SalesOrderHeader (Sales) SalesOrderID RevisionNumber OrderDate DueDate ShipDate Status OnlineOrderFlag SalesOrderNumber ProductID Vendor (Purchasing) BusinessEntityID StartDate AverageLeadTime AccountNumber EndDate StandardPrice Name ListPrice LastReceiptCost CreditRating ModifiedDate LastReceiptDate PreferredVendorStatus MinOrderQty ActiveFlag MaxOrderQty PurchasingWebService OnOrderQty ModifiedDate UnitMeasureCode PurchaseO rderNumber ModifiedDate AccountNumber CustomerID SalesPersonID Employee (HumanResources) BusinessEntityID SalesOrderDetail (Sales) NationalIDNumber LoginID SalesOrderID OrganizationNode SalesOrderDetailID CarrierTrackingNumber OrderQty ProductID SpecialOfferID UnitPrice UnitPriceDiscount LineTotal rowguid ModifiedDate ProductListPriceHistory (Production) ProductID BusinessEntityID PurchaseOrderHeader (Purchasing) PurchaseOrderID OrganizationLevel JobTitle BirthDate RevisionNumber MaritalStatus Status Gender EmployeeID HireDate VendorID SalariedFlag ShipMethodID VacationHours OrderDate ShipDate SubTotal TaxAmt Freight TotalDue EmployeeDepartmentHistory (HumanResources) ModifiedDate BusinessEntityID DepartmentID ShiftID StartDate EndDate ModifiedDate PurchaseOrderDetail (Purchasing) PurchaseOrderID PurchaseOrderDetailID DueDate OrderQty ProductID UnitPrice LineTotal ReceivedQty RejectedQty StockedQty ModifiedDate ProductCostHistory (Production) ProductID Class StandardCost ModifiedDate Tìm hiểu field liên kết bảng (Khóa khóa ngoại) [Production].[Product] [Person].[BusinessEntity] [Production].[ProductCostHistory] [Sales].[Store] [Production] [ProductListPriceHistory] [Production].[ProductSubcategory] [Sales].[Customer] [Production].[ProductCategory] [Sales].[SalesPerson] [Purchasing].[PurchaseOrderDetail] [Sales].[SalesOrderHeader] [Purchasing].[PurchaseOrderHeader] [Sales].[SalesOrderDetail] [Purchasing].[Vendor] [HumanResources].[Employee] [Purchasing].[ProductVendor] [HumanResources] [EmployeeDepartmentHistory] [Sales].[SalesTerritory] Sử dụng T-SQL tạo sở liệu tên SmallWorks, với file group tên SWUserData1 SWUserData2, lưu theo đường dẫn T:\Hoten\tentaptin CREATE DATABASE SmallWorks ON PRIMARY ( NAME = 'SmallWorksPrimary', FILENAME = 'T:\Hoten\SmallWorks.mdf', SIZE = 10MB, FILEGROWTH = 20%, MAXSIZE = 50MB ), FILEGROUP SWUserData1 ( NAME = 'SmallWorksData1', FILENAME = 'T:\Hoten\SmallWorksData1.ndf', SIZE = 10MB, FILEGROWTH = 20%, MAXSIZE = 50MB ), FILEGROUP SWUserData2 Dùng SSMS để xem kết quả: Click phải tên CSDL vừa tạo a Chọn filegroups, quan sát kết quả: • Có filegroups, liệt kê tên filegroup • Filegroup mặc định gì? b Chọn file, quan sát có database file? Dùng T-SQL tạo thêm filegroup tên Test1FG1 SmallWorks, sau add thêm file filedat1.ndf filedat2.ndf dung lượng 5MB vào filegroup Test1FG1 Dùng SSMS xem kết Dùng T-SQL tạo thêm một file thứ cấp filedat3.ndf dung lượng 3MB filegroup Test1FG1 Sau sửa kích thước tập tin lên 5MB Dùng SSMS xem kết Dùng T-SQL xóa file thứ cấp filedat3.ndf Dùng SSMS xem kết Xóa filegroup Test1FG1? Bạn có xóa không? Nếu không giải thích? Muốn xóa bạn phải làm gì? Xem lại thuộc tính (properties) CSDL SmallWork cửa sổ thuộc tính properties thủ tục hệ thống sp_helpDb, sp_spaceused, sp_helpfile Quan sát cho biết trang thể thông tin gì? Tại cửa sổ properties CSDL SmallWork, chọn thuộc tính ReadOnly, sau đóng cửa sổ properies Quan sát màu sắc CSDL Dùng lệnh T-SQL gỡ bỏ thuộc tính ReadOnly đặt thuộc tính cho phép nhiều người sử dụng CSDL SmallWork Trong CSDL SmallWork, tạo bảng theo cấu trúc sau: 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 SWUserData1 -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 liệu vào bảng trên, lấy liệu từ bảng Person bảng Product AdventureWorks2008 (lưu ý: rõ tên sở liệu lược đồ), dùng lệnh Select Into Dùng lệnh select* để xem liệu bảng Person bảng Product SmallWorks 11 Dùng SSMS, detach sở liệu SmallWorks khỏi phiên làm việc SQL 12 Dùng SSMS, Attach sở liệu SmallWorks vào SQL II BÀI TẬP VỀ NHÀ: Yêu cầu sinh viên làm nộp lại cho giáo viên trước buổi học hôm sau I Dùng T-SQL tạo CSDL T:\HoTen\Sales, thông số tùy ý, CSDL Sales thực công việc sau: Tạo kiểu liệu người dùng sau: Name Schema Data Type Length Storage Allow Nulls Mota IDKH dbo dbo nvarchar char 40 10 50 10 Yes No DT dbo char 12 50 yes Tạo bảng theo cấu trúc sau: SanPham Attribute name Datatype Masp char(6) HoaDon Attribute name Datatype MaHD Char(10) TenSp NgayNhap DVT SoLuongTon DonGiaNhap varchar(20) Date char(10) Int money KhachHang MaKH TenKH Diachi Dienthoai IDKH Nvarchar(30) Nvarchar(40) DT NgayLap NgayGiao Makh DienGiai Date Date IDKH Mota ChiTietHD Attribute name Datatype MaHD Char(10) Masp Char(6) Soluong int Trong Table HoaDon, sửa cột DienGiai thành nvarchar(100) Thêm vào bảng SanPham cột TyLeHoaHong float Xóa cột NgayNhap bảng SanPham Tạo ràng buộc khóa khóa ngoại cho bảng Thêm vào bảng HoaDon ràng buộc sau: − NgayGiao >= NgayLap − MaHD gồm ký tự, ký tự đầu chữ, ký tự lại số − Giá trị mặc định ban đầu cho cột NgayLap luôn ngày hành Thêm vào bảng Sản phẩm ràng buộc sau: − SoLuongTon nhập từ đến 500 − DonGiaNhap lớn − Giá trị mặc định cho NgayNhap ngày hành − DVT nhập vào giá trị ‘KG’, ‘Thùng’, ‘Hộp’, ‘Cái’ Dùng lệnh T-SQL nhập liệu vào table trên, liệu tùy ý, ý ràng buộc Table 10 Xóa hóa đơn bảng HoaDon Có xóa không? Tại sao? Nếu muốn xóa phải dùng cách nào? 11 Nhập ghi vào bảng ChiTietHD với MaHD = ‘HD999999999’ MaHD=’1234567890’ Có nhập không? Tại sao? 12 Đổi tên CSDL Sales thành BanHang 13 Tạo thư mục T:\QLBH, chép CSDL BanHang vào thư mục này, bạn có chép không? Tại sao? Muốn chép bạn phải làm gì? Sau chép bạn thực Attach vào lại SQL 14 Tạo BackUp cho CSDL BanHang 15 Xóa CSDL BanHang 16 Phục hồi lại CSDL BanHang 10 Thao tác liệu Mục tiêu: (Phần I./ Câu lệnh SELECT sử dụng hàm SV tự thực hành nhà, thống kê với mệnh đề Group by nộp làm buổi Having học kế tiếp) − Ôn lại cấu trúc select câu lệnh có lệnh nhóm, subquery − Thực loại merge Query, Pivot query, query tham số CTE 1) Liệt kê danh sách hóa đơn (SalesOrderID) lặp tháng năm 2008 có tổng tiền >70000, thông tin gồm SalesOrderID, Orderdate, SubTotal, SubTotal =sum(OrderQty*UnitPrice) 2) Đếm tổng số khách hàng tổng tiền khách hàng thuộc quốc gia có mã vùng US (lấy thông tin từ bảng SalesTerritory, Sales.Customer, Sales.SalesOrderHeader, Sales.SalesOrderDetail) Thông tin bao gồm TerritoryID, tổng số khách hàng (countofCus), tổng tiền (Subtotal) với Subtotal = SUM(OrderQty*UnitPrice) 3) Tính tổng trị giá hóa đơn với Mã theo dõi giao hàng (CarrierTrackingNumber) có ký tự đầu 4BD, thông tin bao gồm SalesOrderID, CarrierTrackingNumber, SubTotal=sum(OrderQty*UnitPrice) 4) Liệt kê sản phẩm (product) có đơn giá (unitPrice)5, thông tin gồm ProductID, name, AverageofQty 5) Liệt kê công việc (JobTitle) có tổng số nhân viên >20 người, thông tin gồm JobTitle, countofPerson=count(*) 6) Tính tổng số lượng tổng trị giá sản phẩm nhà cung cấp có tên kết thúc ‘Bicycles’ tổng trị giá >800000, thông tin gồm BusinessEntityID, Vendor_name, ProductID, sumofQty, SubTotal (sử dụng bảng [Purchasing].[Vendor] [Purchasing].[PurchaseOrderHeader] [Purchasing].[PurchaseOrderDetail]) 7) Liệt kê sản phẩm có 500 đơn đặt hàng quí năm 2008 có tổng trị giá >10000, thông tin gồm ProductID, Product_name, countofOrderID Subtotal 11 8) Liệt kê danh sách khách hàng có 25 hóa đơn đặt hàng từ năm 2007 đến 2008, thông tin gồm mã khách (PersonID) , họ tên (FirstName +' '+ LastName as fullname), Số hóa đơn (CountOfOrders) 9) Liệt kê sản phẩm có tên bắt đầu với ‘Bike’ ‘Sport’ có tổng số lượng bán mỗi năm 500 sản phẩm, thông tin gồm ProductID, Name, CountofOrderQty, year (dữ liệu lấy từ bảng Sales.SalesOrderHeader, Sales.SalesOrderDetail, and Production.Product) 10)Liệt kê phòng ban có lương (Rate: lương theo giờ) trung bình >30, thông tin gồm Mã phòng ban (DepartmentID), tên phòng ban (name), Lương trung bình (AvgofRate) Dữ liệu từ bảng [Department], [HumanResources] [HumanResources].[EmployeeDepartmentHistory], [HumanResources].[EmployeePayHistory] II./ Subquery 11)Liệt kê sản phẩm gồm thông tin product names product ID có 100 đơn đặt hàng tháng năm 2008 12)Liệt kê sản phẩm (ProductID, name) có số hóa đơn đặt hàng nhiều tháng 7/2008 13)Hiển thị thông tin khách hàng có số đơn đặt hàng nhiều nhất, thông tin gồm: CustomerID, Name, CountofOrder 14)Liệt kê sản phẩm (ProductID, Name) thuộc mô hình sản phẩm áo dài tay với tên bắt đầu với “Long-Sleeve Logo Jersey”, dùng phép IN EXISTS, (sử dụng bảng Production.Product Production.ProductModel 15)Tìm mô hình sản phẩm (ProductModelID) mà giá niêm yết (list price) tối đa cao giá trung bình tất mô hình 12 16)Liệt kê sản phẩm gồm thông tin ProductID, Name, có tổng số lượng đặt hàng >5000 (dùng In, exists) 17)Liệt kê sản phẩm (ProductID, UnitPrice) có đơn giá (UnitPrice) cao bảng Sales.SalesOrderDetail 18)Liệt kê sản phầm đơn đặt hàng thông tin gồm ProductID, Name, dùng cách Not in, not exists left join 19)Liệt kê nhân viên không lập hóa đơn từ sau ngày 1/5/2008, thông tin gồm EmployeeID, FirstName, LastName (dữ liệu từ bảng HR.Employees Sales.Orders) 20)Liệt kê danh sách khách hàng (customerID, name) có hóa đơn dặt hàng năm 2007 có hóa đơn đặt hàng năm 2008 III./ Các loại truy vấn Union, sử dụng tham số CTE, Merge, Pivot 21)Dùng UNION hiển thị thông tin ModifiedDate Person.Person HireDate HumanResources.Employee 22)Sử dụng tham số CTE Liệt kê danh sách record có số dòng từ 11 đến 20 bảng Sales.Orders 23)Sử dụng Merge Query, thực yêu cầu sau: a) Tạo bảng bảng tên MyOrder, gồm thuộc tính PurchaseOrderID, EmployeeID, VendorID, ShipMethodID, TotalDue, RevisionNumber, status b) Dùng lệnh Dùng lệnh Select into…chèn liệu vào bảng, lấy liệu từ bảng Purchasing.PurchaseOrderHeader c) Xóa tất dòng liệu có PurchaseOrderID khác or d) Cập nhật giá trị cột ToTalDue =1000 cho dòng có bảng MyOrder e) Dùng chức Merge để cập nhập liệu cho cột ToTalDue bảng MyOrder ToTaldue bảng Purchasing.PurchaseOrderHeader cho dòng có liệu trùng bảng, ngược lại chèn dòng khác vào bảng MyOrder 24)Pivot Query a) Tạo bảng dbo.orders có cấu trúc sau CREATE TABLE dbo.Orders ( orderid INT NOT NULL, orderdate DATE NOT NULL, 13 empid INT NOT NULL, custid VARCHAR(5) NOT NULL, qty INT NOT NULL, CONSTRAINT PK_Orders PRIMARY KEY(orderid) ) Chèn liệu vào bảng (30001, (10001, (10005, (40001, (10006, (20001, (40005, (20002, (30003, (30004, (30007, '20070802', '20071224', '20071224', '20080109', '20080118', '20080212', '20090212', '20090216', '20090418', '20070418', '20090907', 3, 2, 1, 2, 1, 2, 3, 1, 2, 3, 3, 'A', 'A', 'B', 'A', 'C', 'B', 'A', 'C', 'B', 'C', 'D', 10), 12), 20), 40), 14), 12), 10), 20), 15), 22), 30) b) Tính tổng Qty cho nhân viên Thông tin gồm empid, custid c) Tạo bảng Pivot có dạng sau Gợi ý: SELECT empid, A, B, C, D FROM (SELECT empid, custid, qty FROM dbo.Orders) AS D PIVOT(SUM(qty) FOR custid IN(A, B, C, D)) AS P; d) Tạo query lấy liệu từ bảng dbo.Orders trả số hóa đơn lập nhân viên employee năm e) Tạo bảng pivot hiển thị số đơn đặt hàng thực nhân viên có mã 164, 198, 223, 231, and 233 nhóm theo mã người bán (vendor ID) 14 Hiện thực ràng buộc toàn vẹn liệu Mục tiêu: − Thực ràng buộc toàn 1) Tạo hai bảng sở liệu AdventureWorks2008 theo cấu trúc sau: create table MyDepartment ( Primary key, DepID smallint not null foreign key, primary key, DepName nvarchar(50), domain, check, GrpName nvarchar(50) default ) − Tìm hiểu create table MyEmployee ( EmpID int not null primary cascading key, constraint FrstName nvarchar(50), thao tác update MidName nvarchar(50), LstName nvarchar(50), delete DepID smallint not null foreign key references MyDepartment(DepID) ) vẹn liệu: 2) Dùng lệnh insert select from chèn liệu cho bảng MyDepartment, lấy liệu từ bảng [HumanResources] [Department] 3) Tương tự câu 2, chèn 20 dòng liệu cho bảng MyEmployee lấy liệu từ bảng [Person].[Person]và [HumanResources].[EmployeeDepartmentHistory] 4) Dùng lệnh delete xóa record bảng MyDepartment với DepID=1, có thực không? Vì sao? 5) Thêm default constraint vào field DepID bảng MyEmployee, với giá trị mặc định 6) Nhập thêm record bảng MyEmployee, theo cú pháp sau: insert into MyEmployee (EmpID, FrstName, MidName, LstName) values(1, 'Nguyen',’Nhat’,'Nam'), quan sát giá trị field depID record thêm 15 7) Xóa foreign key constraint bảng MyEmployee, thiết lập lại khóa ngoại DepID tham chiếu đến DepID bảng MyDepartment với thuộc tính on delete set default 8) Xóa record bảng MyDepartment có DepID=7, quan sát kết hai bảng MyEmployee Mydepartment 9) Xóa foreign key bảng MyEmployee hiệu chỉnh ràng buộc khóa ngoại DepID bảng MyEmployee, thiết lập thuộc tính on delete cascading on update cascading 10)Thực xóa record bảng MyDepartment với DepID =3, có thực không? 11)Thêm ràng buộc check vào bảng MyDepartment field GrpName, cho phép nhận thêm Department thuộc group Manufacturing 12)Thêm ràng buộc check vào bảng [HumanResources].[Employee], cột Birthday, cho phép nhập thêm nhân viên có tuổi từ 18 đến 60 View Mục tiêu: − Tạo view, thao tác view − Tìm hiểu thuộc tính view 1) Tạo view dbo.vw_Products hiển thị danh sách sản phẩm từ bảng Production.Product bảng Production.ProductCostHistory Thông tin bao gồm ProductID, Name, Color, Size, Style, StandardCost, EndDate, StartDate 2) Tạo view List_Product_view chứa danh sách sản phẩm có 500 đơn đặt hàng quí năm 2008 có tổng trị giá >10000, thông tin gồm ProductID, Product_name, countofOrderID Subtotal 3) Tạo view dbo.vw_CustomerTotals hiển thị tổng tiền bán (total sales) từ cột TotalDue khách hàng (customer) 16 theo tháng theo năm Thông tin gồm CustomerID, YEAR(OrderDate) AS OrderYear, MONTH(OrderDate) AS OrderMonth, SUM(TotalDue) 4) Tạo view trả tổng số lượng sản phẩm (total quantity) bán nhân viên theo năm 5) Tạo view ListCustomer_view chứa danh sách khách hàng có 25 hóa đơn đặt hàng từ năm 2007 đến 2008, thông tin gồm mã khách (PersonID) , họ tên (FirstName +' '+ LastName as fullname), Số hóa đơn (CountOfOrders) 6) Tạo view ListProduct_view chứa danh sách sản phẩm có tên bắt đầu với ‘Bike’ ‘Sport’ có tổng số lượng bán mỗi năm 500 sản phẩm, thông tin gồm ProductID, Name, CountofOrderQty, year (dữ liệu lấy từ bảng Sales.SalesOrderHeader, Sales.SalesOrderDetail, and Production.Product) 7) Tạo view List_department_View chứa danh sách phòng ban có lương (Rate: lương theo giờ) trung bình >30, thông tin gồm Mã phòng ban (DepartmentID), tên phòng ban (name), Lương trung bình (AvgofRate) Dữ liệu từ bảng [HumanResources].[Department], [HumanResources] [EmployeeDepartmentHistory], [HumanResources].[EmployeePayHistory] 8) Tạo view Sales.vw_OrderSummary với từ khóa WITH ENCRYPTION gồm orderYear (năm ngày lập), OrderMonth (tháng ngày lập), OrderTotal (tổng tiền) Sau xem thông tin trợ giúp mã lệnh view 9) Tạo view Production.vwProducts với SCHEMABINDING gồm StartDate,EndDate,ListPrice từ khóa ProductID, bảng Product WITH Name, bảng ProductCostHistory Xem thông tin View Xóa cột ListPrice bảng Product Có xóa không? Vì sao? 10)Tạo view HumanResources.vw_MaleEmployees với từ khóa WITH CHECK OPTION chứa nhân viên có phái Gender =’M’ gồm LoginID, Gender bảng HumanResources.Employee Sau tạo xong thực yêu cầu sau: a) Xem thông tin view vừa tạo 17 b) Thực lệnh sửa Gender =’F’ cho nhân viên có LoginId = 'adventure-works\taylor0' Có sửa không? Gỉai thích? c) Sửa lại cấu trúc View cho thực việc sửa câu b d) Thực lại lệnh câu b Xem kết e) Đổi tên view thành DSNV, xóa view 11)Pattions View: Tạo bảng có cấu trúc sau: Create Table KH_BAC (Makh int, TenKh Nchar(30), Khuvuc Nvarchar(30) NOT NULL CHECK ( Khuvuc='Bac bo'), PRIMARY KEY (Makh, Khuvuc) ) Create Table KH_TRUNG (Makh int, TenKh Nchar(30), Khuvuc Nvarchar(30) NOT NULL CHECK ( Khuvuc='Trung bo'), PRIMARY KEY (Makh, Khuvuc) ) Create Table KH_NAM (Makh int, TenKh Nchar(30), Khuvuc Nvarchar(30) NOT NULL CHECK ( Khuvuc='Nam bo'), PRIMARY KEY (Makh, Khuvuc) ) Tạo view KhachHang kết nối liệu bảng Thực thêm liệu (dữ liệu sinh viên nghĩ) vào bảng Sau xem thông tin bảng view khách hàng 18 Batch - Function - Stored procedure Mục tiêu: Hiểu biết cách lập trình SQL − Viết batch Tạo thực thi loại function stored procedure − Function gồm loại o Scalar function o Table value Function o MultiStatement table value Function − Stored Procedure o Tham số input output I./ Batch 1) Viết batch khai báo biến @tongsoHD chứa tổng số hóa đơn sản phẩm có ProductID=’778’, @tongsoHD>500 in chuỗi “San pham 778 có 500 đơn hàng”, ngược lại tin chuỗi “San pham 778 co it don dat hang” 2) Viết đoạn Batch với tham số @makh @n chứa số hóa đơn khách hàng @makh, tham số @nam chứa năm lập hóa đơn (ví dụ @nam=2008), @n>0 in chuỗi:”Khách hàng có @n hóa đơn năm 2008” ngược lại @n=0 in chuỗi “Khách hàng hóa đơn năm 2008” 3) Viết batch tính số tiền giảm cho hóa đơn (SalesOrderID) có tổng tiền>100000, thông tin gồm [SalesOrderID], Subtotal=sum([LineTotal]), Discount (tiền giảm), với Discount tính sau: • Những hóa đơn có Subtotal[...]... …then …) 4) Viết một Batch với 3 tham số: @mancc, @masp, @soluongcc, chứa giá trị của các field [ProductID],[BusinessEntityID],[OnOrderQty], với giá trị truyền cho các biến @mancc, @masp (vd: @mancc=1650, @masp)=4, thì chương trình sẽ 19 gán giá trị tương ứng của field [OnOrderQty] cho biến @soluongcc, nếu @soluongcc trả về giá trị là null thì in ra chuỗi “Nha cung cap 1650 khong cung cap san pham 4”,... quả là bảng lương của nhân viên, với tham số vào là @MaNV (giá trị của [BusinessEntityID]), thông tin gồm BusinessEntityID, Fname, Lname, Salary (giá trị của cột Rate) − Nếu giá trị của tham số truyền vào là Mã nhân viên khác Null thì kết quả là bảng lương của nhân viên đó Ví dụ thực thi hàm: select*from SalaryOfEmp(288) Kết quả là − Nếu giá trị truyền vào là Null thì kết quả là bảng lương của tất cả... hệ thống bằng tài khoản của User1 ) 3) Khởi động SQL, login vào sql bằng Windows Authentication Kiểm tra quyền truy cập cơ sở dữ liệu của User1 (Mở một CSDL bất kỳ, có thực hiện được không) 4) Gán quyển cho User1 để có thể thực hiện tất cả các thao tác trên một CSDL Adventureworks2008 5) Đăng nhập lại vào SQL bằng windows authentication thông qua tài khoản user1 và thực hiện các thao tác truy cập CSDL. .. viên, tham số đầu ra là tổng trị giá các hóa đơn nhân viên đó bán được Sử dụng lệnh RETURN để trả về trạng thái thành công hay thất bại của thủ tục 5) Tạo thủ tục đặt tên là TongThu có tham số vào là mã nhân viên, tham số đầu ra là tổng trị giá các hóa đơn nhân viên đó bán được Sử dụng lệnh RETURN để trả về trạng thái thành công hay thất bại của thủ tục 6) Thủ tục trả về tổng trị giá hóa đơn bán được... lượng và tổng trị giá của các sản phẩm do các nhà cung cấp có tên kết thúc bằng ‘Bicycles’ và tổng trị giá >800000, thông tin gồm BusinessEntityID, Vendor_name, ProductID, sumofQty, SubTotal (sử dụng các bảng [Purchasing].[Vendor] [Purchasing].[PurchaseOrderHeader] và [Purchasing].[PurchaseOrderDetail]) 7) Liệt kê các sản phẩm có trên 500 đơn đặt hàng trong quí 1 năm 2008 và có tổng trị giá >10000,... thực hiện được không? Vì sao? 5) Thêm một default constraint vào field DepID trong bảng MyEmployee, với giá trị mặc định là 1 6) Nhập thêm một record mới trong bảng MyEmployee, theo cú pháp sau: insert into MyEmployee (EmpID, FrstName, MidName, LstName) values(1, 'Nguyen',’Nhat’,'Nam'), quan sát giá trị trong field depID của record mới thêm 15 7) Xóa foreign key constraint trong bảng MyEmployee, thiết... server Authentication User2 và User3 8) Tạo một database user User2 ứng với login User2 và một database user User3 ứng với login User3 trên CSDL Adventureworks2008 9) Tạo 2 kết nối đến server thông qua login User2 và User3, sau đó thực hiện các thao tác truy cập CSDL của 2 user tương ứng (VD: thực hiện câu select), có thực hiện được không? 10)Gán quyền select trên Employee cho User2, kiểm tra kết quả,... (SELECT MAX(rate)FROM [HumanResources] [EmployeePayHistory]) > 150 BREAK ELSE CONTINUE END II./ Function − Scalar Function 1) Viết hàm tên countofEmplyees (dạng scalar function) với tham số @mapb, giá trị truyền vào lấy từ field [DepartmentID], hàm trả về số nhân viên trong phòng ban tương ứng Áp dụng hàm đã viết vào câu truy vấn liệt kê danh sách các phòng ban với số nhân viên của mỗi phòng ban, thông... [HumanResources].[Department]) 2) Viết hàm tên là InventoryProd (dạng scalar function) với tham số vào là @ProductID và @locationID trả về số lượng tồn kho của sản phẩm trong khu vực tương ứng với giá trị của tham số (Dữ liệu lấy từ bảng[Production].[ProductInventory]) 20 3) Viết hàm tên SubTotalOfEmp (dạng scalar function) trả về tổng doanh thu của một nhân viên trong một tháng tùy ý trong một năm... Trong đó: − SumofSubTotal =sum(SubTotal), − NewBonus = Bonus+ sum(SubTotal)*0.01 6) Viết hàm tên SumofProduct với tham số đầu vào là @MaNCC (VendorID), hàm dùng để tính tổng số lượng (sumOfQty) và tổng trị giá (SumofSubtotal) của các sản phẩm do nhà cung cấp @MaNCC cung cấp, thông tin gồm ProductID, SumofProduct, SumofSubtotal (sử dụng các bảng [Purchasing].[Vendor] [Purchasing].[PurchaseOrderHeader] ... AdventureWork2008 - Tạo quản trị sở liệu – Database file – File group Mục tiêu: - Tìm hiểu sở liệu AdventureWork2008 Tạo quản trị sở liệu Database Tạo quản lý Table (Bảng liệu) Tạo lược đồ quan hệ (Relationship... liệu SmallWorks vào SQL II BÀI TẬP VỀ NHÀ: Yêu cầu sinh viên làm nộp lại cho giáo viên trước buổi học hôm sau I Dùng T-SQL tạo CSDL T:HoTenSales, thông số tùy ý, CSDL Sales thực công việc sau:... đóng cửa sổ properies Quan sát màu sắc CSDL Dùng lệnh T-SQL gỡ bỏ thuộc tính ReadOnly đặt thuộc tính cho phép nhiều người sử dụng CSDL SmallWork Trong CSDL SmallWork, tạo bảng theo cấu trúc sau:

Ngày đăng: 06/12/2016, 11:53

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan