头歌实践教学平台--【数据库概论】--SQL

news2025/3/31 12:57:31

一、表结构与完整性约束的修改(ALTER)

1.修改表名

USE TestDb1;
alter table your_table rename TO my_table;

2.添加与删除字段

#语句1:删除表orderDetail中的列orderDate
alter table orderDetail drop orderDate;
#语句2:添加列unitPrice
alter table orderDetail add unitPrice numeric(10,2);

3.修改字段

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

4.添加、删除与修改约束

二、 单表查询(简单比较,in,范围查询)

1.基本查询语句

-- 任务1: 查询雇员(staff)的全部信息
-- 请在此处添加实现代码
select * from staff;
-- 任务2: 查询全部雇员(staff)的姓名(sname)、出生日期(dob)和手机号码(mobile)
-- 请在此处添加实现代码
select sname,dob,mobile from staff;
-- EOF

2.对查询的结果排序

-- 任务1: 写出能完成以下任务的语句:
-- 查询所有雇员的姓名,性别,手机号。按年龄降序排列,即年龄越大的越靠前。
-- 请在此处添加实现代码
select sname,gender,mobile
from staff
order by dob asc;

3.带比较条件的查询

-- 任务1: 写出能完成以下人物的sql语句:
-- 查询格力空调的型号和价格,依价格升序排列。
-- 请在此处添加实现代码
select model,price 
from products
where manufacturer='格力'
order by price asc;

4.带IN关键字的查询

-- 任务1: 写出能完成以下查询任务的SQL语句:
-- 查询10,40,70号产品(空调)的型号、生产厂家和价格,依价格从低到高排序。
-- 请在此处添加实现代码
select model,manufacturer,price
from products
where pid in(10,40,70)
order by price asc;

5.带BETWEEN AND关键字的查询

-- 任务1: 写出可以完成以下查询任务的sql语句:
-- 查询价格在2000到3000之间的所有空调的型号,生产厂家和价格。依价格从低到高排序。
-- 请在此处添加实现代码
select model,manufacturer,price
from products
where price  between 2000 and 3000
order by price;

三、单表查询(模式匹配,null,去重,and,or)

1.带LIKE 的字符匹配查询

-- 实现以下查询的SQL语句:
-- 查询1.5匹,即功率3500W的冷暖空调,列出型号,生产厂家和价格,依价格从低到高排序。
-- 请在此处添加实现代码
select model,manufacturer,price
from products
where model like 'KFR%_35%'
order by price;

2.带RLIKE 的字符匹配查询

-- 实现以下查询的SQL语句:
-- 查询分体式室热泵制热冷暖双制,制冷量7200W或6000W的落地式空调的型号、生产厂家和价格,查询结果依价格从低到高排序输出。
-- 请在此处添加实现代码:
select model,manufacturer,price
from products
where model rlike '^KFR-(72|60)LW.*' 
order by price;

3.. 查询空值与去除重复结果

-- 任务1:查查询产品表(products)表中,有多少厂家(manufacturer)的产品,一个厂家只列一次,即便该厂家有多个型号的产品。查询结果依厂家名称排序输出。
-- 请在此处添加实现代码
select distinct manufacturer
from products
order by manufacturer;
-- 任务2:查询出生日期(出生日期)未填写(值为NULL)的员工编号,姓名。查询结果依姓名排序输出。
-- 请在此处添加实现代码
select sid,sname
from staff
where dob is null
order by sname;

4.带 AND 与 OR 的多条件查询

-- 查询“美的”、“格力”或 “志高”价格在3000(含)以下,功率为3500W的空调信息,列出厂家,型号,价格。查询结果依价格从低到高排序。
-- 请在此处添加实现代码
select manufacturer,model,price
from products
where manufacturer in('美的', '格力','志高' )and price<=3000 and model like 'KF%_35%'
order by price;

四、单表查询(统计总和,平均,最大,最小)

1.COUNT( )函数及对计算列重命名

