MySQL必知必会_SELECT部分

news2025/1/21 8:56:28

最近在读MySQL必知必会,关于这本书打算写点读后感,大概是两篇博客的体量。
在这里插入图片描述

其实对于测试岗来说,不管是面试还是实际工作中,最重要的自然当属SELECT。

下面我把书里关于SELECT的知识点简单记一下吧。

首先在MySQL中其实是不区分大小写的,但为了规范,我们在写SQL语句的时候还是注意要将关键字大写。

比如与mysql有关的操作如SELECT,FORM之类的关键词。

首先是SELECT的基础知识

1.DISTINCT关键字
  SELECT DISTINCT pro_id 
  FROM  xxxx;    代表从表中搜索pro_id整列,distinct剔除重复项

2.LIMIT 限制查询出来的行数
  SELECT  ****
  FROM ***
  LIMIT 3,4;     代表检索从第三行开始的后4行,
  				如果只有一个数字代表从第一行的后n行

3.ORDER   检索出来的行按照指定的规则排序
   SELECT **
   FROM ***
   ORDER BY 111   222;     搜索结果按列排序,111的优先级大于222
   ORDER BY 1111  DESC,222;     按111降序排列,随后考虑222

例:找出最贵的一个物品
SELECT  aaa_price,product_name 
FROM ***
ORDER BY aaa_price DESC           根据price倒序排列
LIMIT 1;

4.WHERE
过滤数据用WHERE  <,>,!=,=,between  and,<>(代表!=),IS NULL,IS NOT NULL
多组过滤:  WHERE......AND/OR.......    (在有多个AND/OR的时候,AND被优先处理)
可以用 WHERE (.....or......) AND .......     的方式来组合

还可以用IN操作符来过滤
SELECT  ****  FROM ***
WHERE  *** IN (10,9)     括号内为可选的数据范围
WHERE 后还可以接NOT来否定后续条件

通配符%
WHERE  ... LIKE 'jet%'            %代表通配符,接受jet后为任意字符,注意区分大小写
WHERE  ... LIKE '%jet%'         通配符可以使用多个
还有一个通配符_          功能与%一样,但%可以匹配0个或多个,_一定只匹配一个
%不能匹配NULL

正则表达式
WHERE ... REGEXP '.000'    .代表匹配任何值
WHERE .... REGEXP '1000'    这条语句可以搜索到1000
WHERE  .... LIKE '1000'      这条语句不会搜索到1000,没用通配符,LIKE匹配整个串
REGEXP 匹配不区分大小写,如要区分大小写,用REGEXP BINARY
正则表达式与OR结合  WHERE ... REGEXP '1000|2000'  
匹配多个字符任意一个    WHERE ... REGEXP '[abc]1'    匹配a1/b1/c1 
排除某个字符串用-      -scope*  代表排除以scope开头的任意字符串
如果要使用正则表达式来匹配特殊字符如.   用\\.来匹配.
?号在正则表达式中便是?前面的字符可以出现0/1次
[:alnum:]  匹配任意一个字符
[:digit:]    任意数字

5.字符串拼接CONCAT
在实际SELECT的过程中,我们可能需要一个新的列,即在数据表中原本其实并不存在的列,可以使用CONCAT
SELECT CONCAT(name,'(',age,')')as ...   最终拼成name(age)的形式,形成一个新的列
SELECT  age*height as ....          也可以直接列相乘生成新的一列

6.SELECT中可能使用的一些内置函数
RTrim(name)   删除数据右侧多余的空格
Upper()    将文本中所有字母转换为大写
Date()    将查询语给出的值与列中的数据进行部分筛选
根据日期筛选   WHERE Date(order_date) = '2022-12-16' ,可以与BETWEEN结合使用
Year()/Month()    获取年份,月份
AVG()/SUM()/MAX()/MIN()

这部分中的重点是COUNT函数
COUNT(返回某列的行数,计数函数)   
COUNT(*)计算整个表的行数
COUNT(column)计算特定列的行数,NULL值不计入其中
SELECT COUNT(*) as total_num
FROM 。。。
WGHERE age =5    计算年龄为5的人数个数

7.GROUP
   SELECT  id,COUNT(*) AS pro_num
   FROM...
   GROUP BY id        根据id分组计算,计算不同id的个数,同个id为一组
   HAVING COUNT(*) >2   过滤,只显示数量大于2的id
   ORDER BY id        将最终的分组按照id来排序

这里注意HAVING和WHERE的区别
HAVING过滤组别
WHERE过滤列

8.子查询
若要多次进行查询筛选可用子查询,放到一个Sql语句里
SELECT id 
FROM  ..
WHERE age in (SELECT age  //注意这边的WHERE age 和in后面的SELECT age,要统一
              FROM ...
              WHERE name in ('aa','bb'));

