当前位置: 首页 > news >正文

MySQL 高级SQL语句(一)

目录

一、高级SQL语句(进阶查询)

1.1 select

1.2 distinct

1.3 where

1.4 and 和 or

1.5 in

1.6 between

1.7 通配符

1.8 like

1.9 order by


一、高级SQL语句(进阶查询)

先准备2个表

一个location表:

use market;
 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');

0-1.png

一个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') ;

0-2.png

1.1 select

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

 

语法: SELECT "字段" FROM "表名";
 ​
 示例:
 select store_name from store_info;
 select store_name,sales from store_info;

1-1.png

1-2.png

1.2 distinct

distinct,不显示重复的数据记录。

注意:关系型数据库,单次只能对一个字段去重。

 

SELECT DISTINCT "字段" FROM "表名";
 ​
 示例:
 select distinct store_name from store_info;    #对商店名称进行去重
 select distinct date from store_info;        #对日期字段进行去重

2-1.png

2-2.png

1.3 where

where,有条件查询。

SELECT "字段" FROM 表名" WHERE "条件";​​示例:select * from store_info where sales > 1000; #查找销售额大于1000的数据记录select store_name from store_info where sales > 1000;  #查找销售额大于1000的商店名称

3-1.png

1.4 and 和 or

and:且。

or:或。

SELECT "字段" FROM "表名" WHERE "条件1"  AND "条件2";SELECT "字段" FROM "表名" WHERE "条件1"  OR "条件2";

#查询销售额大于500且小于1000的数据记录。
 select * from store_info where sales > 500 and sales < 1000 ; 
 ​
 #查询销售额大于200且小于500的记录,或者销售额大于1000的记录。
 select * from store_info where sales > 1000 or (Sales < 500 and Sales > 200); 
 ​
 #查询销售额大于200且小于500的商店名,或者销售额大于1000的商店名。
 select store_name from store_info where sales > 1000 or (Sales < 500 and Sales > 200);

 

4-1.png

4-2.png

4-3.png

1.5 in

in,显示已知的值的数据记录。

 

段" FROM "表名" WHERE "字段" IN ('值1', '值2', ...);   #in,遍历一个取值列表
 SELECT "字段" FROM "表名" WHERE "字段" NOT IN ('值1', '值2', ...);  #not in取反,查询不在这个范围内的值

 #查询商店名为“Los Angeles”,以及商店名为“Houston”的记录。
 select * from store_info where store_name in ('Los Angeles','Houston');    
 ​
 #查询商店名称不是“Los Angeles”、不是“Houston”的记录。
 select * from store_info WHERE store_name not in ('Los Angeles','Houston');

5-1.png

5-2.png

1.6 between

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

 

SELECT "字段" FROM "表名" WHERE "字段" BETWEEN '值1' AND '值2';
示例:


 #查询销售额在500~1500之间的数据记录(包含500和1500)
 select * from store_info where sales between 500 and 1500;
 ​
 #查询店铺开业日期在2020-12-06到2020-12-10之间的记录(包含这两个日期)
 select * from store_info where date between '2020-12-06' and '2020-12-10';

6-1.png

6-2.png

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

1.8 like

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

 

SELECT "字段" FROM "表名" WHERE "字段" LIKE {模式} ;
示例:


 #查询商店名称包含字符串"os"的记录
 select * from store_info where store_name like '%os%';
 ​
 #查询商店名称以字符串"on"结尾的记录
 select * from store_info where store_name like '%on';
 ​
 #查询商店名称的第二、第三个字符为"os"的记录
 select * from store_info where store_name like '_os%';

8-1.png

8-2.png

8-3.png

1.9 order by

order by,按关键字排序。

注意:

  • 一般对数值字段进行排序。
  • 如果对字符类型的字段进行排序,则会按首字母排序。
 

SELECT "字段" FROM "表名" [WHERE "条件"] ORDER BY "字段" [ASC|DESC] ;
 #ASC是按照升序进行排序的,是默认的排序方式。
 #DESC是按降序方式进行排序。
示例:


 #查看store_info表中的所有记录,按销售额进行升序排列。
 select * from store_info order by sales ASC;    #ASC可以不加,默认升序
 ​
 #查看store_info表中的所有记录,按销售额进行倒序排列。
 select * from store_info order by sales desc;
 ​
 #获取销售额最大的那行数据记录。即先按销售额进行倒序排列,之后取第一行记录。
 select * from store_info order by sales desc limit 1;

9-1.png

9-2.png

9-3.png

http://www.lryc.cn/news/95591.html

相关文章:

  • SkyWalking链路追踪-技术文档首页
  • AndroidStudio Memory profiler(内存分析器)
  • 【C++模板进阶】
  • (一)RabbitMQ概念-优势、劣势、应用场景 、AMQP、工作原理
  • JetBrains全家桶:如何自定义实现类TODO注释?
  • 【技术干货】工业级BLE5.2蓝牙模块SKB378 使用教程,AT指令集
  • 零基础深度学习——学习笔记1 (逻辑回归)
  • I want to know on what switchport is connected my computer (10.8.0.2)
  • OpenCv之人脸操作
  • C++[第五章]--指针和引用
  • 用i18next使你的应用国际化-React
  • TSN -促进IT/OT 融合的网络技术
  • 改进的北方苍鹰算法优化BP神经网络---回归+分类两种案例
  • 等保工作如何和企业创新业务发展相结合,实现“安全”和“创新”的火花碰撞?
  • 23.7.25 杭电暑期多校3部分题解
  • 【设计模式——学习笔记】23种设计模式——桥接模式Bridge(原理讲解+应用场景介绍+案例介绍+Java代码实现)
  • 文档翻译软件那么多,哪个能满足你的多语言需求?
  • MySQL 中NULL和空值的区别
  • 阿里云容器镜像仓库(ACR)的创建和使用
  • 工业的相机与镜头(简单选型)
  • numpy广播机制介绍
  • RocketMQ 5.0 无状态实时性消费详解
  • 本地 IDC 中的 K8s 集群如何以 Serverless 方式使用云上计算资源
  • MySQL - 安装、连接、简单介绍
  • 【算法】求欧拉函数(包括完整的证明以及代码模板,建议收藏)
  • Ceph的应用
  • mac m1 触控栏TouchBar功能栏异常
  • “奢侈品”价格的“快消品”,竹叶青这么想赚年轻人的“茶水钱”?
  • 【Matlab】基于随机森林算法的时间序列预测(Excel可直接替换数据)
  • vue 中断请求