-- 查询2023年国庆长假期间(9-29至10-6)共有多少员工共完成了多少笔销售交易,涉及多少个型号的空调。统计结果分别命名为:人数,笔数,型号数。
-- 请在此处添加实现代码
select count(distinct sid) as '人数',
count(rid) as '笔数',
count(distinct pid) as '型号数'
from sales_record
where sdate between '2023-9-29' and '2023-10-6';

2.SUM( )函数

-- 查询7号员工2023年上半年共销售了几个型号的总共多少台空调?统计结果分别命名为:“型号数”、“总台数”。
-- 请在此处添加实现代码
select 
count(distinct pid) as '型号数',
sum(quantity) as '总台数'
from sales_record
where sid='7' and sdate between '2023-1-1' and '2023-6-30' ;

3. AVG( )函数

-- 查询产品表中制冷量3500W室内分体空调的平均价格,对均价取整,并命名为:“均价”。
-- 请在此处添加实现代码
select round(avg(price)) as '均价'
from products
where model rlike '^KF[RD]?-35[DGLTQ]W.*'

4.MAX( )函数

-- 查询产品表中制冷量7200W室内分体落地式冷暖空调的最高价,并命名为:“最高价”。。
-- 请在此处添加实现代码
select max(price) '最高价'
from products
where model rlike '^KF[RD]?-72LW.*'

5.MIN( )函数

-- 查询产品表中制冷量3500W室内分体壁挂式冷暖空调的最低价,并命名为:“最低价”。
-- 请在此处添加实现代码
select min(price) '最低价'
from products
where model rlike '^KFR-35GW.*'

五、单表查询(分组统计,限定输出行数)

1. 使用 limit 限制查询结果的数量

-- 查询产品表中制冷量3500W室内分体壁挂式冷暖空调的价格个最低的三个产品的厂家,型号和价格。按价格从低到高排序。。
-- 请在此处添加实现代码
select manufacturer,model,price
from products
where model rlike '^KF[RD]?-35GW.*'
order by price asc
limit 0,3;

2. 分组统计查询(group by)

-- 统计每个空调厂家,制冷功率为3500W的空调平均价格(取整)。结果表的标题分别为:“厂家”,“平均价格”。查询结果依生产厂家名称排序。
-- 请在此处添加实现代码
select manufacturer as '厂家', round(avg(price)) as'平均价格'
from products
where model rlike '^KF[R]?-35[DGLTQ]W.*'
group by manufacturer 
order by 厂家;

3. 对分组统计的结果再筛选(having)

-- 查询2023国庆长假期间(9月29日到10月6日)所有员工销售空调的总台数,并按销售量从高到底排序。只输出总台数超过20(含)台数的结果。总台数命名为total。
-- 请在此处添加实现代码
select sid,sum(quantity) as total
from sales_record where sdate between '2023-9-29' and '2023-10-6'
group by sid 
having total>=20
order by total desc;

六、连接查询(内连,外连,多表分组统计)

1.内连接查询

-- 查询2023年国庆小长假期间(9月29日到10月6日)的销售明细,包括:型号(model),厂家(manufacturer),数量(qunantity), 单价(price)和折扣(discount)。查询结果依销售记录号(rid)排序。
-- 请在此处添加实现代码
select model,manufacturer,quantity,price,discount
from products inner join sales_record on products.pid=sales_record.pid
where sdate between '2023-9-29' and '2023-10-6'
order by rid;

2.外连接查询

-- 查询2023年国庆节小长假期间(9月29日到10月6日)“格力”空调的销售明细,包括:型号(model),数量(qunantity), 单价(price)和折扣(discount)。没有销售记录的型号也要包括在查询结果中。查询结果按产品号(pid)排序,产品号相同时,再依销售记录号(rid)排序。
-- 请在此处添加实现代码
select model,quantity,price,discount
from products left join sales_record on products.pid=sales_record.pid 
and sdate between '2023-9-29' and '2023-10-6'
where manufacturer='格力'
order by products.pid,rid;

3.多表连接查询

