176****1457

2020-06-16   阅读量: 850

数据库学习第二天 SQL查询语言

扫码加入数据分析学习群

注意操作表层级时,一定要先进入某个数据库中。

代码为:use 数据库名称

一、单表查询

• 查询结果排序:select 字段1[,字段2,…] from 表名 order by 字段1[ 排序方向,字段2 排序方向,…]; 多字段排序时,先按第一个字段排序,第一个字段值相同时再按第二个字段排序 指定排序方向:asc升序,desc降序(没有指定排序方向时,默认是asc升序)

• 限制查询结果数量:select 字段1[,字段2,…] from 表名 limit [偏移量,] 行数; limit接受一个或两个数字参数,参数必须是一个整数常量 第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目 如果只给定一个参数,表示返回最大的记录行数目 初始记录行的偏移量是0(而不是1)

• 分组查询:select 字段1[,字段2,…] from 表名[ where 查询条件] group by 分组字段1[,分组字段2,…]; 将查询结果按照一个或多个字段进行分组,字段值相同的为一组,对每个组进行聚合计算 • 分组后筛选:select 字段1[,字段2,…] from 表名[ where 查询条件][ group by 分组字段1[,分组字段2,…]] having 筛选条件;

• where与having的区别: where子句作用于表,having子句作用于组。 where条件查询的作用域是针对数据表进行筛选,而having条件查询则是对分组结果进行过滤。 where在分组和聚合计算之前筛选行,而having 在分组和聚合之后筛选分组的行,因此where子句不能包含聚合函数。

补充

1:分组查询后只能显示:分组字段,聚合字段,以及和分子字段一一对应的字段。其它字段可以显示但是结果为错误值(默认显示为第一条信息)

2:所有聚合函数对空值都是不进行运算的(忽略空值)

3:日期型函数可以加减,不能乘除。

4:比较运算符 between and 表示的值范围中,是一个闭区间。

5:数据库中,空值是一个特殊形式的值,不与任何值做比较,运算,它与任何值比较,运算后,结果都为空值。

二、select语句的执行顺序

注意where与having

三、多表查询(横向)

通过不同表中具有相同意义的关键字段,将多个表进行连接,查询不同表中的字段信息 连接方式

• 内连接和外连接(左连接和右连接)

多表连接的结果通过三个属性决定

• 方向性:在外连接中写在前边的表为左表、写在后边的表为右表 • 主附关系:主表要出所有的数据范围,附表与主表无匹配项时标记为null,内连接时无主附表之分

• 对应关系:关键字段中有重复值的表为多表,没有重复值的表为一表

1:内连接:

按照连接条件合并两个表,返回满足条件的行。 select 字段1[,…] from 表1[ inner] join 表2 on 表1.key=表2.key;

2:左连接

结果中除了包括满足连接条件的行外,还包括左表的所有行。 select 字段1[,…] from 表1 left join 表2 on 表1.key=表2.key;

3:右连接

结果中除了包括满足连接条件的行外,还包括右表的所有行。 select 字段1[,…] from 表1 right join 表2 on 表1.key=表2.key;

补充:

1:实际表直接的连接方式有六种:内连接、左连接、右连接、全连接、左反连接、右反连接,但mysql目前只支持内连接、左连接、右连接。

2:不把所有信息写在一张表上是为了节约存储空间,避免数据冗余。

3:只要确定主表,使用左连接和右连接的结果是一样的,只不过书写方式不同,一般我们习惯把主表写在左边,即用左连接

4:连接两张表时,为了确定字段名(两张所连接表的字段名有可能一样),我们会用到表限定,方式为:表名.字段名 例:t1.key

5:连接多张表时,会先把前两张表合并成一个大的虚拟结果集,再与下一张表连接

6:自连接,可以通过设置别名的方式来让一张表与自己连接。

四、联合查询 (纵向)

把多条select语句的查询结果合并为一个结果集。

• 被合并的结果集的列数、顺序和数据类型必须完全一致

union去重:select 字段1[,字段2,…] from 表名 union select 字段1[,字段2,…] from 表名;

union all不去重: select 字段1[,字段2,…] from 表名 union all select 字段1[,字段2,…] from 表名;

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
29.9971 4 2 关注作者 收藏

评论(0)


暂无数据

推荐课程