`

SQL基础总结(三):从表中检索数据

 
阅读更多

本系列blog源自前年写的SQL学习笔记,汇总一下发上来。

---------------------------------------------------------------

使用DISTINCT消除重复的行。

虽然空值是未知的,但彼此绝不相等,但DISTINCT认为空值是彼此相等的。

对于DISTINCT操作,DBMS执行内部排序去识别并消除重复的行。排序是需要大量计算开销的,除非不得不用,否则不要使用DISTINCT

行首先按sortcolumn1排序,然后对sortcolumn1中值相等的行再按sortcolumn2排序。

可以按字符串特定的部分对结果排序:ORDER BY substr(phone,length(phone)-1);

允许在ORDER BY中指定列的相对位置编号而不是列名。位置编号引用的是结果的列,而不是原始表中的列。

 

DBMS决定空值是大于还是小于所有非空值。

 

影响排序速度的3个因素:

<!--[if !supportLists]-->1.  <!--[endif]-->选择的行的数量。

<!--[if !supportLists]-->2.  <!--[endif]-->ORDER BY 子句中列的数量。

<!--[if !supportLists]-->3.  <!--[endif]-->ORDER BY 子句中列数据类型的长度。

 

可以在ORDER BY中用列的别名替代列名。

ORDER BY列不能在结果中唯一标示每一行,有重复值的行将以任意顺序列出。

ORDER BY子句增加CASE子句,可支持逻辑条件排序。

可以为经常排序的列创建索引。

 

空值表示未知,不和任何内容值匹配。

一般而言,最快的比较是相等,然后是不相等(>,<,>=,<=),最慢的是不等于。

不能在WHERE子句中使用COUNTSUM这样的聚集函数。

 

SELECT中定义的列别名,不能在WHERE子句中引用它。可以改成使用在WHERE子句之前计算的FROM子句的子查询:

SELECT * FROM (SELECT SALES AS SOLD FROM TITLES) ta WHERE SOLD>1000;

 

ANDORNOT是逻辑操作符。逻辑操作符,即布尔操作符,被设计为处理真值:真、假、未知。

NOT不能连接两个条件,而是否定一个条件。

NOT放在列名表达式之前:WHERE NOT state=’RUN’ 等价于WHERE state <> ’RUN’

 

查询条件只包含AND操作符,首先放置为真可能性最小的条件,查询将会变快。因为DBMS优化器是从左到右读取WHERE子句的(大多数情况)。Oracle基于开销的优化器从右到左读取。

 

某些DBMS支持异或逻辑操作符,当且仅当一个操作数为真时结果为真。

 

LIKE只对字符串起作用,对数字、日期不起作用。

NOT LIKE用于否定LIKE

操作符%:匹配0个或多个字符。

操作符_:下划线匹配任意一个字符。

按照字面量方式查找%_:使用转义符!

如:’100!%’  查找的字符串为100%

 

通配符查找很耗时,特别是使用以%开头的模式。

在模式不包含通配符的情况下,LIKE=一样比较,NOT LIKE<>一样比较。=通常比LIKE快。

 

BETWEEN适用于字符串、数字、日期。BETWEEN语句可以用AND语句改写。

NOT BETWEEN否定BETWEEN条件。

 

IN确定给定值是否匹配指定列表。

IN可以处理字符串、数字、日期。

 

NOT IN用于否定IN

IN通常要比多个OR运行的快。为了加快速度,首先列出最可能的值。空值表示缺失或者未知的值。LIKEBETWEENIN和其它WHERE子句条件不能发现空值。

 

IS NULL可以应用于任意数据类型的列。

IS NOT NULL否定IS NULL

 

如果包含空值的列是WHERE条件中的列,空值行将被排除在结果之外。因为空值不能和任何值比较。

分享到:
评论

相关推荐

    SQL语句与数据透视表结合使用入门

    2. **FROM**:指定要从中检索数据的表。 3. **WHERE**:设置条件过滤数据。 4. **GROUP BY**:对数据进行分组。 5. **HAVING**:在分组后对数据进行过滤。 6. **ORDER BY**:对结果进行排序。 7. **JOIN**:连接多个...

    sql练习总结sql经验总结

    1. SELECT基本用法:用于从表中检索数据。可以指定特定的列、多个列,甚至整个表。 2. 条件查询:WHERE子句用于筛选满足特定条件的行,如使用比较运算符(=, , &gt;, &lt;, , &gt;=)或逻辑运算符(AND, OR, NOT)。 3. ...

    SQL 基础语句集锦.doc

    SQL 中的SELECT语句用于从表中检索数据。在本例中,我们使用SELECT语句从 Person 表中检索 LastName、FirstName 和所有列的数据。 DISTINCT SQL 中的DISTINCT关键字用于从结果集中删除重复的行。在本例中,我们...

    Mysql基础知识学习-从表中检索信息.pdf

    ### MySQL基础知识学习——从表中检索信息 #### 1. 使用SELECT语句的基本结构与功能 **SELECT** 语句是SQL语言中最常用的查询语句之一,主要用于从MySQL数据库的表中检索信息。其基本结构如下: ```sql SELECT ...

    SQL基础教程-Mick-示例程序&习题答案

    - 查询数据:SELECT语句是SQL中最常用的部分,用于从表中选取数据,可以结合WHERE子句进行条件筛选。 - 更新数据:UPDATE语句用于修改表中的现有数据。 - 删除数据:DELETE FROM语句用于从表中删除数据行。 2. ...

    SQL.zip_sql 表级约束_sql创建表_sql数据表_删除数据库

    4. **删除数据 (DELETE FROM)**:从表中删除记录。 ```sql DELETE FROM Employees WHERE ID = 1; ``` 5. **删除表 (DROP TABLE)**:彻底移除整个表。 ```sql DROP TABLE Employees; ``` 四、数据库操作 1. **创建...

    常用sql基本语句大全

    * `SELECT`:从数据库表中检索数据行和列 * `INSERT`:向数据库表添加新数据行 * `DELETE`:从数据库表中删除数据行 * `UPDATE`:更新数据库表中的数据 数据定义 * `CREATE TABLE`:创建一个数据库表 * `DROP ...

    sql server 中sql语句大总结

    - `SELECT`:用于从数据库中检索数据,可以进行各种复杂的查询和数据筛选。 - `DELETE`:删除表中的记录。 - `UPDATE`:更新表中的记录。 - `INSERT`:向表中插入新的记录。 3. **DCL (数据控制语言)**: - `...

    数据分析核心知识点总结 —— SQL.pdf

    - 定制用户数据:仅展示用户需要的列。 - 保护数据安全:隐藏原始表的敏感信息。 - 只读视图:防止用户对视图进行修改。 - 包含检索条件的视图:创建预过滤的数据集。 3. **视图的高级使用** - 物化视图...

    SQLserver资料|sql基础教程|sql基础案例|sql入门教程

    4. 查询语言:SELECT语句是SQL中最重要的部分,用于从数据库中检索数据。学习如何使用WHERE子句过滤数据,GROUP BY进行分组,ORDER BY进行排序,以及JOIN操作连接多个表。 5. 子查询:在查询中嵌套查询,用于获取...

    sql基础语句总结-本人自己总结的-非常适合初学者

    SELECT 语句用于从数据库中检索数据。基本语法如下: SELECT "栏位名" FROM "表格名" 其中,"栏位名" 是要检索的列的名称,"表格名" 是要检索的表的名称。 例如: SELECT * FROM customers; DISTINCT 语句 ...

    SQL的基础学习资料

    1. SELECT语句:SQL中最常用的是SELECT语句,用于从数据库中检索数据。可以指定字段、表名、条件、排序方式等。 2. JOIN操作:当需要从多个表中获取数据时,JOIN语句是关键。如INNER JOIN(内连接)、LEFT JOIN(左...

    零基础学SQL

    1. 查询:SELECT语句是最常用的SQL语句,用于从表中检索数据。可以指定列名、使用WHERE子句过滤条件,使用GROUP BY进行分组,HAVING过滤分组后的结果,ORDER BY进行排序,LIMIT限制返回的行数。 2. 插入:INSERT ...

    SQL之数据检索 - MS SQL

    总结,SQL中的数据检索是通过SELECT语句配合各种子句和函数实现的。在MS SQL中,我们可以通过这些工具灵活地查询、筛选、聚合和组织数据,从而获取我们需要的信息。理解并熟练掌握这些概念,将极大地提高你在数据库...

    SQLServer基础篇

    - **连接查询**:用于从两个或多个表中检索数据,包括内连接、左连接、右连接等。 - **联合查询**:将多个查询的结果合并成一个结果集。 5. **表的索引**: - **聚集索引**:决定了表中数据的物理排序顺序。 - ...

    实用程序:SQL语句的总结

    - **SELECT语句**:用于从表中检索数据。例如,`SELECT * FROM table_name` 将返回表中的所有记录。 - **WHERE子句**:过滤结果,如 `SELECT * FROM table_name WHERE condition`。 - **ORDER BY子句**:对结果...

    SQL基础教程.rar

    在SQL中,`SELECT`语句是最常用的操作,用于从表中检索数据。例如,以下语句将从"Employees"表中选择所有员工的姓名和薪水: ```sql SELECT Name, Salary FROM Employees; ``` ### 数据操纵 数据操纵包括INSERT、...

    常用的sql语句总结

    - `DELETE FROM`:从表中删除一条或多条记录。 - `SELECT`:这是最常用的SQL语句,用于查询和检索数据,可以配合`WHERE`子句进行条件筛选。 3. **聚合函数和分组**:用于对数据进行统计分析。 - `COUNT()`:计算...

    sql考试题及答案.pdf

    * SELECT语句:用于从数据库中检索数据。 * FROM子句:指定要检索的表名。 * WHERE子句:指定检索条件。 * GROUP BY子句:将结果分组。 * HAVING子句:过滤分组结果。 * JOIN语句:连接两个或多个表。 * SUBQUERY...

Global site tag (gtag.js) - Google Analytics