草庐IT

头歌MySQL数据库实训答案2022

倒序噩梦 2023-07-19 原文

答案由本人收集+自己写的,仅作参考,帮助写不完作业的小伙伴

目录

实训1 数据库、表与完整性约束的定义(Create)

指路头歌MySQL数据库实训答案 有目录,实训一的都有,后面的题有些换了

实训2 数据库、表与完整性约束的定义(Create)

第1关 修改表名

USE TestDb1;
#请在以下空白处添加恰当的语句,将表名your_table更改为my_table:
alter table your_table rename my_table;

第2关 添加与删除字段

use MyDb;
#请在以下空白处添加适当的SQL代码,实现编程要求
#语句1:删除表orderDetail中的列orderDate
alter table orderDetail drop orderDate;
#语句2:添加列unitPrice
alter table orderDetail add unitPrice decimal(10,2) after quantityOrdered;

第3关 修改字段

use MyDb;
#请在以下空白处添加适当的SQL语句,实现编程要求
alter table addressBook modify QQ char(12);
alter table addressBook rename column weixin to wechat;

第4关 添加、删除与修改约束

use MyDb;
#请在以下空白处填写适当的诘句,实现编程要求。
#(1) 为表Staff添加主码
alter table Staff add constraint primary key(staffNo);
#(2) Dept.mgrStaffNo是外码,对应的主码是Staff.staffNo,请添加这个外码,名字为FK_Dept_mgrStaffNo:
alter table Dept add constraint FK_Dept_mgrStaffNo foreign key(mgrStaffNo) references Staff(staffNo);
#(3) Staff.dept是外码,对应的主码是Dept.deptNo. 请添加这个外码,名字为FK_Staff_dept:
alter table Staff add constraint FK_Staff_dept foreign key(dept) references Dept(deptNo);
#(4) 为表Staff添加check约束,规则为:gender的值只能为F或M;约束名为CK_Staff_gender:
alter table Staff add constraint CK_Staff_gender check(gender='F'or gender='M');
#(5) 为表Dept添加unique约束:deptName不允许重复。约束名为UN_Dept_deptName:
alter table Dept add constraint UN_Dept_deptName UNIQUE(deptName);

实训3 基于金融应用的数据查询(Select)(1-11关)

8关后来源自指路数据库实验,不仅有题解还有很多笔记,谢谢大佬

第1关 金融应用场景介绍,查询客户主要信息

-- 1) 查询所有客户的名称、手机号和邮箱信息。查询结果按照客户编号排序。
--    请用一条SQL语句实现该查询:
select c_name,c_phone,c_mail from client ORDER BY c_id;
/*  end  of  your code  */

第2关 邮箱为null的客户

-- 2) 查询客户表(client)中邮箱信息为null的客户的编号、名称、身份证号、手机号。
--    请用一条SQL语句实现该查询:
select c_id,c_name,c_id_card,c_phone from client where c_mail is null;
/*  end  of  your code  */

第3关 既买了保险又买了基金的客户

-- 3) 查询既买了保险又买了基金的客户的名称、邮箱和电话。结果依c_id排序
-- 请用一条SQL语句实现该查询:
select c_name,c_mail,c_phone from client where c_id in
    (select pro_c_id from property where pro_type=3)
    and c_id in(select pro_c_id from property where pro_type=2)
    order by c_id;
/*  end  of  your code  */

第4关 办理了储蓄卡的客户信息

-- 4) 查询办理了储蓄卡的客户名称、手机号、银行卡号。 查询结果结果依客户编号排序。
--    请用一条SQL语句实现该查询:
select c_name,c_phone,b_number from client,bank_card
where b_type='储蓄卡' and b_c_id=c_id
order by c_id;
/*  end  of  your code  */

第5关 每份金额在30000~50000之间的理财产品

-- 5) 查询理财产品中每份金额在30000~50000之间的理财产品的编号,每份金额,理财年限,并按照金额升序排序,金额相同的按照理财年限降序排序。
--    请用一条SQL语句实现该查询:
select p_id,p_amount,p_year from finances_product 
where p_amount between 30000 and 50000
order by p_amount,p_year desc;
/*  end  of  your code  */

第6关 商品收益的众数

-- 6) 查询资产表中所有资产记录里商品收益的众数和它出现的次数。
--    请用一条SQL语句实现该查询:
select pro_income,count(*) as presence
from property group by pro_income 
having count(*)>=all(select count(*) from property group by pro_income);
/*  end  of  your code  */

第7关 未购买任何理财产品的武汉居民

-- 7) 查询身份证隶属武汉市没有买过任何理财产品的客户的名称、电话号、邮箱。
--    请用一条SQL语句实现该查询:
select c_name,c_phone,c_mail from client
where(select left(client.c_id_card, 4)=4201)
and c_id not in(select pro_c_id from property where pro_type=1);
/*  end  of  your code  */

