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

Bài tập SQL server hay

15 2,7K 12

Đ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 15
Dung lượng 209,5 KB

Nội dung

Xây dựng thủ tục tính số lượng đặt hàng với tên spud_DONDH_TinhSLDat gồm có 2 tham số vào là: Số đặt hàng và Mã vật tư, 1 tham số ra là: Số lượng đặt hàng của một vật tư trong một số đặt

Trang 1

BÀI 1: CÁC ĐỐI TƯỢNG TRONG CƠ SỞ DỮ LIỆU 1.1 Bằng công cụ Enterprise Manager, tạo mới CSDL có tên QLBanHang

(Quản lý bán hàng) có kích thước được mô tả như sau:

a Data File: Kích thước tạo lập 50MB; mỗi lần tăng 10MB; giới hạn kích thước tập tin không tăng hơn 200MB

b Log File: Kích thước tạo lập 10MB; mỗi lần tăng 5MB; không giới hạn việc tăng kích thước tập tin

1.2 Sử dụng công cụ Enterprise Manager để tạo cấu trúc các bảng có mô tả như

bên dưới trong CSDL quản lý bán hàng

Danh mục Vật tư (VATTU)

Danh mục Nhà cung cấp (NHACC)

Đơn đặt hàng (DONDH)

Chi tiết Đơn đặt hàng (CTDONDH)

Trang 2

Phiếu nhập hàng (PNHAP)

Chi tiết Nhập hàng (CTPNHAP)

hàng

Int

Phiếu xuất hàng (PXUAT)

Chi tiết xuất hàng (CTPXUAT)

SlXuat Số lượng xuất hàng Int

Tồn kho (TONKHO)

TongSLN Tổng số lượng nhập trong kỳ Int

TongSLX Tổng số lượng xuất trong kỳ Int

Trang 3

1.3 Sử dụng câu lệnh INSERT INTO thêm dữ liệu vào các bảng

a Bảng VATTU

b Bảng NHACC

c Bảng DONDH

Trang 4

d Bảng PNHAP

e Bảng CTDONDH

f Bảng CTPNHAP

Trang 5

g Bảng CTPXUAT

h Bảng PXUAT

i Bảng TONKHO

Trang 6

1.4 Backup/Restore database

a Sử dụng chức năng Backup Database để thực hiện Backup toàn bộ database QLBanHang thành file QLBanHang.bak

b (Chỉ thực hiện yêu cầu này sau khi bạn đã Backup dữ liệu thành công) Xóa các bảng đã tạo ra trong database QLBanHang Sử dụng chức năng Restore để phục hồi dữ liệu từ file QLBanHang.bak

1.5 Trong CSDL quản lý bán hàng, xây dựng các View như sau:

a Tạo view có tên vwDMVT bao gồm các thông tin sau: Mã vật tư, Tên vật tư.

View này dùng để liệt kê danh sách các vật tư có trong bảng VATTU

b Tạo view có tên vwDonDH_TongSLDatNhap bao gồm các thông tin sau: Số

đặt hàng, Mã vật tư, Tổng số lượng đặt, Tổng số lượng nhập View này dùng để

thống kê những đơn đặt hàng nào được nhập hàng đầy đủ

c Tạo view có tên vwDonDH_DaNhapDu bao gồm các thông tin sau: Số đặt

hàng, Tình trạng Trong đó, cột Tình trạng sẽ có 2 giá trị là “Đã nhập đủ” nếu đơn

hàng đó đã nhập đủ và “Chưa nhập đủ” nếu đơn hàng đó chưa nhập đủ

d Tạo view có tên vwTongNhap bao gồm các thông tin sau: Năm tháng, Mã

vật tư, Tổng số lượng nhập View này dùng để thống kê số lượng nhập vào các vật tư

trong từng năm tháng tương ứng (Chú ý: không dùng bảng TONKHO)

e Tạo view có tên vwTongXuat bao gồm các thông tin sau: Năm tháng, Mã vật

tư, Tổng số lượng xuất View này dùng để thống kê số lượng xuất của vật tư trong

từng năm tháng tương ứng (Chú ý: Không dùng bảng TONKHO)

f Tạo view có tên vwDonDH_MaVTu_TongSLNhap bao gồm các thông tin