-- 统计各位销售人员在2023年国庆节小长假期间(9月29日到10月6日)期间的销售业绩(即销售总金额),列出销售人员姓名,销售额(命名为total)。依销售额从高到低排序。
-- 请在此处添加实现代码
select sname,sum(quantity*price *discount) as total 
from staff,products,sales_record
where sales_record.sid=staff.sid and sales_record.pid=products.pid and sdate between '2023-9-29' and '2023-10-6'
group by staff.sid
order by total desc;

七、子查询(in,exists,子查询的位置,分组统计)

1. 带IN谓词的子查询

-- 查询“郑点”没有卖过那些厂家的空调。结果依厂家名字排序。
-- 请在此处添加实现代码
select distinct manufacturer 
from products
where manufacturer not in(
    select distinct manufacturer
    from products
    inner join sales_record on products.pid=sales_record.pid
    inner join staff on sales_record.sid=staff.sid
    where sname='郑点'
)
order by manufacturer;

2. 带EXISTS谓词的子查询

-- 被1-9号(正式)员工都卖过的产品(空调)编号,型号,生产厂家和价格。结果依产品号排序。
-- 请在此处添加实现代码
select p.pid,p.model,p.manufacturer,p.price
from products p
inner join sales_record sr on p.pid=sr.pid
inner join staff s on sr.sid=s.sid
where s.sid between 1 and 9
group by p.pid,p.model,p.manufacturer
having count(distinct s.sid)=9
order by p.pid;

3. 复杂子查询及分组统计

--  统计每个厂家空调的型号数,其中单冷总型号数,冷暖总型号数。统计结果按总型号数从高到底排列。列出内容:
--  生产厂家:manufacturer
--  总型号数: model_total
--  单冷型号数:single_total
--  冷暖型号数:dual_total
select manufacturer,
count(distinct model) as model_total,
count(distinct case when model regexp '^KF-[0-9]{2}[DGLTQ]W.*' then model end) as single_total,
count(distinct case when model regexp '^KF[RD]-[0-9]{2}[DGLTQ]W.*' then model end) as dual_total
from products
group by manufacturer
order by model_total desc;

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

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

-- 用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');

2. 插入不完整的客户信息

-- 已知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_phone,c_id_card,c_password)
value(33,'蔡依婷','18820762130','350972199204227621','MKwEuc1sc6');

3. 批量插入数据

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

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

-- 请用一条SQL语句删除client表中没有银行卡的客户信息:
delete from client
where not exists(
    select 1
    from bank_card
    where bank_card.b_c_id=client.c_id
);

5. 冻结客户资产

-- 请用一条update语句将手机号码为“13686431238”的这位客户的投资资产(理财、保险与基金)的状态置为“冻结”。:
update client
inner join property on client.c_id=property.pro_c_id
set property.pro_status='冻结'
where client.c_phone='13686431238'
and property.pro_type in(1,2,3);

6.连接更新

-- 在金融应用场景数据库中,已在表property(资产表)中添加了客户身份证列,列名为pro_id_card,类型为char(18),该列目前全部留空(null)。

-- 请用一条update语句,根据client表中提供的身份证号(c_id_card),填写property表中对应的身份证号信息(pro_id_card)。
update property join client as c on property.pro_c_id=c.c_id
set property.pro_id_card=c.c_id_card;

九、视图

1. 创建所有保险资产的详细记录视图

-- 创建包含所有保险资产记录的详细信息的视图v_insurance_detail,包括购买客户的名称、客户的身份证号、保险名称、保障项目、商品状态、商品数量、保险金额、保险年限、商品收益和购买时间。
-- 请用1条SQL语句完成上述任务:
create view v_insurance_detail as select c_name,c_id_card,i_name,i_project,pro_status,pro_quantity,i_amount,i_year,pro_income,pro_purchase_time from (select * from (select * from (select * from client union select * from client new_client) a join property b on a.c_id = b.pro_c_id) c join insurance d on c.pro_pif_id = d.i_id) e where e.pro_type = '2';

2. 基于视图的查询

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2323410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法基础——模拟

