数据查询1

一、SELECT语句

Select子句:指定要显示的列或表达式

From子句:指定查询数据来源的表或视图,可以指定一个表,也可以指定多个表

Where子句:指定选择行的条件

Group by子句:指定分组表达式

Having子句:制定满足分组的条件

Order by子句:指定行的升序或降序排序

Limit子句:指定查询结果集包含的行数

二、投影查询

1、投影指定的列

使用select语句可选择表中的一个列或多个列,若为多个列用逗号隔开

2、投影全部列

在select子句指定列的位置上使用 * 号时,则为查询表中所有的列

3、修改查询结果的列标题

在列名后使用AS<列别名>

4、计算列值

使用select子句对列进行查询时,可以对数字类型的列进行计算,可以使用加(+),减(-),乘(×),除(/)等算术运算符

5、去掉重复行

用distinct关键字去掉结果集中的重复行

三、选择查询

1、表达式比较

比较运算符用于比较两个表达式的值

2、指定范围

Between、not between、in是用于指定范围的三个关键词

3、空值判断

判断一个表达式的值是否为空值可用IS NULL关键字

4、使用LIKE关键字的字符串匹配查询

%:代表0或多个字符

_:代表一个字符

LIKE匹配中使用通配符的查询也称模糊查询

5、使用正则表达式进行查询

正则表达书通常用来检索或替换符合某个模式的文本内容,根据指定的匹配模式匹配文本中符合要求的特殊字符串。正则表达式的查询能力比通配符的查询能力更强大、更灵活、可以应用于非常复杂的查询中。

正则表达式常用的字符匹配选项

<字符串>:匹配包含指定的字符串的文本

[ ] :匹配在[ ]中的任何一个字符

[^] :匹配不在[ ]中的任何一个字符

^ :匹配文本的开始字符

$ :匹配文本的结束字符

. :匹配任何 单个字符

* :匹配零个或多个 * 前面的字符

+ :匹配+前面的字符1次或多次

{n} :匹配前面的字符串至少n次

四、分组查询和统计计算

1、聚合函数

聚合函数实现数据的统计计算,用于计算表中的数据,返回单个计算结果

    1. COUNT()函数

计算组中满足条件的行数或总行数

    1. SUM()、AVG()函数(两个函数只能用于数值类型的数据)

SUM():求出一组数据的总和

AVG():求出一组数据的平均值

    1. MAX()、MN()函数(两个函数可用于任意类型的数据)

MAX():求出一组数据最大值

MIN():求出一组数据最小值

2、GROUP BY子句

用于指定需要分组的列

注:若select子句的列名表包含聚合函数,则该列名表只能包含聚合函数指定的列名和group by子句指定的列名。聚合函数常与group by子句一起使用

3、HAVING子句

用于对分组按指定条件进一步进行筛选,过滤出满足指定条件的分组

注:HAVING子句可以使用聚合函数,WHERE子句不可以使用聚合函数

当WHERE子句、GROUP BY子句、HAVING子句、ORDER BY子句在一个SELECT语句中时,执行顺序

  1. 执行WHERE子句,在表中选择行
  2. 执行GROUP BY子句,对选择行进行分组
  3. 执行聚合函数
  4. 执行HAVING子句,筛选满足条件的分组
  5. 执行ORDER BY子句,进行排序

五、排序查询和限制查询结果的数量

1、排序查询

ORDER BY子句可用于对查询结果进行排序(可对数值、日期、字符三种数据类型使用,在整个SELECT语句最后)

ASC:升序排序

DESC:降序排序

2、限制查询结果数量

LIMIT子句用于限制SELECT语句返回的行数

(1)Offset:位置偏移量,指示从哪一行开始显示,第1行的位置偏移量是0,第2行的位置偏移量是1,以此类推,若不指定位置偏移量,系统从表第1行开始显示

(2)row_count:返回的行数

(3)LIMIT子句两种语法格式,eg:显示表中第2~4行

A.LIMIT 1,3

B.LIMIT 3 OFFSET 1

六、连接查询

1、交叉连接(CROSS JOIN)

又称笛卡尔积,由第一个表的每行与第二个表的每行连接起来后形成的表,返回的结果集的行数等于所连接的两个表行数的乘积

2、内连接(INNER JOIN)

只有满足查询条件得到记录才能出现在结果集中,使用比较运算符进行表中某些字段值的比较操作,并将与连接条件相匹配的数据行组成新记录,以消除交叉连接中没有意义的数据行

有以下两种连接方式

INNER JOIN 显示语法结构

使用WHERE子句定义连接条件的隐式语法结构

2.1、等值连接与非等值连接

使用“=”连接起来的为等值连接,其他运算符连接为非等值连接

2.2、自然连接

在FROM子句中使用关键字NATURAL JOIN,自然连接在目标列中去除相同的字段名

2.3、自连接

将某个表与自身进行连接,为自表连接或自身连接,使用自连接需要为表指定多个别名,且对所有查询字段的引用必须使用表别名限定

3、外连接

只有满足查询条件得到记录才能最为结果输出,外连接的结果不但包含满足连接条件的行,还包括相应表中的所有行

左外连接:结果表中除了包含满足连接条件的行外,还包含左表的所有行,当左表有记录而在右表中没有匹配记录时,右表对应列被设置为NULL

右外连接:结果表中除了包含满足连接条件的行外,还包含右表的所有行,当右表有记录而在左表中没有匹配记录时,左表对应列被设置为NULL

七、子查询

可以用一系列简单的查询构成复杂的查询,在SQL语句中SELECT…FROM…WHERE语句为一个查询块,在WHERE子句或HAVING子句所指定的条件中,可以使用另一个查询块嵌套查询

  1. IN子查询

子查询和父查询的连接

先执行子查询,子查询的结果为父查询的查询条件

  1. 比较子查询

子查询和父查询之间用比较运算符进行关联

ALL:表达式要与子查询结果集中每个值进行比较

SOME、AND:表达式只要与子查询结果集中某个值满足比较关系

  1. EXISTS子查询

只用于测试子查询是否返回行,若子查询返回一个或多个行,EXISTS返回TRUE,否则返回FALSE,NOT EXISTS返回值与EXISTS相反

八、联合查询

将两个或多个SQL语句的查询结果集合并起来,利用联合进行查询处理以完成特定的任务

(1)在构成联合查询的各个单独的查询中,列数和列的顺序必须匹配,数据类型必须兼容

(2)ORDER BY子句和LIMIT子句必须置于最后一条SELECT语句之后

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值