- 1、本文档共126页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL Server;SQL Server;什么是 SQL?;SQL DML;SQL DDL;练习1;查询;单表查询;笛卡尔积
笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据任意组合.
在实际应用中,笛卡尔积本身大多没有什么实际用处,只有在两个表连接时加上限制条件,才会有实际意义。
;比如简单两个表连接学生表(Student)和班级(Class)表,如下图及笛卡尔乘积图.;JOIN;内连接可以看做先对两个表进行了交叉连接后,再通过加上限制条件(SQL中通过关键字on)剔除不符合条件的行的子集,得到的结果就是内连接了.
当然,内连接on后面的限制条件不仅仅是等号,还可以使用比较运算符,包括了>(大于)、>=(大于或等于)、<=(小于或等于)、<(小于)、!>(不大于)、!<(不小于)和<>(不等于)。当然,限制条件所涉及的两个列的数据类型必须匹配.
For example,
SELECT * FROM [Class] c inner join [Student] s on c.ClassID>s.StudentClassID
;LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
(1) SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
left JOIN Orders
ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName
;
(2) SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
right JOIN Orders
ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName
(3) SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
full JOIN Orders
ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName
;自连接; select e1.EmpName from Employee e1 inner join Employee e2
on e1.ID = e2.ManagerID where e2.EmpName = 'Tom‘
EmpName
Jobs ;练习2;聚合函数;//统计每年的订单总量
select year, sum(OrderQuantity) as YearQuantity from [DEMO].[dbo].[Order] group by year
//统计每个用户的订单总量,并降序排列
select userID, sum(OrderQuantity) as YearQuantity
from [DEMO].[dbo].[Order] group by userID order by YearQuantity desc
;子查询;无关子查询(Uncorrelated subquery)
SELECT P.ProductID, P.Name, P.ProductNumber, M.Name AS ProductModelName
FROM Product AS P INNER JOIN
(SELECT Name, ProductModelID
FROM ProductModel) AS M
ON P.ProductModelID = M.ProductModelID
;子查询中还有一类很重要的查询是相关子查询(Correlated subquery),也叫重复子查询。
//取得总共请病假天数大于68天的员工
SELECT [FirstName],[LastName] FROM [Contact] c WHERE EXISTS
(SELECT 1 FROM [Employee] e WHERE c.ContactID=e.ContactID AND e.SickLeaveHours>68);练习3;基于列的逻辑表达式;CASE表达式实际情况可以分为两种:
CASE简单表达式(CASE Simple Expression):将某个表达式与一组简单表达式进行比较以
您可能关注的文档
- 2012国家普通话水平测考试试题50套全套(1-2带拼音).doc
- 7-1战争-人类灾难.ppt
- 2012年中考生物第一轮复习总结资料-第二单元丰富多彩生物世界第一章生物圈中绿色植物课件-济南版.ppt
- 16高一物理竞赛试题和解答全集.doc
- 2015九年级英-Unit-7-Teenagers-should-be-allowed-to-choose-their-own-clothes课件-(新版)人教新目标版.ppt
- 2016-2017下三年级英语科教案设计.doc
- 2015年新修订人教版五年级数学下册教案设计及教学反思全册2.doc
- 2017-2018北师大版四年级语文下册全册教案设计.doc
- 2017年一建工程经济笔记.docx
- 2018年人力资本服务业商业感觉和模式卡位(宽屏).ppt
文档评论(0)