数据库SQL查询作业二--水手船
一、创建三张表
①Sailors(sid char(10),sname char(20),rating int,age int),
其中sid是主关键字,sid表示水手的编号,sname表示水手的姓名,rating表示水手的级别,age表示水手的年龄。
②Boats(bid char(10),bname char(20),color char(10)),
其中bid表示船的编号是主关键字,bname是船的名字,color是船的颜色
③Reserves(sid char(10),bid char(10),rdate date),
Reserves中记录水手在哪天定了那只船,其中sid是指向Sailors的外关键字,bid是指向Boats的外关键字,(sid,bid,rdate)合起来构成Reserves的主关键字。
1.查找定了103号船的水手
select s.*, r.bid
from sailors s, reserves r
where s.sid = r.sid and r.bid = '103';2.查找定了红色船水手的姓名
select s.sname
from sailors s
where s.sid in (select sid from reserves where bid in (select bid from boats where color = 'red'));3.查找定了红色船而没有定绿色船的水手姓名
select distinct s.sname
from sailors s
where s.sid in (select sid from reserves where bid in (select bid from boats where color = 'red'))
and s.sid not in (select sid from reserves where bid in (select bid from boats where color = 'green'));4.查找没有定过船的水手信息
select s.*
from sailors s
where s.sid not in (select sid from reserves);5.查找定过船而没有定过红色船的水手信息
select s.*
from sailors s
where exists (select * from reserves r where s.sid = r.sid)
and not exists (select * from reserves r, boats b where b.bid = r.bid and s.sid = r.sid and b.color = 'red');6.查找没有定过红色船的水手信息
select s.*
from sailors s
where not exists (select * from reserves r where s.sid = r.sid)
and not exists (select * from reserves r, boats b where b.bid = r.bid and s.sid = r.sid and b.color = 'red');7.查找定过所有船的水手姓名和编号
select s.sname, s.sid
from sailors s
where not exists (select * from boats b where not exists (select * from reserves r where s.sid = r.sid));8.查找年龄最大的水手姓名和年龄
select s.sname, s.age
from sailors s
where s.age >= all(select age from sailors);9.统计水手表中每个级别组的平均年龄和级别组
select s.rating, avg(s.age)
from sailors s
group by s.rating;10.统计水手表中每个人数不少于2人的级别组中年满18岁水手的平均年龄和级别组
select s.rating, avg(s.age)
from sailors s
where s.age > 18
group by s.rating having count(s.rating) >= 2;11.统计水手表中每个级别组的人数
select s.rating, count(s.rating)
from sailors s
group by s.rating;12.统计水手表中人数最少的级别组及人数
select s.rating, count(s.rating)
from sailors s
group by s.rating
having count(s.rating) <= all(select count(rating) from sailors group by rating);13.查找定过船而没有定过相同的船的水手姓名
select s.sname
from sailors
where s.sid in (select sid from reserves)
and s.sid not in (select sid from reserves group by bid having count(bid) >= 2);14.将年龄小于30的水手级别+1
update sailors
set rating=rating+1
where age < 30;15.删除名字叫lubber的水手的定船信息.
delete from reserves where sid = (select sid from sailors where sname = 'lubber');
数据库SQL查询作业二--水手船相关推荐
- 数据库SQL查询作业
--设有三个关系 --S(S#,SNAME,AGE,SEX) --SC(S#,C#,GRADE) --C(C#,CNAME,TEACHER)--(1)检索LIU老师所授课程的课程号.课程名 selec ...
- Python学习日志16 - 数据库SQL查询
Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 Python学习日志16课 - 数据库SQL查询 DQL ...
- 视频教程-数据库SQL查询,最佳案例讲解-SQL Server
数据库SQL查询,最佳案例讲解 教学风格独特,以学员视角出发设计课程,难易适度,重点突出,架构清晰,将实战经验融合到教学中.讲授技术同时传递方法.得到广大学员的高度认可. 王进 ¥19.00 立即订阅 ...
- 数据库SQL查询练习
--重点推荐使用natural join,inner join!!!,尽量避免使用广义的笛卡尔积 --重点推荐使用natural join,inner join!!!,尽量避免使用广义的笛卡尔积 -- ...
- 从零开始java数据库SQL优化(二):多个LEFT JOIN的SQL优化
一:场景 我代码里需要在用户登录时将所有用户相关的用户,角色,部门,岗位,权限(其中权限放在菜单中,每2张表有一张关联表),不多说直接上SQL SELECT a.fk_user_id AS " ...
- PostgreSQL数据库sql查询如何获取汉字拼音首字母
一.前言 在实际开发过程中,经常会使用模糊查询,根据某个关键字模糊搜索,一般是 name like '%123%' 这样查,但是如果某个关键字用户不记得呢,只知道首字母,又如何模糊查询呢?例如,查询 ...
- WordPress 常用数据库SQL查询语句大全
https://www.wpdaxue.com/wordpress-sql.html 在使用WordPress的过程中,我们少不了要对数据库进行修改操作,比如,更换域名.修改附件目录.批量修改文章内容 ...
- [数据库] SQL查询语句表行列转换及一行数据转换成两列
本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两列数据的方法.子查询的应用.decode函数的用法.希望文章对你有所帮助~ 1.创建数据库表及插入数据 2.子查询统计不同 ...
- 各数据库SQL查询结果多行数据合并成一行
SQL查询结果多行数据合并成一行 一.Oracle函数多行数据合并成一行 二.Mysql函数多行数据合并成一行 三.sqlserver函数多行数据合并成一行 四.postgresql函数多行数据合并成 ...
最新文章
- 自动创建阿里云抢占式实例
- c语言x1=abc什么意思,c语言起步(课件)2.1
- 通过案例对 spark streaming 透彻理解三板斧之一: spark streaming 另类实验
- java多线程编程_Java多线程编程实战指南+设计模式篇.pdf
- C++打印STAIRS 图案算法(附完整源码)
- BZOJ1725 牧场的安排
- clistctrl 单机空白处 会取消选中_官方默许BUG:无法选中也能被控制?这些秘密很多玩家到现在都没发现!...
- 使用account lock或者account unlock语句
- java网络通信:HTTP协议
- python字典数据类型笔记_python笔记2-数据类型:元组、字典常用操作
- 终于圆了天文梦!马化腾称腾讯将发布探星计划 还提到了《王者荣耀》
- 吴恩达机器学习 10.支持向量机
- mysql 出现 “1067 - Invalid default value for ‘UPDATE_TIME‘ “ 错误提示的解决办法
- Android文件操作代码示例,sd卡数据储存
- python有什么用-python有什么用处?
- _如何在 Linux 上安装 Minecraft 服务器
- 【李宏毅机器学习】04:梯度下降Gradient Descent
- Windows平台上实现P2P服务(一)
- 2014 usnews 计算机科学 排名 天道留学,2014年USNews美国公立大学排名
- 使用get传参的时候,参数在后头获取不到或者出现别的错误。