【数据库五】MySQL高级SQL语句

news2024/11/16 9:35:42

MySQL高级SQL语句

  • 1.MySQL进阶查询
    • 1.1 select
    • 1.2 distinct
    • 1.3 where
    • 1.4 and or
    • 1.5 in
    • 1.6 between
    • 1.7 通配符
    • 1.8 like
  • 2.MySQL数据库函数
    • 2.1 数学函数
    • 2.2 聚合函数
    • 2.3 字符串函数
  • 3.查询函数
    • 3.1 order by
    • 3.2 group by
    • 3.3 sql语句执行顺序
    • 3.4 having
    • 3.5 别名(字段别名 表别名)
    • 3.6 子查询
    • 3.7 exists(类查询)

1.MySQL进阶查询

数据库实例准备:

create database kgc;
use kgc;
###在数据库kgc中创建数据表location,并添加数据记录
create table location (Region char(20),Store_Name char(20));
insert into location values('East','Boston');
insert into location values('East','New York');
insert into location values('West','Los Angeles');
insert into location values('West','Houston');

###在数据库kgc中创建数据表store_info,并添加数据记录
create table store_info (Store_Name char(20),Sales int(10),Date char(10));
insert into store_info values('Los Angeles','1500','2020-12-05');
insert into store_info values('Houston','250','2020-12-07');
insert into store_info values('Los Angeles','300','2020-12-08');
insert into store_info values('Boston','700','2020-12-08');

在这里插入图片描述
在这里插入图片描述

1.1 select

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

语法:SELECT "字段" FROM "表名";
select store_name from store_info;

在这里插入图片描述

1.2 distinct

distinct:不显示重复的数据记录

语法:SELECT DISTINCT "字段" FROM "表名";
select distinct store_name from store_info;

在这里插入图片描述

1.3 where

where:有条件查询

语法:SELECT "字段" FROM "表名" WHERE "条件";
select * from store_info where sales > 1000;

在这里插入图片描述

1.4 and or

and or:且 或

语法:SELECT "字段" FROM "表名" WHERE "条件1" {[AND|OR] "条件2"}+ ;
select * from store_info where sales > 1000 or (sales >=200 and sales <=500);

在这里插入图片描述

1.5 in

in:显示已知的值的数据记录

语法:SELECT "字段" FROM "表名" WHERE "字段" IN ('值1', '值2', ...);
select * from store_info where store_name in ('Houston','Los Angeles');

在这里插入图片描述

1.6 between

between:显示两个值范围内的数据记录

语法:SELECT "字段" FROM "表名" WHERE "字段" BETWEEN '值1' AND '值2';
SELECT * FROM Store_Info WHERE Date BETWEEN '2020-12-06' AND '2020-12-10';

在这里插入图片描述

1.7 通配符

通配符:通常通配符都是跟like一起使用的

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

'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' 则不符合这个模式。

如: select * from store_info where store_name like '__us%';
select * from store_info where store_name like '_os%';

在这里插入图片描述
在这里插入图片描述

1.8 like

like:匹配一个模式来找出我们要的数据记录

语法:SELECT "字段" FROM "表名" WHERE "字段" LIKE {模式};
select * from store_info where store_name like '%on%';

在这里插入图片描述

2.MySQL数据库函数

2.1 数学函数

在这里插入图片描述

SELECT abs(-1), rand(), mod(5,3), power(2,3), round(1.89);
SELECT round(1.8937,3), truncate(1.235,2), ceil(5.2), floor(2.1), least(1.89,3,6.1,2.1);

在这里插入图片描述
获取1000以内的随机整数;

select rand() * 1000;
###以下获取1000以内随机整数的两种方法
select truncate(rand() * 1000,0);
select round(rand() * 1000);

在这里插入图片描述

2.2 聚合函数

在这里插入图片描述

###返回指定列sales的平均值
select avg(sales) from store_info;

在这里插入图片描述

###返回指定列store_name列中非NULL值的个数
select count(store_name) from store_info;
select count(distinct store_name) from store_info;

在这里插入图片描述

2.3 字符串函数

在这里插入图片描述

select concat(region,store_name) from location where store_name='Los Angeles';

select concat(region,' ',store_name) from location where store_name='Los Angeles';

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

在这里插入图片描述

select substr(store_name,3) from location where store_name='Los Angeles';
select * from location;
select substr(store_name,3,4) from location where store_name='Los Angeles';

在这里插入图片描述

select trim([ [位置] [要移除的字符串] from ] 字符串);
#[位置]:的值可以为leading(起头),trailing(结尾),both(起头及结尾)。 
#[要移除的字符串]:从字串的起头、结尾,或起头及结尾移除的字符串。缺省时为空格。

select trim(leading 'Ne' from 'New York');
select trim(trailing 'aw' from 'Newaw Yorkaw');
select trim(both 'aw' from 'awNewaw Yorkaw');

在这里插入图片描述

select region,length(store_name) from location;

在这里插入图片描述

select replace(region,'ast','astern') from location;

在这里插入图片描述

3.查询函数

3.1 order by

order by:按关键字排序

