1. Trang chủ
  2. » Công Nghệ Thông Tin

Phân tích thiết kế & Triển khai hệ quản trị CSDL pdf

20 507 2

Đ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

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 400 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Xuất ra tất cả sinh vật thuộc lớp Thú LThu SELECT CT.MaSinhVat, CT.Ten, CT.TenKhoaHoc, CT.MoiTruongSong, LSV.TenLop FROM ChiTietSinhVat CT JOIN LopSinhVat LSV ON CT.MaLop = LSV.MaLop WHE

Trang 1

PHÂN TÍCH THIẾT KẾ CSDL

-USE TuLieuDVTV

GO

-SELECT FROM GioiSinhVat

SELECT FROM NganhSinhVat

SELECT FROM LopSinhVat

SELECT FROM DanhSachDo

SELECT FROM VungSong

SELECT FROM ChiTietSinhVat

-Lệnh: SELECT (JOIN, GROUP BY, SUB

QUERY, ) -1 Xuất ra tất cả sinh vật thuộc lớp Thú (LThu)

SELECT CT.MaSinhVat, CT.Ten, CT.TenKhoaHoc, CT.MoiTruongSong, LSV.TenLop

FROM ChiTietSinhVat CT

JOIN LopSinhVat LSV ON CT.MaLop = LSV.MaLop

WHERE LSV.MaLop = 'LThu'

2 Hiển thị những loại sinh vật đang trong tình trạng Nguy cấp (EN)

SELECT CT.MaSinhVat, CT.Ten, CT.TenKhoaHoc, CT.SoLuong, DSD.DoDeDoa

FROM ChiTietSinhVat CT

JOIN DanhSachDo DSD ON CT.MaMucDo = DSD.MaMucDo

WHERE DSD.MaMucDo = 'EN'

3 Hiển thị tất cả những động vật thuộc ngành Động vật có xương sống (DVCXS)

SELECT CT.MaSinhVat, CT.Ten, LSV.TenLop, NSV.TenNganh

FROM ChiTietSinhVat CT

JOIN LopSinhVat LSV ON CT.MaLop = LSV.MaLop

JOIN NganhSinhVat NSV ON LSV.MaNganh = NSV.MaNganh

WHERE NSV.MaNganh = 'DVCXS'

4 Hiển thị những sinh vật thuộc khu vực Nam Mĩ

SELECT CT.MaSinhVat, CT.Ten, CT.TenKhoaHoc, VS.QuocGia, VS.KhuVuc

FROM ChiTietSinhVat CT

JOIN VungSong VS ON CT.MaVung = VS.MaVung

WHERE VS.KhuVuc = N'Nam Mĩ'

5 Hiển thị những sinh vật thuộc lớp Thực vật hai lá mầm (2LMam)

SELECT CT.MaSinhVat, CT.Ten, CT.TenKhoaHoc, LSV.TenLop

FROM ChiTietSinhVat CT

JOIN LopSinhVat LSV ON CT.MaLop = LSV.MaLop

WHERE LSV.MaLop = '2LMam'

Xuất ra tất cả thông tin của sinh vật

SELECT CTSV.MaSinhVat, CTSV.Ten, CTSV.TenKhoaHoc, CTSV.MoiTruongSong, LSV.TenLop, NSV.TenNganh, GSV.TenGioi,VS.QuocGia, VS.KhuVuc, DSD.DoDeDoa

FROM ChiTietSinhVat CTSV

JOIN VungSong VS ON CTSV.MaVung = VS.MaVung

JOIN DanhSachDo DSD ON CTSV.MaMucDo = DSD.MaMucDo

JOIN LopSinhVat LSV ON CTSV.MaLop = LSV.MaLop

JOIN NganhSinhVat NSV ON LSV.MaNganh = NSV.MaNganh

JOIN GioiSinhVat GSV ON NSV.MaGioi = GSV.MaGioi

GO

Trang 2

-BÀI TẬP NORTHWIND NORTHWIND

