MySQL基础——DQL语句

news2024/11/24 4:03:17
select 聚合函数(字段列表) from 表名;

Mysql的相关知识
好处 :
1.持久化数据到本地
2.可以实现结构化查询,方便管理
数据库主要分为:

DB(数据库),保存一系列有组织的数据容器。
DBMS(数据库管理系统),用于对DB获得数据进行操作管理,又称为数据库软件(产品)
SQL(结构化查询语言,用于和DBMS通信的语言):DML语言,TCL语言,DDL语言,DQL语言;

一、什么是DQL?

DQL(查询表中的数据)通俗来讲就是查询数据库中表的数据,主要用SELECT关键字去对表中想要的数据去进行查找,用WHERE写条件去约束查找的内容。接下来和小伙伴们分享DQL的操作语句。

二、DQL查询语句

1.语法

select
	字段列表
from
	表名列表
where
	条件列表
group by
	分组字段                                   
having
	分组之后的条件
order by
	排序
limit
	分页限定

2.基础查询

1.多个字段查询

	select 字段名1,字段名2, ...  from  表名;
		
	注意:如果查询所有字段,则可以使用*来代替字段

2.计算列

	select *,(数值1+数值2+...+数值n)  新列名  from 表名;

	一般可以使用四则运算计算一些列的值。(一般只会进行数值型计算)	
	
	注:如果数值存在null,则最终结果为null。

	这里可以使用ifnull(表达式1,表达式2),表达式1为需要判断是否为null,如果为空,则替换为
	表达式2的值。

3.去除重复:

	关键字  distinct

	select  distinct  字段名   from   表名;

(1)起别名
特点:
1.便于理解;
2.当要查询多个字段时,出现重名的情况,使用别名可以区分开;
方式一:使用关键字AS

  SELECT 查询列表 AS 别名,查询列表 AS 别名 FROM 表;

方式二:使用空格

  SELECT 查询列表 别名,查询列表  别名 FROM 表;

(2)去重

运用关键字DISTINCT进行去重显示;

SELECT DISTINCT department_id FROM employees;
# 一、基本查询
SELECT*FROM emp;
# 1.查询指定字段name,workno,age返回
SELECT NAME,workno,age FROM emp;
# 2.查询所有字段返回
SELECT*FROM emp;

SELECT id,workno,NAME,gender,age,idcard,workaddress,entrydate FROM emp;
# 3.查询所有员工的工作地址,起别名
SELECT workaddress AS '工作地址' FROM emp;
# as可以省略
SELECT workaddress '工作地址' FROM emp;
# 4.查询公司员工的上班地址(不要重复)
SELECT DISTINCT workaddress AS '工作地址' FROM emp;

2.条件查询


语法(运算步骤):
select 查询列表;(3) from 表名;(1) where 筛选条件;(2)
分类:
1.按条件表达式筛选
  条件运算符:> < = <>(!=) >= <=
2.按逻辑表达式筛选
  逻辑运算符:and(&&) or(||) not(!)
3.模糊查询
  like , between and , in , is null

一、按条件表达式筛选
二、逻辑运算符筛选

and(&&) or(||) not(!)
用于:需要多个条件表达式来进行判断时;

三、模糊查询
1.like(查找含有某种特殊的范围)
特点:一般和通配符搭配使用,可以判断字符型和数值型;
通配符:
'% '为任意多个字符,也包含0字符;
'_ '为任意单个字符;

2.between and(查询某范围的)

3.in(查询包含某一类的)
说明:判断某字段的值是否属于in列表中的某一项;
特点:
①使用in可以提高语句的简洁度;
②in列表的值类型必须一致或者兼容;
③in列表不能使用通配符;

4.is null(判断是否为null值)
注意:=或者<>不能用于判断null值;
用于:is null 或者 is not null 用于判断null值,可读性较高;
补充:isnull函数,用于:判断某字段或表达式是否为null,是返回1,否返回0;

5.安全等于 :<=>
说明:可读性较小,既可以判断null值,也可以判断普通数值
代码演示:

# 二、条件查询
# 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.查询没有身份证的员工信息
SELECT*FROM emp WHERE idcard IS NULL;
# 5.查询有身份证号的员工信息
 SELECT*FROM emp WHERE idcard IS NOT NULL;
