SQL--DQL

news2024/11/25 2:21:52

目录

1、基础查询

1. 查询多个字段 

 1. 举例

 2. 举例

2. 字段设置别名 

1. 举例

2. 举例

3. 去除重复记录

1. 举例

2、条件查询 

1. 等于(=)

2. 小于(<)

3. 小于等于(<=)

4. 没有(is null)

5. 有(is not null)

6. 不等于(!=或者<>)

7. 并且/在某个范围内(&&或者and或者between...and..) 

8. IN(...)在in之后的列表中的值,多选一 

9. like 占位符

3、聚合函数

1. 介绍

2. 常见的聚合函数 

3. 语法 

4. 举例 

1. 统计员工数量 

2. 平均、最大、最小以及和

4、分组查询

1. 语法

2. where和having的区别 

3. 注意

4. 举例

1. 根据性别分组 , 统计男性员工和女性员工的数量

2. 根据性别分组 , 统计男性员工和女性员工的平均年龄

3. 查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于3的工作地址

4. 统计各个工作地址上班的男性及女性员工的数量

 5、排序查询

1. 语法 

2. 排序方式

3. 注意

4. 举例

1. 根据年龄对公司的员工进行升序排序 

2. 根据入职时间, 对员工进行降序排序

3. 根据年龄对公司的员工进行升序排序 , 再按照入职时间进行降序排序

6、分页查询

1. 语法

2. 举例

1. 查询第1页员工数据, 每页展示10条记录


  • DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。
  • 先存储基础的数据: 
