SQL 查询优化指南:SELECT、SELECT DISTINCT、WHERE 和 ORDER BY 详解
SELECT 关键字
SQL的SELECT语句用于从数据库中选择数据。SELECT语句的基本语法如下:
SELECT column1, column2, ...
FROM table_name;
其中,column1, column2,等是您要从表中选择的字段名称,而table_name是您要选择数据的表的名称。
如果要选择表中的所有列,您可以使用SELECT *语法。
以下是一些示例:
- 从Customers表中选择
CustomerName和City列的数据: 
SELECT CustomerName, City FROM Customers;
- 从Customers表中选择所有列的数据:
 
SELECT * FROM Customers;
这些语句将返回符合条件的数据记录,您可以根据需要选择特定的列或所有列。
SELECT DISTINCT 关键字
SQL的SELECT DISTINCT语句用于选择表中的不同(唯一)值。这在某些情况下非常有用,因为数据库表中的某些列可能包含大量重复值,而您只关心获取这些值的不同实例。
SELECT DISTINCT的基本语法如下:
SELECT DISTINCT column1, column2, ...
FROM table_name;
其中,column1, column2,等是您要选择不同值的列名称,而table_name是您从中选择不同值的表的名称。
以下是一些示例:
- 从"Customers"表中选择不同的国家:
 
SELECT DISTINCT Country FROM Customers;
这将返回"Customers"表中不同国家的列表。
- 计算不同国家的数量:
 
SELECT COUNT(DISTINCT Country) FROM Customers;
此语句使用COUNT函数来计算不同国家的数量。
请注意,某些数据库系统可能不支持COUNT(DISTINCT column_name)这种写法。在这种情况下,您可以使用子查询来达到相同的目的。
SQL WHERE 关键字
SQL的WHERE子句用于筛选数据库表中的记录。它允许您提取只满足指定条件的记录。以下是基本的WHERE子句语法:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
column1,column2,等是您要选择的列名称。table_name是您从中选择记录的表的名称。condition是用于筛选记录的条件。
在condition中,您可以使用各种运算符来定义筛选条件。以下是一些示例:
- 选择所有来自墨西哥的客户:
 
SELECT * FROM Customers
WHERE Country='Mexico';
- 选择CustomerID大于80的所有客户:
 
SELECT * FROM Customers
WHERE CustomerID > 80;
- 选择CustomerName不等于"Alfreds Futterkiste"的客户:
 
SELECT * FROM Customers
WHERE CustomerName <> 'Alfreds Futterkiste';
- 选择邮政编码在特定范围内的客户:
 
SELECT * FROM Customers
WHERE PostalCode BETWEEN '05020' AND '05030';
- 选择联系人名字以"M"开头的客户:
 
SELECT * FROM Customers
WHERE ContactName LIKE 'M%';
- 选择Country为"USA"或"Canada"的客户:
 
SELECT * FROM Customers
WHERE Country IN ('USA', 'Canada');
注意:在condition中,文本字段的值需要用单引号括起来,而数值字段则不需要。运算符的使用取决于您的筛选需求,可以根据需要进行选择。
ORDER BY 关键字
SQL的ORDER BY关键字用于对结果集进行排序,您可以按升序(ASC)或降序(DESC)进行排序。以下是ORDER BY关键字的基本语法:
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
column1,column2,等是您要选择的列名称。table_name是您从中选择记录的表的名称。ORDER BY后面的列名是您要用于排序的列。- 您可以使用
ASC(默认,升序)或DESC(降序)来指定排序的方向。 
以下是一些示例:
- 按价格对产品进行升序排序:
 
SELECT * FROM Products
ORDER BY Price;
- 按价格对产品进行降序排序:
 
SELECT * FROM Products
ORDER BY Price DESC;
- 按产品名称升序排序:
 
SELECT * FROM Products
ORDER BY ProductName;
- 按产品名称降序排序:
 
SELECT * FROM Products
ORDER BY ProductName DESC;
- 按国家升序排序,如果有相同国家的客户,则按客户名称降序排序:
 
SELECT * FROM Customers
ORDER BY Country, CustomerName;
- 同时按国家升序排序并按客户名称降序排序:
 
SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;
ORDER BY关键字使您可以以不同的方式对查询结果进行排序,以满足不同的需求。
最后
为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。
看完如果觉得有帮助,欢迎点赞、收藏和关注

SQL 查询优化指南:SELECT、SELECT DISTINCT、WHERE 和 ORDER BY 详解的更多相关文章
- (转)Linux下select, poll和epoll IO模型的详解
		
Linux下select, poll和epoll IO模型的详解 原文:http://blog.csdn.net/tianmohust/article/details/6677985 一).Epoll ...
 - SQL Server 表的管理_关于事务操作的详解(案例代码)
		
