Bài 1:



B?I T?P TU?N 2-3M?c tiêu:? Bi?t cách truy v?n d? li?u b?ng l?nh SELECTTruy v?n d? li?u Cú pháp:SELECT [ALL | DISTINCT] [TOP n [WITH TIES]] select_list[ INTO new_table ]FROM table_source[ WHERE search_condition ][ GROUP BY group_by_expression ] [ HAVING search_condition ][ ORDER BY order_expression [ ASC | DESC ] ]ORDER BY : S?p x?pWHERE: ?i?u ki?nGROUP BY: NhómHAVING: ?i?u ki?n nhómTruy v?n ??n gi?nHi?n th? t?t c? các c?t có trong m?t Table Cú pháp: SELECT * FROM < tablename> Ví d?: SELECT * FROM CustomersCh?n m?t vài c?t trong m?t TableSELECT OrderID, OrderDate, CustomerID FROM OrdersTruy v?n lo?i b? các dòng b? trùng:Cú pháp: Select DistinctVí d?:SELECT DISTINCT Order_Date as “Date of Order” FROM Orders Truy v?n dùng các toán t? chu?n trong bi?u th?c ?i?u ki?n:Ví d? 1:SELECT ProductID, UnitPrice FROM Product_TWHERE UnitPrice < 275;Ví d? 2:SELECT ProductID, ProductName,UnitPrice FROM ProductsWHERE ProductName like ‘N%’AND UnitPrice > 300Truy v?n trên nhi?u b?ngVí d?:SELECT c.CustomerID, CompanyName, OrderID, OrderDate FROM Customers C INNER JOIN Orders OON C.CustomerID = O.CustomerIDTruy v?n seft join: Truy v?n trên m?t b?ng liên k?t v?i chính nóVí d?:SELECT e.Firstname+' '+e.Lastname AS 'Employee' , m.Firstname+' '+m.Lastname AS 'Manager'FROM Employees e JOIN Employees m ON e.ManagerID = m.EmployeeIDL?nh Union: Union n?i k?t qu? t? nhi?u c?u l?nh select Ví d?:SELECT Firstname+' '+Lastname AS name, Homephone FROM EmployeesUNIONSELECT Companyname, Phone FROM CustomersTruy v?n k?t nhóm:Các hàm t?ng h?p - Aggregate Functions: t?ng h?p th?ng tin t? nhi?u b? thành m?t b?.Ch?c n?ng grouping ???c s? d?ng ?? t?o nhóm tr??c khi th?c hi?n t?ng h?p d? li?u.Các hàm t?ng h?p: COUNT, SUM, MAX, MIN, AVG.Ví d?:SELECT SUM(quantity)AS ‘Sum of Quantity‘ FROM [Order Details]M?nh ?? GROUP BY: ch? ??nh các thu?c tính k?t nhóm xu?t hi?n trong m?nh ?? select, k?t qu? c?a hàm th?ng kê ???c áp d?ng cho các b? trong cùng m?t nhóm.Ví d?: T?ng ti?n c?a t?ng hóa ??nSELECT orderid, SUM(quantity+unitprice) AS ‘Total‘ FROM [Order Details]GROUP BY orderidM?nh ?? Having: xác ??nh ?i?u ki?n l?c sau khi nhóm d? li?u Ví d?: Danh sách các hóa ??n có t?ng ti?n l?n h?n 10000000 SELECT orderid, SUM(quantity+unitprice)AS ‘Total‘ FROM [Order Details] GROUP BY orderedHAVING SUM(quantity+unitprice)>10000000L?nh Select intoCó th? t?o m?t b?ng m?i d?a vào k?t qu? c?a c?u l?nh select. Ví d?:SELECT C.CustomerID AS NameId, OrderID, OrderDate INTO Customer_OrderFROM Customers C INNER JOIN Orders O ON C.CustomerID = O.CustomerID WHERE month(OrderDate) = 7Truy v?n con - Nested QueriesNested query là m?t query ch?a m?t query khác, query ???c ch?a bên trong g?i là subquery. Subquery th??ng xu?t hi?n trong m?nh ?? WHERE c?a query. Ngoài ra Subquery c?ng có th? xu?t hi?n trong m?nh ?? FROM ho?c HAVING.Các phép toán dùng trong nested queryIN: so sánh m?t giá tr? v v?i m?t t?p giá tr? V, k?t qu? là TRUE n?u v t?n t?i trong V.Ví d?:SELECT Orderid, orderdate FROM [Orders] WHERE Orderid IN (SELECT Orderid FROM [Customers] WHERE city = ‘Lon don’)NOT IN: so sánh m?t giá tr? v v?i m?t t?p giá tr? V, k?t qu? là TRUE n?u vkh?ng t?n t?i trong VVí d?:SELECT Orderid, orderdate FROM [Orders] WHERE Orderid NOT IN (SELECT Orderid FROM [Customers] WHERE city = ‘Lon don’)ANY: k?t h?p v?i các phép toán op (>, >=, <, <=, and <>), k?t qu? là TRUE n?u và ch? n?u các giá tr? trong t?p v th?a m?n phép toán op v?i ít nh?t là m?t giá tr? trong V.Ví d? 1:Select Productid, Productname, Unitprice from [Products]Where Unitprice>ANY (Select Unitprice from [Products]where ProductName like ‘B%’)Ví d? 2:Select Productid, Productname, Unitprice from [Products]Where Unitprice=ANY (Select Unitprice from [Products]where ProductName like ‘B%’)ALL: k?t h?p v?i các phép toán op (>, >=, <, <=, and <>), k?t qu? là TRUE n?u và ch? n?u các giá tr? trong t?p v th?a m?n phép toán op v?i t?t c? giá tr? trong VVí d?:Select Productid, Productname, Unitprice from [Products]Where Unitprice>ALL (Select Unitprice from [Products]where ProductName like ‘B%’)EXISTS: ki?m tra k?t qu? c?a subquery có r?ng hay kh?ng, exists tr? v? giá tr? là TRUE n?u k?t qu? c?a subquery ch?a ít nh?t là m?t b? giá tr?.Ví d?: Danh sách các s?n ph?m ?? bán ???c Select * from [Products] swhere EXISTS ( SELECT * from [Order Details] c where s.Productid=c.Productid)NOT EXISTS: tr? v? giá tr? là TRUE n?u k?t qu? c?a subquery kh?ng ch?a b? giá tr? nào.Ví d?: Danh sách các s?n ph?m ch?a bán ???c Select * from [Products] swhere NOT EXISTS ( SELECT * from [Order Details] c where s.Productid=c.Productid)PH?N TH?C H?NHL?nh SELECTB?I T?P 1: L?NH SELECT – TRUY V?N ??N GI?NCh?n CSDL hi?n hành là NorthWind, tìm hi?u c?u trúc và d? li?u c?a các b?ng. X?y d?ng s? ?? quan h? cho các b?ng d??i. Sau ?ó dùng c?u l?nh Select … From… Where … ?? truy v?n d? li?u nh? sau, v?i c?u trúc c?a các b?ng nh? sau: Products(ProductID,ProductName, SupplierID, UnitPrice, UnitInStock, … ) Customers(CustomerID, CompanyName, Address, City, Region, Country, …) Employees(EmployeeID, LastName, FirstName, BirthDate, City, …) Orders(OderID, CustomerID, EmployeeID, OrderDate,…)Order Details(OrderID, ProductID, UnitPrice, Quantity, Discount)Suppliers(SupplierID, SupplierName,…)Chú ?: N?u c?u nào mà b?n ?ánh ?úng l?nh mà k?t qu? kh?ng có, b?n cho bi?t t?i sao?Li?t kê th?ng tin c?a t?t c? các s?n ph?m (Products)Li?t kê danh sách các customers. Th?ng tin bao g?m CustomerID, CompanyName, City, Phone.Li?tkêdanhsáchcácproducts.Th?ngtinbaog?mProductId, ProductName, UnitPrice.Li?t kê danh sách các employees. Th?ng tin bao g?m EmployeeId, EmployeeName, Phone, Age. Trong ?ó EmployeeName ???c ghép t? LastName và FirstName; Age là tu?i ???c tính t? n?m hi?n hành (GetDate()) và n?m c?a Birthdate.Li?t kê danh sách các Customers có ContactTitle b?t ??u b?ng ch? ODanh sách các customers ? thành ph? Paris.Li?t kê danh sách Customers ? thành ph? LonDon, Boise và ParisLi?t kê danh sách Customers có tên b?t ??u b?ng ch? V mà ? thành ph? LyonLi?t kê danh sách các Customers kh?ng có s? faxLi?t kê danh sách các Customers có s? FaxLi?t kê danh sách employees có n?m sinh <=1960.Li?t kê danh sách các products có t? ‘Boxes’ trong c?t QuantityPerUnit.Li?t kê danh sách các products có Unitprice l?n h?n 10 và nh? h?n 15.Li?t kê danh sách các orders có OrderDate ???c l?p trong tháng 9 n?m 1996.Li?t kê danh sách các products ?ng v?i ti?n t?n v?n. Th?ng tin bao g?m ProductId, ProductName, Unitprice, UnitsInStock, TotalAccount. Trong ?ó TotalAccount= UnitsInStock * Unitprice.Li?t kê danh sách 5 customers có city b?t ??u ‘M’.Li?t kê danh sách 2 employees có tu?i l?n nh?t. Th?ng tin bao g?m EmployeeID, EmployeeName, Age. Trong ?ó, EmployeeName ???c ghép t? LastName và FirstName; Age là n?m hi?n hành tr? n?m sinh.Li?t kê danh sách các Products có s? l??ng t?n nh? h?n 5Li?t kê danh sách các Orders g?m OrderId, Productid, Quantity, Unitprice, Discount, ToTal = Quantity * unitPrice – 20%*Discount.Li?t kê danh sách các Employees kh?ng ? thành ph? London và RedmondB?I T?P 2: L?NH SELECT – TRUY V?N C? K?T N?ILi?t kê các customer kh?ng có l?p hóa ??n trong tháng 7/1997Li?t kê các customer có l?p hóa ??n trong 15 ngày ??u tiên c?a 7/1997Li?t kê danh sách các s?n ph?m ???c giao vào ngày 16/7/1996Li?t kê danh sách các hóa ??n c?a các Customers mua hàng trong tháng 4,9 c?a n?m 1997. Th?ng tin g?m Orderid, CompanyName, OrderDate, RequiredDate, ???c s?p x?p theo CompanyName, cùng Companyname thì theo OrderDate gi?m d?n.Li?t kê danh sách các hóa ??n do nh?n viên có Lastname là Fuller l?p.Li?t kê danh sách các Products do nhà cung c?p (supplier) có m? 1,3,6 bán ???c trong tháng 6,7 c?a n?m 1997, ???c s?p x?p theo m? nhà cung c?p (SupplierID), cùng m? nhà cung c?p thì s?p x?p theo ProductID.Li?t kê danh sách các Products ?? bán có Discount là 1Li?t kê danh sách các Products có ??n giá bán b?ng ??n giá mua.Li?t kê danh sách các Products mà hóa ??n có OrderID là 10248 ?? mua.Li?t kê danh sách các Employers ?? l?p các hóa ??n trong tháng 7 c?a n?m 1996Li?t kê danh sách các s?n ph?m Products ch?a bán ???c trong tháng 6 n?m 1996Li?t kê danh sách các Employes kh?ng l?p hóa ??n vào ngày h?m nayLi?t kê danh sách các Customers ch?a mua hàng trong n?m 1997Li?t kê danh sách các nhà cung c?p Suppliers kh?ng cung c?p Products có m? là 59.Tìm t?t c? các Customers mua các s?n ph?m có tên b?t ??u b?ng ch? T trong tháng 7.B?I T?P 3: L?NH SELECT – TRUY V?N GOM NH?MDanh sách các orders ?ng v?i t?ng ti?n c?a t?ng hóa ??n. Th?ng tin bao g?m OrdersId, OrderDate, TotalAccount. Trong ?ó TotalAccount là Sum c?a Quantity * Unitprice, k?t nhóm theo OrderId.Danh sách các orders ?ng v?i t?ng ti?n c?a t?ng hóa ??n có Shipcity là ‘Madrid’. Th?ng tin bao g?m OrdersId, OrderDate, TotalAccount. Trong ?ó TotalAccount là Sum c?a Quantity * Unitprice, k?t nhóm theo OrderId.Danh sách các products có t?ng s? l??ng l?p hóa ??n l?n nh?t.Cho bi?t m?i customers ?? l?p bao nhiêu hóa ??n. Th?ng tin g?m CustomerID, CompanyName, CountOfOrder. Trong ?ó CountOfOrder (t?ng s? hóa ??n) ???c ??m (Count) theo t?ng Customers.Cho bi?t m?i Employee ?? l?p ???c bao nhiêu hóa ??n, ?ng v?i t?ng ti?n.Danh sách các customer ?ng v?i t?ng ti?n các hoá ??n ???c l?p t? 31/12/1996 ??n 1/1/1998.Danh sách các customer ?ng v?i t?ng ti?n các hoá ??n, mà các hóa ??n ???c l?p t? 31/12/1996 ??n 1/1/1998 và t?ng ti?n các hóa ??n >20000.Danh sách các customer ?ng v?i t?ng s? hoá ??n, t?ng ti?n các hoá ??n, mà các hóa ??n ???c l?p t? 31/12/1996 ??n 1/1/1998 và t?ng ti?n các hóa ??n >20000. Th?ng tin ???c s?p x?p theo CustomerID, cùng m? thì s?p x?p theo t?ng ti?n gi?m d?n.Danh sách các Category có t?ng s? l??ng t?n (UnitsInStock) l?n h?n 300, ??n giá trung bình nh? h?n 25. Th?ng tin k?t qu? bao g?m CategoryID, CategoryName, Total_UnitsInStock, Average_Unitprice.Danh sách các Category có t?ng s? product l?n h?n 10. Th?ng tin k?t qu? bao g?m CategoryID, CategoryName, Total_UnitsInStock.Danh sách các product theo t?ng CategoryName, th?ng tin bao g?m: Productname, CategoryName, Unitprice, UnitsinStock. Có dùng m?nh ?? COMPUTE ?? li?t kê ??n giá trung bình, t?ng s? l??ng t?n (sum of UnitsinStock) theo t?ng CategoryName.Danh sách các Customer ?ng v?i t?ng ti?n c?a các hóa ??n ? t?ng tháng. Th?ng tin bao g?m CustomerID, CompanyName, Month_Year, Total. Trong ?ó Month_year là tháng và n?m l?p hóa ??n, Total là t?ng c?a Unitprice* Quantity, có th?ng k? t?ng c?a total theo t?ng Customer và Month_Year . (có dùng COMPUTE)Cho bi?t Employees nào bán ???c nhi?u ti?n nh?t trong 7 c?a n?m 1997Danh sách 3 khách có nhi?u ??n hàng nh?t c?a n?m 1996.Cho bi?t khách hàng nào có s? l?n mua hàng l?n h?n 10 trong n?m 1997.B?I T?P 4: L?NH SELECT – TRUY V?N CON SUBQUERYCác product có ??n giá l?n h?n ??n giá trung bình c?a các product.Các product có ??n giá l?n h?n ??n giá trung bình c?a các product có ProductName b?t ??u là ‘N’Cho bi?t nh?ng s?n ph?m có tên b?t ??u b?ng ch? N và ??n giá > ??n giá c?a s?n ph?m khácDanh sách các products ?? có khách hàng ??t hàng (t?c là ProductId có trong Order Details). Th?ng tin bao g?m ProductId, ProductName, UnitpriceDanh sách các products có ??n giá nh?p l?n h?n ??n giá bán nh? nh?t c?a t?t c? các ProductsDanh sách các hóa ??n c?a nh?ng Customers mà Customers ? thành ph? LonDon và Madrid.Danh sách các products có ??n v? tính có ch? Box và có ??n giá mua nh? h?n ??n giá trung bình c?a t?t c? các Products.Danh sách các Products có s? l??ng (Quantity) bán ???c l?n nh?t.Danh sách các Customer ch?a t?ng l?p hóa ??n (vi?t b?ng ba cách: dùng NOT EXISTS, dùng LEFT JOIN, dùng NOT IN )Cho bi?t các s?n ph?m có ??n giá bán cao nh?tCho bi?t các s?n ph?m có ??n v? tính có ch?a ch? box và có ??n giá bán cao nh?tDanh sách các products có ??n giá bán l?n h?n ??n giá bán trung bình c?a các Products có ProductId<=5Danh sách các Customers và các Employees kh?ng ? cùng thành ph?Cho bi?t nh?ng s?n ph?m nào có t?ng s? l??ng bán ???c l?n h?n s? l??ng trung bình bán raLi?t kê danh sách các khách hàng mua các hóa ??n mà các hóa ??n này ch? mua nh?ng s?n ph?m có m? >=3Li?t kê danh sách các khách hàng mà các khách hàng này mua các hóa ??n do các nh?n viên l?p hóa ??n ? cùng thành ph? v?i khách hàngDanh sách các Customers mà các Customers ?? mua hàng trong tháng 7, 9 n?m 1997Danh sách các City có nhi?u h?n 3 customer.Tìm t?t c? các Customers mua ít nh?t 2 ??n hàng.B?n h?y ??a ra c?u h?i cho 3 c?u truy v?n sau:Select ProductId, ProductName, UnitPrice from [Products]Where Unitprice>ALL (Select Unitprice from [Products]where ProductName like ‘B%’)Select ProductId, ProductName, UnitPrice from [Products]Where Unitprice>ANY (Select Unitprice from [Products]where ProductName like ‘B%’)Select ProductId, ProductName, UnitPrice from [Products]Where Unitprice=ANY (Select Unitprice from [Products]where ProductName like ‘B%’)B?I T?P 5: L?NH SELECT – C?C LO?I TRUY V?N KH?CLi?t kê danh sách các City có Customers ho?c Employee (dùng Union)Li?t kê danh sách các Country có Customers ho?c Employee (dùng Union)K?t danh sách các Customer và Employee l?i v?i nhau. Th?ng tin g?m CodeID, Name, Address, Phone. Trong ?ó CodeID là CustomerID/EmployeeID, Name là Companyname/LastName + FirstName, Phone là Homephone.Danh sách các Suppliers cung c?p t?t c? các m?t hàng.Danh sách các Customers ?? mua t?t c? các m?t hàng ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download