sql练习题

DQL练习1-学生表
    创建如下学生表 

    create table student(
    id int,
    name varchar(20),
    gender varchar(20),
    chinese int,
    math int,
    english int
    );        
     
    insert into student values 
    (1,'张明','男',89,78,90),
    (2,'李进','男',67,53,95),
    (3,'王五','女',87,78,77),
    (4,'李一','女',88,98,92),
    (5,'李财','男',82,84,67),
    (6,'张宝','男',55,85,45),
    (7,'黄蓉','女',75,65,30),    
    (7,'黄蓉','女',75,65,30);    
     完成下列要求

    -- 查询表中所有学生的信息
    SELECT * FROM student;
    -- 查询表中所有学生的姓名和英语成绩
SELECT name, english FROM student;
    -- 过滤表中的重复数据
    SELECT DISTINCT * FROM student;
    -- 统计每个学生的总分
SELECT id, name, chinese + math + english AS total_score FROM student;
    -- 所有学生总分上加上10
SELECT id, name, chinese + math + english + 10 AS total_score FROM student;
    -- 使用别名表示学生分数
SELECT id, name, (chinese + math + english) AS total_score FROM student;
    -- 查询英语成绩大于90分的所有同学
SELECT * FROM student WHERE english > 90;
    -- 查询总分大于200分的所有同学
SELECT * FROM student WHERE chinese + math + english > 200;
    -- 查询英语成绩在80到90之间的所有同学
SELECT * FROM student WHERE english BETWEEN 80 AND 90;
    -- 查询英语成绩不在80到90之间的所有同学
SELECT * FROM student WHERE english NOT BETWEEN 80 AND 90;
    -- 查询数学分数为89,90,91的同学
SELECT * FROM student WHERE math IN (89, 90, 91);
    -- 查询数学分数不为89,90,91的同学
SELECT * FROM student WHERE math NOT IN (89, 90, 91);
    -- 查询所有姓李的学生英语成绩
SELECT name, english FROM student WHERE name LIKE '李%';
    -- 查询数学分80且语文80分的同学
SELECT * FROM student WHERE math = 80 AND chinese = 80;
    -- 查询英语80或者总分200的同学
SELECT * FROM student WHERE english = 80 OR chinese + math + english = 200;
    -- 对学生数学成绩进行降序排序后输出
SELECT * FROM student ORDER BY math DESC;
    -- 对总分从高到低的顺序输出
SELECT * FROM student ORDER BY chinese + math + english DESC;
    -- 对姓李的学生按总成绩升序排序输出
SELECT * FROM student WHERE name LIKE '李%' ORDER BY chinese + math + english ASC;
    -- 查询男生和女生分别有多少人,并将人数降序输出
SELECT gender, COUNT(*) AS count FROM student GROUP BY gender ORDER BY count DESC;
    -- 查询男生和女生分别有多少人,并将人数降序输出,并查询出大于9的性别人数信息
SELECT gender, COUNT(*) AS count FROM student GROUP BY gender HAVING count > 9 ORDER BY count DESC;

DQL练习2-员工表
    创建如下员工表

    create table emp(
    empno int,  -- 员工编号
    ename varchar(20),  -- 员工名字
    job varchar(20),  -- 工作名字
    mgr int,  -- 上级领导编号
    hiredate date,  -- 入职日期
    sal int,  -- 薪资
    comm int,  -- 奖金
    deptno int  -- 部门编号
    );
     
    insert into emp values
    (7369,'SMITH','CLERK',7902,'1980-12-17',800,null,20),
    (7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30),
    (7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30),
    (7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20),
    (7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30),
    (7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30),
    (7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,20),
    (7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20),
    (7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10),
    (7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30),
    (7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20),
    (7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30),
    (7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20),
    (7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);
    完成下列要求

    -- 按员工编号升序排列不在10号部门工作的员工信息
