志达IT
做快乐程序员

sql连接的种类(sql连接的服务器)

sql连接的种类

1、内联接
(典型的联接运算,运用像=或<>之类的比较运算符)。包括相等联接和天然联接。
内联接运用比较运算符依据每个表共有的列的值匹配两个表中的行。例如,检索students和courses表中学生标识号相同的一切行。
2、外联接。
外联接能够是左向外联接、右向外联接或完整外部联接。
在FROM子句中指定外联接时,能够由下列几组关键字中的一组指定:
1)LEFTJOIN或LEFTOUTERJOIN
左向外联接的成果集包括LEFTOUTER子句中指定的左表的一切行,而不仅仅是联接列所匹配的行。假如左表的某行在右表中没有匹配行,则在相相关的成果集行中右表的一切挑选列表列均为空值。
2)RIGHTJOIN或RIGHTOUTERJOIN
右向外联接是左向外联接的反向联接。将回来右表的一切行。假如右表的某行在左表中没有匹配行,则将为左表回来空值。
3)FULLJOIN或FULLOUTERJOIN
完整外部联接回来左表和右表中的一切行。当某行在另一个表中没有匹配行时,则另一个表的挑选列表列包括空值。假如表之间有匹配行,则整个成果集行包括基表的数据值。
3、穿插联接
穿插联接回来左表中的一切行,左表中的每一行与右表中的一切行组合。穿插联接也称作笛卡尔积。
FROM子句中的表或视图可经过内联接或完整外部联接按恣意顺序指定;但是,用左或右向外联接指定表或视图时,表或视图的顺序很重要。有关运用左或右向外联接排列表的更多信息,请拜见运用外联接。sql
一、穿插衔接(CROSSJOIN)
穿插衔接(CROSSJOIN):有两种,显式的和隐式的,不带ON子句,回来的是两表的乘积,也叫笛卡尔积。
例如:下面的句子1和句子2的成果是相同的。
句子1:隐式的穿插衔接,没有CROSSJOIN。
SELECTO.ID,O.ORDER_NUMBER,C.ID,C.NAME
FROMORDERSO,CUSTOMERSC
WHEREO.ID=1;
句子2:显式的穿插衔接,运用CROSSJOIN。
SELECTO.ID,O.ORDER_NUMBER,C.ID,
C.NAME
FROMORDERSOCROSSJOINCUSTOMERSC
WHEREO.ID=1;
句子1和句子2的成果是相同的,查询成果如下:
二、内衔接(INNERJOIN)
内衔接(INNERJOIN):有两种,显式的和隐式的,回来衔接表中契合衔接条件和查询条件的数据行。(所谓的链接表便是数据库在做查询构成的中心表)。
例如:下面的句子3和句子4的成果是相同的。
句子3:隐式的内衔接,没有INNERJOIN,构成的中心表为两个表的笛卡尔积。
SELECTO.ID,O.ORDER_NUMBER,C.ID,C.NAME
FROMCUSTOMERSC,ORDERSO
WHEREC.ID=O.CUSTOMER_ID;
句子4:显现的内衔接,一般称为内衔接,有INNERJOIN,构成的中心表为两个表经过ON条件过滤后的笛卡尔积。
SELECTO.ID,O.ORDER_NUMBER,C.ID,C.NAME
FROMCUSTOMERSCINNERJOINORDERSOONC.ID=O.CUSTOMER_ID;
句子3和句子4的查询成果:
三、外衔接(OUTERJOIN)外连不光回来契合衔接和查询条件的数据行,还回来不契合条件的一些行。外衔接分三类:左外衔接(LEFTOUTERJOIN)、右外衔接(RIGHTOUTERJOIN)和全外衔接(FULLOUTERJOIN)。
三者的共同点是都回来契合衔接条件和查询条件(即:内衔接)的数据行。不同点如下:
左外衔接还回来左表中不契合衔接条件单契合查询条件的数据行。
右外衔接还回来右表中不契合衔接条件单契合查询条件的数据行。
全外衔接还回来左表中不契合衔接条件单契合查询条件的数据行,并且还回来右表中不契合衔接条件单契合查询条件的数据行。全外衔接实践是上左外衔接和右外衔接的数学合集(去掉重复),即“全外=左外UNION右外”。
说明:左表便是在“(LEFTOUTERJOIN)”关键字左边的表。右表当然便是右边的了。在三种类型的外衔接中,OUTER关键字是可省略的。
注意:MySQL是不支持全外的衔接的,这里给出的写法合适Oracle和DB2。但是能够经过左外和右外求合集来获取全外衔接的查询成果。下图是上面SQL在Oracle下履行的成果:
四、联合衔接(UNIONJOIN)
这是一种很少见的衔接方式。Oracle、MySQL均不支持,其作用是:找出全外衔接和内衔接之间差异的一切行。这在数据分析中排错中比较常用。也能够利用数据库的调集操作来完成此功用。
五、天然衔接(NATURALINNERJOIN)
说真的,这种衔接查询没有存在的价值。
天然衔接无需指定衔接列,SQL会检查两个表中是否相同名称的列,且假定他们在衔接条件中运用,并且在衔接条件中仅包括一个衔接列。不允许运用ON句子,不允许指定显现列,显现列只能用*表示(ORACLE环境下测验的)。关于每种衔接类型(除了穿插衔接外),均可指定NATURAL。
六、SQL查询的基本原理
两种状况介绍。
榜首、单表查询:依据WHERE条件过滤表中的记载,构成中心表(这个中心表对用户是不可见的);然后依据SELECT的挑选列挑选相应的列进行回来最终成果。
第二、两表衔接查询:对两表求积(笛卡尔积)并用ON条件和衔接衔接类型进行过滤构成中心表;然后依据WHERE条件过滤中心表的记载,并依据SELECT指定的列回来查询成果。
第三、多表衔接查询:先对榜首个和第二个表依照两表衔接做查询,然后用查询成果和第三个表做衔接查询,以此类推,直到一切的表都衔接上停止,最终构成一个中心的成果表,然后依据WHERE条件过滤中心表的记载,并依据SELECT指定的列回来查询成果。
理解SQL查询的进程是进行SQL优化的理论依据。
七、ON后边的条件(ON条件)和WHERE条件的区别
ON条件:是过滤两个链接表笛卡尔积构成中心表的束缚条件。
WHERE条件:在有ON条件的SELECT句子中是过滤中心表的束缚条件。在没有ON的单表查询中,是束缚物理表或许中心查询成果回来记载的束缚。在两表或多表衔接中是束缚衔接构成最终中心表的回来成果的束缚。
从这里能够看出,将WHERE条件移入ON后边是不恰当的。推荐的做法是:
ON只进行衔接操作,WHERE只过滤中心表的记载。
八、总结衔接查询是SQL查询的中心,衔接查询的衔接类型挑选依据实践需求。假如挑选不当,非但不能提高查询功率,反而会带来一些逻辑过错或许性能低下。下面总结一下两表衔接查询挑选方式的依据:
1、查两表相关列相等的数据用内衔接。
2、Col_L是Col_R的子集时用右外衔接。
3、Col_R是Col_L的子集时用左外衔接。
4、Col_R和Col_L彼此有交集但彼此互不为子集时分用全外。
5、求差操作的时分用联合查询。
多个表查询的时分,这些不同的衔接类型能够写到一块。例如:
SELECTT1.C1,T2.CX,T3.CY
FROMTAB1T1
INNERJOINTAB2T2ON(T1.C1=T2.C2)
INNERJOINTAB3T3ON(T1.C1=T2.C3)
LEFTOUTERJOINTAB4ON(T2.C2=T3.C3);
WHERET1.X>T3.Y;sql

sql连接的服务器

SQL服务器是文件服务器、数据库服务器和应用程序服务器中的数据库服务器。
简单来说,便是提供一个存储数据的环境,而且能够进行数据上交互(如你网页是用asp.net做的,后台是用sql数据库,那网页上的一些数据可以从后台sql数据库里取出。
SQL是一种结构化数据库查询语言,其发音为“sequel”或“S-Q-L”。
尽管MICROSOFT以其特有的方式加入了所有权声明,但它在大多数据库应用中近乎成为一种规范。是一种运用你选择的规范从数据库记载中选择某些记载的办法。

赞(0)
未经允许不得转载:志达IT网站 » sql连接的种类(sql连接的服务器)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

志达IT网站 每天分享编程和互联网的IT技术博客

登录/注册联系我们