1 -Câu 1: Liệt kê những khách hàng ở thành phố London

SELECT FROM Customers

WHERE City= 'London'

Câu 2: Liệt kê tất cả các sản phẩm theo thứ tự tăng dần của đơn giá (UnitPrice), nếu đơn giá trùng nhau thì sắp theo thứ tự giảm dần của số lượng sản phẩm tồn trong kho (UnitsInStock)

SELECT distinct FROM Products

Order by UnitPrice ASC, UnitsInStock DESC

Câu 3: Hãy cho biết sản phẩm có giá (UnitPrice) lớn nhất và sản phẩm có giá nhỏ nhất, sản phẩm có số lượng trong kho (UnitsInStock) nhiều nhất và số lượng trong kho

ít nhất

C2:

SELECT TOP 1 WITH TIES ProductID, ProductName, UnitPrice AS [Giá MAX]

FROM Products

ORDER BY [Giá MAX] DESC

SELECT TOP 1 WITH TIES ProductID, ProductName, UnitPrice AS [Giá MIN]

FROM Products

ORDER BY [Giá MIN] ASC

SELECT TOP 1 WITH TIES ProductID, ProductName, UnitsInStock AS [Số lượng MAX]

FROM Products

ORDER BY [Số lượng MAX] DESC

SELECT TOP 1 WITH TIES ProductID, ProductName, UnitsInStock AS [Số lượng MIN]

FROM Products

ORDER BY [Số lượng MIN] ASC

C3: (Chính xác nhất)

DECLARE @MAXPrice money, @MINPrice money, @MAXStock int, @MINStock int

SELECT @MAXPrice = MAX(UnitPrice) FROM Products

SELECT @MINPrice = MIN(UnitPrice) FROM Products

SELECT @MAXStock = MAX(UnitsInStock) FROM Products

SELECT @MINStock = MIN(UnitsInStock) FROM Products

SELECT FROM Products WHERE UnitPrice = @MAXPrice

SELECT FROM Products WHERE UnitPrice = @MINPrice

SELECT FROM Products WHERE UnitsInStock = @MAXStock

SELECT FROM Products WHERE UnitsInStock = @MINStock

Câu 4: Cho biết tổng số lương sản phẩm trong kho là bao nhiêu

SELECT SUM(UnitsInStock) AS [Tổng số lượng trong kho]

FROM Products

Câu 5: Trung bình mỗi sản phẩm có giá là bao nhiêu

SELECT CategoryID, AVG(UnitPrice) AS [Giá Trung Bình]

FROM Products

GROUP BY CategoryID

Câu 6: Liệt kê 5 sản phẩm có giá cao nhất

SELECT TOP 5 * FROM Products

ORDER BY UnitPrice DESC

Câu 7: Cho biết mỗi nhà cung cấp (Suppliers) đã cung cấp bao nhiêu sản phẩm (2 cột: SupplierID, 'so san pham')

SELECT SupplierID, COUNT(ProductID) AS [Số Sản Phẩm]

FROM Products GROUP BY SupplierID

Câu 8: Hiển thị những sản phẩm có đơn vị tính (QuantiyPerUnit) là boxes (Hint: tìm kiếm tương đối theo QuantityPerUnit)

SELECT FROM Products

WHERE QuantityPerUnit LIKE('%boxes%')

Trang 3

Câu 9: Hiện thị những sản phẩm có đơn vị tính (QuantiyPerUnit) là boxes (Hint: tìm kiếm tương đối theo QuantityPerUnit)

SELECT FROM Products

WHERE UnitPrice Between 15 and 30

Câu 10: Hiển thị những sản phẩm có mã nhà cung cấp (supplierid) là: 1, 7, 8,

17,18,19, 22

C1:

SELECT FROM Products

WHERE SupplierID = 1 or SupplierID = 7 or SupplierID = 8 or SupplierID = 17 or

SupplierID = 18 or SupplierID = 19 or SupplierID = 22

C2:

SELECT FROM Products

WHERE SupplierID IN(1 7, 8, 17, 18, 19, 22)