SELECT * FROM emp WHERE deptno <> 10 ORDER BY empno ASC;

    -- 查询姓名第二个字母不是'A'且薪水大于1000元的员工信息,按薪水降序排列
    SELECT * FROM emp WHERE ename LIKE '_%[^A]%_' AND sal > 1000 ORDER BY sal DESC;

    -- 按年薪+奖金降序排序
    SELECT *, sal + IFNULL(comm, 0) AS annual_income FROM emp ORDER BY annual_income DESC;

    -- 求每个部门的平均薪水
    SELECT deptno, AVG(sal) AS avg_salary FROM emp GROUP BY deptno;

    -- 求每个部门的最高薪水
    SELECT deptno, MAX(sal) AS max_salary FROM emp GROUP BY deptno;

    -- 求每个部门每个岗位的最高薪水并美观
    SELECT deptno, job, MAX(sal) AS max_salary FROM emp GROUP BY deptno, job;、

    -- 求平均薪水大于2000的部门编号    
    SELECT deptno FROM emp GROUP BY deptno HAVING AVG(sal) > 2000;
    -- 将部门平均薪水大于1500的部门编号列出来,按部门平均薪水降序排列
    SELECT deptno, AVG(sal) AS avg_salary FROM emp GROUP BY deptno HAVING avg_salary > 1500 ORDER BY avg_salary DESC;

    -- 选择公司中有奖金和员工姓名和工资
    SELECT ename, sal FROM emp WHERE comm IS NOT NULL;

    -- 查询员工最高工资和最低工资的差距
SELECT MAX(sal) - MIN(sal) AS salary_difference FROM emp;


-- 单表查询练习
/* 素材
CREATE TABLE `emp`  (
  `empno` int(4) NOT NULL,
  `ename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `job` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `mgr` int(4) NULL DEFAULT NULL,
  `hiredate` date NOT NULL,
  `sai` int(255) NOT NULL,
  `comm` int(255) NULL DEFAULT NULL,
  `deptno` int(2) NOT NULL,
  PRIMARY KEY (`empno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `emp` VALUES (1001, '甘宁', '文员', 1013, '2000-12-17', 8000, NULL, 20);
INSERT INTO `emp` VALUES (1002, '黛绮丝', '销售员', 1006, '2001-02-20', 16000, 3000, 30);
INSERT INTO `emp` VALUES (1003, '殷天正', '销售员', 1006, '2001-02-22', 12500, 5000, 30);
INSERT INTO `emp` VALUES (1004, '刘备', '经理', 1009, '2001-04-02', 29750, NULL, 20);
INSERT INTO `emp` VALUES (1005, '谢逊', '销售员', 1006, '2001-09-28', 12500, 14000, 30);
INSERT INTO `emp` VALUES (1006, '关羽', '经理', 1009, '2001-05-01', 28500, NULL, 30);
INSERT INTO `emp` VALUES (1007, '张飞', '经理', 1009, '2001-09-01', 24500, NULL, 10);
INSERT INTO `emp` VALUES (1008, '诸葛亮', '分析师', 1004, '2007-04-19', 30000, NULL, 20);
INSERT INTO `emp` VALUES (1009, '曾阿牛', '董事长', NULL, '2001-11-17', 50000, NULL, 10);
INSERT INTO `emp` VALUES (1010, '韦一笑', '销售员', 1006, '2001-09-08', 15000, 0, 30);
INSERT INTO `emp` VALUES (1011, '周泰', '文员', 1006, '2007-05-23', 11000, NULL, 20);
INSERT INTO `emp` VALUES (1012, '程普', '文员', 1006, '2001-12-03', 9500, NULL, 30);
INSERT INTO `emp` VALUES (1013, '庞统', '分析师', 1004, '2001-12-03', 30000, NULL, 20);
INSERT INTO `emp` VALUES (1014, '黄盖', '文员', 1007, '2002-01-23', 13000, NULL, 10);
INSERT INTO `emp` VALUES (1015, '张三', '保洁员', 1001, '2013-05-01', 80000, 50000, 50);

*/
-- 1. 查询出部门编号为30的所有员工
SELECT * FROM emp WHERE deptno = 30;
-- 2. 所有销售员的姓名、编号和部门编号。
SELECT ename, empno, deptno FROM emp WHERE job = '销售员';