create table emp(
id int comment '编号',
workno varchar(10) comment '工号',
name varchar(10) comment '姓名',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idcard char(18) comment '身份证号',
workaddress varchar(50) comment '工作地址',
entrydate date comment '入职时间'
)comment '员工表';
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (1, '00001', '柳岩666', '女', 20, '123456789012345678', '北京', '2000-01-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (2, '00002', '张无忌', '男', 18, '123456789012345670', '北京', '2005-09-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (3, '00003', '韦一笑', '男', 38, '123456789712345670', '上海', '2005-08-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (4, '00004', '赵敏', '女', 18, '123456757123845670', '北京', '2009-12-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (5, '00005', '小昭', '女', 16, '123456769012345678', '上海', '2007-07-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (6, '00006', '杨逍', '男', 28, '12345678931234567X', '北京', '2006-01-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (7, '00007', '范瑶', '男', 40, '123456789212345670', '北京', '2005-05-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (8, '00008', '黛绮丝', '女', 38, '123456157123645670', '天津', '2015-05-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (9, '00009', '范凉凉', '女', 45, '123156789012345678', '北京', '2010-04-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (10, '00010', '陈友谅', '男', 53, '123456789012345670', '上海', '2011-01-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (11, '00011', '张士诚', '男', 55, '123567897123465670', '江苏', '2015-05-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (12, '00012', '常遇春', '男', 32, '123446757152345670', '北京', '2004-02-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (13, '00013', '张三丰', '男', 88, '123656789012345678', '江苏', '2020-11-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (14, '00014', '灭绝', '女', 65, '123456719012345670', '西安', '2019-05-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (15, '00015', '胡青牛', '男', 70, '12345674971234567X', '西安', '2018-04-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (16, '00016', '周芷若', '女', 18, null, '北京', '2012-06-01');

1、基础查询

1. 查询多个字段 

select 字段1, 字段2, 字段3 ... from 表名 ;
#查询全部字段信息
select *from 表名;

 1. 举例

#查询编号(id),工号(workno),年龄(age)
select id,workno,age from emp;

 

 2. 举例

select *from emp;

2. 字段设置别名 

select 字段1 [ as 别名1 ] , 字段2 [ as 别名2 ] ... from 表名;
select 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... from 表名;

1. 举例

select workno as '工作编号' from emp;

 

2. 举例

select name as '姓名' ,workaddress as '工作地点'from emp;

 

3. 去除重复记录

select distinct 字段列表 from 表名;

1. 举例

select distinct workaddress from emp;

 

2、条件查询 

select 字段列表 from 表名 where 条件列表 ;

1. 等于(=)

  • 查询年龄等于 88 的员工
select * from emp where age = 88;

 

2. 小于(<)

  • 查询年龄小于 20 的员工信息
select * from emp where age < 20;

 

3. 小于等于(<=)

查询年龄小于等于 20 的员工信息

select * from emp where age <= 20;

 

4. 没有(is null)

  • 查询没有身份证号的员工信息
select * from emp where idcard is null;

5. 有(is not null)

  • 查询有身份证号的员工信息
select * from emp where idcard is not null;

6. 不等于(!=或者<>)

  • 查询年龄不等于 88 的员工信息

select * from emp where age !=88;
select * from emp where age<>88;

 

7. 并且/在某个范围内(&&或者and或者between...and..) 

  • 查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息 
select * from emp where age >= 15 && age <= 20;
select * from emp where age >= 15 and age <= 20;
select * from emp where age between 15 and 20;

  • 查询性别为 女 且年龄小于 25岁的员工信息 
select * from emp where gender='女' and age<25;

8. IN(...)在in之后的列表中的值,多选一 

  •  查询年龄等于18 或 20 或 40 的员工信息
select * from emp where age=18 or age=20 or age=40;
select * from emp where age in(18,20,40);

9. like 占位符

  • 模糊匹配(_匹配单个字符, %匹配任意个字符) 
  • 查询姓名为三个字的员工信息 _ % 

 

  • 查询身份证号最后一位是X的员工信息 
select * from emp where idcard like '_________________x';

 

3、聚合函数

1. 介绍

将一列数据作为一个整体,进行纵向计算 

2. 常见的聚合函数 

函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

3. 语法 

SELECT 聚合函数(字段列表) FROM 表名 ;
  • 注意 : NULL值是不参与所有聚合函数运算的

4. 举例 

1. 统计员工数量 

select count(*) from emp; -- 统计的是总记录数
select count(idcard) from emp; -- 统计的是idcard字段不为null的记录数

2. 平均、最大、最小以及和

-- 统计员工的平均年龄
select avg(age) from emp;

-- 统计最大年龄
select max(age) from emp;

-- 统计最小年龄
select min(age) from emp;

-- 统计西安地区员工的年龄之和
select sum(age) from emp where workaddress ='西安';

4、分组查询

1. 语法

SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组
后过滤条件 ];

2. where和having的区别 

  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以 

3. 注意

  • 执行顺序: where > 聚合函数 > having 
  • 支持多字段分组, 具体语法为 : group by columnA,columnB 

4. 举例

1. 根据性别分组 , 统计男性员工和女性员工的数量

select gender,count(*) from emp group by gender;

2. 根据性别分组 , 统计男性员工和女性员工的平均年龄

select gender,avg(age) from emp group by gender;

 

3. 查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于3的工作地址

select workaddress,count(*) adress_c from emp where age<45 group by workaddress having adress_c>=3;

4. 统计各个工作地址上班的男性及女性员工的数量

select workaddress, gender, count(*) '数量' from emp group by workaddress , gender;

 

 5、排序查询

1. 语法 

select 字段列表 from表名 order by 字段1 排序方式1 , 字段2 排序方式2 ;

2. 排序方式

  • ASC : 升序(默认值)
  • DESC: 降序 

3. 注意

  • 如果是升序, 可以不指定排序方式ASC
  • 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

4. 举例

1. 根据年龄对公司的员工进行升序排序 

select * from emp order by age asc;
select * from emp order by age;

2. 根据入职时间, 对员工进行降序排序

select * from emp order by entrydate desc;

 

3. 根据年龄对公司的员工进行升序排序 , 再按照入职时间进行降序排序

select * from emp order by age asc , entrydate desc;

6、分页查询

1. 语法

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;

2. 举例

1. 查询第1页员工数据, 每页展示10条记录

select * from emp limit 0,10;
select * from emp limit 10;

 

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

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

相关文章

Java设计模式中命令模式是怎么回事/命令模式如何使用,什么场景适用

继续整理记录这段时间来的收获&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 6.4 命令模式 6.4.1 定义 将一个请求封装为一个对象&#xff0c;使发出请求的责任和执行请求的责任分隔开&#xff0c;方便了将命令对象进行存储&#xff0c;传递…

激活函数(26个)

最近在学习网络&#xff0c;发现一会这个网络用了这个激活函数&#xff0c;一会那个网络用了那个激活函数&#xff0c;这些激活函数都有什么作用啊&#xff0c;不知道&#xff0c;这里学习一下&#xff0c;整理下来&#xff0c;方便以后查阅。 激活函数&#xff08;26个&#x…

Elasticsearch7.8.0版本高级查询——组合查询文档

目录一、初始化文档数据二、组合查询文档2.1、概述2.2、示例一、初始化文档数据 在 Postman 中&#xff0c;向 ES 服务器发 POST 请求 &#xff1a;http://localhost:9200/user/_doc/1&#xff0c;请求体内容为&#xff1a; {"name":"张三","age"…

ruoyi_cloud==启动

1-下载ruoyi_cloud源码&#xff0c;新建数据库 下载ruoyi_cloud源码&#xff0c; 新建数据库ry-config&#xff0c;并在数据库中执行ruoyi-cloud源码中ry_config_20220929.sql &#xff0c; 即导入若依这个项目的一些交给nacos管理的配置信息&#xff0c;后面nacos会来读取。…

[java/初学者]类的继承

前言 继承是OOP的三大特征之一&#xff0c; 它的作用是在现有类的基础上派生出一个新的类&#xff0c;这个类中继承了现有类的数据属性和行为&#xff0c;并且能进行扩展。 基于这一特性&#xff0c;我们将前者命名为“父类”或者“基类”&#xff0c;而后者则因此命名为“子…

【matplotlib】20.其他图

#【matplotlib】20.其他图 2023.1.20 polt为点线图&#xff0c;后面我们看看plt里面的其他图 20.1 Scatter 散点图 plt.scatter() import matplotlib.pyplot as plt import numpy as npn 1024x np.random.normal(0,1,n) y np.random.normal(0,1,n)# 颜色 这个应该是个tan值…

Java多线程02(生命周期,线程安全synchronized(),锁Lock )

目录1.线程的生命周期2.线程安全和同步代码块synchronized()3.Lock锁1.线程的生命周期 2.线程安全和同步代码块synchronized() synchronized(锁){ 操作共享数据的代码 }//保证线程安全 锁默认打开&#xff0c;有一个线程进去了&#xff0c;锁自动关闭。里面的代码全部执行完毕…

DFS(一)深度优先搜索(Depth First Search)一条道走到黑

目录 一、盒子与扑克牌 二、员工的重要性 三、图像渲染 一、盒子与扑克牌 假如有编号为1~3的3张扑克牌和编号为1~3的3个盒子&#xff0c;现在需要将3张牌分别放到3个盒子中去&#xff0c;且每个盒子只能放 一张牌&#xff0c;一共有多少种不同的放法。 当走到一个盒子面前的…

【Python-Django】医疗辅助平台-数据库设计-day2.1

操作需知&#xff1a; MySQL存储很长500的汉字选用字符类型_mysql字符串太长用什么存_信息时代弄潮儿的博客-CSDN博客 mysql中的Varchar(255)可以放多少个汉字_Ecloss的博客-CSDN博客_varchar255能存多少汉字 MySQL中的Text类型_SlowIsFastLemon的博客-CSDN博客_text类型 …

自制win10 PE usb启动盘教程

拿出祖传的U盘&#xff08;16GB&#xff09;安装老白菜根据教程制作U盘然后在U盘ios文件夹里面放入从系统之家下载的win10 ios文件包然后把U盘插入需要安装的电脑上面重启电脑按住F10打开BIOS设置界面USB启动设置为<启用>将UEFI和传统模式下的&#xff1a;U盘/USB硬盘USB…

【数据结构前言】

前言&#xff1a; 在之前我们已经有了C语言的基础&#xff0c;掌握了一些基本知识过后我们就可以进行其他方面的学习了&#xff0c;继我们学完C语言之后我们将会学习数据结构的相关知识&#xff0c;今天先让大家对其进行初步的认识&#xff01; 目录1. 什么是数据结构&#xff…

SpringCloud(13):分布式配置中心

1 为什么需要分布式配置中心&#xff1f; 在分布式系统中&#xff0c;由于服务数量巨多&#xff0c;为了方便服务配置文件统一管理&#xff0c;所以需要分布式配置中心组件。在Spring Cloud中&#xff0c;有分布式配置中心组件spring cloud confifig &#xff0c;它支持配置服…

增量式PID控制算法及仿真

当执行机构需要的是控制量的增量&#xff08;例如驱动步进电机&#xff09;时&#xff0c;应采用增量式PID控制。根据递推原理可得&#xff1a;增量式PID控制算法:根据增量式PID控制算法&#xff0c;设计了仿真程序&#xff0c;被控对象如下:PID控制参数:kp8&#xff0c;ki 0.1…

普中科技MicroPython基于esp32的基础教程-02

容器类型数据 序列 存放多值的连续内存空间&#xff0c;并且通过编号访问&#xff0c;其实就是类似于C语言的数组&#xff0c;相同数据类型、连续内存空间、使用下标访问 序列索引 支持正负操作&#xff0c;0到N&#xff0c;-N到-1 &#xff0c;但是C语言不支持负操作 个人觉…

温度、压力、物位仪表工作原理

温度、压力、物位仪表工作原理 一、温度仪表 1、温度仪表通常分一次仪表与二次仪表&#xff0c;一次仪表通常为&#xff1a;热电偶、热电阻、双金属温度计、就地温度显示仪等。二次仪表通常为温度记录仪、温度巡检仪、温度显示仪、温度调节仪、温度变送器等。 2、温度测量仪表…

Java基础进阶

Stream流 引例 需求&#xff1a;按照下面要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素 1. 把所有以“曹”开头的元素存储到新集合中 2. 把曹开头&#xff0c;长度为3的元素存储到新集合中 List<String> list List.of("曹操", "…

【6s965-fall2022】剪枝✂pruningⅡ

剪枝比例 问题&#xff1a;我们应该如何找到每层的剪枝比率&#xff1f; 较浅的层&#xff0c;低层次的特征较深的层&#xff0c;抽象的特征 问题&#xff1a;哪些层的冗余度最高&#xff1f; 非统一剪枝&#xff08;每一层的稀疏度不一样&#xff09;比统一剪枝&#xff0…

python学习 --- 集合基础

目录 一、什么是集合&#xff1f; 二、集合的创建方式 1、直接使用{} 2、使用内置函数set() 三、集合的相关操作 1、集合元素的判断 2、集合元素的新增 3、集合元素的删除 四、集合间的关系 五、集合的数学操作 1、交集操作 2、并集操作 3、差集操作 4、对称差集…

基于微信小程序的校园商铺系统小程序

文末联系获取源码 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏览器…

2022大数据产业年度“国产化优秀代表厂商”榜单发布,亚信科技AntDB数据库位列其中

国产化/信创亚信科技 ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 亚信科技也做数据库&#xff1f;实际上亚信科技AntDB是我国最早的国产数据库产品之一&#xff0c;是在21世纪初国外品牌数据库无法满足我国暴涨的通信需求的情况下&#xff0c;为了帮助通信运用商更好…