sau: Số đặt hàng, ngày đặt hàng, mã vật tư, số lượng đặt, tổng số lượng đã nhập hàng

1.6 Kết hợp các view ở câu 1.5 thực hiện các truy vấn chọn lựa trả lời các câu

hỏi sau:

a Cho biết danh sách các đơn đặt hàng chưa được nhập hàng

b Cho biết danh sách các mặt hàng chưa được đặt hàng bao giờ

c Cho biết nhà cung cấp nào có nhiều đơn đặt hàng nhất

d Cho biết vật tư nào có tổng số lượng xuất bán nhiều nhất

e Cho biết đơn đặt hàng nào có nhiều mặt hàng nhất

f Cho biết tình hình nhập xuất của vật tư, thông tin gồm: Năm tháng, Mã vật tư, Tên vật tư, Tổng số lượng nhập, Tổng số lượng xuất

g Cho biết tình hình đặt và nhập hàng: Đơn đặt hàng, mã vật tư, số lượng đặt, tổng số lượng nhập

h Thống kê tình hình đặt hàng trong từng ngày: Ngày đặt hàng, mã vật tư, tên vật tư, tổng số lượng đặt hàng

i Thống kê tình hình nhập hàng trong từng ngày: Ngày nhập hàng, mã vật tư, tên vật tư, tổng số lượng nhập hàng

Trang 7

j Thống kê những đơn đặt hàng nào chưa được nhập đủ số lượng hàng

1.7 Bổ sung thêm các dữ liệu mới vào trong các bảng Chú ý tính chất hợp lý

của dữ liệu:

- Xác định mối quan hệ cha, con giữa các bảng Kiểm tra xem có dữ liệu nhập vào không hợp lý: chỉ có ở bảng con mà không có ở bảng cha hay không?

- Nhập chi tiết đơn đặt hàng nào mà SoDH không có trong bảng DONHANG không?

- Nhập vào chi tiết phiếu nhập 1 vật tư nào mà trong chi tiết đơn đặt hàng của phiếu đó không đặt hay không?

- Nhập vào chi tiết phiếu xuất nào mà số lượng vật tư xuất của một vật tư lớn hơn số lượng tồn trong bảng TONKHO của vật tư đó trong cùng năm tháng xuất hay không?

BÀI 2: CÁC RẰNG BUỘC TOÀN VẸN DỮ LIỆU 2.1 Sử dụng công cụ Enterprise Manager để thêm các ràng buộc sau vào các

bảng trong CSDL QLBanHang

Chú ý: nếu dữ liệu nhập vào các bảng trong bài trước không thỏa mãn thì một số ràng buộc sẽ không tạo được Khi đó, thực hiện các bước sau:

- Xác định dòng dữ liệu nhập sai dựa vào ý nghĩa ràng buộc mà bạn đang tạo Ví dụ: Nếu tạo ràng buộc miền giá trị (CHECK) 0<=PhanTram<=100 nhưng không thành công thì chắc chắn dữ liệu chỉ có thể nhập sai trong bảng VATTU, cột PhanTram

- Sửa lại dữ liệu nhập

- Thực hiện lại việc tạo ràng buộc

Danh mục Vật tư (VATTU)

- MaVTu là khóa chính

- Tên vật tư phải duy nhất, không trùng

- Giá trị mặc định cho cột đơn vị tính là “”

- 0<=PhanTram<=100

Danh mục Nhà cung cấp (NHACC)

- MaNhaCc là khóa chính

- Tên nhà cung cấp và địa chỉ nhà cung cấp phải là duy nhất, không trùng

- Giá trị mặc định cho cột DienThoai là “Chưa có”

Đơn đặt hàng (DONDH)

- SoDH là khóa chính

- Giá trị mặc định cho cột ngày đặt hàng là ngày hiện hành Dùng hàm Getdate()

Trang 8

Chi tiết Đơn đặt hàng (CTDONDH)

- SoDH, MaVTu là khóa chính

- SlDat >0

Chi tiết Nhập hàng (CTPNHAP)

- SoPn, MaVTu là khóa chính

- SlNhap >0

- DgNhap >0

Chi tiết xuất hàng (CTPXUAT)