-- 3. 找出奖金高于工资的员工。
SELECT * FROM emp WHERE comm > sai;

-- 4. 找出奖金高于工资60%的员工。
SELECT * FROM emp WHERE comm > (sai * 0.6);

-- 5. 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。
SELECT * FROM emp WHERE (deptno = 10 AND job = '经理') OR (deptno = 20 AND job = '销售员');

-- 6. 找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料。
SELECT * FROM emp WHERE (deptno = 10 AND job = '经理') OR (deptno = 20 AND job = '销售员') OR (job NOT IN ('经理', '销售员') AND sai >= 20000);

-- 7. 无奖金或奖金低于1000的员工。
SELECT * FROM emp WHERE comm IS NULL OR comm < 1000;

-- 8. 查询名字由三个字组成的员工。
-- 注意:一个汉字占三个字节
SELECT * FROM emp WHERE LENGTH(ename) = 9;

-- 9.查询2000年入职的员工。
SELECT * FROM emp WHERE YEAR(hiredate) = 2000;

-- 10. 查询所有员工详细信息,用编号升序排序
SELECT * FROM emp ORDER BY empno ASC;

-- 11. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序
SELECT * FROM emp ORDER BY sai DESC, hiredate ASC;

-- 12.查询每个部门的平均工资
SELECT deptno, AVG(sai) AS avg_salary FROM emp GROUP BY deptno;

-- 13.查询每个部门的雇员数量
SELECT deptno, COUNT(*) AS employee_count FROM emp GROUP BY deptno;

-- 14.查询每种工作的最高工资、最低工资、人数
SELECT job, MAX(sai) AS max_salary, MIN(sai) AS min_salary, COUNT(*) AS employee_count FROM emp GROUP BY job;

多表查询
use mydb3;
 -- 创建部门表 
create table if not exists dept3( deptno varchar(20) primary key , -- 部门号 name varchar(20) -- 部门名字 );

-- 创建员工表 
create table if not exists emp3( eid varchar(20) primary key , -- 员工编号 ename varchar(20), -- 员工名字 age int, -- 员工年龄 dept_id varchar(20) -- 员工所属部门 );

-- 给dept3表添加数据
 insert into dept3 values('1001','研发部'); insert into dept3 values('1002','销售部'); insert into dept3 values('1003','财务部'); insert into dept3 values('1004','人事部');

-- 给emp3表添加数据
 insert into emp3 values('1','乔峰',20, '1001'); insert into emp3 values('2','段誉',21, '1001'); insert into emp3 values('3','虚竹',23, '1001'); insert into emp3 values('4','阿紫',18, '1001'); insert into emp3 values('5','扫地僧',85, '1002'); insert into emp3 values('6','李秋水',33, '1002'); insert into emp3 values('7','鸠摩智',50, '1002'); insert into emp3 values('8','天山童姥',60, '1003'); insert into emp3 values('9','慕容博',58, '1003'); insert into emp3 values('10','丁春秋',71, '1005')

1、查询每个部门的所属员工
SELECT dept3.name AS department, emp3.ename AS employee
FROM dept3
JOIN emp3 ON dept3.deptno = emp3.dept_id;
2、查询研发部门的所属员工
SELECT dept3.name AS department, emp3.ename AS employee
FROM dept3
JOIN emp3 ON dept3.deptno = emp3.dept_id
WHERE dept3.name = '研发部';


3、查询研发部和销售部的所属员工
SELECT dept3.name AS department, emp3.ename AS employee
FROM dept3
JOIN emp3 ON dept3.deptno = emp3.dept_id
WHERE dept3.name IN ('研发部', '销售部');


4、查询每个部门的员工数,并升序排序
SELECT dept3.name AS department, COUNT(emp3.eid) AS employee_count
FROM dept3
LEFT JOIN emp3 ON dept3.deptno = emp3.dept_id
GROUP BY dept3.name
ORDER BY employee_count ASC;