Câu 11: Hiển thị những khách hàng có mã số (CustomerID) có ký tự bắt đầu bằng L SELECT FROM Customers

WHERE CustomerID LIKE('L%')

Câu 12: Hiển thị những KH có mã số (CustomerID) có ký tự bắt đầu bằng S

SELECT FROM Customers

WHERE CustomerID LIKE('S%')

Câu 13: Liệt kê những KH có Address có ký tự bắt đầu bằng con số

SELECT FROM Customers

WHERE LEFT([Address], 1) between 0 and 9

> sẽ có lỗi, do một vài address la NULL WHERE LEFT([Address], 1) between '0' and '9'

Câu 14: Liệt kê những KH có Address có ký tự bắt đầu bằng chữ cái

SELECT FROM Customers

WHERE LEFT([Address], 1) between 'a' and 'z'

NORTHWIND

2 -Câu 3:

SELECT distinct City

FROM Customers

Câu 4:

SELECT UnitPrice, UnitsInStock

FROM Products

ORDER By UnitPrice DESC, UnitsInStock DESC

Câu 5:

SELECT FROM Orders

WHERE Freight < 50

Câu 6:

SELECT FROM Employees

WHERE City = 'London'

Câu 7:

SELECT FROM Employees

WHERE LEFT(FirstName, 1) = 'A'

Câu 8:

SELECT FROM Employees

WHERE YEAR(BirthDate) between 1950 and 1960

Câu 9: (Chưa được)

SELECT FROM Shippers

Trang 4

Câu 11:

SELECT FROM Employees

WHERE City = 'Tacoma' or City = 'Seattle'

Câu 12:

SELECT FROM Employees

WHERE TitleOfCourtesy = 'Mr.' or TitleOfCourtesy = 'Ms.'

Câu 13:

SELECT FROM Suppliers

WHERE Fax is not null and SupplierID between 5 and 20

Câu 14:

SELECT FROM Suppliers

WHERE Country IN 'GERMANY', 'AUSTRALIA', 'DENMARK')

AND Region IS NULL IS NOT NULL Câu 15:

SELECT FROM Suppliers

WHERE (SupplierID between 5 and 20) and Country != 'Germany'

Câu 16:

SELECT FROM Suppliers

WHERE SupplierID not between 10 and 20

Câu 17:

SELECT FROM Products

WHERE UnitPrice < 20 and UnitsInStock > 30

Câu 18

SELECT FROM Products

WHERE CategoryID = 1 and ProductName != 'Chang'

Câu 19:

SELECT CategoryName, P.*

FROM Categories JOIN Products P ON Categories.CategoryID = P.CategoryID

WHERE CategoryName = 'SEAFOOD'

Câu 20:

SELECT ProductID, ProductName, QuantityPerUnit, UnitsInStock, CategoryName, P.*

FROM Categories JOIN Products P ON Categories.CategoryID = P.CategoryID

WHERE CategoryName = 'Confections' and

(QuantityPerUnit LIKE('%boxes%') or QuantityPerUnit LIKE('%bags%')) Câu 21:

SELECT FROM Products

WHERE ProductName LIKE('%Chef%')

Câu 22: Tìm sản phẩm có tên bắt đầu là ‘Queso’ và kết thúc là chuỗi 'Pastora' trong table Products

SELECT FROM Products

WHERE ProductName LIKE('Queso%Pastora')

Câu 23:

SELECT R.RegionID, R.RegionDescription, COUNT( TerritoryDescription) AS

TerriotoryPerRegion

FROM Region R JOIN Territories T ON T.RegionID = R.RegionID

GROUP BY R.RegionID, R.RegionDescription

Câu 24:

SELECT CustomerID, COUNT(Fax) FROM Customers

WHERE Fax IS NULL

GROUP BY CustomerID

Câu 25:

SELECT

FROM Customers

WHERE LEN(CompanyName) < 10

Trang 5

Cầu 26:

SELECT FROM [Order Details]