语法:SELECT "字段" FROM "表名" [WHERE "条件"] ORDER BY "字段" [ASC, DESC];
#ASC是按照升序进行排序的,是默认的排序方式。
#DESC是按降序方式进行排序。
select * from store_info order by sales desc;

在这里插入图片描述

3.2 group by

group by:对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;

在这里插入图片描述

**注意:**	  **group by有一个原则,凡是在group by后面出现的字段,必须在select后面出现;**

凡是在select后面出现的、且未在聚合函数中出现的字段,必须出现在group by后面出现。

3.3 sql语句执行顺序

在这里插入图片描述
在这里插入图片描述
sql语句执行顺序from >> on >> join >> where >> group by >> having >> distinct >> order by >> limit.

3.4 having

**having:用来过滤由group by语句返回的记录集,通常与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) > 1000;

在这里插入图片描述

注意: having语句的存在弥补了where关键字不能与聚合函数联合使用的不足

3.5 别名(字段别名 表别名)

别名:字段別名 表格別名

语法:SELECT "表格別名"."字段1" [AS] "字段別名" FROM "表格名" [AS] "表格別名";
select A.store_name store,sum(A.sales) "total sales" from store_info A group p by A.store_name;

在这里插入图片描述

3.6 子查询

子查询:连接表格,在WHERE 子句或 HAVING 子句中插入另一个SQL语句

语法:SELECT "字段1" FROM "表格1" WHERE "字段2" [比较运算符] 				#外查询
(SELECT "字段1" FROM "表格2" WHERE "条件");									#内查询

#可以是符号的运算符,例如 =、>、<、>=、<= ;也可以是文字的运算符,例如 LIKE、IN、BETWEEN
select sum(sales) from store_info where store_name in (select store_name from location where region='West');

select sum(A.sales) from store_info A where A.store_name in (select store_name from location B where B.store_Name = A.store_name);

在这里插入图片描述
在这里插入图片描述

3.7 exists(类查询)

exists:用来测试内查询有没有产生任何结果,类似布尔值是否为真

#如果有的话,系统就会执行外查询中的SQL语句。若是没有的话,那整个 SQL 语句就不会产生任何结果。
语法:SELECT "字段1" FROM "表格1" WHERE EXISTS (SELECT * FROM "表格2" WHERE "条件");
select sum(sales) from store_info where exists (select * from location where region = 'West');

在这里插入图片描述

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

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

相关文章

【剑指offer专项突破版】队列篇——“C“

文章目录 前言一、滑动窗口的平均值题目分析思路分析对列代码题解代码 二、最近请求次数题目分析思路分析队列代码题解代码 三、往完全二叉树添加节点题目分析思路分析队列与接口代码题解代码 四、二叉树每层的最大值题目分析思路分析队列代码题解代码 五、二叉树最底层最左边的…

学习 WooCommerce REST API

主要学习这个技术文档即可 WooCommerce REST API 技术文档 WooCommerce 官方文档 github : woocommerce/woocommerce 以下设置以及测试代码&#xff0c;都来自 WooCommerce REST API 技术文档 设置 REST API 设置 – 固定链接 &#xff08;Settings > Permalinks.&#…

MySQL - 第4节 - MySQL数据类型

目录 1.数据类型的作用 2.数据类型分类 3.数值类型 3.1.tinyint类型 3.2.bit类型 3.3.float类型 3.4.decimal类型 4.字符串类型 4.1.char类型 4.2.varchar类型 4.3.char和varchar比较 5.时间日期类型 6.enum和set类型 6.1.enum和set类型 6.2.调查表案例 6.3.通…

二手车交易APP开发功能有哪些?

二手车交易APP开发功能有哪些&#xff1f; 1、车辆估价&#xff1a;在选购二手车时&#xff0c;了解车辆的市场价值是非常重要的。为了保证客户能够准确估计车辆的价值&#xff0c;二手车APP软件开发应该具备车辆估价功能。用户可以通过APP输入车辆的基本信息&#xff0…

离线(内网)主机创建python项目运行环境

一、创建requirements.txt文件 文件中是python项目需要的依赖和版本号 二、把依赖下载到本地 准备一个能联网的pc&#xff0c;把依赖下载到本地 pip download -d ./venv -r requirements.txt -i https://pypi.mirrors.ustc.edu.cn/simple/这个命令会把依赖下载到venv文件夹…

指数全线收跌,上证跌破3200点,仅4137只个股下跌!

如题&#xff0c;端午假期前一天&#xff0c;A股指数全线收跌&#xff0c;上证指数跌破3200点&#xff0c;仅4137只个股下跌&#xff01;就问你服不服&#xff1f; 不要急&#xff0c;不要慌&#xff0c;我们来细细分析。 过去一两周&#xff0c;上证指数以震荡为主&#xff…

嵌入式Linux学习入门

大四毕业了&#xff0c;签了一份嵌入式开发的工作&#xff0c;现在准备入门了&#xff0c;搜集一些要学习的内容。 嵌入式开发学习路线 51单片机&#xff0c;arm&#xff0c;stm32在单片机上 在单片机上编程c语言和在嵌入式系统写c语言&#xff0c;有很大不同 gcc又与我们普…