- SoPx, MaVTu là khóa chính

- SlXuat >0

- DgXuat >0

Tồn kho (TONKHO)

- NamThang, MaVTu là khóa chính

- SlDau >=0

- TongSLN >=0

- TongSLX >=0

- Giá trị mặc định cho các cột SLDau, TongSLN, TongSLX là 0

- Trong thuộc tính Formula của cột SLCuoi: SLDau + TongSLN – TongSLX

2.2 Sử dụng công cụ Enterprise Manager để thêm vào các kiểm tra ràng buộc về

khóa ngoại cho các bảng như sau:

Chú ý: Tất cả các mối liên kết khóa ngoại đều có giá trị CASCADE cho các sự kiện ON UPDATE và ON DELETE

Trang 9

2.3 Phát sinh script

a Sử dụng chức năng Generate Script của công cụ Enterprise Manager để phát sinh toàn bộ đoạn script dùng để tạo các bảng và ràng buộc đã làm

b Lưu script vừa phát sinh thành qlbanhang.sql

2.4 Tạo bảng và ràng buộc bằng câu lệnh (script)

Xóa các bảng và các ràng buộc vừa tạo Chú ý đến các ràng buộc khóa ngoại giữa các bảng để xác định thứ tự các bảng sẽ bị xóa

b Sử dụng công cụ Query Analyzer, viết các câu lệnh tạo bảng và các ràng buộc khóa Bạn có thể chọn một trong hai cách thực hiện:

- Tạo các bảng trước, sau đó sử dụng câu lệnh ALTER TABLE ADO CONTRAINT để tạo các ràng buộc

- Tạo các bảng kết hợp với các ràng buộc

- Bạn có thể tham khảo lại file script đã lưu qlbanhang.sql để kiểm tra câu lệnh

của mình và tập cách đọc hiểu đoạn script do Enterprise Manager tạo ra

2.5 Thiết lập mô hình quan hệ dữ liệu (diagram) của CSDL quản lý bán hàng

như bên dưới: Lưu tên: QLBanHang_KetNoi

BÀI 3: LẬP TRÌNH VỚI CSDL 3.1 Trong CSDL quản lý bán hàng thực hiện các truy vấn sau:

a Hiển thị danh sách các vật tư trong bảng VATTU sắp xếp theo thứ tự tên vật

tư giảm dần

b Hiển thị danh sách các nhà cung cấp trong bảng NHACC có cột địa chỉ ở

HCM, sắp xếp dữ liệu theo họ tên tăng dần

Trang 10

c Hiển thị danh sách các thông tin trong bảng CTPNHAP có thêm cột thành tiền biết rằng Thành tiền=SLNhap*DgNhap

d Hiển thị danh sách các mã nhà cung cấp, tên nhà cung cấp không trùng lặp dữ

liệu đã đặt hàng trong bảng DONDH.

e Hiển thị danh sách các phiếu xuất hàng gồm có các cột: Số phiếu xuất và tổng giá trị Trong đó sắp xếp theo thứ tự tổng trị giá giảm dần

f Xóa chi tiết các đơn vật tư trong bảng CTDONDH có ngày đặt hàng là

15/01/2002

g Xóa toàn bộ các dòng dữ liệu trong bảng CTPXUAT.

h Sử dụng lại tập tin chứa các lệnh thêm dữ liệu INSERT INTO trước đây để

chèn lại các dữ liệu đã bị xóa trong bảng CTDONDH và CTPXUAT.

i Sử dụng COMPUTE BY và các hàm tính toán để thống kê nhóm dữ liệu:

- Hiển thị các thông tin trong bảng CTPXUAT và bổ sung thêm cột thành tiền,

sao cho có thống kê dòng tổng cộng số tiền ở từng phiếu xuất

- Hiển thị các thông tin: Mã vật tư, Số phiếu nhập, số lượng nhập, đơn giá nhập trong bảng CTPNHAP và thống kê dòng tổng cộng số lượng, giá thấp nhất, giá

cao nhất ở từng vật tư

3.2 Sử dụng cú pháp IF để thực hiện các yêu cầu sau:

a Cho biết đơn giá xuất trung bình của hàng hóa “Đầu DVD Hitachi 1 đĩa”

