Tải bản đầy đủ (.docx) (10 trang)

DẠNG BÀI VÀ ĐÁP ÁN MÔN CSDL DHCNHN

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 (69.5 KB, 10 trang )

4. 3. 1. Biểu diễn các truy vấn trong cơ sở dữ liệu cung ứng hàng có các bảng sau:
S (SID, SNAME, STATUS, CITY)
P (PID, PNAME, COLOR, WEIGHT)
J (JID, JNAME, CITY)
SPJ(SID, PID, JID, QTY)
Trong đó:
S- các hãng cung ứng, SID- số hiệu hãng, SNAME- tên hãng, STATUS - tình trạng
hãng, CITY- thành phố của hãng
P- các mặt hàng, PID- số hiệu mặt hàng, PNAME- tên hàng, COLOR- màu sắc,
WEIGHT - khối lượng.
J- các dự án, JID- mã dự án, JNAME- tên dự án, CITY- thành phố thực hiện dự án
SPJ- hãng cung ứng mặt hàng cho dự án, QTY- khối lượng hàng cung ứng.
a. Đưa ra thông tin về tất cả các dự án ở 'London' được hãng có mã là ‘S 1’ cung
ứng
C1: SELECT J.JID, JNAME, CITY
FROM J, SPJ
WHERE J.JID=SPJ.JID AND CITY= ‘LONDON’ AND SID= ‘S1’
C2: SELECT J.JID, JNAME, CITY
FROM J INNER JOIN SPJ
ON J.JID=SPJ.JID
WHERE CITY= ‘LONDON’ AND SID= ‘S1’
C3: SELECT *
FROM J
WHERE CITY= ‘LONDON’ AND JID IN (


SELECT JID
FROM SPJ
WHERE SID= ‘S1’)
b. Tìm số hiệu của những hãng cung ứng mặt hàng có mã ‘P 1’ cho dự án có mã
‘J1’


SELECT SID
FROM SPJ
WHERE PID= ‘P1’ AND JID= ‘J1’
c. Tìm màu sắc và khối lượng của mặt hàng do hãng có mã là ‘S2’ cung ứng
SELECT COLOR, WEIGHT
FROM P, SPJ
WHERE P.PID=SPJ.PID AND SID= ‘S2’
d. Tìm số hiệu và tên của hãng đã cung ứng mặt hàng màu đỏ cho cho một dự án
bất kỳ ở 'Paris'.
SELECT S.SID, SNAME
FROM S, P, J, SPJ
WHERE S.SID=SPJ.SID AND
P.PID=SPJ.PID AND
J.JID=SPJ.JID AND
COLOR = ‘ĐỎ’ AND
J.CITY= ‘PARIS’
e. Tìm số hiệu và tên của hãng đã cung ứng mặt hàng màu đỏ cho các dự án ở
'London' và 'Paris'
SELECT S.SID, SNAME
FROM S, P, J, SPJ


WHERE S.SID=SPJ.SID AND
P.PID=SPJ.PID AND
J.JID=SPJ.JID AND
COLOR = ‘ĐỎ’ AND
J.CITY= ‘PARIS’ OR J.CITY= ‘LONDON’
f. Cho biết số hiệu các mặt hàng khác nhau đã được cung cấp.
/*SELECT PID


SPJ

FROM SPJ
--- KẾT QUẢ = P1,P1,P2,P2,P3*/
SELECT DISTINCT PID

SID
S1
S1
S2
S2
S2

PID
P1
P1
P2
P2
P3

JID
J1
J2
J1
J2
J1

QTY
10
20

30
40
20

FROM SPJ
----KẾT QUẢ= P1,P2,P3
g. Tìm mã số nhà cung cấp đã cung cấp ít nhất một trong các mặt hàng có mã
‘P1’, ‘P2’, ‘P3’.
SELECT SID
FROM SPJ
WHERE PID IN (‘P1’, ‘P2’, ‘P3’)
h. Đưa ra trọng lượng mỗi mặt hàng với số lượng cung ứng 30 cái mỗi loại.
SELECT WEIGHT
FROM P
WHERE PID IN (SELECT PID
FROM SPJ
WHERE QTY=30) ???
SELECT WEIGHT

SPJ

SID
S1
S1
S2
S2
S2
S3

PID

P1
P1
P2
P2
P3
P3

JID
J1
J2
J1
J2
J1
J3

QTY
10
20
30
40
20
30


FROM P
WHERE PID IN (
SELECT PID
FROM SPJ
GROUP BY PID
HAVING SUM (QTY)=30)

