MYSQL数据库基本操作-DQL-基本查询

一.概念

数据库管理系统一个重要功能就是数据查询。数据查询不应是简单返回数据库中存储的数据,还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示。

MySQL提供了功能强大,灵活的语句来实现这些操作。

MySQL数据库使用select语句来查询数据。

二:语法

 三:数据准备

四.简单查询 

五.运算符

1.简介

数据库中的表结构确立后,表中的数据代表的意义就已经确定。通过MySQL运算符进行运算,就可以获取到表结构以外的另一种数据。

例如。学生表中存在一个birth字段,这个字段表示学生的出生年份。而运用MySQL的算术运算符用当前的年份减学生出生的年份,那么得到的就是这个学生的实际年龄数据。

2.类型

(1)算术运算符

(2)比较运算符

(3)逻辑运算符

(4)位运算符

位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数。

六.运算符操作

1.算术运算符

2.条件查询

%用于表示任意字符;'_'匹配单个字符;

如果求最小值时,有个值为null,则不会进行比较,结果直接为null;

如果求最大值时,有个值为null,则不会进行比较,结果直接为null;

3.位运算符

位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数。

(1)位与

每一位相比较,都为1,结果才为1

(2)位或

 每一位相比较,只要有一个为1,结果就是1(结果为0111,再转化为十进制:7)

(3)位异或

每一位相比较,相同为0,不同为1(结果是0110,转化为十进制:6)

向右移一位,补零(转化为十进制:1)

(4) 向左移一位,补零(转化为十进制:6)

(5)0变成1,1变成0

七:排序查询

1.介绍

如果我们需要对读取的数据进行排序,就可以使用MySQL的 order by 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果

2.语法

3.特点

(1)asc代表升序,desc代表降序,如果不写默认升序

(2)order by 用于子句中可以支持单个字段,多个字段,表达式,函数,别名

(3)order by 子句,放在查询语句的最后面,LIMIT子句除外

八:聚合查询

1.简介

之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个单一的值;另外聚合函数会忽略空值。

2.函数

-- 1.查询商品的总个数
select count(pid) from product;
select count(*) from product;-- 2.查询价格大于200商品的总个数
select count(pid) from product where price > 200;-- 3.查询分类为'c001'的所有商品总和
select sum(price) from product where category_id = 'c001';-- 4.查询商品的最大价格
select max(price) from product;-- 5.查询商品的最小价格
select min(price) from product;-- 6.查询分类为'c002'所有商品的平均价格
select avg(price) from product where category_id = 'c002';

3.聚合查询对null值的处理

(1)count函数对null值的处理

如果count函数的参数为星号(*)【count(1)也代表全部,与count(*)相同】,则统计所有记录的个数。而如果参数为某字段,不统计含null值的记录个数

(2)sum和avg函数对null值的处理

这两个函数忽略null值的存在,就好像该条记录不存在一样

(3)max和min函数对null值的处理

max和min两个函数同样忽略null值的存在

九:分组查询

1.简介