# 6.查询年龄不等于88的员工信息(两种写法)
SELECT * FROM emp WHERE age <> 88;
SELECT * FROM emp WHERE age!=88;
# 7.查询年龄在15岁(包含)到20岁(包含)之间的员工信息(三种写法)
SELECT * FROM emp WHERE age BETWEEN 15 AND 20;
SELECT * FROM emp WHERE age>=15 AND age <=20;
SELECT * FROM emp WHERE age>=15 && age <=20;
# 8.查询性别为女且年龄小于25岁的员工信息(两种写法)
SELECT * FROM emp WHERE gender='女' AND age<25;
SELECT * FROM emp WHERE gender='女' && age<25;
# 9.查询年龄等于18或20或40的员工信息(两种写法)
SELECT * FROM emp WHERE age=18 OR age=20 OR age=40;
SELECT * FROM emp WHERE age IN (18,20,40);
# 10.查询姓名为两个字的员工信息
SELECT * FROM emp WHERE NAME LIKE '__';
# 11.查询身份证号最后一位是X的员工信息(两种写法)
SELECT*FROM emp WHERE idcard LIKE'%X';
SELECT*FROM emp WHERE idcard LIKE'_________________X';  # 前面写可以写17个'_';

3、聚合函数

(1)介绍

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

(2)常见聚合函数

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

(3)语法

select 聚合函数(字段列表) from 表名;

代码演示:

# 三、聚合函数
# 1.统计该企业员工数量
SELECT COUNT(*) AS '员工数量' FROM emp;
# 2.统计该企业员工的平均年龄
SELECT AVG(age) '平均年龄' FROM emp;
# 3.统计该企业的员工最大年龄
SELECT MAX(age) '最大年龄' FROM emp;
# 4.统计该企业的员工最小年龄
SELECT MIN(age) '最小年龄' FROM emp;
# 5.统计西安地区员工的年龄之和
SELECT SUM(age) FROM emp WHERE workaddress='西安';

4、分组查询

1.语法

select 字段列表 from 表名 [where条件] group by 分组字段名[having 分组后过滤条件];

2.where 与 having的区别:

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

3.代码演示:

 四、分组查询
# 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(*) AS c FROM emp WHERE age<45 GROUP BY workaddress HAVING c>=3;

5、排序查询

1、语法

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

2、排序方式

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

注意:如果是多字段排序,当地一个字段值相同时,才会根据第二个字段进行排序

3、代码演示:

# 五、排序查询
# 1.根据年龄对公司的员工进行升序排序
SELECT * FROM emp ORDER BY age ASC;
# 2.根据入职时间,对员工进行降序排序
SELECT * FROM emp ORDER BY entrydate DESC;
# 3.根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序
SELECT * FROM emp ORDER BY age ASC,entrydate DESC;

6、分页查询

1、语法

select 字段列表 from 表名 limit 起始索引,查询记录数;

2、注意:

  • 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL是LIMIT。
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。

3、代码演示:

# 六、分页查询
# 1.查询第一页员工数据,每页展示10条记录
SELECT * FROM emp LIMIT 10;
# 2.查询第二页员工数据,每页展示10条记录
SELECT * FROM emp LIMIT 10,10;

7、案例练习


# 七、DQL语句练习
# 1.查询年龄为20,21,22,23岁的女性员工信息(两种写法)
SELECT * FROM emp WHERE gender='女' AND age=20 OR age=21 OR age=22 OR age=23;
SELECT * FROM emp WHERE gender='女' AND age IN (20,21,22,23);
# 2.查询性别为男,并且年龄在20~40岁以内的姓名为三个字的员工(两种写法)
SELECT*FROM emp WHERE gender='男' AND age BETWEEN 20 AND 40 AND NAME LIKE'___';
SELECT*FROM emp WHERE gender='男' AND age >=20 AND age<=40 AND NAME LIKE'___';
# 3.统计员工表中,年龄小于60岁的,男性员工和女性员工的人数
SELECT gender,COUNT(*) FROM emp WHERE age<60 GROUP BY gender;
# 4.查询所有年龄小于等于35岁的员工姓名和年龄,并对查询结果按照年龄升序排序,如果年龄相同按照入职时间降序排序
SELECT NAME,age FROM emp WHERE age<=35 ORDER BY age ASC,entrydate DESC;
# 5.查询性别为男,且年龄在20~40岁(包含)以内的前五个员工信息,对查询的结果按照年龄升序排序,年龄相同按照入职时间升序排序
SELECT*FROM emp WHERE gender='男' AND age>=20 AND age<=40 ORDER BY age ASC,entrydate ASC LIMIT 5;