i. Tìm mã số những nhà cung cấp, tên hãng có tình trạng lớn hơn 20 đã cung cấp
mặt hàng có mã ‘P2’.
SELECT S.SID, SNAME
FROM S, SPJ
WHERE S.SID=SPJ.SID AND STATUS>20 AND PID= ‘P2’
j. Tìm các mặt hàng màu đỏ có trọng lượng nhỏ hơn 15.
SELECT *
FROM P
WHERE COLOR= ‘ĐỎ’ AND WEIGHT<15
k. Tìm những nhà cung cấp có tên bắt đầu là Ha.
SELECT *
FROM S
WHERE SNAME LIKE ‘Ha%’
l. Tìm nhà cung cấp có tên gồm 4 ký tự .
SELECT *
FROM S
WHERE SNAME LIKE ‘ _ _ _ _’
m. Tìm những mặt hàng đã cung cấp có số lượng gửi đi từ 100 đến 200.


SELECT *
FROM P
WHERE PID IN (
SELECT PID
FROM SPJ
GROUP BY PID
HAVING SUM (QTY) BETWEEN 100 AND 200)
n. Tìm mã số những nhà cung cấp đã cung cấp ít nhất ba mặt hàng.
SID
S1

S2
S3

COUNT(PID)
4
3
1

COUNT (DISTINCT PID)
3
1
1

SELECT SID
FROM SPJ
GROUP SID
HAVING COUNT(PID)>=3
-SELECT SID
FROM SPJ
GROUP SID
HAVING COUNT(DISTINCT PID)>=3

SPJ

SID
S1
S1
S2
S2
S2

S3
S1
S1

PID
P1
P1
P2
P2
P2
P3
P2
P3

JID
J1
J2
J1
J2
J1
J3
J2
J2

QTY
10
20
30
40
20

30
10
20

o. Tính tổng khối lượng các mặt hàng đã cung cấp, số mặt hàng đã cung cấp
SELECT SUM(WEIGHT), COUNT (PID)
FROM P, SPJ
WHERE P.PID=SPJ.PID
p. Cho biết số lần mặt hàng có mã ‘P2’ đã được cung cấp.
SELECT COUNT(*)


FROM SPJ
WHERE PID= ‘P2’
q. Đưa ra thông tin về hãng có tình trạng lớn nhất.
SELECT *
FROM S
WHERE STATUS = (
SELECT MAX(STATUS)

S

SID
S1
S2
S3
S4

SNAME
ÉT 1

ÉT 2
ÉT 3
ÉT 4

STATUS
20
50
40
50

CITY
HN
HP
NA
HN

FROM S )
r. Tìm số hiệu các mặt hàng đã được cung cấp và số hãng đã cung cấp mặt hàng
ấy.
SELECT PID, COUNT( DISTINCT SID)
FROM SPJ
GROUP PID

SPJ

SID
S1
S1
S2
S2

S2
S3
S1
S1

PID
P1
P1
P2
P2
P2
P3
P2
P3

JID
J1
J2
J1
J2
J1
J3
J2
J2

QTY
10
20
30
40

20
30
10
20

s. Đưa ra tên những mặt hàng màu đỏ sắp xếp theo thứ tự giảm của mã hàng.
SELECT PNAME
FROM P
WHERE COLOR= ‘ĐỎ’
ORDER BY PID DESC
t. Tìm mã số mặt hàng đã được cung cấp và địa chỉ của hãng cung cấp mặt hàng
đó.
SELECT PID, CITY


FROM S, SPJ
WHERE S.SID=SPJ.SID
u. Tìm tên những hãng khơng cung ứng mặt hàng có mã ‘P1’.
SELECT SNAME

SPJ

FROM S
WHERE SID IN (SELECT SID
FROM SPJ
WHERE PID <> ‘P1’) ???

SID
S1
S1

S2
S2
S2
S3
S1
S1

PID
P1
P1
P2
P2
P1
P3
P2
P3

JID
J1
J2
J1
J2
J1
J3
J2
J2

KẾT QUẢ TRẢ VỀ LÀ: ÉT 1, ÉT 2, ÉT 3
THỰC TẾ CHỈ ĐƯỢC TRẢ ÉT3
SELECT SNAME

FROM S
WHERE SID NOT IN (SELECT SID
FROM SPJ
WHERE PID = ‘P1’)
v. Tìm danh sách những nhà cung cấp đã cung cấp ít nhất một mặt hàng.
SELECT *
FROM S
WHERE SID IN (SELECT SID FROM SPJ)
w. Tìm các hãng chưa cung ứng mặt hàng nào.
C1: SELECT *
FROM S
WHERE SID NOT IN (SELECT SID FROM SPJ)
C2: SELECT *

QTY
10
20
30
40
20
30
10
20


FROM S WHERE SID IN (
(SELECT SID FROM S) EXCEPT (SELECT SID FROM SPJ))
x. Tìm tên các mặt hàng được tất cả các hãng cung cấp.
Gom nhóm PID rồi tính số lượng SID trên
từng nhóm

PID
P1
P2
P3

COUNT(SID)
5
4
2

Count( DISTINCT SID)
4
3
2

S

