多表查询就是使用两张表及其以仩的查询首先需要知道几个名词,笛卡尔积内连接,外连接子查询。
所谓笛卡尔积其实就是两张表数据的条数相乘得到的最后結果例如表1有10条数据,表2有4条数据那么经过笛卡尔积之后最后的结果为40条数据,使用笛卡尔积缺点比较多会产生很多没有用的数据。
内连接分为隐式和显示两种显示就是使用inner join关键字,而隐式就是使用where关键字根据关联字段建立的条件,例如where blogs.com/jasonboren/p/.html
多表查询就是使用两张表及其以仩的查询首先需要知道几个名词,笛卡尔积内连接,外连接子查询。
所谓笛卡尔积其实就是两张表数据的条数相乘得到的最后結果例如表1有10条数据,表2有4条数据那么经过笛卡尔积之后最后的结果为40条数据,使用笛卡尔积缺点比较多会产生很多没有用的数据。
内连接分为隐式和显示两种显示就是使用inner join关键字,而隐式就是使用where关键字根据关联字段建立的条件,例如where blogs.com/jasonboren/p/.html
多表连接查询(内外,交叉连接)連接查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系数据库查询最主要的特征. select 表/doc//doc/38ccd.htmlo=''101'' order
内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同内连接又分为等值连接、自然连接和不等連接三种。
所谓等值连接是指表之间通过“等于”关系连接起来,产生一个临时表
然后对该临时表进行处理后生成最终结果。其查询結果中列出被连接表中的所有列包括其中的重复列。
1、笛卡尔积会在下面条件下产生:
2.为了避免笛卡尔积可以在WHERE加入有效的连接条件
合并具有同一列的两个以上的表的行, 结果集中不包含一个表與另一个表不匹配的行
使用连接在多个表中查询数据
查询员工工资对應的档次
两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行 这种连接称为左(或右) 外连接。沒有匹配的行时, 结果表中相应的列为空(NULL). 外连接的 WHERE 子句条件类似于内部连接, 但连接条件中没有匹配行的表的列后面要加外连接运算符, 即用圆括号括起来的加号(+).
使用连接从多个表中查询数据:
返回的是两个表中具有相同名字的列的“且、交集”,而非“或并集”。
查询公司中员工‘Chen’的manager的信息
SQL语句的多表查询方式:
有局限性:好于方式二,但若多表的连接列列名不同此法不匼适
--左外连接、右外连接、满外连接