5、查询人数大于等于3的部门,并按照人数降序排
SELECT dept3.name AS department, COUNT(emp3.eid) AS employee_count
FROM dept3
LEFT JOIN emp3 ON dept3.deptno = emp3.dept_id
GROUP BY dept3.name
HAVING employee_count >= 3
ORDER BY employee_count DESC;

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

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

相关文章

系统学习Linux-SSH远程服务(二)

概念 安全外壳协议&#xff0c;提供安全可靠的远程连接 特点 ssh是工作在传输层和应用层的协议 ssh提供了一组管理命令 ssh 远程登陆 scp 远程拷贝 sftp 远程上传下载 ssh-copy-id ssh keygen 生成 提供了多种身份验证机制 身份验证机制 密码验证 需要提供密码 密…

pyGPlates + GPlately + PlateTectonicTools——深时时空数据分析

pyGPlates GPlately PlateTectonicTools——深时时空数据分析 摘要介绍准备example 1&#xff1a;通过DataServer对象从EarthByte serves上获取板块模型 板块重建 资料来源备注&#xff1a; gplately API文档 摘要 GPlates作为桌面图形用户界面应用&#xff0c;可用于深时地…

计算机网络 day6 arp病毒 - ICMP协议 - ping命令 - Linux手工配置IP地址

目录 arp协议 arp病毒\欺骗 arp病毒的运行原理 arp病毒产生的后果&#xff1a; 解决方法&#xff1a; ICMP协议 ICMP用在哪里&#xff1f; ICMP协议数据的封装过程 ​编辑 为什么icmp协议封装好数据后&#xff0c;还要加一个ip包头&#xff0c;再使用ip协议再次进…

【ArcGIS Pro二次开发】(50):布局(Layout)的基本操作

ArcGIS Pro SDK中的布局(Layout)是用于创建和编辑打印布局的一组功能。 Layout是打印布局的容器&#xff0c;它可以包含多个元素&#xff0c;例如地图框、文本框、图例、比例尺等。 Layout中包含多种元素&#xff0c;比较重要的有&#xff1a;地图(MapFrameElement&#xff0…

Android Hook技术实战详解

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 前言&#xff1a; 什么是Android Hook技术&#xff1f; Android Hook技术是指在Android…

1.6 运维分类与工作内容

文章目录 运维分类与工作内容1. 系统运维2. 网络运维3. 数据库运维4. 应用运维5. 安全运维结论 运维分类与工作内容 运维&#xff08;Operations and Maintenance&#xff0c;简称O&M&#xff09;是信息技术领域中负责管理和维护企业的信息技术基础设施的重要职能。随着技…

Python爬虫学习笔记(八)————Phantomjs与Chrome handless

目录 1.Phantomjs &#xff08;1&#xff09;什么是Phantomjs&#xff1f; &#xff08;2&#xff09;如何使用Phantomjs&#xff1f; 2 .Chrome handless &#xff08;1&#xff09;系统要求&#xff1a; &#xff08;2&#xff09;配置&#xff1a; &#xff08;3&…

API例子:用Python驱动采集网页数据

1 引言 本文讲解怎样用Python驱动浏览器写一个简易的网页数据采集器。开源Python即时网络爬虫项目将与Scrapy&#xff08;基于twisted的异步网络框架&#xff09;集成&#xff0c;所以本例将使用Scrapy采集淘宝这种含有大量ajax代码的网页数据&#xff0c;但是要注意本例一个严…

matlab重名函数调用踩坑记录

我新安装了matlab的robotics toolbox&#xff0c;然而调用的rotx不是我想要的函数。 我上网查了一下资料&#xff0c;知乎和csdn有相关的回答&#xff0c;但是我试了一下还是不行。它们的方法是移除路径再添加路径避免函数的冲突。相关方法放在文末的相关参考1 2。这里建议先用…

VScode跑gtest

可能得前置步骤 VScode安装cpp: 安装 C/C 扩展&#xff1a;打开 VSCode 扩展市场&#xff0c;搜索「C/C」并安装扩展。 安装编译gtest 安装 Google Test&#xff1a; 如果你使用的是 Windows&#xff0c;可以下载并安装 pre-built 版本&#xff1b;如果你使用的是 Linux 或…

