Hướng Dẫn Thực HànhHướ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à.
1
Module 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ệ
Bài 1. Mục đích: Xác định quan hệ giữa các thực thể, khóa chính, khóa ngoạiMô tả: Cho lược đồ CSDL sau, xác định quan hệ giữa các thực thể, khóa chính, khóa ngoại.
G
GGợi ý: SV xác định và gạch dưới các thuộc tính làm khóa chính.
Bài 2: Mục đích: Sử dụng ngôn ngữ định nghĩa dữ liệu: CREATE TABLE để cài đặt cấu trúc bảng vào ngôn ngữ SQLMô tả: Thực hiện lệnh CREATE TABLE với các ràng buộc về khóa chính, khóa ngoại để tạo các bảng tương ứng với các thực thể đã cho ở Bài 1. Gợi ý: SV tự chọn kiểu dữ liệu phù hợp cho từng thuộc tính Ví dụ tạo bảng SINHVIEN
2
MONHOCTenMHMaMHTinchiKhoa
SINHVIENHoTenMasvNamKhoa
DIEUKIENMamhMamh_truoc
KHOAHOCMakhoahocMamhHockyGiaovien
KETQUAMasvMakhDiem
CREATE TABLE SINHVIEN( HOTEN VARCHAR(30) NOT NULL, MASV 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.Mô tả: 1. Tạo ràng buộc cho thuộc tính năm(Nam) của bảng SINHVIEN:
nam>=1 va nam<=62. Tạo ràng buộc về điểm(diem) cho bảng KETQUA: Diem>=0 va
Diem<=10Gợi ý: Ví dụ 1: ràng buộc khóa ngoại cho bảng DIEUKIENAlter table DIEUKIEN
add constraint fk_dkien foreign key(MAMH)references MONHOC(MAMH)
Ví dụ 2: ràng buộc về Diem cho bảng KETQUAAlter table KETQUAadd constraint ck_kqua check(DIEM>=0 and DIEM<=10)
CREATE DATABASE QLSVUSE QLSV--Table SinhVienCREATE TABLE SINHVIEN(
HOTEN VARCHAR(50),MASV CHAR(7) NOT NULL,NAM INT,KHOA CHAR(10)
)ALTER TABLE SINHVIENADD CONSTRAINT KC_SINHVIEN PRIMARY KEY (MASV)
ALTER TABLE SINHVIENADD CONSTRAINT NAM_RBCHECK (NAM >=1 AND NAM<=5)--Table MonHocCREATE TABLE MONHOC(
3
TENMH VARCHAR(30),MAMH CHAR(8) NOT NULL,TINCHI INT,KHOA CHAR(10)
)ALTER TABLE MONHOCADD CONSTRAINT KC_MONHOC PRIMARY KEY(MAMH)--Table DieuKienCREATE TABLE DIEUKIEN(
MAMH CHAR(8) NOT NULL,MAMH_TRUOC CHAR(8) NOT NULL
)ALTER TABLE DIEUKIENADD CONSTRAINT KC_DIEUKIEN PRIMARY KEY(MAMH,MAMH_TRUOC)
ALTER TABLE DIEUKIENADD CONSTRAINT KN_DIEUKIEN FOREIGN KEY(MAMH)REFERENCES MONHOC(MAMH)
--Table KhoaHocCREATE TABLE KHOAHOC(
MAKH INT NOT NULL,MAMH CHAR(8) NOT NULL,HOCKY INT,GIAOVIEN CHAR(10)
)ALTER TABLE KHOAHOCADD CONSTRAINT KC_KHOAHOC PRIMARY KEY(MAKH)
ALTER TABLE KHOAHOCADD CONSTRAINT KN_KHOAHOC FOREIGN KEY(MAMH)REFERENCES MONHOC(MAMH)
--Bang KetQuaCREATE TABLE KETQUA(
MASV CHAR(7) NOT NULL,MAKH INT NOT NULL,DIEM INT
)ALTER TABLE KETQUAADD CONSTRAINT KC_KETQUA PRIMARY KEY(MASV, MAKH)
ALTER TABLE KETQUAADD CONSTRAINT KN_KETQUA FOREIGN KEY(MASV)REFERENCES SINHVIEN(MASV)
ALTER TABLE KETQUAADD CONSTRAINT KN2_KETQUA FOREIGN KEY(MAKH)REFERENCES KHOAHOC(MAKH)
--NhapINSERT SINHVIEN
4
VALUES ('VAN PHU TOAN','0733031',2,'CNTT')
5
Module 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..
Bài 1: Mục đích: Thực hiện lệnh INSERT để đưa dữ liệu vào các bảng.Mô tả:
SINHVIENHOTEN MASV NA
MKHOA
Lê An 6910078
1 CNTT
Hồ Thúy Hoa
6900023
2 CNTT
MONHOCTENMH MAMH TINCH
IKHOA
Nhập môn tin học
COSC1310
4 CNTT
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
DIEUKIENMaMH MaMH_truo
cCOSC3380
COSC3320
COSC3380
MATH2410
COSC3320
COSC1310
KHOAHOCMAKH
MAMH HOCKY GIAOVIEN
85 MATH241 1 Lan
6
092 COSC131
01 Chi
102 COSC3320
2 Hoa
112 MATH2410
1 Lan
119 COSC1310
1 Chi
135 COSC3380
1 Nhi
KETQUAMASV MAK
HDIEM
6910078
119 8
6910078
112 6
6900023
85 10
6900023
92 9
6900023
102 8
6900023
135 10
Gợi ý: Ví dụ: Thêm 1 record vào table SINHVIENinsert SINHVIENvalues('Lê An',’6910078’,2,'CNTT')
Bài 2: Mục đích: Thực hiện lệnh UPDATE, DELETE, SELECTMô tả: 1. Sửa bộ <690023,102,8> thành <690023,102,10>2. Sửa bộ <690023,85,10> thành <690023,85,8>3. Xóa bộ <690023,85135,10>4. Lệnh SELECT:
- Thực hiện câu lệnh SELECT đơn giản để xem dữ liệu từ các bảng đã nhập liệu
- Viết câu lệnh cho phép xem tên của sinh viên- In ra tên các môn học và số tín chỉ
7
5. In ra tên sinh viên
Gợi ý: 1. UPDATE KETQUA
SET DIEM=10WHERE MASV=690023 AND MAKH=102 AND DIEM=8
2. Xem dữ liệu của bảng SINHVIEN: SELECT * FROM SINHVIEN
8
Module 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ài 1: Mục đích: Mô tả: Cơ sở dữ liệu dưới đây được sử dụng để quản lý công tác giao hàng trong một công ty kinh doanh. Các bảng trong cơ sở dữ liệu này được biểu diễn trong sơ đồ dưới đây.
Trong đó: 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
9
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.
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. 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 KHAÙCH HAØNG
MAÕ KH TEÂN KH TEÂNGIAODÒCH ÑÒA CHÆ EMAIL ÑIEÄN
THOAI FAX
CINOTEC ÑIEÄN TOAÙN SAØI GOØN 43 Yeát kieâu P 6 Q3 ( )7931752COMECO VAÄT TÖ THIEÁT BÒ GTVT 226 Thuaän Kieàu
Q11( )8456781
FAHASA PHAÙT HAØNH SAÙCH SAØI GOØN
12 Thuaän kieàu Q5 ( )8452792
FISC DÒCH VUÏ ÑAÀU TÖ NÖÔÙC NGOAØI
31 Tröông Ñònh P6 Q1
HUNSAN HÖØNG SAÙNG 175 Lyù Thöôøng Kieät
( )5465487
LIXCO BOÄT GIAËT LIX 79 Baøn Côø P3 Q5 ( )8952187SAFICO THUYÛ SAÛN XUAÁT
KHAÅU47 Baûi saäy P1 Q11
SJC VAØNG BAÏC ÑAÙ QUYÙ TPHCM
350 CMT8 P12 Q3 ( )8543543
TAFACO THÖÔNG MAÏI TAÁN PHAÙT
4 Traàn PhuõP Q5 ( )8754875
THADACO XAÂY DÖÏNG THAØNH ÑAÏT
6E An Bình Q5 ( )5465454
TRACODI ÑAÀU TÖ PHAÙT TRIEÅN GTVT
343 Nhaät Taûo Q10 ( )5321321
TRANACO DÒCH VUÏ VAÄN TAÛI Q 3 156 Leâ Ñaïi HaønhP7 Q10
( )8654635
VIETTIEN CTY DEÄT MAY VIEÄT TIEÁN
24 KhuA – CN Taân Taïo
( )4565670
Table NHAÂNVIEÂN
10
MAÕ
NVHOÏ NV TEÂN
NVNGAØY SINH
NGAØYLAØM VIEÄC
ÑÒA CHÆ ÑIEÄN THOAÏI LCB PHUÏ
CAÁP
1 NGUYEÃN LEÄ NGA 10/12/64 10/12/94 13Huøng Vöông P4 Q5
( )5465465
2 HAØ VÓNH PHAÙT 07/12/79 02/03/02 89 Ñoàng Khôûi Q1 ( )8767461
3 TRAÀN TUYEÁT
OANH 27/02/67 30/10/97 45Leâ Quí Ñoân Q3 ( )5465465
4 NGUYEÃN KIM NGOÏC 25/12/80 10/12/07 187 Haäu Giang P5Q6
( )5654654
5 TRÖÔNG DUY HUØNG 10/10/82 10/11/07 77 Tröông ÑònhQ1 ( )5871544
6 LÖÔNG BAÙ THAÉNG 10/12/68 06/03/98 92 Leâ ThaùnhToânQ1
( )8754165
7 LAÂM SÔN HOAØNG
02/03/78 10/10/01 45 Kyù Con Q1 ( )8231231
8 NGUYEÃN MINH
HOÀNG 30/10/68 30/10/98 22 Laïc Long Quaân Q10
( )7845138
9 VÖÔNG NGOÏC LAN 10/12/67 10/12/97 227 Hai Baø Tröng Q1
( )7784184
10 NGUYEÃ THÒ MAI 10/11/67 10/11/97 12Nguyõeân Chí Thanh Q3
( )3451365
11 LEÂ VAÊN HUØNG 06/03/57 06/03/90 56Nguyeãn TraõiQ1 ( )5745785
12 NGUYEÃN THÒ HOA 10/10/66 10/10/96 12Nguyeãn Traõi Q1 ( )6465465
Table DONDATHANG
MAÕ HÑ MAÕ KH MAÕ
NVNGAØY
ÑHNGAØY GN
HAØNGNGAØY
CHUYEÅN HAØNG
NÔI GIAO HAØNG
10148
FISC 1 10/01/04 20/02/04
10150
HUNSAN 4 03/05/04 29/06/04
10156
FISC 4 12/01/04 05/09/04
10157
SAFICO 2 10/01/04 20/05/04
10158
HUNSAN 5 11/02/04 05/03/04
10159
COMECO 8 04/01/04 06/07/04
11
Table DONDATHANG
MAÕ HÑ MAÕ KH MAÕ
NVNGAØY
ÑHNGAØY GN
HAØNGNGAØY
CHUYEÅN HAØNG
NÔI GIAO HAØNG
10160
THADACO 11 13/01/04 30/06/04
10162
TRANACO 7 25/01/04 10/07/04
10163
TRACODI 3 02/05/04 06/07/04
10166
SJC 9 21/01/04 12/09/04
10172
TAFACO 9 12/08/04 17/09/04
10175
TRANACO 9 03/05/04 07/08/04
10177
COMECO 2 29/01/04 05/07/04
10183
SAFICO 2 01/01/04 02/06/04
10186
TRACODI 11 15/04/04 30/04/04
10196
SJC 1 28/06/04 01/07/04
10202
COMECO 4 18/05/04 22/08/04
10207
SJC 2 12/05/04 10/06/04
10208
TRACODI 8 10/02/04 17/05/04
10210
SJC 1 25/05/04 01/09/04
10214
HUNSAN 6 11/07/04 12/08/04
10221
TRACODI 11 02/08/04 30/09/04
10223
SJC 8 01/02/04 30/01/04
10224
SAFICO 7 02/05/04 28/05/04
10225
COMECO 2 10/05/04 20/05/04
10226
FAHASA 3 11/09/04 30/09/04
10227
SAFICO 8 10/01/04 12/02/04
10228
HUNSAN 2 05/02/04 12/03/04
12
Table DONDATHANG
MAÕ HÑ MAÕ KH MAÕ
NVNGAØY
ÑHNGAØY GN
HAØNGNGAØY
CHUYEÅN HAØNG
NÔI GIAO HAØNG
10230
HUNSAN 2 19/08/04 22/09/04
10238
LIXCO 7 02/08/04 30/08/04
10252
TRACODI 3 15/02/04 11/03/04
Table NHACUNGCAP
MACTY TENCTY TENGIAODICH DIACHI DIEN
THOAI FAX EMAILVIETTIEN Coâng ty
may Vieät Tieán
VIETEC Khu A- CN Taân Taïo
4574789
DOM Coâng ty Thöïc phaåm
DOMEC 23- Nguyeãn Troïng Tuyeån
3456678
HEC Coâng ty TNHH Lan Haø
HECCO 12 Nguyeãn Thaùi Sôn
4554678
Table LOAIHANGMAÕLOAÏI HAØNG
TEÂNLOAÏI HAØNG
BK Baùnh KeïoTP Thöïc
phaåmTC Traùi caâyAQ Aùo quaàn
Table MATHANG
MAHANG TENHANG
MAÕCTY
MAÕLHAN
GSL
TOÀNÑVÒ TÍNH
ÑÔN GIAÙ
1 RÖÔÏU DOM BK 4 CHAI 230.502 GIA VÒ HEC TP 2 THUØNG 40.003 BAÙNH
KEMHEC BK 15 CAÙI 2.00
4 BÔ HEC BK 5 KG 15.005 BAÙNH MÌ HEC BK 20 CAÙI 1.006 NEM DOM TP 20 KG 10.007 TAÙO DOM TC 28 KG 5.008 CAÙ HOÄP HEC TP 5 THUØNG 62.509 KEÏO DOM BK 10 THUØNG 12.00
10 GAÏO DOM TP 50 KG 2.0011 NEÁP DOM TP 60 KG 3.0012 AÙO SÔ MI VIETTIEN AQ 12 CAÙI 50
Table CHITIETDATHANG
MAÕ HÑ
MAÕ HAØNG
ÑÔN GIAÙ
SOÁ LÖÔÏNG
MÖÙC GIAÛM GIAÙ
10148 3 2.20 20.0010148 4 16.50 30.0010148 9 13.20 20.0010150 2 44.00 22.0010150 4 16.50 10.0010156 8 68.75 20.0010157 3 2.20 4.0010157 4 16.50 50.0010159 1 253.55 30.0010159 7 5.50 2.0010162 1 253.55 5.0010162 2 44.00 10.0010162 7 5.50 12.0010172 5 1.10 25.0010175 8 68.75 20.0010183 4 16.50 12.0010183 5 1.10 20.0010183 6 11.00 12.0010196 4 16.50 12.0010196 9 13.20 50.0010207 5 1.10 15.0010208 7 5.50 20.0010224 9 13.20 22.0010225 1 253.55 10.0010225 4 16.50 7.0010225 10 1.10 55.0010226 4 16.50 21.0010226 6 11.00 110.0010227 12 44.00 15.0010228 4 16.50 45.0010228 5 1.10 15.0010228 7 5.50 28.0010230 12 11.00 30.0010238 1 253.55 4.0010238 2 44.00 10.0010238 11 2.20 12.0010238 9 13.20 20.0010252 2 44.00 100.0010252 12 2.20 40.0010252 4 16.50 25.00
13
14
Module 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
SELECT MAHANG,TENHANG,SOLUONGFROM MATHANG
2. Họ tên và địa chỉ và năm bắt đầu làm việc của các nhân viênSELECT HO,TEN,DIACHI,NGAYLAMVIECFROM NHANVIEN
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, DIENTHOAIFROM NHACUNGCAPWHERE TENGIAODICH='VIETEC'
4. Cho biết mã và tên của các mặt hàng có giá lớn hơn 50000 và số lượng hiệnít hơn 50.
SELECT MAHANG,TENHANGFROM MATHANGWHERE DONGIA>50 AND SOLUONG<50
5. Cho biết mỗi mặt hàng trong công ty do ai cung cấp. SELECT TENHANG,NHACUNGCAP.TENCONGTYFROM MATHANG,NHACUNGCAPWHERE MATHANG.MACONGTY=NHACUNGCAP.MACONGTY
6. Loại hàng thực phẩm do những công ty nào cung cấpSELECT
LOAIHANG.TENLOAIHANG,TENHANG, NHACUNGCAP.TENCONGTY
FROM LOAIHANG,MATHANG,NHACUNGCAPWHERE 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.TENHANGFROM
KHACHHANG,DONDATHANG,CHITIETDATHANG,MATHANG
15
WHERE CHITIETDATHANG.MAHANG=MATHANG.MAHANGAND
DONDATHANG.SOHOADON=CHITIETDATHANG.SOHOADONAND
KHACHHANG.MAKHACHHANG=DONDATHANG.MAKHACHHANGAND 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à ở đâu?SELECT KHACHHANG.TENCONGTY,NHANVIEN.TEN,DONDATHANG.NOIGIAOHANG,DONDATHANG.NGAYGIAOHANGFROM NHANVIEN,DONDATHANG,KHACHHANGWHERE NHANVIEN.MANHANVIEN=DONDATHANG.MANHANVIENAND DONDATHANG.MAKHACHHANG=KHACHHANG.MAKHACHHANGAND DONDATHANG.MANHANVIEN=1
9. Hãy cho biết số tiền lương mà công ty phải trả cho mỗi nhân viên là bao nhiêu (lương = lương cơ bản + phụ cấp)SELECT MANHANVIEN,HO,TEN,LUONGCANBAN+PHUCAP AS LUONGFROM NHANVIEN
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ămDELETE FROM NHANVIENWHERE ( 2010-Year(ngaylamviec))>30
CÁCH KHÁC:DELETE FROM NHANVIENWHERE (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àoDELETE FROM khachhangWHERE makh in (select makh,count(sohd)FROM khachhang inner join dondathang
on khachhang.makh=dondathang.makhgroup by makhhaving count(sohd)=0)
16
Module 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
17
Chọn vào nút Search
18
Cử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
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
20
Gá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
21
6. 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(NAME = 'SmallWorksPrimary', FILENAME = 'F:\SQLData\SmallWorks.mdf', SIZE = 10MB, FILEGROWTH = 20%, MAXSIZE = 50MB), FILEGROUP SWUserData1(NAME = 'SmallWorksData1' , FILENAME = 'F:\SQLData\SmallWorksData1.ndf', SIZE = 10MB, FILEGROWTH = 20%, MAXSIZE = 50MB), FILEGROUP SWUserData2(NAME = 'SmallWorksData2', FILENAME = 'F:\SQLData\SmallWorksData2.ndf', SIZE = 10MB , FILEGROWTH = 20% , MAXSIZE = 50MB)LOG ON(NAME = 'SmallWorks_log' ,
22
FILENAME = 'C:\SQLData\SmallWorks_log.ldf' , SIZE = 10MB , FILEGROWTH = 10% ,MAXSIZE = 20MB)GOUSE SmallWorksGO
CREATE 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 NULLProductName varchar(75) NOT NULLProductNumber nvarchar(25)NOT NULLStandardCost money NOT NULLListPrice 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
23
Tài khoản thuysoftware nằm trong danh sách người sử dụng của cơ sở dữ liệu
SmallWorks.
24
7.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.
25
nhấ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
26
Module 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
WHERE SUA.MAHANGSUA=HANGSUA.MAHANGSUA
AND TENHANGSUA=’Abbott’
ORDER BY TRONGLUONG
b. Cho biết 3 sản phẩm sữa của hãng Vinamilk có trọng lượng nặng nhất, gồm
các thông tin: tên sữa, trọng lượng
SELECT TENSUA, TRONGLUONG
FROM SUA,HANGSUA
WHERE SUA.MAHANGSUA=HANGSUA.MAHANGSUA
AND TENHANGSUA=’vinamilk’
ORDER BY TRONGLUONG
LIMIT 0,3
27
c. 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
d. Liệt kê danh sách các hóa đơn trong tháng 9 năm 2009
SELECT *
FROM HOADON
WHERE MONTH(NGAYHD)=9 AND
YEAR(NGAYHD)=2009
e. Liệt kê danh sách các hãng sữa có tên hãng sữa, địa chỉ, điện thoại, trong đó
tên hãng sữa in Hoa
SELECT UPPER(TENHANGSUA),DIACHI,DIENTHOAI
FROM HANGSUA
f. Liệt kê danh sách sữa đã bán được trong tháng 9 năm 2007 có tên sữa, trọng
lượng, đơn giá, trong đó: trọng lượng có them ‘gr’, dơn giá có định dạng tiền
tệ và có them ‘VNĐ’.
SELECT TENSUA,concat(TRONGLUONG,’gr’),
Concat(format(c.DONGIA,0),’VND’)
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(*)
28
h. 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 SOSP
FROM CT_HOADON c, HOADON h
WHERE c.SoHD=h.SoHD AND month(NgayHD)=9 and
Year(NgayHD)=2009
GROUP 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 TONGTRIGIA
FROM CT_HOADON
GROUP BY SOHD
HAVING SUM(SOLUONG*DONGIA) > 2000000
j. Liệt kê các khách hàng chưa mua hàng.
SELECT *
FROM KHACHHANG
WHERE MAKH NOT IN ( SELECT MAKHACHHANG
FROM HOADON)
4. Sinh viên tạo 10 tài khoản từ hệ điều hành Windows(Windows Authentication) và cấp
quyền cho 10 tài khoản vừa tạo.
5. Cấp quyền truy cập cơ sở dữ liệu quản lý hãng sữa cho 10 tài khoản
29