首页 > 数据库 >数据库复习

数据库复习

时间:2023-02-11 12:22:11浏览次数:37  
标签:复习 sailors 数据库 reserves boats where bid select

数据库复习

已知某航海俱乐部管理系统由如下三个关系模式构成。

Boats(bid,bname,color) - 游艇(游艇编号,游艇名称,游艇颜色)

Sailors(sid,sname,rating,age) - 水手(水手编号,水手姓名,级别,年龄)

Reserves(sid,bid,day) - 预订关系(水手编号,游艇编号,预订日期)

(1)检索年龄大于30岁的水手编号和姓名

select sid, sname from sailors
where age > 30

(2)检索没有被预订的红色(red)游艇的名称

满足1:没有被预定。 2:颜色为red

表达式逻辑!(color!='red' or boats.bid=reserves.bid)

select bname from boats
where not exists (
select * from reserves where boats.color!='red' or boats.bid=reserves.bid)

(3)检索预订“Marine”游艇的水手编号和姓名;

满足:被预定的游艇and名字是'Marine' and查询sailors编号

select sailors.sid, sname from sailors, boats, reserves
where boats.bid=reserves.bid and boats.bname='Marine' and sailors.sid=reserves.sid

(4)显示每艘游艇编号及其预订次数,并要求只显示预订次数大于2的信息。

考察sql语句计数语法count(*), 表reserves中是有bid信息的.

select bid, count(*) from reserves group by bid having count(bid) > 2
-- 使用方法 select xxx, count(*) from Xtabel group by xxx having count(xxx) > yyy

(5)检索没预订游艇编号为102的水手姓名;

满足1: 没预定游艇 or 预订编号不是102 正着看不好看,他的反语句是: 即预订了游艇且编号为102

select sname from sailors
where not exists (
    select * from reserves where sailors.sid=reserves.sid and reserves.bid='102'
)

(6)检索年龄最大水手的姓名;

考察 sql语句中 max使用方法,max(id),求出表中id最大值

select sname from sailors
where age=(select max(age) from sailors)

(7)检索水手级别大于7的水手姓名,级别;并按级别降序排列;

考察sql语言中升序降序排列

语法 order by type asc(desc) (asc表示升序,desc为降序,缺省默认升序)

select sname, rating from sailors where rating > 7 order by rating desc

(8)检索姓名中包含字母‘a’的水手预订的游艇名称(要求去重);

去重 distinct 语法: select distinct xxx from table , 在table表中查找xxx,并去重

方法1: 如果charindex(’字符‘,字符串)> 0表示存在, 或者locate也可以

方法2:用like,用法 sailors.sname like ‘%a%’

select distinct bname from boats, sailors, reserves
where sailors.sid=reserves.sid and charindex('a', sailors.sname) > 0 and boats.bid=reserves.bid

select distinct bname from boats, sailors, reserves
where sailors.sid=reserves.sid and sailors.sname like '%a%' and boats.bid=reserves.bid

(9)创建一个红色(red)游艇预订记录的视图,包括水手姓名,游艇名称,预订日期。

创建视图的语法是:

create view 视图名 as

select xxx, yyy, zzz from Txxx, Tyyy, Tzzz

where (判断条件)

select xxx, yyy, zzz from 视图名(cg上加上 查询语句)

create view v_red as
select sname, bname, day from sailors, boats, reserves
where (boats.color='red' and boats.bid=reserves.bid and sailors.sid=reserves.sid)
select sname, bname, day from v_red

(10)删除所有红色(red)游艇的预订记录。

三种删除

1.delete:用于删除表中的行数据,如果不带where条件则会删除表中所有数据,删除操作作为事务记录在日志中,可回滚操作还原数据。

2.truncate:只删除表中所有的数据,删除操作不记录在日志中,不能回滚操作还原数据。

3.drop:用于删除表(表的数据、结构、属性以及索引也会被删除),并将表所占用的空间全部释放,不能回滚操作还原数据。

使用第一种

delete from reserves
where exists (
    select * from boats
    where (boats.color='red' and reserves.bid=boats.bid)
)
select sid,bid,day from reserves

(11)把所有红色(red)游艇修改为蓝色(blue)。

使用update, 用法

updata 表名 set 要修改的值 = '修改值' where (条件)

update boats set color='blue' where(color='red')
select bid, bname, color from boats

(12)查询所有水手的姓名和级别以及预订的游艇名称和预订日期,要求结果去重。

sname, rating, 预订的游艇bname 以及预期日期

select distinct sname, rating, bname, day from sailors s
left join reserves r on r .sid=s.sid
left join boats b on b.bid=r.bid

(13)查询预定了所有红色(red)游艇的水手姓名。

标签:复习,sailors,数据库,reserves,boats,where,bid,select
From: https://www.cnblogs.com/rufu/p/17111203.html

相关文章

  • es数据库的基本操作
     ES数据库的基本常识关系型数据库(比如Mysql)非关系型数据库(Elasticsearch)数据库Database索引Index表Table类型Type数据行Row文档Docume......
  • Web安全入门与靶场实战(33)- Drupal的数据库配置文件
    至此,我们已经拿到了这个靶机中的4个flag:flag1、flag3、flag4以及thefinalflag,但是还有flag2没有拿到。联想到之前flag1给出的提示:EverygoodCMSneedsaconfigfile那么fl......
  • 数据库
    mysql的触发器是什么?有什么作用MySQL的触发器是一种特殊的数据库对象,当某个事件(例如插入、更新、删除操作)发生时,可以自动执行一系列SQL语句。触发器具有如下特点:触发......
  • MySQL数据库系统部署使用
    推荐步骤:在centos01上安装MySQL数据库服务,生成服务器配置文件,添加系统服务优化命令初始化MySQL,设置访问密码登录MySQL数据库 在centos01的MySQL服务器上创建数据库,数据库......
  • MySQL数据库系统部署使用
    拓扑图:推荐步骤: 在centos01上安装MySQL数据库服务,生成服务器配置文件,添加系统服务优化命令初始化MySQL,设置访问密码登录MySQL数据库 在centos01的MySQL服务器上创建数据......
  • 关于Java基础复习-第三天的复习总结
    1、流程控制语句(应用)在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺......
  • 关于Java基础-第四天的复习总结
    1.数组1.1什么是数组【理解】数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。1.2数组定义格式【记忆】1.2.1第一种数据类型[]数组名示例:int[]......
  • 关于Java基础-第五天的复习笔记
    1.方法概述1.1方法的概念(理解)方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集注意:方法必须先创建才可以使用,该过程成为方法定义......
  • java——spring boot集成redis——redis常用命令——黑马截图复习
                   =======================================================================             ......
  • 关于Java基础复习-第二天的总结笔记
    0、类型转换问题类型转换(理解)在Java中,会存在不同类型的数据需要一起参与运算,所以这些数据类型之间是需要相互转换的,分为两种情况:自动类型转换和强制类型转换。自动类型......