MySQL进阶SQL语句

1、select

显示表格种一个或数个字段的所有数据记录

语法:select "字段" from "表名";

2、distinct

不显示重复的数据记录

语法:select distinct "字段" from "表名";

3、where

有条件查询

语法:select "字段" from "表名" where "条件";

条件:!=、=、<、<=、>、>=、

SELECT Store_Name FROM Store_Info WHERE Sales>1000;
SELECT Store_Name FROM Store_Info WHERE Sales<1000;
SELECT Store_Name FROM Store_Info WHERE Sales=1000;

4、and   /   or  

and(并且)、or(或者)

语法:select  "字段" from  "表名"  where "条件1"  {[and|or] "条件2"} ;

SELECT Store_Name FROM Store_Info WHERE Sales > 1000 OR (Sales < 500 AND Sales > 200);

5、IN

显示已知的值的资料

语法:SELECT 字段 FROM 表名 WHERE 字段 IN (‘值1’,‘值2’,……);

select * from Store_info where store_name in ('los angeles','houston');

7、between

显示两个值范围内的资料

语法:select 字段 from 表名 where 字段 between ‘值1’ and ‘值2’;

select * from Store_info where date between '2020-12-06' AND '2020-12-10';

8、通配符、LIKE

通常通配符都是跟LIKE一起使用

%:百分号表示零个、一个或多个字符 _:下划线表示单个字符

like:用于匹配模式来查找资料

语法:SELECT 字段 FROM 表名 WHERE 字段 LIKE ‘模式’;

SELECT * FROM Store_Info WHERE Store_Name like '%os%';
'A_Z':所有以 'A' 起头,另一个任何值的字符,且以 'Z' 为结尾的字符串。

例如,'ABZ' 和 'A2Z' 都符合这一个模式,而 'AKKZ' 并不符合 (因为在 A 和 Z 之间有两个字符,而不是一个字符)。


'ABC%': 所有以 'ABC' 起头的字符串。
例如,'ABCD' 和 'ABCABC' 都符合这个模式。


'%XYZ': 所有以 'XYZ' 结尾的字符串。
例如,'WXYZ' 和 'ZZXYZ' 都符合这个模式。


'%AN%': 所有含有 'AN'这个模式的字符串。
例如,'LOS ANGELES' 和 'SAN FRANCISCO' 都符合这个模式。


'_AN%':所有第二个字母为 'A' 和第三个字母为 'N' 的字符串。
例如,'SAN FRANCISCO' 符合这个模式,而 'LOS ANGELES' 则不符合这个模式。

9、order by

按关键字排序

语法:select 字段 from 表名 where 条件 order by 字段 [ASC,DESC];

asc:按照升序进行排序,默认的排序方式

desc:按照降序进行排序

select store_name,sales,date from store_info order by sales desc;
 

函数

1、数学函数

数学函数:
abs(x)返回 x 的绝对值
rand()返回 0 到 1 的随机数
mod(x,y)返回 x 除以 y 以后的余数
power(x,y)返回 x 的 y 次方
round(x)返回离 x 最近的整数
round(x,y)保留 x 的 y 位小数四舍五入后的值
sqrt(x)返回 x 的平方根
truncate(x,y)返回数字 x 截断为 y 位小数的值
ceil(x)返回大于或等于 x 的最小整数
floor(x)返回小于或等于 x 的最大整数
greatest(x1,x2...)返回集合中最大的值,也可以返回多个字段的最大的值
least(x1,x2...)返回集合中最小的值,也可以返回多个字段的最小的值

2、聚合函数

聚合函数
avg(字段)返回指定列的平均值
count(字段)返回指定列中非 NULL 值的个数,(*)则不会回来NULL值
min(字段)返回指定列的最小值
max(字段)返回指定列的最大值
sum(字段)返回指定列的所有值之和

3、字符串函数

