`
zzc1684
  • 浏览: 1228877 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Sql学习第六天——SQL巩固练习

 
阅读更多
Sql学习第六天——SQL巩固练习
 
Sql学习第五天——SQL关于apply的两种形式cross apply和outer apply
http://www.2cto.com/database/201304/206330.html
 
在查看SQL Server 2005的帮助文档中的cross apply 运算符时发现了一个个人感觉用到的知识点儿比较多,比较经典的例子。在此写下来,也是为了巩固一下前几天的知识点。
 
先建表一员工表(Employees):
 
CREATE TABLE Employees
(
  empid   int         NOT NULL,
  mgrid   int         NULL,
  empname varchar(25) NOT NULL,
  salary  money       NOT NULL,
  CONSTRAINT PK_Employees PRIMARY KEY(empid),
)
 
向Employees表中插入数据:
 
--插入数据
INSERT INTO Employees VALUES(1 , NULL, 'Nancy'   , $10000.00)
INSERT INTO Employees VALUES(2 , 1   , 'Andrew'  , $5000.00)
INSERT INTO Employees VALUES(3 , 1   , 'Janet'   , $5000.00)
INSERT INTO Employees VALUES(4 , 1   , 'Margaret', $5000.00) 
INSERT INTO Employees VALUES(5 , 2   , 'Steven'  , $2500.00)
INSERT INTO Employees VALUES(6 , 2   , 'Michael' , $2500.00)
INSERT INTO Employees VALUES(7 , 3   , 'Robert'  , $2500.00)
INSERT INTO Employees VALUES(8 , 3   , 'Laura'   , $2500.00)
INSERT INTO Employees VALUES(9 , 3   , 'Ann'     , $2500.00)
INSERT INTO Employees VALUES(10, 4   , 'Ina'     , $2500.00)
INSERT INTO Employees VALUES(11, 7   , 'David'   , $2000.00)
INSERT INTO Employees VALUES(12, 7   , 'Ron'     , $2000.00)
INSERT INTO Employees VALUES(13, 7   , 'Dan'     , $2000.00)
INSERT INTO Employees VALUES(14, 11  , 'James'   , $1500.00)
 
查询向Employees表插入的全部数据SQL语句:
 
select * from Employees
 
结果如图:
 
 
再建表二部门表(Departments):
 
CREATE TABLE Departments
(
  deptid    INT NOT NULL PRIMARY KEY,
  deptname  VARCHAR(25) NOT NULL,
  deptmgrid INT NULL REFERENCES Employees
)
 
向Departments表插入数据:
 
INSERT INTO Departments VALUES(1, 'HR',           2)
INSERT INTO Departments VALUES(2, 'Marketing',    7)
INSERT INTO Departments VALUES(3, 'Finance',      8)
INSERT INTO Departments VALUES(4, 'R&D',          9)
INSERT INTO Departments VALUES(5, 'Training',     4)
INSERT INTO Departments VALUES(6, 'Gardening', NULL)
 
查询向Departments表插入的全部数据SQL语句:
 
select * from Departments
 
结果如图:
 
 
下面的表值函数使用雇员 ID 作为参数,并返回该雇员及他/她的所有下属:
 
CREATE FUNCTION dbo.fn_getsubtree(@empid AS INT) RETURNS @TREE TABLE
(
  empid   INT NOT NULL,
  empname VARCHAR(25) NOT NULL,
  mgrid   INT NULL,
  lvl     INT NOT NULL
)
AS
BEGIN
  WITH Employees_Subtree(empid, empname, mgrid, lvl)
  AS
  ( 
    -- Anchor Member (AM)
    SELECT empid, empname, mgrid, 0
    FROM employees
    WHERE empid = @empid
 
    UNION all
    
    -- Recursive Member (RM)
    SELECT e.empid, e.empname, e.mgrid, es.lvl+1
    FROM employees AS e
      JOIN employees_subtree AS es
        ON e.mgrid = es.empid
  )
  INSERT INTO @TREE
    SELECT * FROM Employees_Subtree
 
  RETURN
END
GO
 
返回每个部门经理的所有级别的全部下属,使用下面的SQL语句(用到了apply的cross apply):
 
SELECT *
FROM Departments AS D
  CROSS APPLY fn_getsubtree(D.deptmgrid) AS ST
 
结果如图:
 
分享到:
评论

相关推荐

    第二章第六节——综合示例二

    在本节"第二章第六节——综合示例二"中,我们将探讨一个涵盖多个IT领域的综合性实例,旨在帮助读者深入理解和应用所学知识。在这个示例中,我们可能涉及编程、网络、数据库、操作系统以及软件工程等多个方面。由于...

    SQL Server 2012数据库技术与应用(微课版)-综合实训及答案.zip

    《SQL Server 2012数据库技术与应用》是一门深度探讨关系型数据库管理系统SQL Server 2012的课程,旨在帮助学习者掌握数据库设计、管理、优化以及实际应用等核心技能。作为微课版,它可能包含了视频教程、实践案例、...

    数据库应用技术——SQL Server 2000简明教程电子教案

    《数据库应用技术——SQL Server 2000简明教程电子教案》是针对初学者和有一定基础的学习者设计的一份教学资源,旨在帮助读者深入理解并掌握SQL Server 2000这一重要的关系型数据库管理系统。SQL Server 2000在IT...

    三天学会PHP——第一天

    【第一天学习重点】 1. **PHP环境搭建**:学习第一天,首先需要安装PHP运行环境,通常包括PHP解释器、Web服务器(如Apache或Nginx)以及数据库(如MySQL)。通过XAMPP或WAMP等集成环境可以简化这个过程。 2. **PHP...

    数据库技术与应用——SQL server2000(国家一等奖)教案及电子资源

    《数据库技术与应用——SQL Server 2000》是由刘卫国编著,清华大学出版社出版的一本获奖教材,它全面、深入地介绍了SQL Server 2000这一广泛使用的数据库管理系统。这本书荣获全国一等奖,反映了其在教学质量和理论...

    菜鸟级SQL21天自学通

    在《菜鸟级SQL21天自学通》这本书中,作者可能按照这些章节逐步展开讲解,结合实例和练习,帮助读者巩固所学知识。尽管书名提及需要“强大耐心”,但只要坚持每天学习,遵循教程的步骤,21天确实足以建立起对SQL的...

    数据库(T-SQL)

    “第6章 索引.ppt”关注的是数据库性能优化的关键——索引。索引能够加速数据查找,但也会占用额外的存储空间。了解何时创建、选择合适的索引类型(如B树索引、哈希索引)以及如何维护索引是数据库设计的重要环节。 ...

    网络程序设计——ASP第三版题解

    该书第三版的题解提供了对书中练习题的详细解答,对于学习者来说,是巩固理论知识、提升实践技能的重要参考资料。 ASP是一种微软公司的服务器端脚本环境,它允许开发者使用HTML、VBScript或JScript创建动态网页。...

    第六届字节跳动青训营——后端进阶班.zip

    【标题】: "第六届字节跳动青训营——后端进阶班" 【描述】: "这个压缩包文件代表了字节跳动举办的第六届青训营中的后端进阶课程,旨在提升学员在后端开发领域的专业技能。通常这样的培训会涵盖一系列高级后端技术...

    sql入门书籍_1

    - **练习题**:提供实践练习,帮助巩固所学知识。 - **重要链接**:指向其他有价值的SQL学习资源。 #### 九、总结 本书从SQL的基本概念出发,逐步深入到SQL的高级应用领域,不仅覆盖了标准SQL的所有重要方面,还...

    SQL开发实用书本

    ### SQL开发实用书本知识点概览 #### 一、SQL简介与历史 - **SQL简史**:SQL(Structured Query Language)是一种用于管理关系...此外,书中还提供了大量的练习题和案例分析,帮助读者巩固所学知识,提升实践能力。

    SQL 21日自学通.pdf

    #### 第六天:表的联合 - **介绍**:表的联合是指将两个或多个表的数据组合在一起,形成一个新的结果集。 - **在一个SELECT语句中使用多个表**:使用INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN等联接方式...

    C#——微软.NET的第一语言

    通过学习《C#——微软.NET的第一语言》这本书,你可以深入了解C#的各个方面,从基本语法到高级特性的运用,从而成为一名熟练的C#开发者。书中的实例和练习将帮助你巩固理论知识,并提升实际编程能力。无论你是初学者...

    PHP与MySQL程序设计(第四版)——免资源分.rar

    《PHP与MySQL程序设计(第四版)》是图灵经典图书系列中的一部重要著作,...书中可能还包含了实际案例和练习,帮助读者巩固所学知识并提高实战能力。无论你是初学者还是经验丰富的开发者,这本书都能提供宝贵的指导。

    JAVA实用教程(第三版)——电子教案.rar

    3. **第6章:Java输入与输出** - **流的概念**:解释了输入/输出流的基本原理,包括字节流和字符流。 - **文件操作**:涵盖了File类的使用,以及如何进行文件读写操作。 - **缓冲区**:介绍了BufferedReader和...

    oracle教程

    Oracle教程——18天学习笔记概述 Oracle数据库系统是全球广泛应用的关系型数据库管理系统,由甲骨文公司(Oracle Corporation)开发。它以其高效、稳定、功能强大而闻名,广泛应用于企业级数据管理、数据分析和...

    ASP实用技术——网络数据库应用系统设计_2.rar

    《ASP实用技术——网络数据库应用系统设计》是一个深入探讨如何使用ASP(Active Server Pages)进行网络数据库应用系统构建的教程。...同时,结合实际项目练习,将理论知识与实践经验相结合,将更加巩固你的专业能力。

    Beginning C# 2008 Objects中文版——概念到代码(第2版

    《 Beginning C# 2008 Objects中文版——概念到代码(第2版)》这本书是为初学者设计的一本全面介绍C#编程语言的指南,尤其关注对象导向编程的概念。...书中的实例和练习将帮助读者巩固所学,提升实践能力。

    asp.net2.0学习历程 菜鸟到中级程序员的飞跃

    学习过程中,建议结合实例练习,比如开发简单的留言板项目,以巩固理论知识。此外,持续的实践和项目经验积累将有助于从中级程序员向高级程序员迈进。在这个阶段,具备辨别技术优劣和解决问题的能力至关重要。记住,...

    十天学会ASP教程

    **第六天:错误处理和调试** 了解ASP的错误处理机制,如On Error语句,以及如何使用调试工具进行问题排查。这将帮助你在开发过程中更快地定位和修复问题。 **第七天:ASP与HTML、CSS、JavaScript的结合** 学习如何...

Global site tag (gtag.js) - Google Analytics