SQL查询几种的区别。
最近看了几篇SQL查询的文章做一下总结哦,大概简记如下:
SQL查询的实质是,是指从数据库中取得数据的子集,可以先取列子集,然后再取符合条件的行子集。
1、单表查询:
SELECT [Name] ,[GroupName] FROM [AdventureWorks].[HumanResources].[Department]WHERE DepartmentID>1 and DepartmentID<3 or DepartmentID>5 and DepartmentID<7
2、多表连接查询:连接(Join)就是一种把多个表连接成一个表的重要手段.
3、笛卡尔积 笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据任意组合,上图中两个表连接即为笛卡尔积(交叉连接)
4、内连接 如果分步骤理解的话,内连接可以看做先对两个表进行了交叉连接后,再通过加上限制条件(SQL中通过关键字on)剔除不符合条件的行的子集,得到的结果就是内连接了.上面的图中,如果我加上限制条件
对于开篇中的两个表,假使查询语句如下:SELECT * FROM [Class] c inner join [Student] s on c.ClassID=s.StudentClassID
5、用关系演算法的SQL查询语句如下,SELECT *FROM [Class] c, [Student] s where c.ClassID=s.StudentClassID
6、外连接 可以使连接表的一方,或者双方不必遵守on后面的连接限制条件.这里把上面的查询语句中的inner join改为left outer join:
7、右外连接 右外连接和左外连接的概念是相同的,只是顺序不同,对于上面查询语句,也可以改成:SELECT s.StudentName,c.ClassName FROM [fordemo].[dbo].[Class] c right outer join [fordemo].[dbo].[Student] s on s.StudentClassID=c.ClassID
8、 全外连接 是将左边和右边表每行都至少输出一次,用关键字”full outer join”进行连接,可以看作是左外连接和右外连接的结合.
9、自连接: 自连接的是一种特殊的连接,是对物理上相同但逻辑上不相同的表进行连接的方式。
SELECT m.EmployeeName FROM [fordemo].[dbo].[MeettingRecord] m,[fordemo].[dbo].[MeettingRecord] m2 where m.MeetingName='¨¬??????????¨¨' and m2.MeetingName='¨¬????¡ã¨°¦Ì¡¤¡é?1'and m.EmployeeName=m2.EmployeeName
10、子查询:子查询按照子查询所返回数据的类型,可以分为三种,分别为:1返回一张数据表(Table) 2返回一列值(Column) 3返回单个值(Scalar)
A 子查询作为数据源使用 SELECT P.ProductID, P.Name, P.ProductNumber, M.Name AS ProductModelNameFROM Production.Product AS P INNER JOIN(SELECT Name, ProductModelID FROM Production.ProductModel) AS MON P.ProductModelID = M.ProductModelID
B 子查询作为选择条件使用 SELECT [FirstName],[MiddleName] ,[LastName] FROM [AdventureWorks].[Person].[Contact] WHERE ContactID IN(SELECT EmployeeID FROM [AdventureWorks].[HumanResources].[Employee]
WHERE SickLeaveHours>68)
C 相关子查询和EXISTS关键字 前面所说的查询都是无关子查询(Uncorrelated subquery),子查询中还有一类很重要的查询是相关子查询(Correlated subquery),也叫重复子查询比如,还是上面那个查询,用相关子查询来写:
D 子查询作为计算列使用 当子查询作为计算列使用时,只返回单个值(Scalar) 。用在SELECT语句之后,作为计算列使用。同样分为相关子查询和无关子查询
11、数据集运算的种类
A.A∪B 使用UNION实现 T-SQL中提供了UNION来实现A∪B的运算,实际上UNION有两个版本,分别为: UNION UNION表示了A∪B的关系,当遇到两个数据集中相同的行时,保留唯一一个:
B .A∩B,使用INTERSECT实现 T-SQL提供了INTERSECT关键字来实现A∩B的关系
C.A-B,使用EXCEPT实现 T-SQL提供了EXCEPT关键字来实现A-B的关系:
SQL查询几种的区别。的更多相关文章
- Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加
Hibernate的添加,修改,查询(三种查询方式)的方法: 案例演示: 1:第一步,导包,老生常谈了都是,省略: 2:第二步,创建数据库和数据表,表结构如下所示: 3:第三步创建实体类User.ja ...
- Mysql常用30种SQL查询语句优化方法
出处:http://www.antscode.com/article/12deee70111da0c4.html 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使 ...
- MySQL 常用30种SQL查询语句优化方法
1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...
- 提高SQL查询效率的30种方法
转载:提高SQL查询效率的30种方法 内容摘录如下: 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中 ...
- sql server几种Join的区别测试方法与union表的合并
/* sql server几种Join的区别测试方法 主要来介绍下Inner Join , Full Out Join , Cross Join , Left Join , Right Join的区别 ...
- SQL的7种连接查询详细实例讲解
SQL的7种连接查询详细实例讲解 原文链接:https://mp.weixin.qq.com/s/LZ6BoDhorW4cSBhaGy8VUQ 在使用数据库查询语句时,单表的查询有时候不能满足项目的业 ...
- 深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接(转)
1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 stude ...
- 【转】深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
[原文]:http://www.jb51.net/article/39432.htm 1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. ...
- IBatis.Net使用总结(一)-- IBatis解决SQL注入(#与$的区别)
IBatis解决SQL注入(#与$的区别) 在IBatis中,我们使用SqlMap进行Sql查询时,需要引用参数,在参数引用中可以使用两种占位符#和$.这两种占位符有什么区别呢? (1):#***#, ...
随机推荐
- CC2530学习路线-基础实验-定时器控制LED灯亮灭(3)
目录 1. 前期预备知识 1.1 定时器中断触发 1.2 相关寄存器 1.3 寄存器相关问题 1.4 T1.T3定时器初始化流程 2 程序及代码 THE END 1. 前期预备知识 1.1 定时器中断 ...
- 使用math.js进行javascript精确计算
javascript进行浮点运算会有尾差,比如算个0.1+0.7试试,得到的不是0.8 .这个问题可以使用math.js解决. Math.js是一款开源的JavaScript和Node.js数学库,用 ...
- s11 day103 luffy项目结算部分+认证+django-redis
1.增加认证用的表 class Account(models.Model): username =models.CharField(,unique=True) email= models.EmailF ...
- 847. Shortest Path Visiting All Nodes
An undirected, connected graph of N nodes (labeled 0, 1, 2, ..., N-1) is given as graph. graph.lengt ...
- window7下Python安装
去python官网下载软件,https://www.python.org. 选择dowloads-->windows,选择稳定版python3.5.2,x86表示32位操作系统,x86-64表示 ...
- Swinject 源码框架(二):循环依赖的解决
可能存在循环依赖,比如 Parent 强制有 Child, Child 弱持有 Parent. 具体实现如下.Parent 初始化时,必须传入 Child,而 Child 初始化不必传入 Parent ...
- Vim编辑器与shell脚本
目录 Vim文本编辑器 Shell脚本 Shell编程变量 流程控制语句 计划任务 ...
- AngularJS学习之旅
开篇 最近由于项目上可能需要用到AngularJS,公司将技术学习.调研的任务安排了下来,因此开始了我的AngularJS学习之路. 在这之前没写过技术博客,主要是由于太懒,另外自愧文笔不好,因此一直 ...
- 使用Hive UDF和GeoIP库为Hive加入IP识别功能
Hive是基于Hadoop的数据管理系统,作为分析人员的即时分析工具和ETL等工作的执行引擎,对于如今的大数据管理与分析.处理有着非常大的 意义.GeoIP是一套IP映射数据库,它定时更新,并且提供了 ...
- CentOS7 配置 Redis Sentinel主从集群配置
Redis Sentinel主从集群 环境.准备 slave配置 sentinel配置 测试 C#连接Redis Sentinel 1.环境.准备 单实例3台CentOS7服务器,IP地址.: 192 ...