ORDER BY UnitPrice ASC, Quantity DESC

Câu 27:

SELECT ProductID, MAX(UnitPrice) AS MAX_UnitPrice, MAX(Quantity) AS MAX_Quantity FROM [Order Details]

GROUP BY ProductID

Câu 28:

SELECT AVG(UnitPrice) AS [Giá trị trung bình]

FROM [Order Details]

Câu 30:

SELECT TOP 1 WITH TIES CategoryID, MIN(UnitsInStock) AS [MIN UnitsInStock]

FROM Products

GROUP BY CategoryID

ORDER BY [MIN UnitsInStock] ASC

Câu 31:

SELECT P.CategoryID, AVG(UnitPrice) AS [AVG UnitPrice]

FROM Products P JOIN Categories C ON P.CategoryID = C.CategoryID

GROUP BY P.CategoryID

HAVING AVG(UnitPrice) between 20 and 30

Câu 32:

SELECT CategoryName, AVG(UnitPrice) AS [AVG UnitPrice]

FROM Products P JOIN Categories C ON P.CategoryID = C.CategoryID

WHERE CategoryName = 'Seafood'

GROUP BY CategoryName

HAVING CategoryName = 'Seafood'

Câu 33: Trong bảng Orders hãy cho biết tổng giá trị cột Freight của những

EmployeeID nào có ít hơn 50 OrderID

SELECT EmployeeID, SUM(Freight) AS [SUM Freight]

FROM Orders

GROUP BY EmployeeID

HAVING COUNT(OrderID) < 50

ORDER BY EmployeeID ASC

Câu 34: Hãy cho biết những mã EmployeeID nào có hơn 50 OrderID

SELECT EmployeeID, COUNT(OrderID) AS [Quantity Orders]

FROM Orders

GROUP BY EmployeeID

HAVING COUNT(OrderID) > 50

Câu 35: Tính tổng cột UnitsInStock trong table Products của những CategoryName bắt đầu với ký tự 'C'

SELECT CategoryName, SUM(UnitsInStock) AS [MAX UnitsInStock]

FROM Products P JOIN Categories C ON P.CategoryID = C.CategoryID

GROUP BY CategoryName

HAVING LEFT(CategoryName, 1) = 'C'

HAVING CategoryName LIKE('C%')

Câu 36: Tổng giá trị cột UnitInStock và trung bình cột UnitPrice của những

suppliers ID có ProductID < 10 (loại mặt hàng có ít hơn 10 sản phẩm)

SELECT CategoryID,

SUM(UnitsInStock) AS 'SUM UnitsInStock', AVG(UnitPrice) AS [AVG_UnitPrice]

FROM Products

WHERE ProductID < 10

GROUP BY CategoryID

HAVING SUM(UnitsInStock) > 20 and AVG(UnitPrice) > 20

Trang 6

Câu 37: Trong table Employees, hãy cho biết thành phố nào có nhiều nhân viên nhất

và số lượng là bao nhiêu

SELECT TOP 1 WITH TIES City, COUNT(EmployeeID) AS [MaxEmployeeInCity]

FROM Employees

GROUP BY City

ORDER BY MaxEmployeeInCity DESC

Câu 38: Trong table Employees, hãy cho biết các thành phố có ít nhân viên nhất và

số lượng nhân viên là bao nhiêu

SELECT TOP 1 WITH TIES City, COUNT(EmployeeID) AS [MinEmployeeInCity]

FROM Employees

GROUP BY City

ORDER BY MinEmployeeInCity ASC

Câu 39: Dùng table Customers và hiển thị các cột: CustomerID, CompanyName, Phone với điều kiện chỉ hiển thị 8 ký tự cuối của số phone, đối với cột Fax thì record Cnào

có giá trị NULL thì thay thế bằng từ 'UnAvailable', những record có chứa mã vùng trong cặp dấu ngoặc () thì phân thành 'Type1', còn lại là 'Type2'

SELECT CustomerID, CompanyName, Phone,

