SQL数据库学习之路(六)-阿里云开发者社区

开发者社区> 空城机> 正文

SQL数据库学习之路(六)

简介: 一、连接查询:当需要的结果需要从多张表中取时 关键问题:哪些表、关系(学生表的Id联系到班级表的Id) 内连接:inner join,两表中完全匹配的数据。
+关注继续查看

一、连接查询:当需要的结果需要从多张表中取时

关键问题:哪些表、关系(学生表的Id联系到班级表的Id)

内连接:inner join,两表中完全匹配的数据。

左外连接:left out join,两表中完全匹配的数据,左表中特有的数据,右表补全。

右外连接:right out join,两表中完全匹配的数据,右表中特有的数据,左表补全。

完全外连接:full out join ,两表中完全匹配的数据,左表中特有的数据,右表中特有的数据。

select *from gg inner join TextInfo on gg.Id=TextInfo.Id   --将gg表中的Id列和ClassId表中的ClassId列对应

   二、聚合函数:对行数据进行合并

sum(综合)、avg(平均值)、count、max(最大值)、min(最小值)

一般是对数字类型的列进行操作

一条查询中可以同时写多个聚合函数,但不能与普通列混写。

聚合函数中的full问题:不参与运算。

select count(*) from TextInfo     --查询TextInfo中有多少行

select count(*) from TextInfo where Id=3    --查询TextInfo中Id为3的有多少行

select max(Id) from gg   --查询gg表中Id最大的行的Id

三、开窗函数:over()

将统计出来的数据分布到原表的每一行中。

结合聚合函数、排名函数使用。

select gg.*,avg(Id) over() from gg  --在gg表中新增一列平均值,加上over()

四、分组:group by 列名1,列名2.....

聚合函数一般结合分组使用,对分组内的数据进行统计。

根据指定列进行分组。

分组后条件筛选:having...
select sex,count(*) from TextInfo group by sex  --将数据按照sex(性别)来分组,再统计每组人数

 

 

 

select sex,pwd,count(*) from TextInfo group by sex,pwd  --将数据按照sex(性别)来分组,在进行pwd分组,最后统计每组人数

--统计Id大于3的姓名为玄武的人数
select count(*) from gg where [Name]='玄武' and Id>3 group by [Name] 

 

总结:完整select语句执行过程及执行顺序

select distinct top n *

from t1 join t2 on ...join t3 on ...

where ...

group by ...having....

order by...

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【DATAGUARD 学习】如何停止standby数据库
主库:ORCL  备库:TESTDG           一般的,停止standby数据库之前,要先停用primary库,如果直接停用standby库,可能导致primary库也直接shutdown(最大保护模式)。
759 0
SQL数据库学习之路(四)
要求:通过SQL语句创建以下基本表:    教师关系 T(T#, TNAME,TITLE)    课程关系 C(C#,CNAME,T#)    学生关系 S(S#,SNAME,AGE,SEX)    选课关系SC(S#,C#,SCORE)    班级关系CLASS(CLASSID,CLASSNAME)    其中红色粗体为主键,带下划线的属性为外键。
736 0
PHP连接数据库学习手册
范例 1: Select 指令 任务:连结到 Access 的 Northwind DSN,然后在每一列显示头2个字段。(Northwind 北风数据库,在ODBC设定的DSN,是Access的标准范例数据库) 在这个范例中,我们建立一个 ADOConnection 对象,它代表了和数据库的连结。连结是以 PConnect 函数来初始化的,然后会持续的连结着。任何时候我们要
1028 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
8920 0
这38个小技巧告诉你如何快速学习MySQL数据库
无论是运维、开发、测试,还是架构师,数据库技术是一个必备加薪神器,那么,一直说学习数据库、学MySQL,到底是要学习它的哪些东西呢?此文为你揭晓,你值得一看!看过别忘记点赞+转发支持哦。
1081 0
重新学习MySQL数据库6:浅谈MySQL的中事务与锁
『浅入深出』MySQL 中事务的实现   在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的;在这篇文章中,我们将对事务的实现进行分析,尝试理解数据库是如何实现事务的,当然我们也会在文章中简单对 MySQL 中对 ACID 的实现进行简单的介绍。
1428 0
[转]一个小时内学习 SQLite 数据库
1. 介绍 SQLite 是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下 - 只要确保SQLite的二进制文件存在即可开始创建、连接和使用数据库。
1081 0
+关注
空城机
新手上路
35
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《Nacos架构&原理》
立即下载
《看见新力量:二》电子书
立即下载
云上自动化运维(CloudOps)白皮书
立即下载