【SQL】语句练习

ops/2024/12/17 5:59:27/

1. 更新

1.1单表更新

例1: 所有薪水低于30000的员工薪水增加10%

SQL命令: update employee set salary=salary*1.1 where salary < 30000;

1.2多表更新

例1: 将下图两表张三的语文成绩从95修改为80

SQL命令: update exam set score=80 where subject ="语文" and scode in (select code from student where name="张三"); 

2.查询

2.1单表查询

例1: 查询所有员工的name和salary

SQL命令: select name,salary from employee;

例2: 查询salary高于5w的员工姓名和薪水

SQL命令: select name,salary from employee where salary>50000;

例3: 查询每个部门的平均薪水/部门最高薪水

SQL命令求平均薪水: select department,avg(salary) from employee group by department;

SQL命令求最高薪水:select department,max(salary) from employee group by department;

例4: 下表中查询至少有一科分数大于80的学生总数

SQL命令1: select count(distinct(name)) from student_02 where score > 80;

SQL命令2:   select count(distinct CASE WHEN score>80 THEN name END) as num from student_02;

例5: 下表中查询学生每门课程分数大于80分的学生姓名

SQL命令1: select name from student_02 group by name having min(score)>80;

SQL命令2: select distinct name from student_02 where name not in (select distinct name from student_02 where score<80);

查询出每个学生的最高分以及课程名

思想: 通过自连接实现,其中关键是学生自身比

SQL命令: select s.name,s.course,s.score from student_02 as s join (select name,max(score) as max_score from student_02 group by name) as s1 on s.name=s1.name and s.score=s1.max_score;

例6: 查询出同一学生的课程1分数小于课程2分数的学生ID

思想:自连接,其中关键是学生自身比

SQL命令: select s_id from student_04 as s inner join student_04 as s1 on s.s_id=s1.s_id where s.cid=1 and s1.cid=2 and s.score< s1.score;

例6: 匹配员工name中以"李"开头的name和部门

SQL命令: select name,department from employee where name like '李%';

例7: 找出在运营部且薪水在2w-7w之间的员工姓名和薪水

SQL命令: select name,salary from employee where department="运营部" and salary between 20000 and 70000;

例8: 查询薪水最高的2位的姓名和薪水,按照薪水降序排列

SQL命令: select name,salary from employee order by salary desc limit 2 ;

例9: 显示姓名,薪水和新列salary level.低于2w显示为low,2w-4w为medium

SQL命令: select name,salary, CASE WHEN salary<20000 THEN 'low' WHEN salary between 20000 and 40000 THEN 'medium' ELSE 'high' END as salary_level from employee;

例10: 查询薪水第2高的

SQL命令: select salary from salary order by salary desc limit 1,1;

例11:查询出学过课程1和3的学生ID

SQL命令: select s_id from student_04 where cid in (1,3) group by s_id having count(distinct cid)=2;

例12: 查询每科的平均成绩并按照平均成绩升序,如果一样,则按照课程id降序

SQL命令: select cid,avg(score) as avg_score from student_04 group by cid order by avg_score,cid desc;

-----------------------------------------------------------------------------------

2.2多表查询

例1:  求出每个部门的名称以及平均薪水

SQL命令(以departments为主):select d.department_name,avg(e.salary) from employee as e join departments ad d on e.department_id=d.department_id group by d.department_name

例2: 显示所有部门的名称和部门员工数包括没有员工的部门

SQL命令: select d.department_name,count(e.employee_id) from departments d left join employee e on d.department_id=e.department_id group by d.department_name;

例3: 

求1: 用户user_id,nickname和消费总额前5名

思想:以shop_record为主表,将三张表连接分别获取user_info的user_id,nickname以及commodity_info的price; 通过group by分组保证唯一用户

SQL命令:select u.user_id,u.nickname,sum(s.num*c.price)  as total from shop_record as s join user_info as u on s.user_id=u.id join commodity_info as c on s.c_id=c.id group by u.user_id,u.nickname order by total desc  limit 5;

求2: 重复购买的次数最多且购买的总金额

-----------------------------------------------------------------------------------

2.3子查询

例1: 找出salary高于部门平均薪水的所有员工姓名

SQL命令: select name from employee e where salary >(select avg(e2.salary) from employee e2 where e2.department_id=e.department_id);

        外层查询员工姓名;内层查询每个员工所在部门的平均薪水

3.删除

例1: 删除employee表中所有部门为【研发部】的员工记录

SQL命令: delete from employee where department="研发部";


http://www.ppmy.cn/ops/142567.html

相关文章

云计算HCIP-OpenStack02

书接上回&#xff1a; 云计算HCIP-OpenStack01-CSDN博客 7.OpenStack核心服务 7.1Horizon&#xff1a;界面管理服务 Horizon提供了OpenStack中基于web界面的管理控制页面&#xff0c;用户或者是管理员都需要通过该服务进行OpenStack的访问和控制 界面管理服务需要依赖于keyston…

UNC、谷歌:通过逆向思维增强LLM

&#x1f4d6;标题&#xff1a;Reverse Thinking Makes LLMs Stronger Reasoners &#x1f310;来源&#xff1a;arXiv, 2411.19865 &#x1f31f;摘要 &#x1f538;逆向思维在人类推理中起着至关重要的作用。人类不仅可以从一个问题推理到一个解决方案&#xff0c;还可以反…

电工电子技术实验:电压比较器及其应用电路

实验目的 1&#xff0e;了解电压比较器与运算放大器的性能区别&#xff1b; 2&#xff0e;掌握电压比较器的结构及特点&#xff1b; 3&#xff0e;掌握电压比较器电压传输特性的测试方法&#xff1b; 4&#xff0e;学习比较器在电路设计中的应用 实验原理 电压比较器是一…

如何不重启修改K8S containerd容器的内存限制(Cgroup方法)

1. 使用crictl 查看容器ID crictl ps2. 查看Cgroup位置 crictl inspect 容器ID3. 到容器Cgroup的目录下 使用上个命令就能找到CgroupPath 4 . 到cgroup目录下 正确目录是 : /sys/fs/cgroup/memory/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-podf68e18…

scala泛型的特质:Trait

泛型特质指的是把泛型定义到特质的声明上, 即:该特质中的成员的参数类型是由泛型来决定的. 在定义泛型特质的子类或者子单例对象时, 明确具体的数据类型. 定义格式: 1)trait 类名[T] 2)trait 类名[S,T...] 演示代码如下&#xff1a; object demo18_3 {trait Logger[x]{val…

解释 Git 的基本概念和使用方式

Git是一种分布式版本控制系统&#xff0c;它可以追踪文件和文件夹的修改历史&#xff0c;并允许多人协同工作。Git的基本概念包括仓库&#xff08;repository&#xff09;、分支&#xff08;branch&#xff09;、提交&#xff08;commit&#xff09;和合并&#xff08;merge&am…

39 基于单片机的角度、水位、温度、辅助热源、电机仿真

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机 采用滑动变阻器连接ADC0832数模转换器模拟角度传感器&#xff0c;水位传感器&#xff1b; 采样DS18B20温度传感器检测温度 通过LCD1602显示&#xff0c;第一行显示温度、水位、角度…

seata AT模式 笔记2

本文属于b站 图灵课堂springcloud笔记系列。讲的好还不要钱&#xff0c;值得推荐。 上一篇快速体验了下seata AT模式解决分布式事务&#xff1a; 分布式事务seata(AT)与nacos整合-笔记2-CSDN博客 AT模式原理部分&#xff1a; 官网&#xff1a;Seata AT 模式 | Apache Seata…