CASE Fax: khi đặt field ở đây, ta không thể dùng hàm được

WHEN Fax IS NULL THEN 'UnAvailable'

WHEN Fax LIKE('%(%)%') THEN 'Type1'

ELSE 'Type2'

END AS [Loại FAX]

FROM Customers

Câu 40: Hãy đánh giá UnitPrice của sản phẩm trong table Products theo 3 mức

/*

_ Dưới 50 là: ‘Cheap Price’

_ Từ 50 đến 200 là ‘Medium Price’

_ Trên 200 là ‘Expensive price’

_ Nếu không có giá thì là ‘Have no price yet’

*/

SELECT ProductID, ProductName, UnitPrice,

CASE

WHEN UnitPrice < 50 THEN 'CHEAP PRICE'

WHEN UnitPrice < 200 THEN 'MEDIUM PRICE'

WHEN UnitPrice >= 200 THEN 'EXPENSIVE PRICE'

ELSE 'HAVE NO PRICE YET'

END AS [Đơn Giá]

FROM Products

Trang 7

TRIỂN KHAI HỆ QUẢN TRỊ CSDL

Lệnh: VIEW, STORE PROCEDURE (PROC), FUNCTIONS,

TRIGGERS -I - VIEW:

Câu 1: Tạo View tên vChiTietSinhVat, xuất ra danh sách các loài Động vật – Thực vật CREATE VIEW vChiTietSinhVat

AS

SELECT FROM ChiTietSinhVat

GO

SELECT FROM vChiTietSinhVat

GO

Câu 2:Tạo View tên vChiTietSinhVat_DV, xuất danh sach sinh vật thuộc giới 'Động Vật'

Create view VChiTietSinhVat_DV

AS

Select CTSV.MaSinhVat,CTSV.Ten,CTSV.TenKhoaHoc,

LSV.TenLop, NSV.TenNganh,GSV.TenGioi from ChiTietSinhVat CTSV

JOIN LopSinhVat LSV ON CTSV.MaLop = LSV.MaLop JOIN NganhSinhVat NSV ON LSV.MaNganh = NSV.MaNganh JOIN GioiSinhVat GSV ON GSV.MaGioi = NSV.MaGioi where GSV.TenGioi = N'Động vật'

GO

SELECT FROM vChiTietSinhVat_DV

GO

Câu 3: Update thông tin của loài sinh vật bất kì thông qua vChiTietSinhVat

UPDATE vChiTietSinhVat SET MaVung = '4'

WHERE MaSinhVat = 'DV0010'

GO

SELECT FROM vChiTietSinhVat

GO

Câu 4:Tạo View tên vChiTietSinhVat_MTSong_SL, xuất danh sách sinh vật có MTSong chứa chuỗi "Rừng rậm" và SoLuong >= 500

CREATE View vChiTietSinhVat_MTSong_SL

AS

Select Ten,TenKhoaHoc,MoiTruongSong,SoLuong from ChiTietSinhVat

Where MoiTruongSong like N'%Rừng rậm%' and SoLuong >= 500

GO

SELECT FROM vChiTietSinhVat_MTSong_SL

GO

Câu 5: Tạo View tên vChiTietSinhVat_KV, xuất danh sách sinh vật có KhuVuc chứa chuỗi "Đông" (vd: Đông Nam Á, Đông Âu,…)

CREATE VIEW vChiTietSinhVat_KV

AS

SELECT CTSV.MaSinhVat, CTSV.Ten, CTSV.MaVung, VS.KhuVuc

FROM ChiTietSinhVat CTSV JOIN VungSong VS ON CTSV.MaVung = VS.MaVung

WHERE VS.KhuVuc LIKE(N'%Đông%')

GO

SELECT FROM vChiTietSinhVat_KV

GO

Trang 8

II - STORE PROCEDURE:

Câu 1: Tạo SP tên spSinhVat_SL_NSV, xuất ra danh sách sinh vật thuộc ngành "Động vật có xương sống" với số lượng <= 500