trong bảng CTPXUAT hiện giờ là bao nhiêu? Nếu lớn hơn 3.800.000 thì in ra

“Không nên thay đổi giá bán”, ngược lại in ra “Đã đến lúc tăng giá bán”

b Sử dụng hàm DATENAME để tính xem có đơn đặt hàng nào đã được lập vào ngày chủ nhật không? Nếu có thì in ra danh sách các đơn đặt hàng đó, ngược lại thì in

ra chuỗi “Ngày lập các đơn đặt hàng đều là hợp lệ”

c Hãy cho biết đã có bao nhiêu phiếu nhập hàng cho mặt hàng DD01, nếu có thì

in ra “có xx phiếu nhập hàng cho mặt hàng D001”, ngược lại thì in ra “Chưa có phiếu nhập hàng nào cho mặt hàng DD01”

3.3 Sử dụng cú pháp WHILE để thực hiện yêu cầu sau: Tạo một bảng tên VATTU_Temp có cấu trúc và dữ liệu đựa vào bảng VATTU (chỉ lấy 2 cột: MaVTu,

TenVTu và bỏ đi các constraint liên quan) Sau đó sử dụng WHILE viết đoạn chương

trình dùng để xóa từng dòng dữ liệu trong bảng VATTU_Temp đối với điều kiện câu

lệnh bên trong vòng lặp khi mỗi lần thực hiện chỉ được phép xóa một dòng dữ liệu

trong bảng VATTU_Temp Trong khi xóa nên thông báo ra màn hình nội dung

“Đang xóa vật tư” + tên vật tư

3.4 Sử dụng cú pháp CASE lồng vào các lệnh truy vấn cần thiết trong các yêu

cầu sau:

a Liệt kê danh sách các đơn đặt hàng trong bảng DONDH bổ sung thêm cột hiển thị thứ trong tuần (bằng tiếng việt) của ngày đặt hàng

b Giảm đơn giá của các hàng hóa bán ra (DGXUAT) trong tháng 01/2002 theo quy tắc sau:

Trang 11

- Không giảm nếu số lượng <4

- Giảm 5%nếu số lượng >=4 và số lượng <10

- Giảm 10% nếu số lượng >=10 và số lượng <=20

- Giảm 20% nếu số lượng >20

BÀI 4: THỦ TỤC NỘI TẠI 4.1 Trong CSDL quản lý bán hàng, tạo các thủ tục nội tại tính toán các yêu cầu

sau:

a Xây dựng thủ tục tính số lượng đặt hàng với tên spud_DONDH_TinhSLDat

gồm có 2 tham số vào là: Số đặt hàng và Mã vật tư, 1 tham số ra là: Số lượng đặt hàng của một vật tư trong một số đặt hàng

b Xây dựng thủ tục tính tổng số lượng đã nhập hàng với tên

spud_PNHAP_TinhTongSLNHang gồm có 2 tham số vào là: Số đặt hàng và mã vật

tư, 1 tham số ra là : Tổng số lượng đã nhập hàng của một vật tư trong một số đặt hàng

c Xây dựng thủ tục tính số lượng tồn kho cuối kỳ của một vật tư với tên

spud_TONKHO_TinhTonCuoi có 2 tham số vào là: Năm tháng và mã vật tư, 1

tham số ra là: Số lượng cuối kỳ của một vật tư trong năm tháng truyền vào

4.2 Trong CSDL quản lý bán hàng, tạo các thủ tục nội tại cập nhật dữ liệu trong bảng VATTU Các thủ tục này có kiểm tra các ràng buộc dữ liệu và thông báo ra các

lỗi rõ ràng khi dữ liệu vi phạm các ràng buộc

a Xây dựng thủ tục thêm mới dữ liệu vào bảng VATTU với tên spud_VATTU_Them gồm có 4 tham số vào chính là giá trị thêm mới cho các cột

trong bảng VATTU: Mã vật tư, tên vật tư, đơn vị tính và phần trăm Trong đó cần kiểm tra các ràng buộc dữ liệu phải hợp lệ trước khi thực hiện lệnh INSERT INTO để thêm dữ liệu vào bảng VATTU

- Mã vật tư phải duy nhất

