首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

测试人员必知必会的SQL学问09

2012-11-23 
测试人员必知必会的SQL知识09大家晚上好,今天我们继续讲解查询。今天要用的数据库:http://download.csdn.ne

测试人员必知必会的SQL知识09

大家晚上好,今天我们继续讲解查询。今天要用的数据库:http://download.csdn.net/detail/xc5683/4764010。今天给大家的是一个mdf和ldf文件,这两个一个是主数据文件,一个是日志文件。这里要教给大家怎么将这种数据库文件导入数据库。

测试人员必知必会的SQL学问09

今天的内容可能不太好理解,我尽量多用点例子了。

先来看一下今天要介绍的内容连接和子查询。先来看连接Join。

SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

子查询是一个select语句,子查询中的表与外查询无关。

还是用例子来看吧。我怕我越说越糊涂了测试人员必知必会的SQL学问09

-----------------------------------------------            多表查询---------------------------------------------USE commoditysell;--交叉连接SELECT * FROM ProductInfo;--这个表共有9列SELECT * FROM EmporiumSell;--这个表共有51列SELECT * FROM ProductInfo CROSS JOIN EmporiumSell;--这个结果是459列,就是9*51了,所以交叉连接就是A表的一条记录对应B表的所有记录--这里执行的是笛卡尔积--我们使用where子句看一下SELECT * FROM ProductInfo CROSS JOIN EmporiumSellWHERE ProductInfo.ProdID=EmporiumSell.ProdID;--这下就是51条了--可以使用表的别名SELECT * FROM ProductInfo pit CROSS JOIN EmporiumSell estWHERE pit.ProdID=est.ProdID;--内连接(自然连接)--写法一(推荐)SELECT * FROM ProductInfo INNER JOIN EmporiumSellON ProductInfo.ProdID=EmporiumSell.ProdID;--写法二SELECT * FROM ProductInfo,EmporiumSellWHERE ProductInfo.ProdID=EmporiumSell.ProdID;--我们发现这个和上面的带where的cross一样的,这里他们的确是一样的,他们--的性能也是一样的,但是推荐使用inner join--cross join是老语法里面的了--左外连接left outer join和left join一样SELECT * FROM ProductInfo LEFT OUTER JOIN EmporiumSellON ProductInfo.ProdID=EmporiumSell.ProdID;--大家观察下这个结果,ProdID的顺序是连续9个050105,然后接着连续9个050201……--右外连接SELECT * FROM ProductInfo RIGHT OUTER JOIN EmporiumSellON ProductInfo.ProdID=EmporiumSell.ProdID;--这个不是刚才的排序了哦SELECT * FROM EmporiumSell;--全外连接SELECT * FROM ProductInfo FULL OUTER JOIN EmporiumSellON ProductInfo.ProdID=EmporiumSell.ProdID--这个和左连接时一样的
他们之间的区别是:

JOIN: 如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN: 只要其中一个表中存在匹配,就返回行 今天就说这些吧,大家下来好好消化一下。我说的可能不太清楚,大家在查查资料了。明天给大家一些题吧,大家做做,巩固下学习的内容。


热点排行