SELECT id ,(SELECT COUNT(*)                  生成新的不存在的列需要另外SELECT
FROM orders    
WHERE  customer.id = order.id) AS order    红字部分为联结查询
FROM customer
ORDER BY id;

9.联结查询
   SELECT a_name,b_age,c_sex
   FROM name,age
   WHERE name.id = age.id AND sex.id = name.id AND age =24    多个表同时联结
   ORDER BY a_name,b_age;

这里还可以给表创建别名以供后续查询的使用
	SELECT 。。。
	FORM name as n, age as a
	WHERE a.xxx = n.xxx;

10.SLEECT中的全文本搜索
使用MATCH()和AGAINST()
SELECT ...
FROM..
WHERE MATCH(列名) AGAINST(xxx表达式)
AGAINST('+aa -bb')   查询包含aa不包含bb
AGAINST('aa  bb')     查询包含aa或者bb
AGAINST( ' “aa bb” ’)   查询包含“aa bb”这个具体字符串

视图

视图并不包含任何表中的列或者数据,严格来说,视图其实就是SQL查询

CREATE VIEW  aa AS      把下面这个SELECT包装成为一个名为aa的视图
SELECT ,,,
FROM ...
WHERE   ..

为什么使用视图?
1.简化复杂的SQL操作
2.保护数据,可以授予部分用户特定部分的访问权限,而不是整个表

视图还可以用来重新组合列,比如你希望组合两个列生成一个新的列,但这个列,表中是没有的,用SELECT CONCAT,然后将这个SELECT封装为一个视图。这样可以简化搜索操作。

注意,视图主要用于检索数据,但很多情况下的视图是无法被更新的
1.视图里有分组GROUP /HAVING
2.视图里有联结查询,有子查询
3.视图里有聚集函数(MIN,SUM,COUNT)等
4.视图里有DISTINCT

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

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

相关文章

【MySQL】第二部分 MySQL的启动和登录

【MySQL】第二部分 MySQL的启动和登录 文章目录【MySQL】第二部分 MySQL的启动和登录2. MySQL的启动和登录2.1 服务的启动与停止2.2 客户端登录查看版本信息退出登录2.3 演示命令行的使用总结2. MySQL的启动和登录 2.1 服务的启动与停止 MySQL的安装就不过多介绍了,大家可以去…

OpenSceneGraph纹理API开发指南【OSG】

前面的教程中&#xff0c;我们用彩虹的所有颜色画了一个正方形。然而&#xff0c;还有另一种成为纹理映射的技术&#xff0c;将光栅二维图像应用于三维几何。在这种情况下&#xff0c;效果不是针对几何体的顶点&#xff0c;而是通过栅格化场景更改获得的所有像素的数据。这种技…

好雨科技加入龙蜥 完成与 Anolis OS 兼容适配

近日&#xff0c;北京好雨科技有限公司&#xff08;以下简称“好雨科技”&#xff09;签署了 CLA&#xff08;Contributor License Agreement&#xff0c;贡献者许可协议&#xff09; &#xff0c;正式加入龙蜥社区&#xff08;OpenAnolis&#xff09;。好雨科技成立于 2015 年…

bug总是多不如看一看,前端写完代码进行的自测流程减少bug重复反工,提高开发效率。

提测标准&#xff1a;修改bug前要熟知之前的操作逻辑以及涉及其代码的周边逻辑&#xff0c;修改bug后的操作逻辑和测试确认&#xff0c;检测其它周边逻辑。至少需要另外1个开发进行交叉测试必要时进行代码Code Review&#xff08;代码规范&#xff0c;主要逻辑&#xff0c;复杂…

服务器SMTP邮件设置

服务器SMTP邮件设置 在服务器设置登录验证时需要绑定一个自动收发邮件的服务器进行验证 这时候就要对STMP进行配置&#xff0c;如下 填写的主机为邮件对应的主机 腾讯QQ邮箱 POP3&#xff1a;pop.qq.com SMTP&#xff1a;smtp.qq.com IMAP&#xff1a;imap.qq.com 端口&…

1.13

周报 完善案例 ​ this.$nextTick(function () {this.$refs.input.focus()})}​ //点击编辑直接获取焦点 this.$refs.input.focus() //但是这种写法 由于input是用v-show控制的 所以执行了上面代码 改变了isEdit值 但是不会立马去重新解析模板 input框还没有出来 //将handleed…

算法第十期——DFS(深度优先搜索)的剪枝优化

目录 DFS:剪枝 DFS:有哪些剪枝方法 DFS例题一&#xff1a;剪格子 【思路】 DFS例题二&#xff1a;路径之谜 【样例分析】 DFS例题三&#xff1a;四阶幻方 【思路】 【做法一】 【做法二】 DFS例题三&#xff1a;分考场 【样例分析】 【思路】 DFS习题 DFS:剪…

TPM零知识学习十一 —— tpm全安装流程复盘(下)