目录 1 多项式输出 2.蛇形方阵 3.字符串的展开 模拟&#xff0c;顾名思义&#xff0c;就是题⽬让你做什么你就做什么&#xff0c;考察的是将思路转化成代码的代码能⼒。这类题⼀般较为简单&#xff0c;属于竞赛⾥⾯的签到题&#xff08;但是&#xff0c;万事⽆绝对&#xff…

【第30节】MFC编程:ListCtrl控件和TreeCtrl控件

目录 引言 一、高级控件ListCtrl 二、高级控件TreeCtrl 三、Shell控件 四、CImageList 五、综合代码示例 引言 在MFC编程里&#xff0c;高级控件能大幅提升应用程序的交互性与功能性。接下来&#xff0c;咱们会详细讲讲ListCtrl和TreeCtrl这两个高级控件。不仅会介绍它们…

JavaScript 手写 call、apply、bind 和 new

1. 手写 call 方法 核心思路&#xff1a;改变函数的 this 指向并立即执行&#xff0c;通过将函数临时挂载到目标对象上调用。 Function.prototype.myCall function (context, ...args) {// 如果 context 为 null 或 undefined&#xff0c;则默认为 windowcontext context |…

计算机网络基础:量子通信技术在网络中的应用前景

计算机网络基础:量子通信技术在网络中的应用前景 一、前言二、量子通信技术基础2.1 量子通信的基本概念2.2 量子通信的主要原理2.2.1 量子密钥分发(QKD)原理2.2.2 量子隐形传态原理三、量子通信技术的特点3.1 绝对安全性3.2 超高通信速率潜力3.3 抗干扰能力强四、量子通信技…

Postman 下载文件指南:如何请求 Excel/PDF 文件?

在 Postman 中进行 Excel/PDF 文件的请求下载和导出&#xff0c;以下是简明的步骤&#xff0c;帮助你轻松完成任务。首先&#xff0c;我们将从新建接口开始&#xff0c;逐步引导你完成整个过程。 Postman 请求下载/导出 excel/pdf 文件教程

Stereolabs ZED Box Mini:机器人与自动化领域的人工智能视觉新选择

在人工智能视觉技术快速发展的今天&#xff0c;其应用场景正在持续拓宽&#xff0c;从智能安防到工业自动化&#xff0c;从机器人技术到智能交通&#xff0c;各领域都在积极探索如何利用这一先进技术。而 Stereolabs 推出的ZED Box Mini&#xff0c;正是一款专为满足这些多样化…

arm之s3c2440的I2C的用法

基础概念 IC&#xff08;Inter-Integrated Circuit&#xff09;又称I2C&#xff0c;是是IICBus简称&#xff0c;所以中文应该叫集成电路总线。 IIC的总线的使用场景&#xff0c;所有挂载在IIC总线上的设备都有两根信号线&#xff0c;一根是数据线SDA&#xff0c;另一 根是时钟…

redis部署架构

一.redis多实例 如上图所示&#xff0c;我们经常使用实例的端口号来作为实例的安装目录名称。 1.创建实例安装目录 如上图所示&#xff0c;这是创建实例的安装目录&#xff0c; 2.拷贝实例的配置文件 如上图所示&#xff0c;将redis解压目录下的配置文件拷贝到对应的conf目录…

深入理解指针(4)(C语言版)

文章目录 前言一、回调函数是什么&#xff08;一&#xff09;定义&#xff08;二&#xff09;工作原理&#xff08;三&#xff09;应用场景 二、qsort举例&#xff08;一&#xff09;qsort函数简介&#xff08;二&#xff09;比较函数的定义&#xff08;三&#xff09;使用示例…

【HTML】验证与调试工具

个人主页&#xff1a;Guiat 归属专栏&#xff1a;HTML CSS JavaScript 文章目录 1. HTML 验证工具概述1.1 验证的重要性1.2 常见 HTML 错误类型 2. W3C 验证服务2.1 W3C Markup Validation Service2.2 使用 W3C 验证器2.3 验证结果解读 3. 浏览器开发者工具3.1 Chrome DevTools…

