Tải bản đầy đủ (.doc) (33 trang)

báo cáo thực hành cơ sở dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.64 MB, 33 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA 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
Năm 2011-2012
Nhóm 6A Báo cáo Thực hành Phân Tích Và Thiết Kế
Thuật Toán
2
Nhóm 7B
Báo cáo TH CSDL
BÁ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:


b/ CREAT TABLE DSKHOA(
3
Nhóm 7B
Báo cáo TH CSDL
MATRUONG TEXT(2) ,
MAKHOA TEXT(4) PRIMARY KEY,
TENKHOA TEXT (10),
SODT TEXT(6) UNIQUE);

Nhập dữ liệu:

c/ CREATE TABLE DANHSACH(
MASV TEXT(4) PRIMARY KEY UNIQUE ,
MAKHOA TEXT(4),
HOTEN TEXT(30),
NGAYSINH DATETIME,
LOP TEXT (10),
HOCBONG DOUBLE);
4
Nhóm 7B
Báo cáo TH CSDL
Nhập dữ liệu:

d/ CREATE TABLE BANGDIEM(
MASV TEXT(4) PRIMARY KEY,
DTBK1 DOUBLE,
DTBK2 DOUBLE,
DTBK3 DOUBLE,
DTBK4 DOUBLE);
5

Nhóm 7B
Báo cáo TH CSDL
Nhậ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;
6
Nhóm 7B
Báo cáo TH CSDL
b/ ALTER TABLE BANGDIEM
ADD TBCONG DOUBLE;
c/ ALTER TABLE DANHSACH
ADD QUEQUAN TEXT(30) UNIQUE,GIOITINH YESNO;
7
Nhóm 7B
Báo cáo TH CSDL
Câ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ảng
DANHSACH ( 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.
Bài làm:
a/ SELECT MATRUONG, MAKHOA, TENKHOA
FROM DSKHOA;
b/ SELECT MATRUONG, MAKHOA, SODT
FROM DSKHOA
WHERE MATRUONG LIKE 'Q*';
8
Nhóm 7B
Báo cáo TH CSDL
c/ 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');
9
Nhóm 7B
Báo cáo TH CSDL
e/ SELECT *
FROM DANHSACH
WHERE (HOTEN Like '* Thanh') And ((NGAYSINH Between #1/10/1976#
And #10/31/1976#) OR (HOCBONG BETWEEN 150000 AND
200000));
Câ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
10
Nhóm 7B
Báo cáo TH CSDL
a/
SELECT [MAKHOA], sum([HOCBONG]) AS TONGHOCBONG
FROM DANHSACH
GROUP BY [MAKHOA];
b/
SELECT [MAKHOA], COUNT(*) AS SLSV
FROM DANHSACH
GROUP BY [MAKHOA];
c/
SELECT [MAKHOA], [LOP], sum([HOCBONG]) AS [TONGHOCBONG]
FROM DANHSACH
GROUP BY [MAKHOA], [lop];
11
Nhóm 7B
Báo cáo TH CSDL
d/
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])
12
Nhóm 7B
Báo cáo TH CSDL
b/
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.
Bài làm:
a/
SELECT * INTO diemluu
FROM bangdiem;
b/ .
SELECT masv, makhoa, hoten INTO dsluu
FROM danhsach
WHERE ngaysinh<#20/11/76#;
13
Nhóm 7B
Báo cáo TH CSDL
c/
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>=8
Bài làm:
a/ INSERT INTO BANGDIEM ( DTBK1, DTBK2 )
14
Nhóm 7B
Báo cáo TH CSDL
SELECT 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;
15
Nhóm 7B
Báo cáo TH CSDL
Câ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]+

[DTBK3]+[DTBK4])/4;
16
Nhóm 7B
Báo cáo TH CSDL
b/ 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') ;
17
Nhóm 7B
Báo cáo TH CSDL
Câ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.
Bài làm:
a/ DELETE *
FROM DANHSACH
WHERE MAKHOA like ‘T*’;
b/ DELETE *
FROM DANHSACH
WHERE ( NGAYSINH BETWEEN #20/10/1974# AND #20/10/1976# ) OR (
HOCBONG LIKE ‘120000’ );

18
Nhóm 7B
Báo cáo TH CSDL

c/ 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;
19
Nhóm 7B
Báo cáo TH CSDL
b/ 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;
20
Nhóm 7B
Báo cáo TH CSDL
Câ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);
21
Nhóm 7B
Báo cáo TH CSDL
b/
SELECT 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>=7
Bài làm:
a/ . SELECT BANGDIEM.MASV,BANGDIEM.DTBK2,BANGDIEM.DTBK3
FROM BANGDIEM
UNION ALL SELECT DIEMLUU.MASV,DIEMLUU.DTBK2,DIEMLUU.DTBK3
FROM DIEMLUU;
22
Nhóm 7B
Báo cáo TH CSDL
b/
SELECT
BANGDIEM.MASV,BANGDIEM.DTBK1,BANGDIEM.DTBK2,BANGDIEM.DT
BK3 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:
Cau 1
CREATE TABLE DSTRUONG
23
Nhóm 7B
Báo cáo TH CSDL
(
MATRUONG 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
)
CREATE INDEX id_fone ON DSKHOA(SODT)

CREATE TABLE DANHSACH
(
MASV nvarchar(4) PRIMARY KEY,
MAKHOA nvarchar(4),
HOTEN nvarchar(30),
NGAYSINH date,
LOP nvarchar(10),
HOCBONG float CHECK(HOCBONG IN (120000,180000,240000)),
CONSTRAINT fk_makhoa FOREIGN KEY(MAKHOA) REFERENCES
DSKHOA
)
CREATE UNIQUE INDEX id_masv ON DANHSACH(MASV)

CREATE TABLE BANGDIEM
(
MASV nvarchar(4) PRIMARY KEY,
DTBK1 float,
DTBK2 float,
DTBK3 float,

DTBK4 float,
CONSTRAINT fk_masv FOREIGN KEY(MASV) REFERENCES
DANHSACH ON DELETE CASCADE
)
24
Nhóm 7B
Báo cáo TH CSDL

Cau 2
2a
ALTER TABLE DANHSACH ADD GHICHU text
2b
ALTER TABLE BANGDIEM ADD TBCONG float
2c
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 DANHSACH
WHERE (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
4a
SELECT MAKHOA,SUM(HOCBONG) AS 'Tổng học bổng' FROM DANHSACH
GROUP BY MAKHOA
25

×