数据库|查询(一)

其实在我们平时数据分析-提取数据的过程中,用到数据库方面知识比较多的是数据查询。

有一个大体的既定的结构格式如下:

SELECT [ALL|DISTINCT]字段名 ->FROM ->WHERE ->GROUP BY [合计函数] ->HAVING - >ORDER BY ->LIMIT-


运行时的先后顺序:

(8)SELECT(9)DISTINCT(11)

(1)FROM[left_table]

(3)JOIN

(2)ON

(4)WHERE

(5)GROUP  BY

(6)WITH

(7)HAVING

(10)ORDER  BY 

我们接下来一个一个来讲解:


1、SELECT 

    SELECT 语句用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。

   

   -- 可以用 * 表示所有字段。

       select * from 表名称a;

   -- 可以使用表达式(计算公式、函数调用、字段也是个表达式)

       select st, 19+5, now() from a;

   -- 可以为每个列使用别名。适用于简化列标识,避免多个列标识符重复。

       - 使用 as 关键字,也可省略 as.

       select stu+1 as add1 from a;

2、 DISTINCT|ALL 选项

关键词 DISTINCT 用于返回唯一不同的值,去除重复项。

默认为 all, 全部记录

SELECT DISTINCT 列名称 FROM 表名称

3、TOP 子句

TOP 子句用于规定要返回的记录的数目。

即从表里面取出少量的数据进行显示,不需要加载整张表或整个查询出来的记录。

例如:

SELECT TOP 2 * FROM Persons

SELECT TOP 50 PERCENT * FROM Persons

4、FROM 子句

   用于标识查询来源。

   -- 可以为表起别名,使用as关键字。

       SELECT * FROM tb1 AS tt, tb2 AS bb;

   -- from子句后,可以同时出现多个表。

       -- 多个表会横向叠加到一起,而数据会形成一个笛卡尔积。

       SELECT * FROM tb1, tb2;

   -- 向优化符提示如何选择索引

       USE INDEX、IGNORE INDEX、FORCE INDEX

       SELECT * FROM table1 USE INDEX (key1,key2) WHERE key1=1 AND key2=2 AND key3=3;

       SELECT * FROM table1 IGNORE INDEX (key3) WHERE key1=1 AND key2=2 AND key3=3;

5、WHERE 子句

 SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

where的作用其实就是过滤数据的作用,从from获得的数据源中进行筛选。

   -- 表达式由运算符和运算数组成。

       -- 运算数:变量(字段)、值、函数返回值

       -- 运算符:

           =, <=>, <>, !=, <=, <, >=, >, !, &&, ||,

           in (not) null, (not) like, (not) in, (not) between and, is (not), and, or, not, xor

           is/is not 加上ture/false/unknown,检验某个值的真假

           <=>与<>功能相同,<=>可用于null比较

6、AND & OR 运算符

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

7、GROUP BY 子句, 分组子句,

   GROUP BY 字段/别名 [排序方式]

   分组后会进行排序。

  升序:ASC,降序:DESC

   以下[合计函数]需配合 GROUP BY 使用:

   count 返回不同的非NULL值数目  count(*)、count(字段)

   sum 求和 ;max 求最大值; min 求最小值 ;avg 求平均值

   group_concat 返回带有来自一个组的连接的非NULL值的字符串结果。组内字符串连接。

8、HAVING 子句,条件子句

HAVING 子句使你能够指定过滤条件,从而控制查询结果中哪些组可以出现在最终结果里面。

WHERE 子句对被选择的列施加条件,而 HAVING 子句则对 GROUP BY 子句所产生的组施加条件。

   与 where 功能、用法相同,执行时机不同。

   where 在开始时执行检测数据,对原数据进行过滤。

   having 对筛选出的结果再次进行过滤。

   having 字段必须是查询出来的,where 字段必须是数据表存在的。

   where 不可以使用字段的别名,having 可以。因为执行WHERE代码时,可能尚未确定列值。

   where 不可以使用合计函数。一般需用合计函数才会用 having

   SQL标准要求HAVING必须引用GROUP BY子句中的列或用于合计函数中的列。

9、ORDER BY 子句,排序子句

    ORDER BY 关键字用于按升序或降序对结果集进行排序。

   ORDER BY 关键字默认情况下按升序排序记录。

  如果需要按降序对记录进行排序,可以使用DESC关键字。

   order by 排序字段/别名 排序方式 [,排序字段/别名 排序方式]...

   升序:ASC,降序:DESC

   支持多个字段的排序。

10、LIMIT 子句,限制结果数量子句

   仅对处理好的结果进行数量限制。

   将处理好的结果的看作是一个集合,按照记录出现的顺序,索引从0开始。

   limit 起始位置, 获取条数

   省略第一个参数,表示从索引0开始。limit 获取条数



总结学习,未完待续....

你可能感兴趣的:(数据库|查询(一))