本系列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子句中使用COUNT、SUM这样的聚集函数。
在SELECT中定义的列别名,不能在WHERE子句中引用它。可以改成使用在WHERE子句之前计算的FROM子句的子查询:
SELECT *
FROM (SELECT SALES AS SOLD FROM TITLES) ta WHERE SOLD>1000;
AND、OR、NOT是逻辑操作符。逻辑操作符,即布尔操作符,被设计为处理真值:真、假、未知。
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运行的快。为了加快速度,首先列出最可能的值。空值表示缺失或者未知的值。LIKE、BETWEEN、IN和其它WHERE子句条件不能发现空值。
IS NULL可以应用于任意数据类型的列。
用IS NOT NULL否定IS NULL。
如果包含空值的列是WHERE条件中的列,空值行将被排除在结果之外。因为空值不能和任何值比较。
分享到:
相关推荐
2. **FROM**:指定要从中检索数据的表。 3. **WHERE**:设置条件过滤数据。 4. **GROUP BY**:对数据进行分组。 5. **HAVING**:在分组后对数据进行过滤。 6. **ORDER BY**:对结果进行排序。 7. **JOIN**:连接多个...
1. SELECT基本用法:用于从表中检索数据。可以指定特定的列、多个列,甚至整个表。 2. 条件查询:WHERE子句用于筛选满足特定条件的行,如使用比较运算符(=, , >, <, , >=)或逻辑运算符(AND, OR, NOT)。 3. ...
SQL 中的SELECT语句用于从表中检索数据。在本例中,我们使用SELECT语句从 Person 表中检索 LastName、FirstName 和所有列的数据。 DISTINCT SQL 中的DISTINCT关键字用于从结果集中删除重复的行。在本例中,我们...
### MySQL基础知识学习——从表中检索信息 #### 1. 使用SELECT语句的基本结构与功能 **SELECT** 语句是SQL语言中最常用的查询语句之一,主要用于从MySQL数据库的表中检索信息。其基本结构如下: ```sql SELECT ...
- 查询数据:SELECT语句是SQL中最常用的部分,用于从表中选取数据,可以结合WHERE子句进行条件筛选。 - 更新数据:UPDATE语句用于修改表中的现有数据。 - 删除数据:DELETE FROM语句用于从表中删除数据行。 2. ...
4. **删除数据 (DELETE FROM)**:从表中删除记录。 ```sql DELETE FROM Employees WHERE ID = 1; ``` 5. **删除表 (DROP TABLE)**:彻底移除整个表。 ```sql DROP TABLE Employees; ``` 四、数据库操作 1. **创建...
* `SELECT`:从数据库表中检索数据行和列 * `INSERT`:向数据库表添加新数据行 * `DELETE`:从数据库表中删除数据行 * `UPDATE`:更新数据库表中的数据 数据定义 * `CREATE TABLE`:创建一个数据库表 * `DROP ...
- `SELECT`:用于从数据库中检索数据,可以进行各种复杂的查询和数据筛选。 - `DELETE`:删除表中的记录。 - `UPDATE`:更新表中的记录。 - `INSERT`:向表中插入新的记录。 3. **DCL (数据控制语言)**: - `...
- 定制用户数据:仅展示用户需要的列。 - 保护数据安全:隐藏原始表的敏感信息。 - 只读视图:防止用户对视图进行修改。 - 包含检索条件的视图:创建预过滤的数据集。 3. **视图的高级使用** - 物化视图...
4. 查询语言:SELECT语句是SQL中最重要的部分,用于从数据库中检索数据。学习如何使用WHERE子句过滤数据,GROUP BY进行分组,ORDER BY进行排序,以及JOIN操作连接多个表。 5. 子查询:在查询中嵌套查询,用于获取...
SELECT 语句用于从数据库中检索数据。基本语法如下: SELECT "栏位名" FROM "表格名" 其中,"栏位名" 是要检索的列的名称,"表格名" 是要检索的表的名称。 例如: SELECT * FROM customers; DISTINCT 语句 ...
1. SELECT语句:SQL中最常用的是SELECT语句,用于从数据库中检索数据。可以指定字段、表名、条件、排序方式等。 2. JOIN操作:当需要从多个表中获取数据时,JOIN语句是关键。如INNER JOIN(内连接)、LEFT JOIN(左...
1. 查询:SELECT语句是最常用的SQL语句,用于从表中检索数据。可以指定列名、使用WHERE子句过滤条件,使用GROUP BY进行分组,HAVING过滤分组后的结果,ORDER BY进行排序,LIMIT限制返回的行数。 2. 插入:INSERT ...
总结,SQL中的数据检索是通过SELECT语句配合各种子句和函数实现的。在MS SQL中,我们可以通过这些工具灵活地查询、筛选、聚合和组织数据,从而获取我们需要的信息。理解并熟练掌握这些概念,将极大地提高你在数据库...
- **连接查询**:用于从两个或多个表中检索数据,包括内连接、左连接、右连接等。 - **联合查询**:将多个查询的结果合并成一个结果集。 5. **表的索引**: - **聚集索引**:决定了表中数据的物理排序顺序。 - ...
- **SELECT语句**:用于从表中检索数据。例如,`SELECT * FROM table_name` 将返回表中的所有记录。 - **WHERE子句**:过滤结果,如 `SELECT * FROM table_name WHERE condition`。 - **ORDER BY子句**:对结果...
在SQL中,`SELECT`语句是最常用的操作,用于从表中检索数据。例如,以下语句将从"Employees"表中选择所有员工的姓名和薪水: ```sql SELECT Name, Salary FROM Employees; ``` ### 数据操纵 数据操纵包括INSERT、...
- `DELETE FROM`:从表中删除一条或多条记录。 - `SELECT`:这是最常用的SQL语句,用于查询和检索数据,可以配合`WHERE`子句进行条件筛选。 3. **聚合函数和分组**:用于对数据进行统计分析。 - `COUNT()`:计算...
* SELECT语句:用于从数据库中检索数据。 * FROM子句:指定要检索的表名。 * WHERE子句:指定检索条件。 * GROUP BY子句:将结果分组。 * HAVING子句:过滤分组结果。 * JOIN语句:连接两个或多个表。 * SUBQUERY...