SQL-JOIN-联表的删改

JOIN(内连接:INNER JOIN,INNER可省略):将多个表水平连接,如果一个表比另一个表多一行数据,那么多出的那行数据不会显示;

SELECT *FROM Student s    --给别名

JOIN City c                             --给别名

ON s.FromCityId=c.Id            --连接条件

外连接:

左外连接(LEFT):左边所有行保留,右边没有对应的值时,以Null填充;

右外连接(RIGHT):右边所有行保留,左边没有对应的值时,以Null填充;

全连接(FULL):左右两边都保留,没有值的地方以NULL填充;

SELECT*FROM Student s

LEFT JOIN City c               --可更改为右外连接和全外连接

ON s.FromCityId=c.Id        --连接条件

联表的删/改:FROM...JOIN..ON

DELETE Student SET Score+=5      --保留划线的代码,就是来自北京的同学,成绩加5分

FROM Student s JOIN Address a ON s.FromCityId=a.Id

WHERE s.FromProvince=N'北京'

UNION:将多个查询结果纵向连接,只要查询结果的数量,顺序相同,且每列的数据类型兼容;

SELECT [Name],N'科目',Score FROM Student     --添加一个列(N'科目'),以对齐Exam

UNION                                    --没有添加ALL,会清除重复行

SELECT [UserName],Subject,Score FROM Exam     

ORDER BY [Name]              --列名以第一个查询子句为准

ORDER BY UserName        --非第一个查询子句会报错

如果这篇文章,对你有帮助,请点击关注,我会持续更新......
原文地址:https://www.cnblogs.com/-GoFurther/p/13735705.html