`

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--结构化查询语言详解

    第1章 数据库与sql基础 1 1.1 数据库的基本概念 1 1.1.1 数据库的由来 1 1.1.2 数据库系统的概念 3 1.2 数据库系统的结构、组成及工作流程 3 1.2.1 数据库的体系结构 3 1.2.2 数据库系统的组成 4 1.2.3 ...

    精通SQL 结构化查询语言详解

    第1章 数据库与SQL基础  1.1 数据库的基本概念  1.1.1 数据库的由来  1.1.2 数据库系统的概念  1.2 数据库系统的结构、组成及工作流程 1.2.1 数据库的体系结构  1.2.2 数据库系统的组成  1.2.3 数据库...

    sqlserver2000基础(高手也有用)

    14.1.3 系统表应用中三个重要的系统存储过程 426 14.2 系统表在对象信息检索中的应用 429 14.2.1 搜索指定的对象所处的数据库 429 14.2.2 获取存储过程参数定义 432 14.2.3 搜索指定字符在哪个表的哪个字段...

    MYSQL常用命令大全

    7、修改表中数据:update 表名 set 字段=新值,… where 条件 mysql&gt; update MyClass set name='Mary' where id=1; 7、在表中增加字段: 命令:alter table 表名 add字段 类型 其他; 例如:在表MyClass中添加了一个...

    MySQL命令大全

    7、修改表中数据:update 表名 set 字段=新值,…where 条件 mysql&gt; update MyClass set name=’Mary’where id=1; 7、在表中增加字段: 命令:alter table 表名 add字段 类型 其他; 例如:在表MyClass中添加了...

    数据式审计常用的数据分析方法.docx

    第三个层次是指用户从大量数据中发现数据模式,预测趋势和行为的数据分析模式,它能挖掘数据间潜在的模式,发现用户可能忽略的信息,并为审计人员做出前瞻性的、基于知识的决策提供帮助,因而实现的是验证型分析。...

    数据库系统概念复习总结.pdf

    ⽬录 ⽬录 第⼀章、引⾔ 1.1 ⽂件管理系统坏处 1.2 数据视图 1.3 数据模型 1.4 数据库语⾔ 第⼆章、关系模型介绍 2.1 关系数据库的结构 2.2 数据库模式 2.3 码 第三章、SQL 3.1 SQL 查询语⾔概览 3.2 SQL数据定义 ...

    asp.net知识库

    SQL过程自动C#封装,支持从表到基本存储过程生成 使用SQLDMO控制 SQL Server 使用SQL-DMO实现定制SQL Scripts Create Tables and Build inserts from Tables by using Mygeneration Templates(Sql Server) C# 获取...

    SQL 知识点回顾总结(二)

    本文在上篇博客 SQL 知识点回顾总结(一)的基础上,再结合《SQL 必知必会》一书对 SQL 相关知识点进行了补充整理,供大家参考,也方便自己查阅备忘。 在指定一条 order by 子句时,应该保证它是 select 语句中最后...

    计算机信息管理系统设计.doc

    建立、修改和删除数据对象 控制对数据和数据对象的存取 确保数据库的一致性和完整性等 1.5.2 SQL查询 数据查询是关系运算理论在SQL语言中的主要体现,SELECT 语句是SQL查询的基本语句,在以SQL为基础的关系数据库中...

    Oracl技术资料(EBook)

    电子版的Oracl技术资料 1. 《Oracle8 优化技术》摘录 (第一章 安装) ...44.总结SQL语句中的优化提示 45.使用Database Configuration Assistant安装第二个数据库 46.Oracle 数据库向 MS SQL Server 7.0 的迁移

    Oracle数据库学习指南

    44.总结SQL语句中的优化提示 45.使用Database Configuration Assistant安装第二个数据库 46.Oracle 数据库向 MS SQL Server 7.0 的迁移 Oracle1: 1. Decode()函数使用技巧(NT+IIS+ASP+ORACLE) 2. Dual伪...

    东北大学软件学院程序实践(四)数据库实验报告

    注意Book表中的每一条记录代表一本具体的书,因此,如果图书馆中有三本名为"DBMS"的书,Book表中将有三条相关记录,每条代表一本书。请写出针对以下问题的SQL语句(每一问必需用一条SQL语句实现,但该SQL语句可以...

    第二热电厂MIS系统数据库设计论文

    摘 要 9 前言 10 第一章 实体、对象命名规范 11 1.1 表名的命名规范 11 1.2 表的字段命名规范 12 1.3 序列命名规范 12 ...B. 系统中所有表的数据量估算清单 127 C. 系统中的SQL查询频率估算清单 127

    MySQL 入门学习 ——基础教程

    那么我们如何从数据库表中检索数据呢? · 1、从数据库表中检索信息 实际上,前面我们已经用到了SELECT语句,它用来从数据库表中检索信息。 select语句格式一般为: SELECT 检索关键词 FROM 被检索的表 WHERE ...

    PHP和MySQL Web开发第4版pdf以及源码

    2.7.3 每次读取一行数据:fgets()、fgetss()和fgetcsv() 2.7.4 读取整个文件:readfile()、fpassthru()和file() 2.7.5 读取一个字符:fgetc() 2.7.6 读取任意长度:fread() 2.8 使用其他有用的文件函数 2.8.1 ...

    PHP和MySQL Web开发第4版

    2.7.3 每次读取一行数据:fgets()、fgetss()和fgetcsv() 2.7.4 读取整个文件:readfile()、fpassthru()和file() 2.7.5 读取一个字符:fgetc() 2.7.6 读取任意长度:fread() 2.8 使用其他有用的文件函数 2.8.1 ...

    PHP和MySQL WEB开发(第4版)

    2.7.3 每次读取一行数据:fgets()、fgetss()和fgetcsv() 2.7.4 读取整个文件:readfile()、fpassthru()和file() 2.7.5 读取一个字符:fgetc() 2.7.6 读取任意长度:fread() 2.8 使用其他有用的文件函数 2.8.1 查看...

Global site tag (gtag.js) - Google Analytics