接前一篇文章《TPM零知识学习十 —— tpm全安装流程复盘&#xff08;中&#xff09;》&#xff0c;链接为&#xff1a; TPM零知识学习十 —— tpm全安装流程复盘&#xff08;中&#xff09;_蓝天居士的博客-CSDN博客 五、TPM模拟器做成服务 本步骤前导步骤参见 《TPM零知识学…

Docker——网络配置

目录 本次目标&#xff1a; 一、Docker网络配置 1.bridge模式(默认模式) 2.host模式 二、bridge模式 三、host模式 网络模式与数据卷容器挂载的操作 四、如何创建自定义网络 本次目标&#xff1a; Docker网络配置Docker部署SpringCloud项目 一、Docker网络配置 Dock…

蓝牙耳机啥牌子音质好?听音乐最好的蓝牙耳机分享

现如今&#xff0c;蓝牙耳机越来越成为外出携带设备使用频率最高的数码产品之一。随着技术的进步&#xff0c;蓝牙耳机在音质上的表现也受到了很多人的关注。在这&#xff0c;我来给大家介绍四款音质很不错的蓝牙耳机&#xff0c;一起来看看吧。 一、南卡小音舱蓝牙耳机 售价…

SpringBoot+Vue项目医护人员排班系统

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

Unity3d VFX 采用skinned mesh sampling(蒙皮采样)发射粒子效果时fbx模型是否优化(Optimized)带来的问题记录

前言&问题 如题的问题困扰了很久&#xff0c;最近终于在机缘巧合下解决了&#xff0c;这里特此记录分享一下&#xff0c;可能会对此有问题的朋友有点引导。 之前在弄一个通过摄像头/或视频识别人物的肢体动作并同步的功能&#xff1a; 详细功能可以去B站查看一下。https…

python学习 --- 列表基础

目录 一、列表的创建 1、使用中括号 2、使用中括号和内置函数list() 二、列表的特点 三、获取列表中元素 1、获取列表中指定元素的索引-index() 2、获取列表中单个元素 3、获取列表中多个元素-切片 四、列表元素的查询和遍历 1、判断指定元素在列表中是否存在 2、遍历…

为什么使用 golang http包 会把 linux 句柄打满?

最近工作的时候一个接入服务需要测性能测试&#xff0c;万万没想到测出了一个把 linux 句柄打满的问题 具体是什么问题呢&#xff0c;我们一起来看看 正常操作 项目中&#xff0c;有一些 http 请求是这样写的&#xff1a; 请求 https 的地址&#xff0c;为了绕过 tls &…

【论文精读】基于流序列的基于残差图卷积网络的匿名网络流量识别

Flow Sequence-Based Anonymity Network Traffic Identification with Residual Graph Convolutional Networks 基于流序列的基于残差图卷积网络的匿名网络流量识别 摘要 从网络流量中识别匿名服务是网络管理和安全的关键任务。 目前&#xff0c;一些基于深度学习的工作已经…

JavaScript 事件案例

文章目录JavaScript 事件案例统计输入字符数量验证输入内容搜索框复选框的全选和反选下拉列表自定义鼠标右键菜单ctrlenter发送消息规定范围内拖拽元素两元素碰撞切换图片内容滚动条鼠标滚动缩放图片JavaScript 事件案例 统计输入字符数量 <!DOCTYPE html> <html>…

一文看懂C/C++编译过程以及g++编译选项

前言在linux系统下&#xff0c;输入man g&#xff0c;即可以看到gcc官方文档对gcc编译选项的详细说明&#xff0c;本文也主要是在官方文档基础上&#xff0c;对gcc/g编译过程和一些编译选项进行了总结和说明&#xff0c;希望对学习这块内容的人有所帮助。1、编译的四个阶段一般…

Cannot read properties of null (reading ‘pickAlgorithm‘)

2568 verbose node v16.15.0 2569 verbose npm v8.5.5 2570 error Cannot read properties of null (reading ‘pickAlgorithm’) 2571 verbose exit 1 2572 timing npm Completed in 20918ms 2573 verbose unfinished npm timer reify 1673607123032 2574 verbose unfinished …

openSUSE-Leap-15.4系统分析和微调指南-略读笔记

openSUSE-Leap-15.4系统分析和微调指南——略读笔记 openSUSE Leap 15.4 System Analysis and Tuning Guide SUSE 产品文档-中文(简体)-下载中心 https://documentation.suse.com/zh-cn/sled/15-SP4/ 单击English选择简体中文——单击PDF是可以下载的&#xff0c;例如System A…

学习记录:featurecounts

Input one or more files of aligned reads (short or long reads) in either SAM or BAM formata list of genomic features in either Gene Transfer Format (GTF) or General Feature Format (GFF) or Simplified Annotation Format (SAF)比对后产生的bam或者sam文件&#…