字符串函数
trim()返回去除指定格式的值
concat('x','y')将提供的参数 x 和 y 拼接成一个字符串
substr('x','y')获取从字符串 x 中的第 y 个位置开始的字符串
substr('x','y','z')获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串
length('x')返回字符串 x 的长度
replace('x','y','z')将字符串 z 替代字符串 x 中的字符串 y
upper('x')将字符串 x 的所有字母变成大写字母
lower('x')将字符串 x 的所有字母变成小写字母
left('x','y')返回字符串 x 的前 y 个字符
right('x','y')返回字符串 x 的后 y 个字符
repeat('x','y')将字符串 x 重复 y 次
space('x')返回 x 个空格
strcmp('x','y')比较 x 和 y,返回的值相等(0),左边大(返回-1)右边大(返回1)
reverse('x')将字符串 x 反转

4、||连接符

#如sql_mode开启了PIPES_AS_CONCAT,"||"视为字符串的连接操作符而非或运算符,和字符串的拼接函数Concat相类似,这和Oracle数据库使用方法一样的

SELECT Region || ' ' || Store_Name FROM location WHERE Store_Name = 'Boston';

5、group by

BY后面的栏位的查询结果进行汇总分组,通常是结合聚合函数一起使用的

GROUP BY 有一个原则,就是 SELECT 后面的所有列中,没有使用聚合函数的列,必须出现在GROUP BY后面

语法:SELECT 字段1,SUM(字段2) FROM 表名 GROUP BY 字段1;

select Store_Name,sum(Sales) from Store_Info group by Store_Name order by Sales desc;

6、having

用来过滤由GROUP BY语句返回的记录集,通常与GROUP BY语句联合使用。 HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。如果被SELECT的只有函数栏,那就不需要GROUP BY子句

语法:select 字段1,SUM(字段2) FROM 表名 GROUP BY 字段1 HAVING(函数条件);

select Store_Name,sum(Sales) from Store_Info group by Store_Name having sum(Sales)>1500;

image-20231227144440323

根据group by分组后的结果再进行条件过滤

7、别名

字段别名、表格别名

select 字段 AS 字段别名 from 表 AS 表别名

语法:SELECT “表格別名”.“字段1” [AS] “字段1別名” FROM “表格名” [AS] “表格別名”;

select A.Store_Name Store,sum(A.Sales) "Totol Sales" from Store_Info A group by A.Store_Name;

8、子查询

select A.字段 from 左表 A where A.字段 in (select B.字段 from 右表 B);

9、内查询和外查询

select 字段 from 表 where 字段 运算符 (select 字段 from 表 where 字段);
外查询                                 内查询(内查询的结果会作为外查询的条件来使用)

10、exists

用来测试内查询有没有产生任何结果

如果有的话,系统会执行外查询中的SQL语句,如果没有,那整个SQL语句就不会产生任何结果

语法:

select '字段1' from '表格1' where exists (select * from '表格2' where '条件');

外查询                                     内查询(若不成立则整个语句失效)

表连接

inner join(内连接):
只返回两个表的字段相等的行记录

left join(左连接):
返回左表所有的行记录和右表字段相等的行记录 ,不相等的行返回null

right join(右连接):
返回右表所有的行记录和左表字段相等的行记录,不相等的行返回null

union:
联集,将两个select查询语句的结果合并,并去重。

union all:
联集,将两个select查询语句的结果合并,不去重。

union&union all

联集,将两个SQL语句的结果合并起来,两个SQL语句所产生的字段需要是同样的数据记录种类

UNION :生成结果的数据记录值将没有重复,且按照字段的顺序进行排序

语法:[SELECT 语句 1] UNION [SELECT 语句 2];

求交集

select A.字段 from 左表 as A inner join 右表 as B on A.字段 = B.字段;

求左表无交集

select A.字段 from 左表 as A left join 右表 as B on A.字段 = B.字段 where B.字段 is null;

求右表无交集

select B.字段 from 左表 as A left join 右表 as B on A.字段 = B.字段 where A.字段 is null;

求两个表无交集