b Xây dựng thủ tục xóa một vật tư có trong bảng VATTU bới tên spud_VATTU_Xoa gồm có 1 tham số vào chính là mã vật tư cần xóa Trong đó cần

kiểm tra tính ràng buộc dữ liệu trước khi thực hiện lệnh DELETE để xóa dữ liệu trong bảng VATTU

- Mã vật tư phải chưa có trong bảng CTDONDH

- Mã vật tư phải chưa có trong bảng CTPXUAT

- Mã vật tư phải chưa có trong bảng TONKHO

c Xây dựng thủ tục sửa đổi vật tư trong bảng VATTU theo giá trị Mã vật tư

nhập vào với tên spud_VATTU_Sua gồm có 4 tham số vào chính là giá trị cần thay đổi của các cột trong bảng VATTU: Mã vật tư, tên vật tư, đơn vị trính và phần trăm Trong thủ tục chỉ thực hiện lệnh UPDATE SET để cập nhật dữ liệu vào bảng VATTU

với các giá trị cần thay đổi Đưa ra thông báo đã sửa giá trị nào, không sửa nếu giá trị

đó là giá trị hiện tại của bảng.(Chú thích: Nếu Mã vật tư cần sửa không có trong bảng

thì đưa ra thông báo: “Không tìm thấy MÃ VẬT TƯ như bạn yêu cầu” và không sửa

Trang 12

thông tin Nếu tất cả 4 thông số cần sửa trùng với giá trị tương ứng của bảng thì đưa

ra thông báo: “Đã tồn tại giá trị này trong bảng Không cần sửa đổi” và không sửa thông tin Còn sửa thông tin nào thì đưa ra thông báo đã sửa VD: “Đã cập nhật cột PHẦN TRĂM”, )

4.3 Trong CSDL quản lý bán hàng, tạo các thủ tục nội tại liệt kê dữ liệu với các

yêu cầu sau:

a Xây dựng thủ tục liệt kê các cột dữ liệu trong bảng VATTU với tên spud_VATTU_BcaoDanhSach, thủ tục này không có tham số nào Hành động duy nhất trong thủ tục này đơn giản chỉ là một câu lệnh truy vấn SELECT * FROM VATTU có sắp xếp theo thứ tự tên vật tư tăng dần.

b Xây dựng thủ tục liệt kê các cột dữ liệu trong bảng TONKHO có thể hiện thêm cột TENVTU trong bảng VATTU với tên spud_TONKHO_BcaoTonKho gồm

có 1 tham số vào là năm tháng muốn lọc dữ liệu

c Xây dựng thủ tục liệt kê các cột dữ liệu trong hai bảng dữ liệu PXUAT và CTPXUAT có thể hiện thêm cột TENVTU trong bảng VATTU với tên là

spud_PXUAT_BcaoPhieuXuat gồm có 1 tham số vào là: Số phiếu xuất muốn lọc dữ

liệu có giá trị mặc định là NULL Tuy nhiên nếu lúc gọi thủ tục mà không truyền giá

trị số phiếu xuất vào thì xem như không lọc gì cả, khi đó thủ tục sẽ liệt kê tất cả phiếu xuất trong bảng PXUAT

4.4 Trong CSDL quản lý bán hàng, tạo các thủ tục nội tại dùng cho việc cập

nhật dữ liệu trong bảng DONDH, CTDONDH để về sau sử dụng trong đơn đặt hàng Các thủ tục này có kiểm tra các ràng buộc dữ liệu và thông báo ra các lỗi rõ ràng khi

dữ liệu vi phạm các ràng buộc

a Xây dựng thủ tục thêm mới dữ liệu vào bảng DONDH với tên spud_DONDH_Them gồm có 3 tham số vào là giá trị thêm mới cho các cột trong

bảng DONDH: Số đặt hàng, mã nhà cung cấp, ngày đặt hàng Trong đó cần kiểm tra

các ràng buộc dữ liệu phải hợp lệ trước khi thực hiện lệnh INSERT để thêm dữ liệu vào bảng DONDH

- Số đặt hàng phải là duy nhất

- Mã nhà cung cấp phải có bên bảng NHACC

- Ngày đặt hàng có thể không truyền vào (optional), khi đó sẽ lấy ngày hiện hành truyền vào