8、执行顺序

 

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

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

相关文章

[蓝桥杯 2017 省 B] k 倍区间(前缀和枚举/数论优化)

题目传送门 思路分析&#xff1a; 第一思路比较容易想到&#xff0c;就是枚举所有的前缀和&#xff0c;然后遍历它们计数满足题意的前缀和数量&#xff0c;最后输出即可&#xff0c;但是这里的数列最多达到了100000&#xff0c;在2层循环下&#xff0c;总的枚举次数就达到了O(…

webpack 的基本使用及配置

webpack 的基本使用配置 npm 镜像源创建列表隔行变色案例新建空白项目目录&#xff0c;初始化 package.json 配置文件通过 npm 安装 jquery新建 src 源代码目录index.htmlindex.js检查网页效果webpack 的安装webpack 的安装dependencies 与 devDependencies参数 -S 及 --save参…

规则引擎easy-rule快速入门及整合SpEL使用

规则引擎介绍 规则引擎解决的实际上就是判断条件分支过多的问题&#xff0c;举个例子&#xff0c;营销策略里&#xff0c;消费不足200&#xff0c;可用10元消费券&#xff0c;消费超过200元&#xff0c;可以享受9折优惠&#xff0c;超过400元和享受8折优惠。这里可以直接用if …

【houdini】带着uv进行模拟(冰激凌案例)

整个sop的路线图 前半部分&#xff1a;赋予材质并分离冰激凌球 一般模型是分部分的&#xff0c;比方说下面这个冰激凌的&#xff0c;分为5个部分。三个不同的冰激凌球和水和杯子。这些部分在houdini中被称为group。 用material节点一口气赋予5个group材质。 具体的材质的指…

【Linux】 gcc 、动态库和静态库,程序是如何链接的

文章目录前言一、gcc 是什么&#xff1f;二、使用步骤1.预编译2.编译3.汇编4.链接三、动静态库1.概念2.区别前言 在Linux环境下&#xff0c;除了学好编辑器 vim 的使用&#xff0c;还需要学会C语言的编译器 gcc 的功能&#xff0c;否则代码无法翻译成可执行程序。本文将介绍 gc…

怎样快速地迁移 MySQL 中的数据?

我们通常会遇到这样的一个场景&#xff0c;就是需要将一个数据库的数据迁移到一个性能更加强悍的数据库服务器上。这个时候需要我们做的就是快速迁移数据库的数据。那么&#xff0c;如何才能快速地迁移数据库中的数据呢&#xff1f;今天我们就来聊一聊这个话题。数据库的数据迁…

Spring Boot 日志详解

Spring Boot 日志一、日志有什么用二、日志怎么用三、自定义日志打印3.1 在程序中得到日志对象3.2 使用日志对象打印日志四、日志级别4.1 日志级别有什么用4.2 日志级别的分类与使用4.3 日志级别设置五、日志持久化5.1 配置文件名5.2 配置保存路径六、更简单的日志输出 -- lomb…

Go第 13 章 :2-客户信息关系系统

Go第 13 章 &#xff1a;2-客户信息关系系统 13.1 项目需求分析 模拟实现基于文本界面的《客户信息管理软件》。该软件能够实现对客户对象的插入、修改和删除&#xff08;用切片实现&#xff09;&#xff0c;并能够打印客户明细表 13.2 项目的界面设计 主菜单界面 添加客户…

SegFormer笔记(1)安装

一、代码地址github地址&#xff1a;https://github.com/NVlabs/SegFormer二、我的系统配置&#xff1a;1、硬件2、软件win10&#xff0c;vs2022&#xff0c;python3.7三、创建虚拟环境conda create -n MySegFormer python3.7 numpy conda activate MySegFormer python会显示如…

【知识图谱工具汇总】

