最近看了几篇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)剔除不符合条件的行的子集,得到的结果就是内连接了.上面的图中,如果我加上限制条件

对于开篇中的两个表,假使查询语句如下:SELECTFROM [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

子查询作为选择条件使用  SELECT [FirstName],[MiddleName] ,[LastName] FROM [AdventureWorks].[Person].[Contact] WHERE ContactID IN(SELECT EmployeeID  FROM [AdventureWorks].[HumanResources].[Employee]

WHERE SickLeaveHours>68)

相关子查询和EXISTS关键字    前面所说的查询都是无关子查询(Uncorrelated subquery),子查询中还有一类很重要的查询是相关子查询(Correlated subquery),也叫重复子查询比如,还是上面那个查询,用相关子查询来写:

子查询作为计算列使用    当子查询作为计算列使用时,只返回单个值(Scalar) 。用在SELECT语句之后,作为计算列使用。同样分为相关子查询无关子查询

11、数据集运算的种类  

A.A使用UNION实现     T-SQL中提供了UNION来实现A∪B的运算,实际上UNION有两个版本,分别为:     UNION     UNION表示了A∪B的关系,当遇到两个数据集中相同的行时,保留唯一一个:

.AB,使用INTERSECT实现     T-SQL提供了INTERSECT关键字来实现A∩B的关系

C.A-B,使用EXCEPT实现    T-SQL提供了EXCEPT关键字来实现A-B的关系:

SQL查询几种的区别。的更多相关文章

  1. Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加

    Hibernate的添加,修改,查询(三种查询方式)的方法: 案例演示: 1:第一步,导包,老生常谈了都是,省略: 2:第二步,创建数据库和数据表,表结构如下所示: 3:第三步创建实体类User.ja ...

  2. Mysql常用30种SQL查询语句优化方法

    出处:http://www.antscode.com/article/12deee70111da0c4.html 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使 ...

  3. MySQL 常用30种SQL查询语句优化方法

    1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...

  4. 提高SQL查询效率的30种方法

    转载:提高SQL查询效率的30种方法 内容摘录如下: 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中 ...

  5. sql server几种Join的区别测试方法与union表的合并

    /* sql server几种Join的区别测试方法 主要来介绍下Inner Join , Full Out Join , Cross Join , Left Join , Right Join的区别 ...

  6. SQL的7种连接查询详细实例讲解

    SQL的7种连接查询详细实例讲解 原文链接:https://mp.weixin.qq.com/s/LZ6BoDhorW4cSBhaGy8VUQ 在使用数据库查询语句时,单表的查询有时候不能满足项目的业 ...

  7. 深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接(转)

    1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 stude ...

  8. 【转】深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接

    [原文]:http://www.jb51.net/article/39432.htm 1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.    ...

  9. IBatis.Net使用总结(一)-- IBatis解决SQL注入(#与$的区别)

    IBatis解决SQL注入(#与$的区别) 在IBatis中,我们使用SqlMap进行Sql查询时,需要引用参数,在参数引用中可以使用两种占位符#和$.这两种占位符有什么区别呢? (1):#***#, ...

随机推荐

  1. wpf expender 展开动画

    非原创,网上下载的,觉得还可以,记录一下以便以后查看学习 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2 ...

  2. Oracle数据库设置Scott登录

    Oracle数据库Scott登录 在安装数据库时,用户登录选项中,Scott用户默认是未解锁的. 用户名填写as sysdba:密码是原来设置的,登录进去,新建SQL窗口,输入命令: alert us ...

  3. 机器学习、深度学习、和AI算法可以在网络安全中做什么?

    本文由  网易云发布. 本文作者:Alexander Polyakov,ERPScan的首席技术官和联合创始人.EAS-SEC总裁,SAP网络安全传播者. 现在已经出现了相当多的文章涉及机器学习及其保 ...

  4. win10 下Oracle安装

    在win10 64bit下安装oracle 11的时候,有些问题不注意,安装的时候才遇到就gg了.下面将介绍win10下安装oracle 11的步骤以及安装过程中遇到的一些问题及解决方案. 安装过程中 ...

  5. Django 使用getattr() 方法获取配置文件的变量值

    在django项目的开发过程中,有时需要获取配置文件里的变量值,可以通过下面这样的方式去进行获取 from django.conf import settings item = getattr(set ...

  6. 【Hight Performance Javascript】——脚本加载和运行

    脚本加载和运行 当浏览器遇到一个<script>标签时,无法预知javascript是否在<p>标签中添加内容.因此,浏览器停下来,运行javascript代码,然后继续解析. ...

  7. 用switch函数根据选择不同的radio出现不同的视图

    html代码: <!DOCTYPE html> <html> <head> <title></title> <style type=& ...

  8. css style 标签可编辑

    一次偶然在鑫大技术博客上发现  style  标签配合contenteditable 可编辑属性 实现动态编辑css 这里我就回顾了下  contenteditable  可编辑属性 (这个属性并无浏 ...

  9. 【xsy1122】 路径 点分治+trie

    题目大意:给你一棵n个点的树,树边上有边权,对于每一个点,你要求出经过该点的所有的路径中,路径异或和最大的值. 数据范围:$n≤10^5$,边权$≤10^9$. 我们考虑枚举每一条路径,显然这个是会T ...

  10. 【bzoj3684】 大朋友和多叉树 生成函数+多项式快速幂+拉格朗日反演

    这题一看就觉得是生成函数的题... 我们不妨去推下此题的生成函数,设生成函数为$F(x)$,则$[x^s]F(x)$即为答案. 根据题意,我们得到 $F(x)=x+\sum_{i∈D} F^i(x)$ ...