第8关 持有两张信用卡的用户

-- 8) 查询持有两张(含)以上信用卡的用户的名称、身份证号、手机号。
--    请用一条SQL语句实现该查询:
select c_name,c_id_card,c_phone from client
where (c_id,"信用卡")in
(select b_c_id,b_type from bank_card group by b_c_id,b_type
having count(*) > 1);
/*  end  of  your code  */

第9关 购买了货币型基金的客户信息

-- 9) 查询购买了货币型(f_type='货币型')基金的用户的名称、电话号、邮箱。
--   请用一条SQL语句实现该查询:
select c_name,c_phone,c_mail from client where c_id in
(select pro_c_id from property where pro_type=3
and pro_pif_id in(select f_id from fund where f_type='货币型'))
order by c_id;
/*  end  of  your code  */

第10关 投资总收益前三名的客户

-- 10) 查询当前总的可用资产收益(被冻结的资产除外)前三名的客户的名称、身份证号及其总收益,按收益降序输出,总收益命名为total_income。不考虑并列排名情形。
--    请用一条SQL语句实现该查询:
select c_name,c_id_card,sum(pro_income)as total_income from client 
inner join property on pro_c_id=c_id and pro_status="可用" 
group by c_id 
order by total_income desc 
limit 3;
/*  end  of  your code  */ 

第11关 黄姓客户持卡数量

-- 11) 给出黄姓用户的编号、名称、办理的银行卡的数量(没有办卡的卡数量计为0),持卡数量命名为number_of_cards,
--     按办理银行卡数量降序输出,持卡数量相同的,依客户编号排序。
-- 请用一条SQL语句实现该查询:
select c_id,c_name,count(b_c_id) as number_of_cards from client left join bank_card on c_id=b_c_id where c_name like "黄%"group by c_id
order by number_of_cards desc, c_id;
/*  end  of  your code  */ 

实训4 数据的插入、修改与删除(Insert,Update,Delete)

第1关 插入多条完整的客户信息

use finance1;
-- 用insert语句向客户表(client)插入任务要求的3条数据:
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password)VALUES
(1,'林惠雯','960323053@qq.com',411014196712130323,15609032348,'Mop5UPkl'),
(2,'吴婉瑜','1613230826@gmail.com',420152196802131323,17605132307,'QUTPhxgVNlXtMxN'),
(3,'蔡贞仪','252323341@foxmail.com',160347199005222323,17763232321,'Bwe3gyhEErJ7');
/* end of you code */

第2关 插入不完整的客户信息

use finance1;
-- 已知33号客户部分信息如下:
-- c_id(编号):33
-- c_name(名称):蔡依婷
-- c_phone(电话):18820762130
-- c_id_card(身份证号):350972199204227621
-- c_password(密码):MKwEuc1sc6
-- 请用一条SQL语句将这名客户的信息插入到客户表(client):
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password)VALUES
(33,'蔡依婷',NULL,350972199204227621,18820762130,'MKwEuc1sc6')
/* end of you code */

第3关 批量插入数据

use finance1;
 -- 已知表new_client保存了一批新客户信息,该表与client表结构完全相同。请用一条SQL语句将new_client表的全部客户信息插入到客户表(client):
insert into client select * from new_client;
/* end of you code */

第4关 删除没有银行卡的客户信息

use finance1;
-- 请用一条SQL语句删除client表中没有银行卡的客户信息:
-- 经评论区提醒正规写法:
DELETE FROM client where not exists (select b_c_id from bank_card where b_c_id = c_id);
DELETE FROM client WHERE c_id_card=null;
/* end of you code */

你直接DELETE FROM client WHERE c_id=2100;也可以过

有关头歌MySQL数据库实训答案2022的更多相关文章

  1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  2. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  3. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  4. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  5. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  6. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  7. ruby-on-rails - 创建 ruby​​ 数据库时惰性符号绑定(bind)失败 - 2

    我正在尝试在Rails上安装ruby​​,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf

  8. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  9. SPI接收数据异常问题总结 - 2

    SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手

  10. 微信小程序通过字典表匹配对应数据 - 2

    前言一般来说,前端根据后台返回code码展示对应内容只需要在前台判断code值展示对应的内容即可,但要是匹配的code码比较多或者多个页面用到时,为了便于后期维护,后台就会使用字典表让前端匹配,下面我将在微信小程序中通过wxs的方法实现这个操作。为什么要使用wxs?{{method(a,b)}}可以看到,上述代码是一个调用方法传值的操作,在vue中很常见,多用于数据之间的转换,但由于微信小程序诸多限制的原因,你并不能优雅的这样操作,可能有人会说,为什么不用if判断实现呢?但是if判断的局限性在于如果存在数据量过大时,大量重复性操作和if判断会让你的代码显得异常冗余。wxswxs相当于是一个独立

随机推荐