数据库学习笔记和小练习(6)sql查询和更新练习
来源:互联网 发布:皇室战争恶搞卡牌软件 编辑:程序博客网 时间:2024/05/17 21:08
这篇文章所用关系为上一篇文章所建的S,PJ,SPJ表
(1)找出所有供应商的姓名和所在城市
分析:直接查询供应商表即可,而且没有条件。
select SNAME,CITYfrom S;
(2)找出所有零件的名称,颜色,重量
分析:这些属性都是P表的,直接查询P表即可
select PNAME,COLOR,WEIGHTfrom p;
(3)找出使用供应商S1所供应零件的工程号码
分析:根据SNO查JNO,在SPJ表中查询即可
select JNOfrom SPJwhere SNO='S1';(4)找出工程项目J2使用的各种零件的名称和数量
分析:J2是J表和SPJ表的连接属性,数量是SPJ表的独有属性,这样看来只要用J2条件查询SPJ就可以了,但是,还有一个要列出的属性是名称,这是P表和SPJ表的连接属性,我们要列出它,那么最后一定要落到P表上,而且一定是通过PNO来连接,这相当于是一种映射,在SPJ表根据J2查找数量之余,在映射到P表,找出这些PNO的名称属性。
select P.PNAME,SPJ.QTYfrom P,SPJwhere P.PNO = SPJ.PNOand SPJ.JNO='J2';(5)找出上海厂商供应的所有零件号码
分析:供应厂商是S表的特有属性,但是又要查询PNO,所以先在S表找,再通过SNO关联到SPJ表即可。
select distinct PNOfrom SPJwhere SNO in(select SNOfrom Swhere CITY='上海');(6)找出使用上海产的零件的工程名称
分析:思路很简单,我们根据S表的上海属性,来查询对应的SNO,根据SNO关联到SPJ,匹配到对应的JNO,再根据JNO连接到J表,查询出JNAME
方法1:
select distinct JNAMEfrom Jwhere JNO in(select JNOfrom SPJwhere SNO in(select SNO from Swhere S.CITY='上海'));方法2:
select distinct JNAMEfrom Jwhere JNO in(select JNOfrom SPJ,Swhere SPJ.SNO=S.SNOand S.CITY='上海');
方法3:
select distinct JNAMEfrom J,SPJ,Swhere J.JNO=SPJ.JNOand SPJ.SNO=S.SNOAND S.CITY='上海';(6)
找出没有使用天津产的零件的工程号码
分析:天津找SNO,关联到SPJ,找到JNO,关联到J表
select JNOfrom Jwhere not exists(select * from SPJwhere SPJ.JNO=J.JNOand SNO in(select SNOfrom Swhere CITY='天津'));
方法二:
select JNOfrom Jwhere not exists(select * from SPJ,Swhere SPJ.JNO=J.JNOand SPJ.SNO=S.SNOand S.CITY='天津');
(8)把全部红色零件的颜色改成蓝色
分析:该P表即可
update Pset COLOR='蓝'where COLOR='红';
(9)y由S5供给J4的零件P6改为由S3供应
分析:这几个属性都是SPJ表的,不外乎在where的时候,多几个条件
update SPJset SNO='S3'where SNO='S5'and JNO='J4'and PNO='P6';
(10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录
分析:先删除SPJ表中的记录,反之是不和逻辑的,会失败。(不存在却有记录)
delete from SPJwhere SNO='S2';
delete from Swhere SNO='S2';(11)请将(S2,J2,P4,200)插入供应情况关系
分析: 指定列名就按照列明的顺序插入,否则需要按照表的顺序
理论上:
insert into SPJvalues('S2','P4','J6',200);
但是插入失败,因为spj是子表,插入不允许。
查询发现S2没有了,应该是前面删除了,加上之后,再插入成功。(必须保证插入的SNO,JNO,PNO即所有外键在父表都存在)
0 0
- 数据库学习笔记和小练习(6)sql查询和更新练习
- 数据库学习笔记和小练习(5)sql定义和查询练习
- 数据库学习笔记和小练习(2)数据更新
- 数据库学习笔记和小练习(3)数据查询
- 数据库学习笔记和小练习(9)数据库完整性
- 数据库学习笔记和小练习(8)数据库安全性小练习
- 数据库学习笔记和小练习(11)数据库完整性小练习
- 数据库学习笔记和小练习(1)数据定义
- 数据库学习笔记和小练习(4)中文乱码
- 数据库学习笔记和小练习(5)视图
- 数据库学习笔记和小练习(10)触发器
- 数据库学习笔记和小练习(12)事务
- 数据库学习笔记和小练习(14)函数
- 数据库学习笔记和小练习(15)存储过程
- 数据库学习笔记和小练习(16)外键再理解
- 数据库学习笔记和小练习(13)过程化SQL
- 数据库学习笔记和小练习(7)数据库安全性之存取控制
- C# , SQL 数据库 -------------- 连接查询和分组查询 ---- (上机练习)
- 1077. Kuchiguse (20)解题报告
- Android关于Theme.AppCompat相关问题的深入分析
- 139. Word Break
- HttpURLConnection实现多线程下载
- int转 string
- 数据库学习笔记和小练习(6)sql查询和更新练习
- 面试专栏:算法与数据结构,虚拟机,Java基础,JavaWeb
- Swift 3.0 API设计准则
- EventBus 解析
- 在 CentOS7 上安装 zookeeper-3.4.9 服务
- JSP新闻系统之六 后台登陆页面
- 一个rm -rf ???*命令下去, 整个人都不好了
- 蓝桥网 算法训练 旅行家的预算
- unity导出PC版本时自定义输出分辨率