把求左表右表无交集的方法中间加union

select A.字段  from  左表  as A left  join  右表 as B  on  A.字段 = B.字段 where B.字段 is null 
​
union 
​
select B.字段  from  左表  as A left  join  右表 as B  on  A.字段 = B.字段 where A.字段 is null;

多表查询

select A.字段 from 左表 A, 右表 B where A.字段 = B.字段;

视图表

create view  视图表名  as select distinct 字段 from 左表 union all select distinct 字段 from 右表;


select 字段 from 视图表名 group by 字段 having count(字段) = 1;



create view  视图表名  as  select语句;

面试题

视图表的数据是否能修改?

视图表保存的是select查询语句的定义

如果select语句查询的字段是没有被处理过的源表字段,则可以通过视图表修改源表数据。

如果select语句查询的字段被group by 或函数等处理过的字段,则不可以直接修改视图表的数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

模式识别与机器学习-SVM(核方法)

SVM&#xff08;核方法&#xff09; 核方法核技巧在SVM中的应用 谨以此博客作为复习期间的记录 核方法 对解线性分类问题&#xff0c;线性分类支持向量机是一种非常有效的方法&#xff0e;但是&#xff0c;有时分类问题是非线性的&#xff0c;这时可以使用非线性支持向量机&a…

线程池原理及使用

线程池继承关系 1.为什么使用线程池&#xff1f; 1.反复创建线程开销大; 2.过多线程会占用太多内存(执行任务易出现“内存溢出”); 3.加快程序响应速度; 4.合理利用CPU和内存; 5.统一管理线程; 2.创建和停止线程池 2.1.线程池参数解释 1.keppAliveTime 如果线程池当中的线程数…

使用Python构建令人瞩目的高频交易算法

大家好&#xff0c;在金融领域&#xff0c;高频交易&#xff08;HFT&#xff09;因其能够以极高的速度执行大量订单的能力而备受关注。高频交易算法旨在识别并利用不同市场间的微小价格差异&#xff0c;因此交易者需要实现低延迟系统来进行套利策略&#xff0c;本文将探索使用P…

我的NPI项目之Android系统升级 - 同平台多产品的OTA

因为公司业务中涉及的面比较广泛&#xff0c;虽然都是提供移动终端PDA&#xff0c;但是使用的场景很多时候是不同的。例如&#xff0c;有提供给大型物流仓储的设备&#xff0c;对这样的设备必需具备扫码功能&#xff0c;键盘&#xff08;戴手套操作&#xff09;&#xff0c;耐用…

大数据求职心得

........................................................................................................................................................... 大数据求职心得 ...................................................................................…

写一个随机点名的程序

获取方式&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1fdCJ_3IYUl7v7x6I1zAWgg 提取码&#xff1a;1234 这里面用到JS当中的数组&#xff0c;random以及window.setInterval&#xff08;&#xff09;回调函数来进行实现的.

性能测试-jemeter:安装 / 基础使用

一、理解jemeter 官网-Apache JMeter-Apache JMeter™ JMeter是一款开源的性能测试工具&#xff0c;主要用于模拟大量用户并发访问目标服务器&#xff0c;以评估服务器的性能和稳定性。 JMeter可以执行以下任务序号用途描述1性能测试通过模拟多个用户在同一时间对服务器进行…

Pytorch从零开始实战14

Pytorch从零开始实战——DenseNet SENet算法实战 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——DenseNet SENet算法实战环境准备数据集模型选择开始训练可视化总结 环境准备 本文基于Jupyter notebook&#xff0c;使用Python3.8&#x…

搭建FTP服务器与计算机端口介绍

FTP介绍 FTP&#xff08;File Transfer Protocol&#xff09;是一种用于在计算机网络上进行文件传输的协议。它允许用户通过客户端与服务器进行通信&#xff0c;从服务器下载文件或将文件上传到服务器。 FTP使用客户端-服务器模型。用户使用FTP客户端软件连接到FTP服务器&…