​​SenseGlove与Aeon Robotics携手推出HEART项目,助力机器人培训迈向新台阶

在自动化和机器人技术快速发展的今天&#xff0c;SenseGlove和Aeon Robotics联合推出了一项创新项目——HEART项目。该项目在欧盟资助的MasterXR框架内展开&#xff0c;旨在通过整合虚拟现实&#xff08;VR&#xff09;、力反馈触觉手套&#xff08;SenseGlove项目Rembrandt&am…

mapbox进阶,仿照百度,加载marker点位,移入marker点切换图标,点击展示气泡,气泡和marker联动

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️marker 标注点位 api1.3.1 ☘️构造函数…

使用HTML5和CSS3实现3D旋转相册效果

使用HTML5和CSS3实现3D旋转相册效果 这里写目录标题 使用HTML5和CSS3实现3D旋转相册效果项目介绍技术栈核心功能实现思路1. HTML结构2. CSS样式解析2.1 基础样式设置2.2 3D效果核心样式2.3 卡片样式 3. JavaScript交互实现3.1 旋转控制3.2 自动播放功能 技术要点总结项目亮点总…

游戏引擎学习第186天

回顾并规划今天的任务 现在&#xff0c;我们站在了一个关键的时刻&#xff0c;准备突破&#xff0c;拥有一些优秀的性能分析代码。从目前来看&#xff0c;我们已经能够看到时间的消耗情况&#xff0c;我对这一点感到非常兴奋。昨天的直播中我们勉强让一些东西工作了&#xff0…

【redis】持久化之RDB与AOF

在数字世界的脉搏中&#xff0c;数据是流淌的血液&#xff0c;而持久化则是保障系统生命力的核心机制。作为内存数据库的标杆&#xff0c;Redis凭借其高性能特性成为互联网架构的基石&#xff0c;但其「易失性」的天然属性也催生了关键命题&#xff1a;如何在服务重启或故障时保…

Brainstorm绘制功能连接图(matlab)

上篇笔记简单介绍了Brainstorm&#xff0c;本次使用Brainstorm绘制功能连接图。而对于连接矩阵&#xff0c;软件中有几种方法&#xff1a;相关、相干、双变量格兰杰因果关系、相位锁相值、包络相关、相位转移熵。 首先&#xff0c;对数据进行预处理&#xff0c;保存为.set&…

华为HG532路由器RCE漏洞 CVE-2017-17215 复现

华为HG532路由器RCE漏洞 CVE-2017-17215 CVE-Description Huawei HG532 with some customized versions has a remote code execution vulnerability. An authenticated attacker could send malicious packets to port 37215 to launch attacks. Successful exploit could l…

LVS的三种工作模式简述

一、引言 在过去的十几年中&#xff0c;Internet从几个研究机构相连为信息共享的网络发展成为拥有大量应用和服务的全球性网络&#xff0c;它正成为人们生活中不可缺少的 一部分。虽然Internet发展速度很快&#xff0c;但建设和维护大型网络服务依然是一项挑战性的任务&#xf…

使用 Layers 扩展你的 Nuxt4 应用

面对一个臃肿的页面或项目&#xff0c;你会如何简化重构、扩展它&#xff1f; 当单个 Vue 文件中界面/业务足够多时&#xff0c;通常我们会把它拆分成多个 components 或 composables 来引入&#xff0c;以此来减少此文件复杂度和增加可维护性。 当一个项目的界面/业务逻辑足…

Excel处理控件Aspose.Cells指南:如何在不使用 Microsoft Excel 的情况下解锁 Excel 工作表

Microsoft Excel 允许用户使用密码保护工作表&#xff0c;以防止未经授权的更改。但是&#xff0c;在某些情况下&#xff0c;您可能需要在不使用 Microsoft Excel 的情况下解锁 Excel 工作表。在本指南中&#xff0c;我们将探讨解锁 Excel 工作表的不同方法&#xff0c;例如使用…