數據庫中有 3 個關系,物資表 WZ(WZno, WZNAME, WZTYPE),其屬性分別表示物資
號,物資名,物資類型。供應公司表 GYGS(Gno,GNAME,CITY,TEL,LXR),其屬性分別表示
公司編號,公司名,公司所在城市,公司電話,公司聯系人。供應表 GY(Gno,WZno, GYdate,
GYnum,GYprice),其屬性分別表示公司編號,物資號,供應日期,供應數量,供應單價。
假設一種物資可由多個供應公司提供,1個供應公司可以提供多種物資。
1、為三張表插入相應數據。(要求 WZ 和 GYGS 分別至少 3 條記錄,GY 表 8 條以上,
還需要考慮以下查詢有結果)
2、查詢供應了“A4 紙”的且供應數量大于 100 的供應公司編號及公司名,結果按公司
編號降序排列。
3、查詢供應了所有物資的供應公司名。
4、查詢至少供應了’2'號公司供應的全部物資的公司編號。
<tex>2^{\circ }</tex>
5、對三張表進行各種修改和刪除數據操作(至少五種代碼操作)。
1、建立三個表
CREATE TABLE WZ
(WZno CHAR(9) PRIMARY KEY,/*物資號*/
WZNAME CHAR(20) UNIQUE,
WZTYPE CHAR(20) NOT NULL
);
CREATE TABLE GYGS
(Gno CHAR(9) PRIMARY KEY,
GNAME CHAR(20) UNIQUE,
CITY CHAR(20) UNIQUE,
TEL CHAR(15) NOT NULL,
LXR CHAR(10)
);
CREATE TABLE GY
(Gno CHAR(9),
WZno CHAR(9),
GYdate DATE,*/
GYnum CHAR(5),
GYprice CHAR(5) NOT NULL,
PRIMARY KEY (Gno,WZno),/*主碼*/
FOREIGN KEY (Gno) REFERENCES GYGS(Gno),/*表級完整性約束條件,Gno是外碼,被參照表是GYGS*/
FOREIGN KEY (WZno) REFERENCES WZ(WZno)/*表級完整性約束條件,WZno是外碼,被參照表是WZ*/
);
建立索引:
CREATE UNIQUE INDEX WZWZno ON WZ(WZno);
CREATE UNIQUE INDEX GSGno ON GYGS(Gno);
CREATE UNIQUE INDEX GYGno ON GY(Gno ASC,WZno ASC);
2、插入相應數據
insert into WZ values('01','A4紙','學習用具');
insert into WZ values('02','鋼筆','學習用具');
insert into WZ values('03','文具盒','學習用具');
insert into WZ values('04','圓珠筆','學習用具');
insert into GYGS values('11','四川','橙光有限公司','123456789098789','張勇');
insert into GYGS values('12','重慶','光明有限公司','123345489098789','爾德');
insert into GYGS values('13','阿壩','子美有限公司','123456789098789','阿薩');
insert into GYGS values('14','南充','代數有限公司','123456789098789','沃達豐');
insert into GY values('01','11',NULL,'345','34567');
insert into GY values('01','13',NULL,'56','235');
insert into GY values('03','11',NULL,'126','3435');
insert into GY values('03','13',NULL,'676','27635');
insert into GY values('02','12',NULL,'456','7835');
insert into GY values('04','13',NULL,'355','2335');
insert into GY values('02','12',NULL,'3426','56535');
insert into GY values('04','12',NULL,'676','67855');
insert into GY values('01','14',NULL,'2343','3453');
insert into GY values('03','14',NULL,'789','235');
3、查詢供應了“A4 紙”的且供應數量大于 100 的供應公司編號及公司名,結果按公司編號降序排列。
SELECT GYGS.Gno,GNAME
FROM WZ,GY,GYGS
WHERE WZ.WZNAME='A4紙'AND WZ.WZno=GY.WZno AND GY.GYnum > 100 AND GYGS.Gno=GY.Gno
ORDER BY Gno DESC;
以上結果沒有按照降序排列
修改后
SELECT Gno,GYnum
FROM GY
WHERE GYnum > 100
ORDER BY Gno DESC;
4、查詢供應了所有物資的供應公司名。
SELECT Gno
FROM GS
WHERE GYprice IS NOT NULL;
過濾重復
SELECT DISTINCT Gno FROM GY;
5、查詢至少供應了’2'號公司供應的全部物資的公司編號。
6、<tex>2^{\circ }</tex>
select Gno
from GY
where Gno in
(
select Gno from GY where Gno<>'2' and GYnum in (select GYnum from GY where Gno='2')
)
7、對三張表進行各種修改和刪除數據操作(至少五種代碼操作)。
①、 INSERT INTO WZ ( WZno, WZNAME,WZTYPE )
VALUES( '05', '毛筆', '學習用具' );
加入一行數據
②、DELETE FROM GYGS WHERE GNAME= '01' ;
將編號為01的刪除
③、 update WZ set WZNAME = '白紙' where WZno = 01;
將WZ表中的A4紙修改為白紙
④、delete from GY where Gno = 03;
刪除GY表中,公司編號為03的所有數據
⑤、delete from WZ;
刪除WZ表里面的所有數據