人工智能_机器学习077_Kmeans聚类算法_亚洲国家队自动划分类别_3维可视化实现---人工智能工作笔记0117

然后我们上一节使用聚类算法对,2006年世界杯,2010年世界杯,2007年亚洲杯,足球队进行了自动类别划分,然后 这一节,我们使用代码对,聚类算法的划分结果,进行一下可视化 plt.figure(figsize=(12,9)) 首先指定画布大小 ax=plt.subplot(111,projection=3d) 然后指定111,表示画布的,…

【电商项目实战】基于SpringBoot完成首页搭建

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《电商项目实战》。&#x1f3af;&#x1f3af; &am…

STM32F4系列单片机库函数模板工程创建

目录 一、工程配置 1、新建工程 2、芯片选择 3、工程子文件夹创建 &#xff08;1&#xff09;FWLIB文件夹添加文件 &#xff08;2&#xff09;CORE文件夹添加文件 &#xff08;3&#xff09;USER文件夹添加文件 4、工程设置 &#xff08;1&#xff09;工程中添加文件夹…

Temu和Shein争端再起:海外电商“围城”下,一场厮杀正在酝酿

两家中国电商出海“双子星”&#xff0c;争端再起。 最近&#xff0c;美国法院最新公开临时限制令显示&#xff0c;跨境电商平台Temu&#xff08;特木&#xff09;的男装、休闲装、运动服等50款产品涉侵权时尚电商平台Shein&#xff08;希音&#xff09;&#xff0c;并向Temu旗…

【halcon深度学习】dev_display_dl_data 移植到C# 上篇

效果展示 前言 在研究halcon深度学习的时候,会发现halcon的例程里面用到了大量的二次封装库函数。这些库函数内部也是由基础的算子组成。我们在halcon的开发环境里面用的很爽,但是一旦要在C#中使用,就会报错。 一开始,我想避开这个移植过程,直接使用halcon引擎(HDevEngi…

网络通信-Linux 对网络通信的实现

Linux 网络 IO 模型 同步和异步&#xff0c;阻塞和非阻塞 同步和异步 关注的是调用方是否主动获取结果 同步:同步的意思就是调用方需要主动等待结果的返回 异步:异步的意思就是不需要主动等待结果的返回&#xff0c;而是通过其他手段比如&#xff0c;状态通知&#xff0…

【算法题】矩阵顺时针旋转90° (js)

力扣链接&#xff1a;https://leetcode.cn/problems/rotate-matrix-lcci/description/ 本人题解&#xff1a; /*** param {number[][]} matrix* return {void} Do not return anything, modify matrix in-place instead.*/ var rotate function (matrix) {const x matrix.le…

【基础篇】六、自定义类加载器打破双亲委派机制

文章目录 1、ClassLoader抽象类的方法源码2、打破双亲委派机制&#xff1a;自定义类加载器重写loadclass方法3、自定义类加载器默认的父类加载器4、两个自定义类加载器加载相同限定名的类&#xff0c;不会冲突吗&#xff1f;5、一点思考 1、ClassLoader抽象类的方法源码 ClassL…

【Linux】进程查看|fork函数|进程状态

&#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&am…

ADRC-跟踪微分器TD的Maltab实现及参数整定

目录 问题描述&#xff1a; 跟踪微分器TD基本概念&#xff1a; Matlab及其实现&#xff1a; 跟踪效果&#xff1a; 例1&#xff1a;跟踪信号 sin(t) 0.5*rand(1,1)。 例2&#xff1a;跟踪部分时段为方波的信号&#xff0c;具体形式见代码get_command。 参数整定&#xf…

⭐Unity 读取本地图片再区域裁剪

现在需求是将本地的图片读取之后再区域截图成新的图片 话不多说直接上代码 using UnityEngine; using System.IO;public class LocalRegionCapture : MonoBehaviour {public string fullScreenImagePath "Assets/SavedImages/fullScreenScreenshot.png";public str…
最新文章