SQL Server 表的管理_关于事务操作的详解(案例代码) 1.概念 事务(transaction): 是将多个修改语句组合在一起的方法,这个方法中的所有语句只有全部执行才能正确完成功能.即要么全 ...
 - 开源项目SMSS发开指南(五)——SSL/TLS加密通信详解(下)
		
继上一篇介绍如何在多种语言之间使用SSL加密通信,今天我们关注Java端的证书创建以及支持SSL的NioSocket服务端开发.完整源码 一.创建keystore文件 网上大多数是通过jdk命令创建秘 ...
 - MySQL SELECT语法(四)UNION语法详解
		
源自MySQL 5.7 官方手册:13.2.9.3 UNION Syntax 一.UNION语法 UNION用于将多个SELECT语句的结果合并到一个结果集中. SELECT ... UNION [A ...
 - MYSQL—— 基础入门,select 查询涉及到的关键字组合详解(进阶篇)
		
SELECT查询组合使用的关键字很多,首先将最简单常用的关键字进行区分及使用,后续再继续补充............ 以下所有的关键字组合使用,主要以两个表students与students_scor ...
 - MySQL SELECT语法(三)JOIN语法详解
		
源自MySQL 5.7 官方手册:13.2.9.2 JOIN Syntax SELECT select_expr From table_references JOIN... WHERE... 如上所示 ...
 - Linux下select, poll和epoll IO模型的详解
		
http://blog.csdn.net/tianmohust/article/details/6677985 一).Epoll 介绍 Epoll 可是当前在 Linux 下开发大规模并发网络程序的热 ...
 - 利用select/poll监听多个设备详解
		
如果一个应用程序去处理多个设备,例如应用程序读取网路数据,按键,串口,一般能想到的有三种方法: 方法1:串行+阻塞的方式读取:while(1) { read(标准输入);read(网络);}缺点:每当 ...
 - SQL Server中CROSS APPLY和OUTER APPLY的应用详解
		
SQL Server数据库操作中,在2005以上的版本新增加了一个APPLY表运算符的功能.新增的APPLY表运算符把右表表达式应用到左表表达式中的每一行.它不像JOIN那样先计算那个表表达式都可以, ...
 - Sql Server参数化查询之where in和like实现详解
		
where in 的参数化查询实现 首先说一下我们常用的办法,直接拼SQL实现,一般情况下都能满足需要 string userIds = "1,2,3,4"; using (Sql ...
 
随机推荐
- Spring + JAX-WS : ‘xxx’ is an interface, and JAXB can’t handle interfaces 错误解决方法
			
错误栈 Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotatio ...
 - Spring-Cloud集成redis-cluster
			
前言 系统之前接入的是单点redis,为了条系统高可用能力,特增加集成redis-cluster集群的步骤 依赖库引入 <dependency> <groupId>org.sp ...
 - Python 中read()、 readline() 、readlines()三者之间的区别?
			
read()方法用于一次性读取整个文件的内容,并将其作为一个字符串返回. readline()方法用于逐行读取文件的内容.每次调用readline()方法,它会读取文件的下一行,并将其作为一个字符串返 ...
 - SpringCloud Sentinel使用
			
1. 简介 Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流.流量整形.熔断降级.系统负载保护.热点防护等多个维度来帮助开发者保障微服务的稳定性.替换原先Hystrix ...
 - C#拾遗补漏之goto跳转语句
			
前言 在我们日常工作中常用的C#跳转语句有break.continue.return,但是还有一个C#跳转语句很多同学可能都比较的陌生就是goto,今天大姚带大家一起来认识一下goto语句及其它的优缺 ...
 - CTF中常见编码
			
ASCII编码 ASCII HEX DEC flag{hello_ctfer} 66 6c 61 67 7b 68 65 6c 6c 6f 5f 63 74 66 65 72 7d 102 108 9 ...
 - Python笔记六之多进程
			
本文首发于公众号:Hunter后端 原文链接:Python笔记六之多进程 在 Python 里,我们使用 multiprocessing 这个模块来进行多进程的操作. multiprocessing ...
 - 基于4G的智能工牌解决方案特色解析
			
前记 随着数字化的不断发展以及cat1模块的竞争加剧.cat1无论从成本或者功耗上,都进化的特别快.这样的前提下,让基于4G可穿戴产品逐渐成为现实可穿戴产品必备.能解决以前很多不能解决的问题. 作 ...
 - MYSQL 是如何保证binlog 和redo log同时提交的?
			
MYSQL 一个事务在提交的时候能够保证binlog和redo log是同时提交的,并且能在宕机恢复后保持binlog 和redo log的一致性. 先来看看什么是redo log 和binlog,以 ...
 - [置顶]
        彻底停止运行线程池ThreadPoolExecutor
			
最近系统开发时遇到这样一个需求: 该功能执行时间很久,如果运行过程出现错误,也无法将其停止,必须眼睁睁的看着它浪费很久时间,除非停止服务器. 于是,我就想着如何给该功能加上一个"停止&quo ...