Bảng NHACUNGCAP lưu trữ dữ liệu về các đối tác cung cấp hàng cho công ty Bảng MATHANG lưu trữ các dữ liệu về các mặt hàng hiện có trong công ty Bảng LOAIHANG phân loại các mặt hàng
Trang 1Hướng Dẫn Thực Hành
Hướng dẫn:
• Bài tập thực hành được chia làm nhiều Module
• Mỗi Module được thiết kế cho thời lượng là 3 tiết thực hành tại lớp với
sự hướng dẫn của giảng viên.
• Tùy theo số tiết phân bổ, mỗi tuần học có thể thực hiện nhiều Module.
• Sinh viên phải làm tất cả các bài tập trong các Module ở tuần tương ứng Những sinh viên chưa hoànn tất phần bài tập tại lớp có trách nhiệm tự làm tiếp tục ở nhà.
Trang 2Module 1
Nội dung kiến thức thực hành:
+Thực hành ngôn ngữ SQL:
- ngôn ngữ định nghĩa dữ liệu: CREATE TABLE
- ngôn ngữ thao tác dữ liệu: INSERT, UPDATE, DELETE
+Thông qua việc cài đặt cơ sở dữ liệu trên DBMS,SV hiểu rõ hơn về mô hình ER, mô hình quan hệ
SINHVIEN
HoTen Masv Nam Khoa
DIEUKIEN
Mamh Mamh_truo c
Trang 3MASV INT PRIMARY KEY,
NAM INT NOT NULL, KHOA VARCHAR(10) NOT NULL )
Bài 3:
Mục đích:
Thực hiện lệnh Alter Table add constraint để kiểm tra các ràng buộc về
khóa chính, khóa ngoại (nếu chưa cài đặt ở Bài 2) và các ràng buộc về dữ liệu được mô tả bên dưới.
Ví dụ 1: ràng buộc khóa ngoại cho bảng DIEUKIEN
Alter table DIEUKIEN
add constraint fk_dkien foreign key(MAMH) references MONHOC(MAMH)
Ví dụ 2: ràng buộc về Diem cho bảng KETQUA
Alter table KETQUA
add constraint ck_kqua check(DIEM>=0 and DIEM<=10)
ALTER TABLE SINHVIEN
ADD CONSTRAINT KC_SINHVIEN PRIMARY KEY (MASV)
ALTER TABLE SINHVIEN
ADD CONSTRAINT NAM_RB
CHECK (NAM >=1 AND NAM<=5)
Trang 4ALTER TABLE MONHOC
ADD CONSTRAINT KC_MONHOC PRIMARY KEY(MAMH)
Table DieuKien
CREATE TABLE DIEUKIEN
(
MAMH CHAR(8) NOT NULL,
MAMH_TRUOC CHAR(8) NOT NULL
)
ALTER TABLE DIEUKIEN
ADD CONSTRAINT KC_DIEUKIEN PRIMARY KEY(MAMH,MAMH_TRUOC)
ALTER TABLE DIEUKIEN
ADD CONSTRAINT KN_DIEUKIEN FOREIGN KEY(MAMH)
REFERENCES MONHOC(MAMH)
Table KhoaHoc
CREATE TABLE KHOAHOC
(
MAKH INT NOT NULL,
MAMH CHAR(8) NOT NULL,
HOCKY INT,
GIAOVIEN CHAR(10)
)
ALTER TABLE KHOAHOC
ADD CONSTRAINT KC_KHOAHOC PRIMARY KEY(MAKH)
ALTER TABLE KHOAHOC
ADD CONSTRAINT KN_KHOAHOC FOREIGN KEY(MAMH)
REFERENCES MONHOC(MAMH)
Bang KetQua
CREATE TABLE KETQUA
(
MASV CHAR(7) NOT NULL,
MAKH INT NOT NULL,
DIEM INT
)
ALTER TABLE KETQUA
ADD CONSTRAINT KC_KETQUA PRIMARY KEY(MASV, MAKH)
ALTER TABLE KETQUA
ADD CONSTRAINT KN_KETQUA FOREIGN KEY(MASV)
REFERENCES SINHVIEN(MASV)
ALTER TABLE KETQUA
ADD CONSTRAINT KN2_KETQUA FOREIGN KEY(MAKH)
Trang 5Module 2
Nội dung kiến thức thực hành:
+Ngôn ngữ thao tác dữ liệu: INSERT, UPDATE, DELETE, SELECT
Toán rời rạc MATH2410 3 TOAN
Cấu trúc dữ liệu COSC3320 4 CNTT
Cơ sở dữ liệu COSC3380 3 CNTT
DIEUKIEN
MaMH MaMH_truo
c COSC3380 COSC3320
Trang 62 Xem dữ liệu của bảng SINHVIEN:
SELECT * FROM SINHVIEN
Trang 7Module 3
Nội dung kiến thức thực hành:
+Ngôn ngữ định nghĩa và thao tác dữ liệu: SELECT
Bảng NHACUNGCAP lưu trữ dữ liệu về các đối tác cung cấp hàng cho công ty
Bảng MATHANG lưu trữ các dữ liệu về các mặt hàng hiện có trong công ty
Bảng LOAIHANG phân loại các mặt hàng hiện có
Bảng NHANVIEN lưu trữ thông tin về các nhân viên làm việc trong công ty
Bảng KHACHANG lưu trữ thông tin các khách hàng của công ty
Khách hàng đặt hàng thông qua các đơn đặt hàng(DONDATHANG) Mỗi đơn đặt hàng phải do một nhân viên nào đó lập và do đó phải có quan hệ với bảng NHANVIEN
Thông tin chi tiết của các đơn đặt hàng được lưu trữ trong bảng chi tiết đơn đặt hàng Bảng này có quan hệ với hai bảng DONDATHANG và MAHANG
Trang 81 Sinh viên hãy xây dựng cơ sở dữ liệu trên bằng lệnh định nghĩa dữ liệu
(CREATE TABLE) với các ràng buộc khĩa chính, khĩa ngoại Lưu ý: sinh viên
xem dữ liệu mẫu bên dưới để chọn kiểu dữ liệu cho phù hợp.
2 Sinh viên nhập liệu cho các bảng theo dữ liệu sau.
Lưu ý: những cột để trống sinh viên tự cho dữ liệu.
Table KHÁCH HÀNG
CINOTEC ĐIỆN TOÁN SÀI GÒN 43 Yết kiêu P 6 Q3 ( )7931752
COMECO VẬT TƯ THIẾT BỊ GTVT 226 Thuận Kiều Q11 ( )8456781
FAHASA PHÁT HÀNH SÁCH SÀI GÒN 12 Thuận kiều Q5 ( )8452792
FISC DỊCH VỤ ĐẦU TƯ NƯỚC NGOÀI 31 Trương Định P6 Q1
HUNSAN HỪNG SÁNG 175 Lý Thường Kiệt ( )5465487
LIXCO BỘT GIẶT LIX 79 Bàn Cờ P3 Q5 ( )8952187
SAFICO THUỶ SẢN XUẤT KHẨU 47 Bải sậy P1 Q11
SJC VÀNG BẠC ĐÁ QUÝ TPHCM 350 CMT8 P12 Q3 ( )8543543
TAFACO THƯƠNG MẠI TẤN PHÁT 4 Trần PhũP Q5 ( )8754875
THADACO XÂY DỰNG THÀNH ĐẠT 6E An Bình Q5 ( )5465454
TRACODI ĐẦU TƯ PHÁT TRIỂN GTVT 343 Nhật Tảo Q10 ( )5321321
TRANACO DỊCH VỤ VẬN TẢI Q 3 156 Lê Đại HànhP7 Q10 ( )8654635
VIETTIEN CTY DỆT MAY VIỆT TIẾN 24 KhuA – CN Tân Tạo ( )4565670
Table NHÂNVIÊN
MÃ
NV HỌ NV TÊN NV
NGÀY SINH
NGÀY LÀM VIỆC ĐỊA CHỈ
ĐIỆN THOẠI LCB
PHỤ CẤP
1 NGUYỄN LỆ NGA 10/12/64 10/12/94 13Hùng Vương P4 Q5 ( )5465465
2 HÀ VĨNH PHÁT 07/12/79 02/03/02 89 Đồng Khởi Q1 ( )8767461
3 TRẦN TUYẾT OANH 27/02/67 30/10/97 45Lê Quí Đôn Q3 ( )5465465
4 NGUYỄN KIM NGỌC 25/12/80 10/12/07 187 Hậu Giang P5Q6 ( )5654654
5 TRƯƠNG DUY HÙNG 10/10/82 10/11/07 77 Trương ĐịnhQ1 ( )5871544
6 LƯƠNG BÁ THẮNG 10/12/68 06/03/98 92 Lê ThánhTônQ1 ( )8754165
7 LÂM SƠN HOÀNG 02/03/78 10/10/01 45 Ký Con Q1 ( )8231231
8 NGUYỄN MINH HỒNG 30/10/68 30/10/98 22 Lạc Long Quân Q10 ( )7845138
Trang 9Table NHÂNVIÊN
MÃ
NV HỌ NV TÊN NV
NGÀY SINH
NGÀY LÀM VIỆC ĐỊA CHỈ
ĐIỆN THOẠI LCB
PHỤ CẤP
9 VƯƠNG NGỌC LAN 10/12/67 10/12/97 227 Hai Bà Trưng Q1 ( )7784184
10 NGUYỄ THỊ MAI 10/11/67 10/11/97 12Nguỹên Chí Thanh Q3 ( )3451365
11 LÊ VĂN HÙNG 06/03/57 06/03/90 56Nguyễn TrãiQ1 ( )5745785
12 NGUYỄN THỊ HOA 10/10/66 10/10/96 12Nguyễn Trãi Q1 ( )6465465
Table DONDATHANG
MÃ
HĐ MÃ KH MÃ NV NGÀY ĐH NGÀY GN HÀNG
NGÀY CHUYỂN HÀNG
NƠI GIAO HÀNG
Trang 10NƠI GIAO HÀNG
MAHANG TENHANG CTY MÃ LHANG MÃ SL TỒN ĐVỊ TÍNH ĐƠN GIÁ
1 RƯỢU DOM BK 4 CHAI 230.50
2 GIA VỊ HEC TP 2 THÙNG 40.00
3 BÁNH KEM HEC BK 15 CÁI 2.00
5 BÁNH MÌ HEC BK 20 CÁI 1.00
6 NEM DOM TP 20 KG 10.00
7 TÁO DOM TC 28 KG 5.00
8 CÁ HỘP HEC TP 5 THÙNG 62.50
9 KẸO DOM BK 10 THÙNG 12.00
10 GẠO DOM TP 50 KG 2.00
11 NẾP DOM TP 60 KG 3.00
12 ÁO SƠ MI VIETTIEN AQ 12 CÁI 50
Trang 11Lan Hà HECCO 12 Nguyễn Thái Sơn 4554678
Trang 12Table CHITIETDATHANG
MÃ HĐ MÃ HÀNG ĐƠN GIÁ SỐ LƯỢNG
MỨC GIẢM GIÁ
Trang 14Module 4
Nội dung kiến thức thực hành:
+Ngôn ngữ định nghĩa và thao tác dữ liệu: SELECT với các hàm tính toán, gộp nhóm, SELECT lồng nhau.
Sinh viên dùng lệnh SELECT thực hiện các truy vấn sau:
1 Mã hàng, tên hàng và số lượng của các mặt hàng hiện có trong công ty
3 Địa chỉ và điện thoại của nhà cung cấp có tên giao dịch VIETEC là gi?
SELECT DIACHI, DIENTHOAI
WHERE DONGIA>50 AND SOLUONG<50
5 Cho biết mỗi mặt hàng trong công ty do ai cung cấp
FROM LOAIHANG,MATHANG,NHACUNGCAP
WHERE LOAIHANG.MALOAIHANG=MATHANG.MALOAIHANG
AND MATHANG.MACONGTY=NHACUNGCAP.MACONGTYAND LOAIHANG.MALOAIHANG='TP'
7 Những khách hàng nào (tên giao dịch) đã đặt mua mặt hàng Sữa hộp của công ty?
SELECT KHACHHANG.TENCONGTY,MATHANG.TENHANG
FROM
Trang 15AND TENHANG='CA HOP'
8 Đơn đặt hàng số 1 do ai đặt và do nhân viên nào lập, thời gian và địa điểm giao hàng là
Sinh viên dùng lệnh DELETE để thực hiện các yêu cầu sau:
10 Xóa những nhân viên đã làm việc trong công ty quá 30 năm
DELETE FROM NHANVIEN
WHERE ( 2010-Year(ngaylamviec))>30
CÁCH KHÁC:
DELETE FROM NHANVIEN
WHERE (YEAR (GETDATE())-YEAR(NGAYLAMVIEC))>30
11 Xóa khỏi bảng khách hàng hiện không có đơn đặt hàng nào
DELETE FROM khachhang
WHERE makh in (select makh,count(sohd)
FROM khachhang inner join dondathang
on khachhang.makh=dondathang.makh
group by makh
having count(sohd)=0)
Trang 16Module 5
+ Nội dung kiến thức thực hành:
+Quản lý tài khoản cho người sử dụng
sp_helpsrvrolemember: liệt kê danh sách tài khoản đã gán nhóm quyền
sp_helpsrvrole : liệt kê danh sách nhóm quyền SQL Server 2008
sp_srvrolepermission
1 Tạo tài khoản từ hệ điều hành Windows(Windows Authentication)
Nếu chọn đặt Windows authentication thì tài khoản khai báo phải tồn tại trong hệ điều hành
Trong hệ điều hành Windows, tạo tài khoản tên QUANGHIEP
Để tạo mới tài khoản trong hệ điều hành Windows chọn vào Start \ Setting \ Control Panel \ Performance and Maintenance\ Administrative Tools\ Computer Management\ System Tools\ Local Users and Groups và right click User\ New User
Khai báo tài khoản mới trong SQL Server 2005 bằng cách chọn vào Security \ Login \ Right Click \ New Login
Trang 17Chọn vào nút Search
Trang 18Cửa sổ kế tiếp xuất hiện
Nhấn vào nút Advanced, tiếp tục nhấn nút Find Now, danh sách tài khoản của hệ điều hành liệt kê như hình:
Chọn vào tài khoản QUANGHIEP rồi nhấn nút OK
Nhấn nút OK, tài khoản trong cửa sổ tên sẽ khai báo trong phần login name
2 Tạo tài khoản trong SQL Server (SQL Server Authentication)
Tạo tài khoản của SQL Server 2005, chọn Security\ right click Login\ New Login
Trang 19(Bỏ chọn User must change password at next login, nếu không sẽ gây ra lỗi)
3 Sinh viên tự tạo 10 tài khoản
4 Server Roles
Gán quyền cho tài khoản vừa tạo
Security\ Login \ right click thuysoftware ( tài khoản vừa tạo) \ Properties \ Select a
page \ Server Role
Trang 20Gán quyền cho tài khoản thuysoftware
5 Trạng thái của tài khoản
Để ngăn cấm tài khoản thuysoftware đăng nhập vào Database Engine của SQL Server
2005 thì chọn Security\ Login \ right click thuysoftware ( tài khoản vừa tạo) \ Properties \
Select a page \ Status rồi chọn Deny trong Pemission to connect to database engine
Trang 216 Sinh viên cấp quyền cho 10 tài khoản vừa tạo.
7 Tài khoản của người sử dụng trên cơ sở dữ liệu
Tạo thư mục SQLData trong đĩa F:\
Tạo cơ sở dữ liệu :
CREATE DATABASE SmallWorks ON PRIMARY
Trang 22CREATE 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 )
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 )
7.1 Cách 1
Cấp quyền truy cập cơ sở dữ liệu SmallWorks cho tài khoản thuysoftware: chọn
Security\ Login \ right click thuysoftware ( tài khoản vừa tạo) \ Properties \ Select a
page \ User Mapping
Trang 23Tài khoản thuysoftware nằm trong danh sách người sử dụng của cơ sở dữ liệu SmallWorks.
Trang 247.2 Cách 2
Khai báo tài khoản truy cập vào cơ sở dữ liệu SmallWorks
Chọn cơ sở dữ liệu SmallWorks \ Security \ right click Users \ New User
Xuất hiện hộp thoại Database User , gõ tên của user name
Chọn button , chọn tiếp Browse và chọn một tài khoản có quyền truy cập cơ sở
dữ liệu này
Trang 25nhấn chọn OK
8 Sinh viên tự tạo 2 cơ sở dữ liệu và gán quyền truy cập cho 10 tài khoản vừa tạo
Trang 26Module 6
+ Nội dung kiến thức thực hành:
+ Tạo CSDL Quản Lý Bán Sữa.
+ Quản lý tài khoản cho người sử dụng
+ Cấp quyền truy cập CSDL Quản Lý Bán Sữa
CSDL Quản Lý Bán Sữa:
HangSua(MaHangSua,TenHangSua,DiaChi,DienThoai,Email)
LoaiSua(MaLoaiSua,TenLoai)
Sua(MaSua,TenSua,MaHangSua,MaLoaiSua,TrongLuong,DonGia,TP_ddinhduong,Loiich)KhachHang(MaKH,TenKH,Phai,DiaChi,DienThoai,Email)
HoaDon(SoHoaDon,NgayHD,MaKH,Trigia)
CT_HoaDon(SoHD,MaSua,SoLuong,Dongia)
1 Sinh viên hãy xây dựng cơ sở dữ liệu trên bằng lệnh định nghĩa dữ liệu (CREATE TABLE) với các ràng buộc khóa chính, khóa ngoại
2 Sinh viên nhập liệu cho các bảng
3 Sinh viên dùng lệnh SELECT thực hiện các truy vấn sau:
a Liệt kê danh sách các sữa của hãng Abbott có tên sữa, trọng lượng, lợi ích trong đó trọng lượng sắp tăng dần
SELECT TENSUA,TRONGLUONG,LOIICH FROM SUA, HANGSUA
ORDER BY TRONGLUONGLIMIT 0,3
Trang 27c Cho biết giá trị TB của các hóa đơn được làm tròn đến hàng nghìn.
SELECT ROUND(AVG(SOLUONG*DONGIA),-3) AS GIATRITB
FROM CT_HOADON c, HOADON h, SUA s
WHERE c.SOHD=h.SOHOADON AND s.MASUA=C.MASUA
AND MONTH(NGAYHD)=9 and year(NGAYHD)=2007
g Thống kê tổng số sản phẩm theo hãng sữa, gồm các thong tin: tên hãng sữa, tổng số sản phẩm Sắp xếp tăng dựa theo tổng số sản phẩm
SELECT TENHANGSUA, COUNT(*) AS TONGSO SP
FROM SUA, HANGSUA
WHERE SUA.MAHANGSUA=HANGSUA.MAHANGSUA
GROUP BY TENHANGSUA
ORDER BY COUNT(*)
Trang 28h Thống kê số sản phẩm bán được trong tháng 9 năm 2009 của mỗi sữa.
SELECT MASUA, SUM(SOLUONG) AS SOSPFROM CT_HOADON c, HOADON h
WHERE c.SoHD=h.SoHD AND month(NgayHD)=9 and Year(NgayHD)=2009GROUP BY MaSua
i Hãy tìm những hóa đơn mua hàng có tổng trị giá lớn hơn 2.000.000 VNĐ
SELECT SOHD, SUM(SOLUONG*DONGIA) AS TONGTRIGIAFROM CT_HOADON
GROUP BY SOHDHAVING SUM(SOLUONG*DONGIA) > 2000000
j Liệt kê các khách hàng chưa mua hàng
SELECT *FROM KHACHHANGWHERE MAKH NOT IN ( SELECT MAKHACHHANG