与反恐、反间谍科同级,美国国家安全部设立网络安全科

美国国家安全部&#xff08;NSD&#xff09;成立了一个新的网络部门&#xff0c;旨在能够更有力地应对高技术性的网络威胁。 这个新成立的部门&#xff0c;正式名称为国家网络安全科&#xff0c;是为了响应美国司法部 &#xff08;DoJ&#xff09; 2022 年全面网络审查中的核心…

导致JVM内存泄露的ThreadLocal详解

很常见的关于ThreadLocal的面试题的问法&#xff1a; 1.说说你对ThreadLocal的理解。 2.ThreadLocal 是什么&#xff1f;有哪 些使用场景&#xff1f;什么是线程局部变量&#xff1f; 3.ThreadLocal内存泄漏分析与解决方案。 ps:想理解好ThreadLocal&#xff0c;必须先得理…

Spring Boot命令行启动添加参数

一、Spring Boot命令行三种参数形式 通过java -jar启动springboot的jar项目时&#xff0c;可以动态传递参数来进行配置和开发&#xff0c;比如 java -jar xxx.jar --server.port8081 可以通过server.port修改项目启动的端口&#xff0c;通过命令行传递的参数具有更高的优先级…

华为OD机试 JavaScript 实现【最优策略组合下的总的系统消耗资源数】【牛客练习题】,附详细解题思路

一、题目描述 在通信系统中有一个常见的问题是对用户进行不同策略的调度&#xff0c;会得到不同系统消耗的性能。 假设由N个待串行用户&#xff0c;每个用户可以使用A/B/C三种不同的调度策略&#xff0c;不同的策略会消耗不同的系统资源。 请你根据如下规则进行用户调度&…

【Java-SpringBoot+Vue+MySql】Day3.2-RESTful风格

目录 一、RESTful风格介绍 1、知识轰炸 2、代码演练 &#xff08;1&#xff09;测试get接口 &#xff08;2&#xff09;测试Post接口 &#xff08;3&#xff09;测试Put接口 &#xff08;4&#xff09;测试delete接口 二、Swagger介绍 1、知识轰炸 2、实操演练 &#x…

Android修行手册-多路USB外接摄像头

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

CSS3-盒子模型

盒子模型的介绍 盒子概念 盒子组成 盒子内减 拓展 1. 盒子的概念 1 页面中的每一个标签&#xff0c;都可看做是一个 “盒子”&#xff0c;通过盒子的视角更方便的进行布局 2 浏览器在渲染&#xff08;显示&#xff09;网页时&#xff0c;会将网页中的元素看做是一个个的矩形区域…

Selenium详解

Selenium 环境配置好之后&#xff0c;我们就可以使用 Selenium 来操作浏览器&#xff0c;做一些我们想做的事情了。在我们爬取网页过程中&#xff0c;经常发现我们想要获得的数据并不能简单的通过解析 HTML 代码获取&#xff0c;这些数据是通过 AJAX 异步加载方式或经过 JS 渲染…

Python高级系列教程:Python闭包和装饰器

今天我们将继续讲解 Python 中的闭包和装饰器。虽然我们还没有详细学习这两个概念&#xff0c;但在面向对象编程中&#xff0c;我们已经经常使用装饰器了。装饰器可以给函数增加额外的功能&#xff0c;就像语法糖一样甜。在 Python 中&#xff0c;装饰器的格式通常是在函数上方…

三分钟学习一个python小知识1-----------我的对python的基本语法的理解

文章目录 一、变量定义二、数据类型三、条件语句四、循环语句五、函数定义总结 一、变量定义 在Python中&#xff0c;使用等号&#xff08;&#xff09;进行变量的定义&#xff0c;并不需要声明变量的类型&#xff0c;Python会自动根据赋值的数据类型来判断变量的类型&#xf…

算法篇——动态规划 完全和多重背包问题 (js版)

一些分析总结 01 背包 问题和 完全背包 问题的不同点在于&#xff0c;所有的物品只能使用一次&#xff0c;判断 哪些物品 装进背包里 物品价值和 最大&#xff1b;而 完全背包 问题中&#xff0c;所有物品都能使用n次&#xff0c;判断 哪个物品 装 n 个进去 物品价值和 最大。…

Mybatis源码分析_日志模块 (1)

不得不承认&#xff0c;学习MyBatis的时间成本要比学习Spring低很多&#xff0c;Mybatis是我所了解过的代码量最小、整体架构最简单&#xff0c;但是又是最具有学习价值的一个框架。如果&#xff0c;你想快速的阅读一个框架的源码&#xff0c;并且掌握这个框架的精髓&#xff0…

浅析GeoServer CVE-2023-25157 SQL注入

简介 GeoServer是一个开源的地图服务器&#xff0c;它是遵循OpenGIS Web服务器规范的J2EE实现&#xff0c;通过它可以方便的将地图数据发布为地图服务&#xff0c;实现地理空间数据在用户之间的共享。 影响版本 geoserver<2.18.7 2.19.0<geoserver<2.19.7 2.20.0…