一&#xff0c;图表示学习与计算框架 1&#xff09;PyTorch Geometric&#xff08;PyG&#xff09; 由德国多特蒙德工业大学研究者推出的基于PyTorch的几何深度学习扩展库。PyG在学术中是比较热门的框架&#xff0c;但是PyG对于异构图以及大规模的图的学习存在着较大的局限性…

【UE4 第一人称射击游戏】39-“M4A1”武器设置

上一篇&#xff1a;【UE4 第一人称射击游戏】38-拾取“M4A1”的提示信息步骤&#xff1a;在“AK47”文件夹中拷贝一份“Weapon_Base”拷贝到“M4A1”文件夹下&#xff0c;重命名为“Weapon_M4A1”打开“Weapon_M4A1”&#xff0c;新添加一个网格体组件骨架网格体选择“M4A1_wea…

Linux编辑器-gcc/g++使用

目录 背景&#xff1a; 预处理&#xff1a; 编译&#xff1a; 汇编&#xff1a; 连接&#xff1a; 静态连接&#xff1a; 动态连接&#xff1a; 自动化编程make/makefile&#xff1a; 背景&#xff1a; 我们知道任何一个c语言或者c文件想要生成一个可执行程序必须完成4个…

NotepadAttr

EntityMyPKAttr目录概述需求&#xff1a;设计思路实现思路分析1.Notepads2.EntityMyPK3.EntityMyPKAttr4.EntitiesMyPK5.EntityMyPKEntityMyPKAttrEntitiesMyPKWebContralBaseAtParaCashChartType参考资料和推荐阅读Survive by day and develop by night. talk for import biz …

JS面试题--JS函数式编程

JS函数式编程 实现apply、call、bind 01_call函数的实现 // apply/call/bind的用法 // js模拟它们的实现? 难度// 给所有的函数添加一个hycall的方法 同个原型链 Function.prototype.hycall function (thisArg, ...args) {// 在这里可以去执行调用的那个函数(foo)// 问题: …

亚马逊云科技:“云”筹帷幄,打造数据驱动型企业

数据对提高企业生产和资源配置的效率、优化经济结构的作用日益凸显。工业和信息化部发布的《“十四五”大数据产业发展规划》已明确将数据作为新时代重要的生产要素和国家基础性战略资源。埃森哲研究显示&#xff0c;到2022年&#xff0c;90%的企业战略明确将把数据作为关键的企…

前端面试题回顾——React重要知识

文章目录React相关问题1. 函数式组件与Class组件有什么不同&#xff1f;2. 说说React的fiber架构&#xff1f;3. 协调4. 虚拟DOM (Virtual DOM)React相关问题 1. 函数式组件与Class组件有什么不同&#xff1f; 答&#xff1a; ① 函数式组件不需要继承&#xff0c;直接 “fun…

数据结构基础——认识数据结构与算法

目录 &#x1f354;什么是数据结构&#xff1f; &#x1f32d;1.数据的逻辑结构 &#x1f32d;NUM 1 : 集合 &#x1f32d;NUM 2 : 线性结构 &#x1f32d;NUM 2 : 树形结构 &#x1f32d;NUM 4 :图结构&#xff08;网状结构&#xff09;…

浅谈反弹shell

目录反弹shell总结一、文件描述符二、重定向1、输入重定向2、输出重定向3、错误输出重定向4、exec 绑定重定向三、实现反弹shell的几种方式方法一&#xff1a; find 反弹ubuntu find反弹shell失败的问题任务计划反弹shell失败的问题方法二&#xff1a;使用python反弹&#xff0…

Flink系列-4、Flink运行架构

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 大数据系列文章目录 官方网址&#xff1a;https://flink.apache.org/ 学习资料&#xff1a;https://flink-learning.org.cn/ 目录Flink基石Fli…

刚当上leader,我让组员去开会,他非说有更重要的会

☆ 职场上经常有那么一种情况就是组长喊组员开会&#xff0c;开周会&#xff0c;开晨会&#xff0c;开各种会&#xff0c;而更有一种常见的情况呢就是组长缺失威严&#xff0c;喊组员开会&#xff0c;组员不听话&#xff0c;说有更重要的会议&#xff0c;不想参加。 ☆ 本文将以…