SPJ
SID
S1
S2
S3
S4

COUNT(SID) Trên bảng S= 4
SELECT PNAME
FROM P

SID
PID

SNAME
S1
ÉT 1 P1
S1
ÉT 2 P1
S2
ÉT 3 P2
S2
ÉT 4 P1
S3
P1
S3
P3
S1
P2
S1
P3
S4
P1
S3
P2
S3
P2

JID QTY
STATUS
J1
10
20
J2

20
50
J1
30
40
J2
40
50
J1
20
J3
30
J2
10
J2
20
J4
20
J1
10
J2
20

CITY
HN
HP
NA
HN

WHERE PID IN (

SELECT PID
FROM SPJ
GROUP BY PID
HAVING COUNT( DISTINCT SID)= (SELECT COUNT (SID) FROM S))
y. Tìm số hiệu hãng đã cung cấp nhiều mặt hàng nhất.
Bài giải mẫu
a. Đưa ra thông tin về tất cả các dự án ở 'London' được hãng có mã ‘S1’ cung ứng
SELECT J.JID, J.JNAME, J.CITY
FROM J, SPJ
WHERE (J.JID=SPJ.JID) AND (J.CITY=’LONDON’) AND (SID=’S1’);
4. 3. 2. Biểu diễn yêu cầu sau bằng ngôn ngữ SQL cho hệ thống cung cấp hàng:
Cho CSDL gồm 2 quan hệ gồm 2 bảng:
NCC(MSNCC,TEN_CC,DCCC)


MH(MSNCC, MSMH, SOLUONG)
Trong đó MSNCC - mã số nhà cung cấp, TEN_CC - tên người cung cấp, DCCC địa chỉ cung cấp, MSMH - mã số mặt hàng, SOLUONG- số lượng cung cấp.
a. Hiện mã số người cung cấp đã cung cấp ít nhất một mặt hàng
b. Hiện mã số người cung cấp không cung cấp mặt hàng nào
c. Hiện mã số người cung cấp đã cung cấp mặt hàng có mã số là 15
d. Hiện mã số người cung cấp đã cung cấp ít nhất một mặt hàng nhưng khơng có
mặt hàng có mã số là 15
e. Hiện địa chỉ nhà cung cấp cung ứng mặt hàng có mã là 12 hoặc 13 có giá trên
20000.
f.

Hiện tên nhà cung cấp cung ứng tất cả các mặt hàng

g. Hiện tên nhà cung cấp ở Hà nội cung ứng mặt hàng có số lượng trên 10.
h. Hiện mã số, tên nhà cung cấp, tổng tiền thu được khi cung ứng mặt hàng. Biết

rằng: tổng tiền= ∑(soluong x gia)
i.

Đưa ra tên, địa chỉ nhà cung cấp bán mặt hàng có giá thấp nhất

j.

Đưa ra mã nhà cung cấp, tổng số lượng hàng cung ứng có giá trị lớn nhất.

4. 3. 3. Biểu diễn yêu cầu sau bằng ngôn ngữ SQL cho hệ thống quản lý điểm của
sinh viên với các bảng sau:
SV(MASV, TENSV, QUE);
MON(MAMH, TENMH, SOTC);
KQ(MASV, MAMH, DIEM)
Trong đó:
MASV: Mã sinh viên

TENSV: Tên sinh viên

QUE: quê quán

MAMH: Mã môn học

TENMH: Tên môn học

SOTC: số tín chỉ

DIEM: điểm



a. Đưa ra các thông tin gồm: Tên sinh viên, tên mơn học, số tín chỉ và điểm của
các mơn học.
b. Đưa ra các thông tin về sinh viên: mã, tên dự thi môn ‘CSDL’
c. Đưa ra các thông tin về mơn học: mã mơn, tên mơn có sinh viên thi được điểm
dưới 5
d. Đưa ra các thông tin gồm: Tên sinh viên, tên mơn học có số tín chỉ dưới 4 và
các sinh viên đó đạt điểm trên 7
e. Đưa ra tên sinh viên không bị điểm nào dưới 5
f. Đưa ra tên mơn học khơng có sinh viên nào đạt điểm 10.
g. Đưa ra các thông tin về mơn học: mã, tên mơn có số tín chỉ lớn hơn 2.
h. Đưa ra các thông tin gồm: tên sinh viên, tên môn học, điểm của sinh viên quê
Hà nội học môn Cơ sở dữ liệu
i. Đưa ra các thông tin gồm: mã sinh viên, tên sinh viên, điểm trung bình. Biết
rằng:
j. Đưa ra danh sách gồm mã và tên sinh viên bị điểm dưới 5 tất cả các môn học
k. Đưa ra mã sinh viên, số môn thi đạt điểm dưới 5 là nhiều nhất.
l. Đưa ra mã sinh viên của các sinh viên có ít nhất 2 mơn đạt điểm 7.



×