ETHERNET/IP转TCP/IP网关tcp/ip协议包含哪几层

大家好&#xff0c;今天我们将带大家了解一款自主研发的通讯网关&#xff0c;远创智控YC-EIP-TCP/IP。这是一个强大的工具&#xff0c;能帮助我们将ETHERNET/IP网络和TCP/IP网络连接在一起&#xff0c;让我们更好地管理和监控网络。 1, 首先&#xff0c;让我们来看看这款网关…

orbslam3 生成标定板rosrun kalibr kalibr_create_target_pdf --type

rosrun kalibr kalibr_create_target_pdf --type apriltag --nx 6 --ny 6 --tsize 0.08 --tspace 0.3小师妹要做相机视觉标定&#xff0c;需要制作棋盘格&#xff0c;无奈其电脑有些卡&#xff0c;对此毫无经验的博主从头开始安装&#xff08;此前博主已经安装了ROS环境&#x…

leetcode 965.单值二叉树

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;单值二叉树 思路&#xff1a; 让当前的根节点与左孩子节点与右孩子节点判断&#xff0c;若相等则继续向下分治&#xff0c;让左孩子与右孩子当作新的根节点继续判断&#xff0c;直到某个节点不相等。 1️⃣ 代码&#x…

用thinkphp6写一个博客系统,输出完整项目代码

很抱歉&#xff0c;我无法提供完整项目代码。但是&#xff0c;我可以为您提供一个简单的示例&#xff0c;以帮助您开始使用 ThinkPHP 6 构建博客系统。 环境准备&#xff1a;安装 PHP 和 Composer安装并配置一个适当的 Web 服务器&#xff08;如 Apache 或 Nginx&#xff09;创…

Gateway网关组件(在Spring Cloud整合Gateway(idea19版本))

Spring Cloud Gateway官网:Spring Cloud Gateway 局域网中就有网关这个概念&#xff0c;局域网接收数据或发送数据都要通过网关&#xff0c;比如使用VMware虚拟机软件搭建虚拟机集群的时候&#xff0c;往往我们需要选择IP段中的⼀个IP作为网关地址,网关可以对请求进行控制,提升…

【Linux系统】结合有趣的小故事让你学懂生产者消费者模型

目录 由故事引入模型故事背景供货商们的矛盾市民们和供货商之间的矛盾一市民们和供货商之间的矛盾二市民们的矛盾模型总结 生产者消费者模型为什么要使用生产者消费者模型&#xff1f;生产者消费者模型的特点生产者消费者模型优点 基于BlockingQueue的生产者消费者模型C queue模…

力扣 452. 用最少数量的箭引爆气球

题目来源&#xff1a;https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/description/ C题解1&#xff1a; 根据x_end排序&#xff0c;x_start小的在前&#xff0c;这样可以保证如果第 i 个球的x_end大于等于第 j 个球的x_start时&#xff0c;第 j 个球…

ElasticSearch文档(document)在index上的增删改查

文章目录 一、document定义&#xff1a;二、单条增删改查1、创建索引&#xff1a;2、添加文档&#xff1a;3、获取文档&#xff1a;4、更新文档&#xff1a;5、删除文档&#xff1a; 三、批量增删改查&#xff1a;1、批量添加文档&#xff1a;2、批量更新文档&#xff1a;3、批…

自建DNSlog服务器

DNSlog简介 在某些情况下&#xff0c;无法利用漏洞获得回显。但是&#xff0c;如果目标可以发送DNS请求&#xff0c;则可以通过DNS log方式将想获得的数据外带出来。 DNS log常用于以下情况&#xff1a; SQL盲注无回显的命令执行无回显的SSRF 网上公开提供dnslog服务有很多…

FactoryBean源码解析

文章目录 一、简介二、FactoryBean 接口的方法三、FactoryBean 与 BeanFactory 的区别四、源码解析五、实际应用 一、简介 FactoryBean 是 Spring 框架中的一个接口&#xff0c;用来创建特定类型的 Bean 对象。实现FactoryBean 接口就可以自定义 Bean 对象的创建过程。Factory…