学习来源:http://sql.1keydata.com/cn/sql-distinct.php
1、我们需要知道这个表格/栏位内有哪些不同的值,而每个值出现的次数并不重要。
例子:
Store_Information表格
store_name
|
Sales |
Date
|
Los Angeles
|
$1500 |
Jan-05-1999
|
San Diego
|
$250 |
Jan-07-1999
|
Los Angeles
|
$300 |
Jan-08-1999
|
Boston
|
$700 |
Jan-08-1999
|
SELECT DISTINCT store_name FROM
Store_Information
结果:
store_name |
Los Angeles |
San Diego |
Boston
2、like的一个用法: like 'A_Z' 它可以用来匹配 ‘ABZ’,‘A2Z’,而‘AKKZ’并不符合,因为她之间有两个字源。
3、order by 也可以这样写
SELECT store_name, Sales, Date FROM Store_Information
ORDER BY 2 DESC
其中 2代表 Sales.
4、COUNT 和 DISTINCT
经常被合起来使用,目的是找出表格中有多少笔不同的资料 (至于这些资料实际上是什么并不重要)。
5、SQL的连接总结
假定我们有两张表:
Store_Information
表格
store_name
|
Sales |
Date
|
Los Angeles
|
$1500 |
Jan-05-1999
|
San Diego
|
$250 |
Jan-07-1999
|
Los Angeles
|
$300 |
Jan-08-1999
|
Boston
|
$700 |
Jan-08-1999 |
Geography 表格
region_name
|
store_name
|
East |
Boston
|
East |
New York
|
West |
Los Angeles
|
West |
San Diego
|
外部连接的语法是依数据库的不同而有所不同的。举例来说,在 Oracle 上,我们会在 WHERE 子句中要选出所有资料的那个表格之后加上一个 "(+)"
来代表说这个表格中的所有资料我们都要。
我们需要知道每一间店的营业额。如果我们用一个普通的连接,我们将会漏失掉 'New York'这个店,因为它并不存在于
Store_Information 这个表格。所以,在这个情况下,我们需要用外部连接来串联这两个表格:
SELECT A1.store_name, SUM(A2.Sales) SALES FROM
Georgraphy A1, Store_Information A2 WHERE A1.store_name = A2.store_name (+)
GROUP BY A1.store_name
结果:
store_name |
SALES |
Boston |
$700 |
New York |
|
Los Angeles |
$1800 |
San Diego |
$250 |
6、Union,Union All
Store_Information
表格
store_name
|
Sales |
Date
|
Los Angeles
|
$1500 |
Jan-05-1999
|
San Diego
|
$250 |
Jan-07-1999
|
Los Angeles
|
$300 |
Jan-08-1999
|
Boston
|
$700 |
Jan-08-1999
|
Internet
Sales 表格
Date |
Sales
|
Jan-07-1999
|
$250
|
Jan-10-1999
|
$535
|
Jan-11-1999
|
$320
|
Jan-12-1999
|
$750
|
UNION 指令的目的是将两个 SQL 语句的结果合并起来。从这个角度来看, UNION 跟 JOIN
有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION 的一个限制是两个 SQL
语句所产生的栏位需要是同样的资料种类。另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。
例子:
而我们要找出来所有有营业额 (sales) 的日子。要达到这个目的,我们用以下的 SQL 语句:
SELECT Date FROM Store_Information UNION SELECT
Date FROM Internet_Sales
结果:
Date |
Jan-05-1999 |
Jan-07-1999 |
Jan-08-1999 |
Jan-10-1999 |
Jan-11-1999 |
Jan-12-1999 |
UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起。 UNION ALL 和 UNION
不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复。
而我们要找出有店面营业额以及网络营业额的日子。要达到这个目的,我们用以下的 SQL 语句:
SELECT Date FROM Store_Information UNION ALL SELECT
Date FROM Internet_Sales
结果:
Date |
Jan-05-1999 |
Jan-07-1999 |
Jan-08-1999 |
Jan-08-1999 |
Jan-07-1999 |
Jan-10-1999 |
Jan-11-1999 |
Jan-12-1999 |
和 UNION 指令类似, INTERSECT 也是对两个 SQL 语句所产生的结果做处理的。不同的地方是, UNION 基本上是一个 OR (如果这个值存在于第一句或是第二句,它就会被选出),而
INTERSECT 则比较像 AND (
这个值要存在于第一句和第二句才会被选出)。 UNION 是联集,而 INTERSECT 是交集。
而我们要找出哪几天有店面交易和网络交易。要达到这个目的,我们用以下的 SQL 语句:
SELECT Date FROM Store_Information INTERSECT SELECT
Date FROM Internet_Sales
结果:
Date |
Jan-07-1999
MINUS 指令是运用在两个 SQL 语句上。它先找出第一个 SQL
语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中。如果有的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个 SQL
语句所产生的结果并没有存在于第一个 SQL 语句所产生的结果内,那这笔资料就被抛弃。
例子:
而我们要知道有哪几天是有店面营业额而没有网络营业额的。要达到这个目的,我们用以下的 SQL 语句:
SELECT Date FROM Store_Information MINUS SELECT
Date FROM Internet_Sales
结果:
Date |
Jan-05-1999 |
Jan-08-1999 |
7、有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的:
Geography 表格
region_name |
store_name |
East |
Boston |
East |
New York |
West |
Los Angeles |
West |
San Diego |
例子1:
MySQL/Oracle: SELECT
CONCAT(region_name,store_name) FROM Geography WHERE store_name =
'Boston';
结果:
'EastBoston'
例子2:
Oracle: SELECT region_name || ' ' ||
store_name FROM Geography WHERE store_name = 'Boston';
结果:
'East Boston'
例子3:
SQL Server: SELECT region_name + ' ' +
store_name FROM Geography WHERE store_name = 'Boston';
结果:
'East Boston'
8、SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样:
MySQL: SUBSTR(), SUBSTRING()
Oracle: SUBSTR()
SQL Server: SUBSTRING()
例1:
SELECT SUBSTR(store_name, 3) FROM Geography WHERE
store_name = 'Los Angeles';
结果:
's Angeles'
例2:
SELECT SUBSTR(store_name,2,4) FROM Geography
WHERE store_name = 'San Diego';
结果:
'an D'
9、SQL 中的 TRIM 函数是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的资料库中有不同的名称:
- MySQL: TRIM(), RTRIM(), LTRIM()
- Oracle: RTRIM(), LTRIM()
- SQL Server: RTRIM(), LTRIM()
|
|
分享到:
相关推荐
这份"SQL学习笔记"涵盖了SQL的基础概念、语法以及高级特性,是学习数据库管理和数据分析的宝贵资料。 1. **SQL基础** - 数据库概念:了解什么是数据库,它的作用以及数据库管理系统(DBMS)如何工作。 - SQL简介...
SQL学习笔记可能会包含以下内容: 1. **基本SQL语法**:包括数据插入(INSERT INTO)、查询(SELECT)、更新(UPDATE)、删除(DELETE)等操作,以及如何使用WHERE子句进行条件筛选。 2. **SQL聚合函数**:如COUNT...
sql练习中易错笔记,order by ,group by,distinct,内连接,外连接等,一些mysql和oracle使用的区别:sql4种连接 两个表中有相同的列,根据共有的列值匹配行 left join左外连接,不管左表是否在右表中有匹配行,都...
SQL(Structured Query ...以上只是SQL学习笔记中的部分要点,实际应用中还需要结合具体数据库系统(如MySQL、Oracle、SQL Server等)的特点和最佳实践。通过持续学习和实践,才能真正精通SQL,成为数据管理的高手。
"SQL学习笔记" 本文档是关于 SQL 学习笔记的总结,涵盖了 SQL 的基本概念、函数、语法、应用场景等方面。下面是对标题、描述、标签和部分内容的详细解释: SQL 基本概念 SQL(Structured Query Language)是一种...
《高效SQL学习笔记》 SQL,全称Structured Query Language,即结构化查询语言,是用于管理关系数据库的标准语言。高效地掌握SQL对于任何IT从业者,尤其是数据分析师、数据库管理员和开发人员来说,都是至关重要的...
【JAVA与Sql学习笔记】 在Java编程中,与SQL数据库的交互是不可或缺的一部分。这篇学习笔记主要关注如何在Oracle数据库中使用PL/SQL的FORALL语句进行批量操作,以及如何利用批绑定(Bulk Binding)来提升性能。此外...
Oracle 10g SQL 学习笔记涵盖了Oracle数据库的基础知识,包括版本信息、数据库系统特点、关系型数据库结构、SQL语言、操作环境以及常见的数据库操作。以下是对这些知识点的详细说明: 1. **Oracle 9i基础知识**: ...
这份“SQL学习笔记+记录sql各种应用”涵盖了SQL的基础概念、语法以及在实际工作中的多种应用。 一、SQL基础 1. 数据库与表:SQL中的数据库是由一个或多个表组成的集合,表由行和列构成,每一行代表一条记录,每一列...
在深入探讨《Mastering Oracle SQL学习笔记》的内容之前,我们先理解一下这门课程的核心目标:帮助初学者更好地掌握SQL语言中的关键概念和操作,尤其是针对Oracle数据库的特性。这包括了SQL语句的构建、数据筛选、...
《LINQ to SQL 学习笔记》 LINQ (Language Integrated Query) 是.NET框架中引入的一项强大技术,它允许开发者使用熟悉的C#或VB.NET语言语法进行数据查询,而无需学习新的查询语言。LINQ to SQL是LINQ的一个特定实现...
### Oracle SQL 学习笔记关键知识点详解 #### 一、SQL 并行查询 并行查询是 Oracle 提供的一种提高查询性能的技术,特别是在处理大型数据集时尤其有效。通过利用多处理器或多核 CPU 的能力,并行查询能够显著加快...
Oracle数据库是全球广泛使用的...总的来说,Oracle数据库SQL学习笔记应该涵盖这些核心领域,并深入探讨每个主题,包括实例、最佳实践和问题解决策略。通过持续学习和实践,你可以成为一名熟练的Oracle数据库专业人员。
t-sql学习笔记,总结的挺好
本篇“SQL学习笔记一”将围绕SQL的基础概念、基本操作以及其在实际工作中的应用展开讨论。 首先,我们要理解SQL的核心功能,包括数据查询、数据插入、数据更新和数据删除,这四大操作构成了SQL的基本语法结构。例如...
这份“sql学习笔记”涵盖了SQL的基础概念、语法和实用技巧,帮助初学者轻松掌握SQL的核心知识。 一、SQL基础 1. 数据库与表:SQL中的数据库是一个组织数据的集合,由一个或多个表组成。表是由行和列构成的数据结构...
### Spark SQL 学习笔记知识点总结 #### 一、Spark SQL 概述 - **定义**:Spark SQL 是 Apache Spark 的一个模块,用于处理结构化数据。它提供了 DataFrame 和 Dataset API,以及支持 SQL 查询的能力。这些特性...
### PL/SQL学习笔记4 —— 集合与成员函数 #### 一、PL/SQL 表(索引表) 在PL/SQL中,**索引表**(也称为**PL/SQL表**)是一种非常有用的结构,它类似于数组但具有更多的灵活性。这种表是非持久化的,即它们不会...