欢迎来到三年代码五年模拟的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
我的首页  

数据库中有 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 ( WZnoWZNAME,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表里面的所有数据

 

posted on 2022-10-28 17:04  三年代码五年模拟  阅读(520)  评论(0编辑  收藏  举报