CREATE PROC spSinhVat_SL_NSV

@MaNganh varchar(10),

@SoLuong int

AS

BEGIN

SELECT CTSV.Ten, CTSV.TenKhoaHoc, CTSV.SoLuong, LSV.TenLop, NSV.TenNganh

FROM ChiTietSinhVat CTSV

JOIN LopSinhVat LSV ON CTSV.MaLop = LSV.MaLop JOIN NganhSinhVat NSV ON LSV.MaNganh = NSV.MaNganh WHERE CTSV.SoLuong <= @SoLuong and NSV.MaNganh = @MaNganh

END

GO

EXEC spSinhVat_SL_NSV 'DVCXS', 500

GO

Câu 2: Tạo SP tên spSinhVat_MucDo, xuất ra MaSinhVat, Ten, DoDeDoa (bảng

DanhSachDo) các loài sinh vật đang trong tình trạng "Nguy cấp" và "Sắp bị đe doạ" CREATE PROC spSinhVat_MucDo

AS

BEGIN

SELECT CTSV.MaSinhVat, CTSV.Ten, DSD.DoDeDoa

FROM ChiTietSinhVat CTSV

JOIN DanhSachDo DSD ON CTSV.MaMucDo = DSD.MaMucDo WHERE CTSV.MaMucDo = 'EN' or CTSV.MaMucDo = 'NT'

END

GO

EXEC spSinhVat_MucDo

GO

Câu 3: Tạo SP tên spSinhVat_Ten, xuất ra danh sách sinh vật có Ten bắt đầu bằng 1

kí tự bất kì (@Ten: tham số truyền từ bên ngoài)

CREATE PROC spSinhVat_Ten

@Ten varchar(10)

AS

BEGIN

SELECT FROM ChiTietSinhVat

WHERE Ten LIKE(@Ten + '%')

END

GO

EXEC spSinhVat_Ten 'K'

GO

Câu 4: Tạo SP tên spSinhVat_SL, xuất ra danh sách sinh vật với số lượng nhập từ bên ngoài (@SoLuong)

CREATE PROC spSinhVat_SL

@SoLuong int

AS

BEGIN

SELECT FROM ChiTietSinhVat

WHERE SoLuong < @SoLuong

END

GO

EXEC spSinhVat_SL '500'

GO

Trang 9

Câu 5: * Tạo SP tên spSinhVat_SL_NSV, xuất ra tổng số lượng sinh vật của tất cả ngành sinh vật (dùng SubQuery)

CREATE PROC spSinhVat_SL_NSV

AS

SELECT N.TenNganh, SUM([Số Lượng Lớp]) AS [Số Lượng SV trong Ngành]

FROM LopSinhVat L

JOIN NganhSinhVat N ON L.MaNganh = N.MaNganh

JOIN (

SELECT L.TenLop, COUNT(CT.MaSinhVat) AS [Số Lượng Lớp]

FROM ChiTietSinhVat CT JOIN LopSinhVat L ON CT.MaLop = L.MaLop GROUP BY L.TenLop

) AS SUB ON L.TenLop = SUB.TenLop

GROUP BY N.TenNganh

GO

EXEC spSinhVat_SL_NSV

GO

Câu 6: Tạo SP tên spSinhVat_Update thực hiện cập nhật Ten, TenKhoaHoc, MaLop, MaVung, MTSong, KichThuoc, SoLuong, MaMucDo của sinh vật có MaSinhVat bất kí (tham số

từ bên ngoài)

CREATE PROC spSinhVat_Update

@MaSinhVat varchar(10), @Ten nvarchar(50), @TenKhoaHoc varchar(50),

@MaLop varchar(50), @MaVung int, @MoiTruongSong nvarchar(50),

@KichThuocTB nvarchar(50), @SoLuong int, @MaMucDo varchar(10)

AS

BEGIN

UPDATE ChiTietSinhVat

SET Ten=@Ten, TenKhoaHoc=@TenKhoaHoc, MaLop=@MaLop,

