SQL-Server-学员版.pptx

  1. 1、本文档共126页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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):将某个表达式与一组简单表达式进行比较以

文档评论(0)

gl5000 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档