b Xây dựng thủ tục xóa DONDH với tên spud_DONDH_Xoa gồm có 1 tham

số vào chính là số đặt hàng cần xóa Tuy nhiên nếu ràng buộc dữ liệu hợp lệ thì xóa tự động luôn các dòng dữ liệu liên quan trong bảng CTDONDH Trong đó cần kiểm tra ràng buộc dữ liệu trước khi thực hiện lệnh DELETE để xóa dữ liệu trong bảng DONDH

- Số đặt hàng chưa có trong bảng PNHAP

c Xây dựng thủ tục sửa đổi dữ liệu trong bảng DONDH với tên spud_DONDH_Sua gồm có 3 tham số vào chính là giá trị cần thay đổi của các cột

trong bảng DONDH: Số đặt hàng, mã nhà cung cấp, ngày đặt hàng Trong đó cần

Trang 13

kiểm tra các ràng buộc dữ liệu phải hợp lệ trước khi thực hiện lệnh UPDATE SET để cập nhật dữ liệu vào bảng DONDH

- Mã nhà cung cấp phải có bên bảng NHACC

- Ngày đặt hàng phải trước ngày nhập hàng (Nếu đơn đặt hàng đã được nhập về rồi)

d Xây dựng thủ tục thêm mới dữ liệu vào bảng CTDONDH với tên spud_CTDONDH_Them gồm có 3 tham số chính là giá trị thêm mới cho các cột

trong bảng CTDONDH: Số đặt hàng, mã vật tư, số lượng đặt hàng Trong đó cần

kiểm tra các ràng buộc dữ liệu phải hợp lệ trước khi thực hiện lệnh INSERT để thêm

dữ liệu vào bảng CTDONDH

- Số đặt hàng phải có bên bảng DONDH

- Mã vật tư phải có bên bảng VATTU

- Số đặt hàng và mã vật tư phải duy nhất trong bảng CTDONDH

e Xây dựng thủ tục xóa CTDONDH với tên spud_CTDONDH_Xoa gồm có 2

tham số vào chính là số đặt hàng và mã vật tư cần xóa Trong đó cần kiểm tra ràng

buộc dữ liệu trước khi thực hiện lệnh DELETE để xóa dữ liệu trong bảng CTDONDH

- Số đặt hàng và mã vật tư này chưa được nhập hàng trong các bảng liên quan PNHAP và CTPNHAP

f Xây dựng thủ tục sửa đổi dữ liệu trong bảng CTDONDH với tên spud_CTDONDH_Sua gồm có 3 tham số vào chính là giá trị cần thay đổi của các

cột trong bảng CTDONDH: Số đặt hàng, mã vật tư, số lượng đặt hàng Trong đó cần

kiểm tra các ràng buộc dữ liệu phải hợp lệ trước khi thực hiện lênh UPDATE SET để cập nhật dữ liệu vào bảng CTDONDH

- Số đặt hàng và mã vật tư có bên bảng CTDONDH

- Số lượng đặt mới phải >= tổng số lượng đã nhập hàng (Nếu đã có nhập hàng)

BÀI 5: HÀM DO NGƯỜI DÙNG ĐỊNH NGHĨA 5.1 Xây dựng các hàm đơn trị sau:

a Xây dựng hàm Fn_TongNhapThang(@NamThang, @MaVTu) trả về tổng số lượng đã nhập trong tháng của vật tư

b Xây dựng hàm Fn_TongXuatThang(@NamThang, @MaVTu) trả về tổng số lượng đã xuất trong tháng của vật tư

c Xây dựng hàm Fn_TongNhap(@SoDH, @MaVTu) trả về tổng số lượng đã nhập của vật tư theo số đặt hàng

d Xây dựng hàm Fn_ConNhap((@SoDH, @MaVTu) trả về số lượng còn phải nhập của vật tư theo số đặt hàng (Có sử dụng hàm Fn_TongNhap)

e Xây dựng hàm tồn kho Fn_TonKho(@NamThang, @MaVTu) trả về số lượng tồn kho của vật tư theo năm tháng

Ngày đăng: 17/06/2016, 10:08

TỪ KHÓA LIÊN QUAN

w