【无标题】

这篇博客详细介绍了如何使用SQL语言创建和操作数据库,包括创建P、S、J和SPJ四张表,以及执行一系列查询和更新操作。通过实例展示了供应商、零件、工程之间的关系,并提供了删除、更新和插入数据的示例,帮助读者理解和掌握SQL语言。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验目标:

根据课本p71提供的表格,实现p130第五大题的问题,理解和掌握关系数据库标准SQL语言,能够熟练使用SQL语言完成各种数据库操作和管理任务。包括使用SQL DDL语句创建、更改和删除数据库、模式和基本表;使用SQL查询语句完成各类查询操作。

二、实验要求:

用mysql command line client完成书本习题。

三、实验步骤:

1、制表

(1)P表:

CREATE TABLE IF NOT EXISTS `P`(

   `P_id` INT UNSIGNED AUTO_INCREMENT,

   `Pno` VARCHAR(100) NOT NULL,

   `Pname` VARCHAR(100) NOT NULL,

   `Pcolor` VARCHAR(100) NOT NULL,

   `Pweight` VARCHAR(100) NOT NULL,

   PRIMARY KEY ( `P_id` )

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO P

(Pno, Pname, Pcolor,Pweight)

VALUES

("P1", "螺母", "红" , "12");

INSERT INTO P

(Pno, Pname, Pcolor,Pweight)

VALUES

("P2", "螺栓", "绿" , "17");

INSERT INTO P

(Pno, Pname, Pcolor,Pweight)

VALUES

("P3", "螺丝刀", "蓝" , "14");

INSERT INTO P

(Pno, Pname, Pcolor,Pweight)

VALUES

("P4", "螺丝刀", "红" , "14");

INSERT INTO P

(Pno, Pname, Pcolor,Pweight)

VALUES

("P5", "凸轮", "蓝" , "40");

INSERT INTO P

(Pno, Pname, Pcolor,Pweight)

VALUES

("P6", "齿轮", "红" , "30");

(2)S表:

CREATE TABLE IF NOT EXISTS `S`(

       `S_id` INT UNSIGNED AUTO_INCREMENT,

       `Sno` VARCHAR(100) NOT NULL,

       `Sname` VARCHAR(100) NOT NULL,

    `Status` VARCHAR(100) NOT NULL,

        `City` VARCHAR(100) NOT NULL,

        PRIMARY KEY ( `S_id` )

     )ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO S

     (Sno, Sname, Status,City)

     VALUES

     ("S1", "精益", "20" , "天津");

INSERT INTO S

     (Sno, Sname, Status,City)

    VALUES

     ("S2", "盛锡", "10" , "北京");

INSERT INTO S

     (Sno, Sname, Status,City)

     VALUES

    ("S3", "东方红", "30" , "北京");

INSERT INTO S

     (Sno, Sname, Status,City)

     VALUES

     ("S4", "丰泰盛", "20" , "天津");

INSERT INTO S

     (Sno, Sname, Status,City)

     VALUES

     ("S5", "为民", "30" , "上海");

(3)J表

CREATE TABLE IF NOT EXISTS `J`(

       `J_id` INT UNSIGNED AUTO_INCREMENT,

       `Jno` VARCHAR(100) NOT NULL,

       `Jname` VARCHAR(100) NOT NULL,

        `City` VARCHAR(100) NOT NULL,

        PRIMARY KEY ( `J_id` )

     )ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO J

     (Jno, Jname, City)

     VALUES

     ("J1", "三建", "北京" );

INSERT INTO J

     (Jno, Jname, City)

     VALUES

     ("J2", "一汽", "长春" );

INSERT INTO J

     (Jno, Jname, City)

     VALUES

     ("J3", "弹簧厂", "天津" );

INSERT INTO J

     (Jno, Jname, City)

     VALUES

     ("J4", "造船厂", "天津" );

INSERT INTO J

     (Jno, Jname, City)

     VALUES

     ("J5", "机车厂", "唐山" );

INSERT INTO J

     (Jno, Jname, City)

     VALUES

     ("J6", "无线电厂", "常州" );

INSERT INTO J

     (Jno, Jname, City)

     VALUES

     ("J7", "半导体厂", "南京" );

(4)SPJ表

CREATE TABLE IF NOT EXISTS `SPJ`(

       `SPJ_id` INT UNSIGNED AUTO_INCREMENT,

       `Sno` VARCHAR(100) NOT NULL,

       `Pno` VARCHAR(100) NOT NULL,

        `Jno` VARCHAR(100) NOT NULL,

        `Qty` VARCHAR(100) NOT NULL,

        PRIMARY KEY ( `SPJ_id` )

     )ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S1", "P1", "J1","200" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S1", "P1", "J3","100" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S1", "P1", "J4","700" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S1", "P2", "J2","100" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S2", "P3", "J1","400" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S2", "P3", "J2","200" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S2", "P3", "J4","500" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S2", "P3", "J5","400" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S2", "P5", "J1","400" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S2", "P5", "J2","100" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S3", "P1", "J1","200" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S3", "P3", "J1","200" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S4", "P5", "J1","100" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S4", "P6", "J3","300" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S4", "P6", "J4","200" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S5", "P2", "J4","100" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S5", "P3", "J1","200" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S5", "P6", "J2","200" );