分组查询是指使用 group by 子句对查询信息进行分组(分组可以根据一个字段,也可以根据多个字段,如果是一个字段,则该字段相同就会分到一组,如果是对公字段,则多个字段都相同才能分到同一组

2.操作:统计各个分类商品的个数

如果要进行分组的话,则select字句之后,只能出现分组的字段和统计函数,其他的字段不能出现(分组之后,selete的后面只能写分组字段和聚合函数)

由图可得,先找到表,再group by 分成几个想要的表,再进行count,再筛选想要的字段表示出来 

3.分组之后的条件筛选—having

(1)分组之后对统计结果进行筛选的话必须使用having,不能使用where

(2)where子句用来筛选from子句中指定的操作所产生的行

(3)group by 子句用来分组where子句的输出

(4) having子句用来从分组的结果中筛选行

(selete-->from-->where-->group by-->having)

十:分页查询-limit

1.简介

分月查询再项目开发中常见,由于数据量很大,显示屏长度有限,因此对数据需要采取分页显示方式,例如数据共有30条,每页显示5条,第一页显示1-5条,第二页显示6-10条

2.操作

十一:insert into select语句

1.简介:将一张表的数据导入到另一张表中,可以使用insert into select语句

2.格式

十二:正则表达式--regexp

1.介绍

正则表达式描述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述,用来匹配规则,匹配一系列符合某个语法规则的字符串,在开发中,正则表达式通常被用来检索,替换那些符合某个规则的文本。MYSQL通过regexp关键字支持正则表达式进行字符串匹配。

2.格式(符合条件则匹配,结果为1,否则为0)

3.操作

use  mydb1;
-- 正则表达式-- ^在字符串开始处进行匹配
-- 从product表中筛选出pname(商品名称)是以海开头的-- $在字符串末尾进行匹配
select 'abc' regexp 'a$';   -- 0
select 'abc' regexp 'c$';   -- 1
select * from product where pname regexp '水$';
-- 从product表中筛选出pname(商品名称)是以水结尾的-- .匹配任意单个字符(除了换行符之外的任意字符)
select 'abc' regexp '.b';   -- 1
select 'abc' regexp '.c';   -- 1
select 'abc' regexp 'a.';   -- 1-- [...]匹配括号内的任意单个字符
select 'abc' regexp '[xyz]';   -- 0
-- 任意字符是否在前面出现,未出现过为0,xyz未在abc中出现过
select 'abc' regexp '[xaz]';   -- 1-- [^...]注意^只有在[]内才是取反的意思,在别的地方都是表示开始处匹配
select 'abc' regexp '[^xyz]';   -- 1
-- 任意字符是否在前面出现,未出现过为1,xyz未在abc中出现过
select 'abc' regexp '[^axy]';   -- 0
select 'abc' regexp '[^a]';   -- 1
-- 除了a,还有其他字符,也算-- a*匹配0个或多个a,包括字符串。可以作为占位字符使用,有没有指定字符都可以匹配到数据
select 'stab' regexp '.ta*b';   -- 1
select 'staaab' regexp '.ta*b'; -- 1
select 'stb' regexp '.ta*b';    -- 1
select '' regexp 'a*';					-- 1-- a+ 匹配1个或者多个(至少一次),但是不包括空字符串
select 'stab' regexp '.ta+b';  -- 1
select 'stb' regexp '.ta+b';   -- 0-- a? 匹配0个或者1个a
select 'stb' regexp '.ta?b';   -- 1
select 'stab' regexp '.ta?b';  -- 1
select 'staab' regexp '.ta?b'; -- 0-- a1|a2 匹配a1或a2都行
select 'a' regexp 'a|b';    -- 1
select 'b' regexp 'a|b';    -- 1
select 'b' regexp '^(a|b)'; -- 1
select 'a' regexp '^(a|b)'; -- 1
select 'c' regexp '^(a|b)'; -- 0
-- 匹配是否以a或b开头-- a{m} 匹配m个a
select 'auuuuc' regexp 'au{4}c';  -- 1
select 'auuuuc' regexp 'au{3}c';  -- 0-- a{m,} 匹配m个或者更多个a(至少m个)
select 'auuuuc' regexp 'au{3,}c';  -- 1
select 'auuuuc' regexp 'au{4,}c';  -- 1
select 'auuuuc' regexp 'au{5,}c';  -- 0-- a{m,n} 匹配m到n个a,包含m和n
select 'auuuuc' regexp 'au{3,5}c';   -- 1
select 'auuuuc' regexp 'au{4,5}c';   -- 1
select 'auuuuc' regexp 'au{5,10}c';  -- 0-- (abc) abc作为一个序列匹配,不用括号括起来都是用单个字符去匹配,如果要把多个字符作为一个整体去匹配就需要用到括号,所以括号适合上面的所有情况
select 'xababy' regexp 'x(abab)y';    -- 1
select 'xababy' regexp 'x(ab)*y';     -- 1
-- 匹配0个或多个ab
select 'xababy' regexp 'x(ab){1,2}y'; -- 1
-- 匹配1到2个ab
select 'xababy' regexp 'x(ab){3}y';   -- 0

其他注意事项: 

(1)书写顺序:select-->from-->where-->group by-->having-->order by-->limit 

(2)执行顺序:from-->where-->group by-->count(*)-->having-->select-->order by-->limit

(3)ifnull(comm,0)   如果comm的值为null,则当作0,不为null,则还是原来的值 

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

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

相关文章

【学术论文写作】 鲁棒性实验写作的行文逻辑

文章目录 一、声明二、行文思路三、示例范文一范文二 一、声明 自己总结的,有问题望指正! 二、行文思路 为什么要做鲁棒性测试怎么做实验结论对结果的解释 三、示例 PPT 范文一 2022, TIM, “A Robust and Reliable Point Cloud Recognition Netw…

GPT-5不叫GPT-5?下一代模型会有哪些新功能?

OpenAI首席执行官奥特曼在上周三达沃斯论坛接受媒体采访时表示,他现在的首要任务就是推出下一代大模型,这款模型不一定会命名GPT-5。虽然GPT-5的商标早已经注册。 如果GPT-4目前解决了人类任务的10%,GPT-5应该是15%或者20%。 OpenAI从去年开…

【JavaEE进阶】 MyBatis使用XML实现增删改查

文章目录 🎍前言🍀配置连接字符串和MyBatis🍃写持久层代码🚩添加mapper接⼝🚩添加UserInfoXMLMapper.xml🚩单元测试 🌴增(Insert)🚩返回⾃增id 🎋删(Delete)&…

【Vue3】组件通信

Vue3组件通信和Vue2的区别: 移出事件总线,使用mitt代替。vuex换成了pinia。把.sync优化到了v-model里面了。把$listeners所有的东西,合并到$attrs中了。$children被砍掉了。 1. props 若 父传子:属性值是非函数。若 子传父&…

泡泡玛特旗下IP亮相2024米兰时装周 LABUBU等化身时尚观察员​

2024年1月14日,在意大利米兰时装周上,泡泡玛特旗下IP THE MONSTERS成员LABUBU、ZIMOMO惊艳亮相PRONOUNCE珀琅汐2024秋冬大秀现场,作为时尚观察员的LABUBU和ZIMOMO以其独特的潮玩形象打动了顶级时尚圈。 据了解,泡泡玛特和PRONOUNC…

Qt简介及安装

“这不属于我,因为沉默背后也有冲动” 在互联网当中,最关注的几个比较核心的岗位: 🛶 后端开发 🛶 前端开发 🛶 算法工程师 🛶 游戏开发 像后端开发中有认识…

VUE+Vis.js鼠标悬浮title提前显示BUG解决方法

在使用VUEVis.js做拓扑图,利用鼠标悬浮放在图标展示设备信息时,发现鼠标一放在图标上面时,标题表会提前在放置的元素下显示,鼠标再放到图标上去元素才会隐藏变成悬浮状态 解决方法: 添加一个div元素,设置v…

linux修改文件夹下所有文件的权限(常用)

1、 修改文件夹下所有文件的权限 # filename为要修改的文件夹名字。-R应该是表示递归修改filename文件夹下所有文件的权限 sudo chmod -R 777 filename2、linux修改单个文件夹权限 sudo chmod 600 (只有所有者有读和写的权限) sudo chmod 644 &#…

Java 设计者模式以及与Spring关系(七) 命令和迭代器模式

简介: 本文是个系列一次会出两个设计者模式作用,如果有关联就三个,除此外还会讲解在spring中作用。 23设计者模式以及重点模式 我们都知道设计者模式有3类23种设计模式,标红是特别重要的设计者模式建议都会,而且熟读于心&#…

什么是EJB?

什么是EJB? EJB (Enterprise JavaBeans) 是一种用于开发企业级应用程序的 Java 服务器端组件模型。它是一种分布式对象架构,用于构建可移植、可伸缩和可事务处理的企业级应用。 EJB 提供了一种将业务逻辑组件化、模块化的方式,使开发人员能够…

李跳跳派大星v2.2.0软件安装教程(附软件下载地址)

软件简介: 软件【下载地址】获取方式见文末。注:推荐使用,更贴合此安装方法! 李跳跳派大星v2.2.0最新安卓版是一款功能强大的Guang告屏蔽软件。它为用户提供了一种快速、便捷的方式来去除各种软件中的开屏Guang告,让…

《WebKit 技术内幕》学习之五(4): HTML解释器和DOM 模型

4 影子(Shadow)DOM 影子 DOM 是一个新东西,主要解决了一个文档中可能需要大量交互的多个 DOM 树建立和维护各自的功能边界的问题。 4.1 什么是影子 DOM 当开发这样一个用户界面的控件——这个控件可能由一些 HTML 的标签元素…

Spring Security 之摘要认证

摘要认证 注意: 在现代应用程序中不应该使用摘要认证,因为它不被认为是安全的。最明显的问题是你必须以明文或加密或 MD5 格式存储密码。所有这些存储格式都被认为是不安全的。相反,你应该使用单向自适应密码哈希(如 bCrypt、PBKDF2、SCrypt 等)来存储凭据,而这是摘要认…

STL第一讲

一、认识headers、版本、重要资源 1. C Standard Library和Standard Template Library 前者:c标准库;后者直译为“标准模板库” 区别: C标准库:是c编译器提供的自带的头文件(不带.h后缀)新版兼容C的头文件的形式cxxxx;旧版的xxx…

简单Web UI 自动化测试框架 seldom

pyse 更名为 seldom WebUI automation testing framework based on Selenium and unittest. 基于 selenium 和 unittest 的 Web UI自动化测试框架。 特点 提供更加简单API编写自动化测试。提供脚手架,快速生成自动化测试项目。自动生成HTML测试报告生成。自带断言方…

100GB Mellanox InfiniBand 网卡虚拟化技术调研

调研目的 验证 Mellanox InfiniBand 100GB网卡和SR650 Server能兼容 ThinkSystem SR650 Power On (Booting OS or in undetected OS) Machine Type/Model7X05CTO1WW 验证 SR-IOV虚拟话技术在BIOS/Firmware/Kernel/QEMU/Libvirt能被支持 4.18.0-305.19.1.el8_4.x86_64 验证…

Web开发5:第三方扩展与部署

在Web开发中,第三方扩展和部署是提高开发效率和功能扩展的重要手段。第三方扩展可以帮助我们快速集成常用功能和工具,而部署则是将我们的应用程序发布到生产环境中。本文将介绍第三方扩展的重要性、如何选择和使用常见的第三方扩展,并讨论应用…

Java Web(三)--CSS

介绍 为什么需要: 在没有 CSS 之前,想要修改 HTML 元素的样式需要为每个 HTML 元素单独定义样式属性,费心费力;CSS 可以让 html 元素(内容) 样式(CSS)分离,提高web 开发的工作效率(针对前端开发),从而…

论文翻译:On Bringing Robots Home

On Bringing Robots Home 关于引入机器人到家庭 文章目录 On Bringing Robots Home关于引入机器人到家庭1 Introduction1 引言2 Technical Components and Method2 技术组件与方法2.1 Hardware Design2.1 硬件设计2.2 Pretraining Dataset – Homes of New York2.2 预训练数据…

微信小程序开发创建component组件,报错WXML file not found解决方案

报错如下: 解决方案: 在组件.json文件加上"styleIsolation": "apply-shared",: