SQL Server SQL查询入门功能实例
感兴趣的小伙伴,下面一起跟随编程之家 52php.cn的小编两巴掌来看看吧! 引言在前篇文章中(SQL查询入门(上篇),我对数据库查询的基本概念以及单表查询做了详细的解释,本篇文章中,主要说明SQL中的各种连接以及使用范围,以及更进一步的解释关系代数法和关系演算法对在同一条查询的不同思路。 多表连接简介 在关系数据库中,一个查询往往会涉及多个表,因为很少有数据库只有一个表,而如果大多查询只涉及到一个表的,那么那个表也往往低于第三范式,存在大量冗余和异常。 因此,连接(Join)就是一种把多个表连接成一个表的重要手段. 比如简单两个表连接学生表(Student)和班级(Class)表,如图: 【图片暂缺】【图片暂缺】 进行连接后如图: 【图片暂缺】 笛卡尔积 在实际应用中,笛卡尔积本身大多没有什么实际用处,只有在两个表连接时加上限制条件,才会有实际意义,下面看内连接 内连接 对于开篇中的两个表,假使查询语句如下: 代码如下:
可以将上面查询语句进行分部理解,首先先将Class表和Student表进行交叉连接,生成如下表: 【图片暂缺】
然后通过on后面的限制条件,只选择那些StudentClassID和ClassID相等的列(上图中划了绿色的部分),最终,得到选择后的表的子集
【图片暂缺】 当然,内连接on后面的限制条件不仅仅是等号,还可以使用比较运算符,包括了>(大于)、>=(大于或等于)、<=(小于或等于)、<(小于)、!>(不大于)、!<(不小于)和<>(不等于)。当然,限制条件所涉及的两个列的数据类型必须匹配. 代码如下:
则结果从第一步的笛卡尔积中筛选出那些ClassID大于StudentClassID的子集:
【图片暂缺】 虽然上面连接后的表并没有什么实际意义,但这里仅仅作为DEMO使用:-) 代码如下:
当然,查询后返回的结果是不会变的: 【图片暂缺】 外连接 假设还是上面两个表,学生和班级.我在学生中添加一个名为Eric的学生,但出于某种原因忘了填写它的班级ID: 【图片暂缺】 【图片暂缺】 当我想执行这样一条查询:给我取得所有学生的姓名和他们所属的班级:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 为什么我得到“数据映射错误的[SQL0802]数据转换”异常?
- dbf文件导入到SqlServer中
- 更新数据库Android
- sql-server – 在SQL Server中的sys.objects中解释类型代码
- 数据库设计 – 数据库设计的时间点“快照”的数据?
- DB2 UDB V8.1管理学习笔记(二)
- SQLServer日志清空语句(sql2000,sql2005,sql2008)
- sql – IN子查询的WHERE条件影响主查询 – 这是一个功能还是
- SQLServer针对排名函数ROWNUMBER()、RANK()、DENSE_RANK()、
- SQL Server sql 多条件组合查询,并根据指定类别找出所有最