Một Số Bài Tập Mẫu SQL(Phân II) - Dotnet Group

Tiếp theo phần I

1.Cho khung nhìn được định nghĩa như sau:

CREATE VIEW view_donhang

AS

SELECT dondathang.sohoadon,makhachhang,manhanvien,

ngaydathang,ngaygiaohang,ngaychuyenhang,

noigiaohang,mahang,

giaban,soluong,mucgiamgia

FROM dondathang INNER JOIN chitietdathang

ON dondathang.sohoadon = chitietdathang.sohoadon

a.Có thể thông qua khung nhìn này để bổ sung dữ liệu cho bảng DONDATHANG được không?

b. Có thể thông qua khung nhìn này để bổ sung dữ liệu cho bảng CHITIETDATHANG được không?

Không

2.Với khung nhìn được định nghĩa như sau:

CREATE VIEW view_donhang

AS

SELECT dondathang.sohoadon,makhachhang,manhanvien,

ngaydathang,ngaygiaohang,ngaychuyenhang,

noigiaohang,mahang,

giaban*soluong as thanhtien,

mucgiamgia

FROM dondathang INNER JOIN chitietdathang

ON dondathang.sohoadon = chitietdathang.sohoadon

a.Có thể thông qua khung nhìn này để xoá hay cập nhật dữ liệu trong bảng DONDATHANG được không?

Có thể cập nhật nhưng không thể xóa

b. Có thể thông qua khung nhìn này để cập nhật dữ liệu trong bảng CHITIETDATHANG được không?

Có thể được

3.Tạo thủ tục lưu trữ để thông qua thủ tục này có thể bổ sung thêm một bản ghi mới cho bảng MATHANG (thủ tục phải thực hiện kiểm tra tính hợp lệ của dữ liệu cần bổ sung: không trùng khoá chính và đảm bảo toàn vẹn tham chiếu)

CREATE PROCEDURE sp_insert_mathang(

@mahang NVARCHAR(10),

@tenhang NVARCHAR(50),

@macongty NVARCHAR(10) = NULL,

@maloaihang INT = NULL,

@soluong INT = 0,

@donvitinh NVARCHAR(20) = NULL,

@giahang money = 0)

AS

IF NOT EXISTS(SELECT mahang FROM mathang

WHERE mahang=@mahang)

IF (@macongty IS NULL OR EXISTS(SELECT macongty

FROM nhacungcap

WHERE macongty=@macongty))

AND

(@maloaihang IS NULL OR

EXISTS(SELECT maloaihang FROM loaihang

WHERE maloaihang=@maloaihang))

INSERT INTO mathang

VALUES(@mahang,@tenhang,

@macongty,@maloaihang,

@soluong,@donvitinh,@giahang)

exec sp_insert_mathang '005','Bom B52','ct03',2,34,'VND',$500000

4.Tạo thủ tục lưu trữ có chức năng thống kê tổng số lượng hàng bán được của một mặt hàng có mã bất kỳ (mã mặt hàng cần thống kê là tham số của thủ tục).

Create PROCEDURE sp_thongkebanhang(@mahang NVARCHAR(10))

AS

SELECT mathang.mahang,tenhang,

SUM(chitietdathang.soluong) AS 'Tong so luong'

FROM mathang LEFT JOIN chitietdathang

ON mathang.mahang=chitietdathang.mahang

WHERE mathang.mahang=@mahang

GROUPBY mathang.mahang,tenhang

exec sp_thongkebanhang '001'

an>

Từ khóa » Các Bài Tập Về Procedure Trong Sql