MySQL建表及查询实例

       用MySQL数据库实现“共享单车”项目数据的持久化,核心业务实体主要包括用户(编号、昵称、手机号、所在城市、注册日期)和单车(编号、状态、是否损坏),其他暂不考虑。请写出建表语句和查询每个城市各有多少注册的共享单车用户以及查询使用共享单车次数最多的用户的昵称及其所在城市的SQL语句。

1.建表及表关系:

create table tb_city(
    cityid integer not null auto_increment,
    cityname varchar(20) not null,
    primary key(cityid)
);
create table tb_user(
    userid integer not null auto_increment,
    nickname varchar(50) not null,
    cityid integer not null,
    regdate date,
    primary key (userid)
);
create table tb_bike(
    bikeid integer not null auto_increment,
    statecode integer default 0,
    broken bit default 0,
    primary key(bikeid)
);
create table tb_record(
    recordid integer not null auto_increment,
    userid integer not null,
    bikeid integer not null,
    begintime datetime not null,
    endtime datetime,
    payway integer,
    cost float,
    primary key(recordid)
);

alter table tb_user add constraint fk_user_cityid foreign key(cityid) references tb_city(cityid);

alter table tb_record add constraint fk_record_userid foreign key(userid) references tb_user(userid);

alter table tb_record add constraint fk_record_bikeid foreign key(bikeid) references tb_bike(bikeid);

2.查询每个城市各有多少注册的共享单车用户以及查询使用共享单车次数最多的用户的昵称及其所在城市的SQL语句。

select cityname,total from (select cityid,count(cityid) as total 
from tb_user group by cityid) t1 inner join tb_city t2 on t1.cityid=t2.cityid;

select nickname, cityname from (
select userid, count(userid) as total 
from tb_record group by userid having total=(
select max(total) from (
select userid, count(userid) as total from tb_record group by userid) t1)) t2 
inner join tb_user as t3 on 
t2.userid=t3.userid inner join tb_city as t4 on 
t3.cityid=t4.cityid;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值