INSERT INTO SPJ

     (Sno, Pno, Jno,Qty)

     VALUES

     ("S5", "P6", "J4","500" );

二、用sql语言实现习题

 1. 找出所有供应商的姓名和所在城市。

SELECT Sname,City FROM S;

2. 找出所有供应商的姓名和所在城市。

 SELECT Pname ,Pcolor,Pweight FROM P;

3. 找出使用供应商S1所供应零件的工程号码。

 SELECT Jno FROM SPJ WHERE Sno='S1';

4. 找出使用供应商S1所供应零件的工程号码。

SELECT Pname ,Qty FROM SPJ,P WHERE P.Pno=SPJ.Pno AND SPJ.Jno='J2';

5. 找出上海厂商供应的所有零件号码。

SELECT Pno FROM SPJ,S WHERE S.Sno=SPJ.Sno AND City='上海';

6. 出使用上海产的零件的工程名称。

SELECT Jname FROM SPJ,S,J WHERE S.Sno=SPJ.Sno AND S.City='上海' AND J.Jno=SPJ.Jno;

7. 找出没有使用天津产的零件的工程号码。

SELECT DISP Jno FROM SPJ WHERE Jno NOT IN(SELECT DIST Jno FROM SPJ ,S WHERE S.Sno=SPJ.Sno AND S.City='天津';)适用于Jno是唯一或不是唯一的情况;

SELSECT  DIST Jno FROM SPJ ,S WHERE S.Sno=SPJ.Sno AND S.City='天津'; 适用于Jno是唯一情况。

8.把全部红色零件的颜色改成蓝色。

UPDATE P SET Pcolor='蓝' WHERE Pcolor ='红';

9. 由S5供给J4的零件P6改为由S3供应。

UPDATE SPJ SET Sno='S3' WHERE Sno ='S5' AND Jno ='J4' AND Pno='P6';

10. 从供应商关系中删除供应商号是S2的记录,并从供应情况关系中删除相应的记录。

DELETE FROM S WHERE Sno='S2';

或 DELETE FROM SPJ WHERE Sno='S2';

11. 请将(S2,J6,P4,200)插入供应情况关系。

INSERT INTO SPJ VALUES ('S2','J6','P4','200');

三、实验总结:

根据这一系列的学习,并通过习题训练,使我理解和掌握关系数据库标准SQL语言,能够熟练使用SQL语言完成各种数据库操作和管理任务。包括使用SQL DDL语句创建、更改和删除数据库、模式和基本表;使用SQL查询语句完成各类查询操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值