MaVung=@MaVung, MoiTruongSong=@MoiTruongSong, KichThuocTB=@KichThuocTB, SoLuong=@SoLuong, MaMucDo=@MaMucDo

WHERE MaSinhVat=@MaSinhVat

END

GO

EXEC spSinhVat_Update 'DV0001', N'Con Khỉ', 'Monkey', 'LThu', 2, N'Trong Rừng', N'Khá

là nhỏ', 20000, 'LC'

GO

Câu 7: Tạo SP tên spSinhVat_Insert thực hiện thêm vào một sinh vật (tham số từ bên ngoài)

CREATE PROC spSinhVat_Insert

@MaSinhVat varchar(10), @Ten nvarchar(50), @TenKhoaHoc varchar(50),

@MaLop varchar(50), @MaVung int,@MoiTruongSong nvarchar(50),

@KichThuocTB nvarchar(50), @SoLuong int, @MaMucDo varchar(10)

AS

BEGIN

INSERT INTO ChiTietSinhVat

VALUES (@MaSinhVat, @Ten, @TenKhoaHoc, @MaLop, @MaVung,

@MoiTruongSong, @KichThuocTB, @SoLuong, @MaMucDo) END

GO

EXEC spSinhVat_Insert 'DV0014', N'Con Mèo', 'TomCat', 'LThu', 2, N'Trong Nhà', N'Vô

số kể', NULL, 'LC'

GO

Trang 10

III - FUNCTIONS:

Câu 1: Viết hàm trả về danh sách sinh vật, có SoLuong NULL được thay bằng chuỗi "N/ A"

CREATE FUNCTION fcSinhVat_SL

(@string varchar(10))

RETURNS varchar(10)

AS

BEGIN

IF (@string IS NULL)

SET @string = 'N/A'

RETURN @string

END

GO

SELECT MaSinhVat, Ten, TenKhoaHoc, MoiTruongSong,

dbo.fcSinhVat_SL(SoLuong) AS [SoLuong], MaMucDo FROM ChiTietSinhVat

GO

Câu 2: Viết hàm trả về bảng dữ liệu gồm các sinh vật sống ở "Đông Nam Á"

CREATE FUNCTION fcSinhVat_VS

(@KhuVuc nvarchar(50))

RETURNS TABLE

AS

RETURN

(

SELECT CT.MaSinhVat, CT.Ten, CT.TenKhoaHoc, VS.*

FROM ChiTietSinhVat CT JOIN VungSong VS ON CT.MaVung = VS.MaVung

WHERE KhuVuc = @KhuVuc

)

GO

SELECT FROM fcSinhVat_VS(N'Đông Nam Á')

GO

Câu 3: Viết hàm xuất ra phẩn tên đầu tiên của sinh vật (vd: Khỉ mặt đỏ -> Khỉ) C1: Xuất Table

CREATE FUNCTION fcSinhVat_Ten01()

RETURNS TABLE

AS

RETURN

(

SELECT MaSinhVat, Ten, LEFT(Ten, CHARINDEX(' ', Ten) - ) AS

[TenThuongGoi],

TenKhoaHoc, MaVung, SoLuong, MaMucDo FROM ChiTietSinhVat

)

GO

SELECT FROM fcSinhVat_Ten01()

GO

C2: Xuất giá trị

CREATE FUNCTION fcSinhVat_Ten02

(@Ten nvarchar(50))

RETURNS nvarchar(50)

AS

BEGIN

DECLARE @TenThuongGoi nvarchar(50)

SELECT @TenThuongGoi = LEFT(@Ten, CHARINDEX(' ', @Ten) - )

RETURN @TenThuongGoi

END

GO

SELECT MaSinhVat, Ten, dbo.fcSinhVat_Ten02(Ten) AS TenThuongGoi,

TenKhoaHoc, MaVung, SoLuong, MaMucDo FROM ChiTietSinhVat

GO

Ngày đăng: 22/03/2014, 21:21

TỪ KHÓA LIÊN QUAN

w