báo cáo thực hành cơ sở dữ liệu
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO THỰC HÀNH
CƠ SỞ DỮ LIỆU
Giáo viên hướng dẫn : NGUYỄN VĂN NGUYÊN
Sinh Viên Thực Hiện : PHAN ĐĂNG MÙI
Nhóm : 07B Lớp : 09T4
Trang 3BÁO CÁO THỰC HÀNH
CƠ SỞ DỮ LIỆU
I/ Thực hành bằng Access:
Câu 1: Sử dụng ngôn ngữ SQL để tạo cấu trúc của các bảng dữ liệu sau:
DSTRUONG ( MATRUONG , TENTRUONG, DIACHI ) DSKHOA ( MATRUONG, MAKHOA, TENKHOA, SODT ) DANHSACH ( MASV ,MAKHOA,HOTEN, NGAYSINH, LOP,
HOCBONG)
BANGDIEM ( MASV , DTBK1, DTBK2, DTBK3, DTBK4 )
Bài làm:
a/ CREATE TABLE DSTRUONG(
MATRUONG TEXT(2) PRIMARY KEY,
TENTRUONG TEXT(20),
DIACHI TEXT(30));
Nhập dữ liệu:
Trang 4MASV TEXT(4) PRIMARY KEY UNIQUE ,
Trang 5Nhập dữ liệu:
d/ CREATE TABLE BANGDIEM(
MASV TEXT(4) PRIMARY KEY,
DTBK1 DOUBLE,
DTBK2 DOUBLE,
DTBK3 DOUBLE,
DTBK4 DOUBLE);
Trang 6Nhập dữ liệu:
Câu 2: Sử dụng ngôn ngữ SQL để thay đổi cấu trúc của bảng dữ liệu
a Thêm truờng GHICHU có kiểu MEMO vào trong bảng DANHSACH
b Thêm trường TBCONG có kiểu DOUBLE vào trong bảng BANGDIEM
c Thêm trường QUEQUAN có kiểu TEXT và GIOITINH có kiểu YES/NO
vào bảng DANHSACH và lập chỉ mục trường QUEQUAN
Bài làm:
a/ ALTER TABLE DANHSACH
ADD GHICHU MEMO;
Trang 7b/ ALTER TABLE BANGDIEM
ADD TBCONG DOUBLE;
c/ ALTER TABLE DANHSACH
ADD QUEQUAN TEXT(30) UNIQUE,GIOITINH YESNO;
Trang 8Câu 3: Sử dụng ngôn ngữ SQL để tạo các truy vấn chọn sau
a Chọn MATRUONG, MAKHOA, TENKHOA trong bảng DSKHOA.
b Chọn MATRUONG, MAKHOA, SODT trong bảng DSKHOA của
những trường có MATRUONG bắt đầu là Q
c Chọn MASV, MAKHOA, HOTEN của những sinh viên sinh trong
khoảng thời gian từ 20/10/74 đến 20/10/76 trong bảng DANHSACH
d Chọn MASV, HOTEN, LOP, HOCBONG của những sinh viên có
MASV bắt đầu là Q và thuộc lớp Tin học hoặc Hoá học hoặc kinh tế trong bảngDANHSACH ( HOTEN đổi thành Họ và tên)
e Chọn những sinh viên có tên THANH sinh trong tháng 10/76 hoặc có
HOCBONG trong khoảng từ 150000 đến 200000
Trang 9c/ SELECT MASV, MAKHOA, HOTEN
FROM DANHSACH
WHERE NGAYSINH BETWEEN #10/20/1974# And #10/20/1976#;
d/ SELECT MASV, HOTEN AS [Họ Tên], LOP, HOCBONG
FROM DANHSACH
WHERE MASV Like 'T*' And LOP IN ('TIN','HOA','KINH TE');
Trang 10Câu 4: Sử dụng ngông ngữ SQL để tạo các truy vấn tính tổng sau:
a Tạo một truy vấn để tính tổng HOCBONG của mỗi khoa.
b Tạo một truy vấn thống kê xem mỗi khoa số lượng sinh viên là bao
nhiêu?
c Tạo một truy vấn để tính tổng HOCBONG của mỗi lớp trong mỗi khoa.
d Tạo một truy vấn thống kê xem mỗi trường có bao nhiêu khoa?
Bài làm
Trang 12d/
SELECT MATRUONG, COUNT(*) AS [SO KHOA]
FROM DSKHOA
GROUP BY MATRUONG;
Câu 5: Sử dụng ngôn ngữ SQL để tạo các truy vấn tham số sau:
a Tạo một truy vấn tham số thống kê xem mỗi mức HOCBONG mỗi khoa
có bao nhiêu sinh viên
b Tạo một truy vấn tham số để thống kê xem số lượng sinh viên sinh trong
mỗi tháng của năm 1976 của mỗi khoa là bao nhiêu?
Bài làm:
a/
SELECT MAKHOA, ([Ngaysinh]) AS [Tháng sinh], Count(Hoten) AS [Số SV]FROM DANHSACH
GROUP BY Makhoa, Month([Ngaysinh]), Year([ngaysinh])
HAVING (Year([ngaysinh])=1979 and month(ngaysinh)=[Nhap thang sinh])
Trang 13b/
bài 6: Sử dụng ngông ngữ SQL để tạo các truy vấn tạo bảng sau:
a Tạo một bảng DIEMLUU gồm tất cả các trường trong bảng DIEMTHI.
b Tạo một bảng DSLUU gồm các trường MASV, MAKHOA, HOTEN từ
bảng DANHSACH của những sinh viên sinh trước ngày 20/11/76
c Tạo một bảng DSLUU1 gồm các trường HOTEN, LOP của những sinh
viên thuộc lớp Tin K25A và sinh năm 1985 hoặc trước năm 1978.
Trang 14c/
SELECT [hoten], [lop] INTO dsluu1
FROM danhsach
WHERE (lop="K25A" and (year(ngaysinh)=1985) or year(ngaysinh)<1978)
Bài 7: Sử dụng ngôn ngữ SQL để tạo các truy vấn nối dữ liệu sau:
a Tạo một truy vấn nối dữ liệu từ bảng DIEMLUU vào DIEMTHI nhưng
chỉ gồm các trường DTBK1, DTBK2
b Tạo một truy vấn nối dữ liệu từ bảng DIEMLUU vào DIEMTHI nhưng chỉ
gồm các trường DTBK1, DTBK2, DTBK3 đối với những bản ghi ghi có DTBK3>=8Bài làm:
Trang 15SELECT DIEMLUU.DTBK1, DIEMLUU.DTBK2
FROM DIEMLUU;
b/ INSERT INTO BANGDIEM ( DTBK1, DTBK2, DTBK3 )
SELECT DIEMLUU.DTBK1, DIEMLUU.DTBK2, DIEMLUU.DTBK3 FROM DIEMLUU
WHERE DIEMLUU.DTBK3>=8;
Trang 16Câu 8: Sử dụng ngôn ngữ SQL để tạo các truy vấn cập nhật dữ liệu sau:
a Tính giá trị trường DTBCONG của bảng DIEMTHI theo công thức
(DTBK1+ DTBK2+ DTBK3+ DTBK4)/4
b Tăng HOCBONG thêm 100.000 cho những sinh viên có MASV bắt đầu
là Q trong bảng DANHSACH
c Giảm HOCBONG đi 50.000 cho những sinh viên có năm sinh từ 1975
đến 1978 hoặc những sinh viên có tên NHAN
Bài làm:
a/
UPDATE BANGDIEM SET TBCONG = ([DTBK1]+[DTBK2]+
Trang 17b/ UPDATE DANHSACH SET HOCBONG = HOCBONG+100000
WHERE (MASV Like "Q*");
c/ UPDATE DANHSACH SET HOCBONG=HOCBONG - 50000
WHERE (NGAYSINH BETWEEN #1/1/1975# AND #31/12/1978# )
OR( HOTEN LIKE '*Nhân') ;
Trang 18Câu 9: Sử dụng ngôn ngữ SQL để tạo các truy vấn xoá sau:
a Tạo một truy vấn xoá những sinh viên thuộc khoa toán.
b Tạo một truy vấn xoá những sinh viên sinh trong khoảng thời gian từ
20/10/74 đến 20/10/76 hoặc có HOCBONG=120.000
c Tạo một truy vấn xoá những sinh viên có họ NGUYEN hoặc tên THANH
sinh trong tháng 7 năm 1978
Trang 19c/ DELETE *
FROM DANHSACH
WHERE ((HOTEN LIKE ‘NGUYEN*’) OR (HOTEN LIKE ‘*THANH’)) AND (NGAYSINH BETWEEN #1/7/1978# AND #31/7/1978# );
Bài 10: Sử dụng ngôn ngữ SQL để tạo các truy vấn dựa trên nhiều bảng sau:
a Tạo truy vấn để hiển thị HOTEN, TENKHOA, LOP, HOCBONG từ 2
bảng dữ liệu DSKHOA và DANHSACH
b Tạo một truy vấn để hiẻn thị TENTRUONG, TENKHOA, HOTEN của
những sinh viên sinh trong năm 1980 từ 3 bảng DSTRUONG, DSKHOA,DANHSACH
c Tạo một truy vấn để hiển thị TENTRUONG, TENKHOA, HOTEN,
DTBK1, DTBK2 tử 4 bảng dữ liệu DSTRUONG, DSKHOA, DANHSACH,DIEMTHI
Bài làm:
a/ SELECT DANHSACH.HOTEN, DSKHOA.TENKHOA, LOP
FROM DSKHOA, DANHSACH
WHERE DSKHOA.MAKHOA=DANHSACH.MAKHOA;
Trang 20b/ SELECT DSTRUONG.TENTRUONG, DSKHOA.TENKHOA,
DANHSACH.HOTEN
FROM DSTRUONG, DSKHOA, DANHSACH
WHERE NGAYSINH Between #1/1/1980# And #12/31/1980# AND DSTRUONG.MATRUONG=DSKHOA.MATRUONG AND
DSKHOA.MAKHOA=DANHSACH.MAKHOA;
c/ SELECT TENTRUONG, TENKHOA, HOTEN, DTBK1, DTBK2
FROM DSTRUONG, DSKHOA, DANHSACH, BANGDIEM
WHERE DSTRUONG.MATRUONG=DSKHOA.MATRUONG AND DSKHOA.MAKHOA=DANHSACH.MAKHOA AND
DANHSACH.MASV=BANGDIEM.MASV;
Trang 21Câu 11: Sử dụng ngôn ngữ SQL để tạo các truy vấn con sau:
a Tạo một truy vấn để hiển thị HOTEN, NGAYSINH, LOP của những
sinh viên có DTBK4>=5
b Tạo một truy vấn để hiển thị it nhất một sinh viên có DTBK2<=4
Bài làm:
a/
SELECT HOTEN, NGAYSINH, LOP
FROM DANHSACH, BANGDIEM
WHERE BANGDIEM.DTBK4 IN (SELECT BANGDIEM.DTBK4 FROM
BANGDIEM WHERE BANGDIEM.DTBK4>=5) AND
DANHSACH.MASV=BANGDIEM.MASV);
Trang 22SELECT DANHSACH.MASV, DANHSACH.MAKHOA, DANHSACH.HOTEN, DANHSACH.NGAYSINH, DANHSACH.LOP, DANHSACH.HOCBONG,
DANHSACH.GHICHU, DANHSACH.QUEQUAN, DANHSACH.GIOITINH
FROM DANHSACH, BANGDIEM
WHERE BANGDIEM.DTBK2 IN (SELECT BANGDIEM.DTBK2 FROM
BANGDIEM WHERE BANGDIEM.DTBK2<=4) AND
DANHSACH.MASV=BANGDIEM.MASV;
Câu 12: Sử dụng ngôn ngữ SQL để tạo các truy vấn hội sau:
a Tạo truy vấn hội để hiển thị HOTEN, DTBK1, DTBK2 từ 2 bảng dữ
liệu DIEMTHI và DIEMLUU
b Tạo truy vấn hội để hiển thị HOTEN, DTBK1, DTBK2, DTBK3 từ 2 bảng
dữ liệu DIEMTHI và DIEMLUU nhưng chỉ hiển thị những sinh viên có DTBK3>=7Bài làm:
a/ SELECT BANGDIEM.MASV,BANGDIEM.DTBK2,BANGDIEM.DTBK3 FROM BANGDIEM
UNION ALL SELECT DIEMLUU.MASV,DIEMLUU.DTBK2,DIEMLUU.DTBK3 FROM DIEMLUU;
Trang 23SELECT
BANGDIEM.MASV,BANGDIEM.DTBK1,BANGDIEM.DTBK2,BANGDIEM.DTBK3 FROM BANGDIEM
WHERE BANGDIEM.DTBK3>7
UNION SELECT
DIEMLUU.MASV,DIEMLUU.DTBK1,DIEMLUU.DTBK2,DIEMLUU.DTBK3 FROM DIEMLUU
WHERE DTBK3>7;
II/ Thực hành bằng SQL:
Trang 24MATRUONG nvarchar(2) PRIMARY KEY,TENTRUONG nvarchar(20),
DIACHI nvarchar(30))
-CREATE TABLE DSKHOA
(
MATRUONG nvarchar(2),MAKHOA nvarchar(4) PRIMARY KEY,TENKHOA nvarchar(10),
SODT nvarchar(6),CONSTRAINT fk_matruong FOREIGN KEY(MATRUONG) REFERENCES DSTRUONG
)
Trang 252c -ALTER TABLE DANHSACH ADD QUEQUAN nvarchar(20)
ALTER TABLE DANHSACH ADD GIOITINH bit
CREATE INDEX id_qquan ON DANHSACH(QUEQUAN)
Cau
3 -
3a -SELECT MATRUONG,MAKHOA,TENKHOA FROM DSKHOA
3b -SELECT MATRUONG,MAKHOA,SODT FROM DSKHOA
WHERE MATRUONG LIKE 'Q_'
3c -SELECT MASV,MAKHOA,HOTEN FROM DANHSACH
WHERE NGAYSINH BETWEEN '10/20/1974' AND '10/20/1976'
3d -SELECT MASV,HOTEN AS 'Họ và tên',LOP,HOCBONG FROM DANHSACHWHERE (MASV LIKE 'T%') AND (LOP IN ('Tin hoc','Hoa hoc','Kinh te'))
3e -SELECT * FROM DANHSACH
WHERE (HOTEN LIKE '%Thanh') AND
((NGAYSINH BETWEEN '10/1/1976' AND '10/31/1976') OR (HOCBONG BETWEEN 150000 AND 200000))
Cau
4 -
Trang 286c -SELECT HOTEN,LOP INTO DSLUU1 FROM DANHSACH
WHERE (LOP='Tin K25A') AND ((YEAR(NGAYSINH)='1985') OR
Trang 29SELECT DTBK1,DTBK2,DTBK3 FROM DIEMLUU
Trang 309b -DELETE FROM DANHSACH
WHERE (NGAYSINH BETWEEN '10/20/1974' AND '10/20/1976') OR
(HOCBONG=120000)
9c -DELETE FROM DANHSACH
WHERE ((HOTEN LIKE 'Nguyen%') OR (HOTEN LIKE '%Thanh')) AND
Trang 3110b -SELECT A.TENTRUONG,B.TENKHOA,C.HOTEN FROM DSTRUONG AS A,DSKHOA AS B,DANHSACH AS C
WHERE A.MATRUONG=B.MATRUONG AND B.MAKHOA=C.MAKHOA AND YEAR(NGAYSINH)='1980'
10c -SELECT A.TENTRUONG,B.TENKHOA,C.HOTEN,D.DTBK1,D.DTBK2
FROM DSTRUONG AS A,DSKHOA AS B,DANHSACH AS C, BANGDIEM AS DWHERE (A.MATRUONG=B.MATRUONG) AND (B.MAKHOA=C.MAKHOA) AND (C.MASV=D.MASV)
11b -SELECT * FROM DANHSACH AS A,BANGDIEM AS B
WHERE (A.MASV=B.MASV) AND (B.DTBK2<=4)
Trang 32FROM DANHSACH AS A,DIEMLUU AS B
WHERE (A.MASV=B.MASV) AND (B.DTBK3>=7)
UNION
SELECT A.HOTEN,B.DTBK1,B.DTBK2,B.DTBK3
FROM DANHSACH AS A,BANGDIEM AS B
WHERE (A.MASV=B.MASV) AND (B.DTBK3>=7)