首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQLServer:如何对按外键依赖关系排序的表名进行排序

在 SQL Server 中,您可以使用以下方法对按外键依赖关系排序的表名进行排序:

  1. 使用 INFORMATION_SCHEMA.TABLE_CONSTRAINTSINFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 视图获取外键关系信息。
  2. 使用递归公共表表达式 (CTE) 对外键关系进行排序。

以下是一个示例查询,它将返回当前数据库中按外键依赖关系排序的表名列表:

代码语言:sql
复制
WITH RECURSIVE FK_Sort AS (
    SELECT
        TC.TABLE_NAME,
        TC.CONSTRAINT_NAME,
        RCON.UNIQUE_CONSTRAINT_NAME,
        RCON.UNIQUE_CONSTRAINT_CATALOG,
        RCON.UNIQUE_CONSTRAINT_SCHEMA,
        RCON.UNIQUE_CONSTRAINT_TABLE_NAME,
        1 AS LEVEL
    FROM
        INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
        INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RCON ON TC.CONSTRAINT_NAME = RCON.CONSTRAINT_NAME
    WHERE
        TC.CONSTRAINT_TYPE = 'FOREIGN KEY'
        AND TC.TABLE_CATALOG = 'YourDatabase'
        AND NOT EXISTS (
            SELECT
                *
            FROM
                INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC2
                INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RCON2 ON TC2.CONSTRAINT_NAME = RCON2.CONSTRAINT_NAME
            WHERE
                TC2.CONSTRAINT_TYPE = 'FOREIGN KEY'
                AND TC2.TABLE_CATALOG = 'YourDatabase'
                AND RCON2.UNIQUE_CONSTRAINT_CATALOG = TC.TABLE_CATALOG
                AND RCON2.UNIQUE_CONSTRAINT_SCHEMA = TC.TABLE_SCHEMA
                AND RCON2.UNIQUE_CONSTRAINT_TABLE_NAME = TC.TABLE_NAME
        )

    UNION ALL

    SELECT
        TC.TABLE_NAME,
        TC.CONSTRAINT_NAME,
        RCON.UNIQUE_CONSTRAINT_NAME,
        RCON.UNIQUE_CONSTRAINT_CATALOG,
        RCON.UNIQUE_CONSTRAINT_SCHEMA,
        RCON.UNIQUE_CONSTRAINT_TABLE_NAME,
        FKS.LEVEL + 1 AS LEVEL
    FROM
        INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
        INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RCON ON TC.CONSTRAINT_NAME = RCON.CONSTRAINT_NAME
        INNER JOIN FK_Sort AS FKS ON FKS.TABLE_NAME = RCON.UNIQUE_CONSTRAINT_TABLE_NAME
    WHERE
        TC.CONSTRAINT_TYPE = 'FOREIGN KEY'
        AND TC.TABLE_CATALOG = 'YourDatabase'
)
SELECT
    TABLE_NAME,
    LEVEL
FROM
    FK_Sort
ORDER BY
    LEVEL ASC;

请注意,您需要将 YourDatabase 替换为您要查询的实际数据库名称。

此查询将返回一个按外键依赖关系排序的表名列表,其中每个表名后面都有一个表示其依赖关系级别的数字。级别越低,表的依赖关系越深。

请注意,此查询仅适用于 SQL Server 2012 及更高版本。如果您使用的是较旧版本的 SQL Server,则可能需要使用不同的方法来获取外键关系信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何Excel二维所有数值进行排序

在Excel中,如果想一个一维数组(只有一行或者一列数据)进行排序的话(寻找最大值和最小值),可以直接使用Excel自带数据筛选功能进行排序,但是如果要在二维数组(存在很多行和很多列)数据排序的话...先如今要对下面的进行排序,并将其顺序排成一个一维数组 ?...另起一块区域,比如说R列,在R列起始位置,先寻找该二维数据最大值,MAX(A1:P16),确定后再R1处即会该二维最大值 然后从R列第二个数据开始,附加IF函数 MAX(IF(A1:P300...< R1,A1:P300)),然后在输入完公式后使用Ctrl+shift+Enter进行输入(非常重要) 然后即可使用excel拖拽功能来在R列显示出排序内容了

10.3K10

WebGenerate 产品介绍

、viewer等代码,其次,实现了session、servlet生命周期监听、管理,实现了角色、功能、权限等多维度权限管理策略,实现了白名单请求过滤、控制;实现了事务、日志等基础框架功能配套实施...、开源项目的框架文件包; 生成基础包:根据所有数据生成基础代码包; “新增项目管理”界面如下图: 图四 名称:用于平台显示项目名称; 编码:用于工程; 数据库类别:支持MySQL、SQLServer...3.4.字段信息 用户来维护、和页面显示关系。如下图: 图八 提供了列表、分页、排序、搜索、新增、模板、导入、导出、编辑、删除功能。...小数位数:小数位数; 允许空:字段是否允许空; 默认值:字段类型默认值; 主键:该字段是否为主键; 隶属项目:隶属于哪个项目; 隶属:隶属于哪个:对应,用于在controller...中prop函数进行属性拓展使用; 字段:对应需要显示字段,用于在controller中prop函数进行属性拓展使用; 列表显示:是否在列表显示; 表单显示:是否在表单显示; 表单必填:

1.3K70
  • 个人永久性免费-Excel催化剂功能第30波-工作快捷操作(批量创建、命名、排序、工作目录)

    没有规范做表,表格里每月一个甚至每天一个,难免就有批量建工作需求了,既然工作多了,就有工作目录功能,工作名称有时前期取得不好,就需要有批量重命名需求,工作一多,怎样排列,就有了工作排序需求...具体功能实现 一、批量创建工作 选定需要创建工作名称单元格,点击【批量创建工作】,立马完成。 同时,工作创建后排序单元格顺序排序 ? 批量创建工作操作 ?...单元格顺序排序新创建工作 二、批量重命名工作 1. 工作进行遍历,新建一个工作供下一步重命名工作时确定工作 ? 第1步,罗列源工作 2. 在指定区域内工作进行重命名。...同时并且可设置显示隐藏状态,最后还可以顺便用列表排序功能或手动调整行位置实现自定义排序效果 将批量操作移至Excel智能上操作,可充分使用排序、公式、复杂、粘贴等一系列Excel操作便捷来实现重命名工作生成...上述所填写调整好智能内容,原工作进行重命名,显示隐藏状态变更及排序顺序调整。 ? 第2步-批量重命名操作 ?

    1.2K30

    Mysql基础

    八、排序 ASC :升序(默认) DESC :降序 可以多个列进行排序,并且为每个列指定不同排序方式: SELECT * FROM mytable ORDER BY col1 DESC, col2...十三、分组 分组就是把具有相同数据值行放在同一组中。 可以对同一分组数据使用汇总函数进行处理,例如求分组数据平均值等。 指定分组字段除了能该字段进行分组,也会自动该字段进行排序。...SELECT col, COUNT(*) AS num FROM mytable GROUP BY col; GROUP BY 自动分组字段进行排序,ORDER BY 也可以汇总字段来进行排序。...并发:MyISAM 只支持级锁,而 InnoDB 还支持行级锁。 :InnoDB 支持。 备份:InnoDB 支持在线热备份。...尽量不做全查询、减少关联、优化查询字段等等) 9 数据库三范式(1NF:确保每一列原子性 2NF:非字段必须依赖字段 3NF:在1NF基础上,除了主键以外其它列都不传递依赖于主键列,或者说

    1.8K00

    java数据库介绍和使用_java实现数据库查询

    by sal desc,empno asc;--按月薪降序排序,如果月薪相同,编号升序排序 /* 单行函数 */ --year(日期字段) 将日期格式化为年(月日时分秒同理) select year...--左连接(LEFT OUTER JOIN):左连接可以把左中不满足对应关系数据查询出来 select e.empno,e.ename,e.job,e.sal,d.deptno,d.dname...,那么该列就称为 --2.名字可以不相同 --3.数据类型必须与主表中主键数据类型完全相同 --4.可以是null值 /* 之间关系 */ --1.一多: 一张一条记录再另一张中出现多次...--2.多多: 要想两张之间实现多关系,必须有一张中间,通过中间创建与两张约束,实现多个一 多,使用这种方式创建约束,非常适合实现多个一多。...--3.一一:一张表里记录,在另外一张表里只能出现一次.之间关系必须通过来创建,但是一创建就是一多,因此在从表里将设置唯一性约束,实现一一 版权声明:本文内容由互联网用户自发贡献

    1.3K30

    呕心沥血写了三天3两夜24k字MySQL详细教程

    第二个字段进行排序,依次类推。...那么我们在设计时候,就应该体现出之间这种关系!分成三种: 1. 一一 2. 一多 3....多多         7.2 一多(1:n) 例如:班级和学生,部门和员工,客户和订单,分类和商品 一多建原则: 在从(多方)创建一个字段,指向主表(一方)主键.我们把这个字段称之为....         7.3 多多 多多(m:n) 例如:老师和学生,学生和课程,用户和角色 多关系原则: 需要创建第三张,中间中至少两个字段,这两个字段分别作为键指向各自一方主键。...两种建原则: 唯一:主表主键和从(唯一),形成主外关系唯一UNIQUE是主键:主表主键和从主键,形成主外关系          7.5 约束

    69540

    Mysql基础

    八、排序 ASC :升序(默认) DESC :降序 可以多个列进行排序,并且为每个列指定不同排序方式: SELECT * FROM mytable ORDER BY col1 DESC, col2...十三、分组 分组就是把具有相同数据值行放在同一组中。 可以对同一分组数据使用汇总函数进行处理,例如求分组数据平均值等。 指定分组字段除了能该字段进行分组,也会自动该字段进行排序。...SELECT col, COUNT(*) AS num FROM mytable GROUP BY col; GROUP BY 自动分组字段进行排序,ORDER BY 也可以汇总字段来进行排序。...并发:MyISAM 只支持级锁,而 InnoDB 还支持行级锁。 :InnoDB 支持。 备份:InnoDB 支持在线热备份。...尽量不做全查询、减少关联、优化查询字段等等) 9 数据库三范式(1NF:确保每一列原子性 2NF:非字段必须依赖字段 3NF:在1NF基础上,除了主键以外其它列都不传递依赖于主键列,或者说

    1.5K00

    MySQL快速入门(二)

    目录 MySQL快速入门(二) 约束条件 自增 自增特性 主键 级联更新/删除 之间关系 约束 操作方法 查询关键字 练习数据 select··from where 筛选 group...,多表存在,使用来使得之间确立对应关系,员工所在部门有该部门编号,例如dep_id对应了部门id;从而确立了之间数据关系!...级联更新/删除 用做了对应关系后,那么操作(增删改)一个数据,是不允许; 那么可以通过添加级联更新和删除来同步数据,添加在设置下边··· on update cascade:级联更新...on delete cascade:级联删除 之间关系多 多多 一一 没有对应关系 ps:关系没有'多一' 如何判断两个或者多个之间存在关系?...1、多关系创建时候,不能像"一多"关系那样创建,因为两边有对应关系,需要都写入,那么创建一个另外一个没有创建,写入就会报错 2、此时,需要第三张来存储对应关系 SQL语句实现

    2.6K20

    B6第六章 第 6 节: MYSQL常用数据类型

    分组语句一般和聚合函数一起使用,GROUP BY子句负责将数据分成逻辑组,而聚合函数则每一个组进行统计计算。...2、约束:当删除T_Customers中一条数据时候,如何处理T_Orders等存在指向T_Customers行。【【约束建立在外字段***Id上(t_orders)。】】...3、建约束方法:新建或者修改时候“”→“添加”。...:自动命名即可;栏位:CustomerId;参考:t_customers;栏位:Id;删除时、更新时:一般默认RESTRICT(CASCADE:删除T_Customers一行时把它订单也删除了...4、有的公司不习惯建,而是通过程序进行数据合法性控制,对于初学者先不建议这样,都把加上。

    85720

    超详细MySQL三万字总结

    图形化界面备份与还原 数据库约束 数据库约束概述 主键约束 唯一约束 非空约束 默认值 约束 之间关系 关系概念 一多 多多 一一 数据库设计 数据规范化 1NF 2NF...ASC|DESC]; ASC: 升序,默认值 DESC: 降序 单列排序:只某一个字段进行排序。... foreign key 主表中主键列,在从中外之间关系 关系概念 现实生活中,实体与实体之间肯定是有关系,比如:老公和老婆,部门和员工,老师和学生等。...多多 多多(m:n) 例如:老师和学生,学生和课程,用户和角色 多关系原则: 需要创建第三张,中间中至少两个字段,这两个字段分别作为键指向各自一方主键。...两种建原则: 一原则 说明 唯一 主表主键和从(唯一),形成主外关系唯一 UNIQUE 是主键 主表主键和从主键,形成主外关系 数据库设计 数据规范化 什么是范式

    3.4K30

    MySQL复习笔记(2)-约束

    SELECT * FROM '' WHERE NAME LIKE '值%'; SELECT * FROM '' WHERE NAME LIKE '值__'; DQL-排序 ORDER BY关键字可以将查询出结果进行排序...select * FROM '' order by '字段' DESC; 组合排序 组合排序就是先按第一个字段进行排序,如果第一个字段相同,才第二个字段进行排序,依次类推。...: 参照哪个哪个字段 已有增加 ALTER TABLE ADD CONSTRAINT 约束 FOREIGN KEY(字段名) REFERENCES 主表(主键); 删除外约束...两种建原则: 唯一:主表主键和从(唯一),形成主外关系唯一UNIQUE 是主键:主表主键和从主键,形成主外关系多 例如:班级和学生,部门和员工,客户和订单,...分类和商品 一多建原则: 在从(多方)创建一个字段,字段作为键指向主表(一方)主键 多多 例如:老师和学生,学生和课程 多关系原则: 需要创建第三张,中间中至少两个字段,这两个字段分别作为键指向各自一方主键

    89820

    Web-第六天 MySQL回顾学习

    我们通过主表主键和从来描述主外关系,呈现就是一关系特点: 从值是主表主键引用。 从类型,必须与主表主键类型一致。...用于删除外约束,一般建议“_fk”结尾 alter table 从 drop foreign key 键名称 使用目的: 保证数据一致性和完整性 4.2 之间关系 4.2.1 一关系...4.2.3 一关系:(了解) 在实际开发中应用不多.因为一一可以创建成一张. 两种建原则: 唯一:主表主键和从(唯一),形成主外关系唯一unique。...是主键:主表主键和从主键,形成主外关系。...例如用户和用户帐户 原因二:将经常查询字段放到一张中,不经常查询数据放到一张中 一多: 如:类别和商品、用户和订单多建原则:在多一方(从)中创建与一一方(主表)主键进行关联

    82520

    MySQL 查询专题

    因此,如果不明确控制的话,不能(也不应该)依赖排序顺序。关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出数据顺序有意义。...在指定一条 ORDER BY 子句时,应该保证它是SELECT语句中最后一条子句,否则这将报错 不限制是否使用非选择列进行排序 除了能用列名指出排序顺序,ORDER BY 还支持相对列位置进行排序,...下标从 0 开始,当根据不出现在 SELECT 清单中进行排序时,不能采用这项技术 如果想在多个列上进行降序排序,必须每一列指定 DESC 关键字。...一关系 (夫妻关系) 从主键即是关系(部门和职员关系) 从有一个作为多(学生老师关系) 需要一个中间, 然后指定两个 一般主表记录数会少...., where 改成 on select xxx列 from A inner join b on 条件1=xxx 自然版 sql 一, 多关系 子查询 有多个 select 关键字 可以出现位置

    5K30

    sqlserver怎么用语句创建_mysql查询创建语句

    #db_local_table ( id int, name varchar(50), age int, area int ) 全局临时所有用户都是可见...,在每个访问该用户都断开服务器连接时,全局临时才会被删除 4:创建主键、关联数据库 [sql] view plain copy use db_sqlserver;...如果要区分大小和和区分排序,修改代码为:French_CS_AS 9:动态判断数据库是否存在 [sql] view plain copy use db_sqlserver; go...else print ‘该数据库不存在,可以利用该名创建’ 10:查看表各种信息,可以查看指定数据库属性、中字段属性、各种约束等信息 [sql] view plain..., db_table2 如果删除有依赖关联数据库,即主键、关键、则要删除两个之间关联约束,然后才能删除

    8.6K120

    MySQL基础

    我们之前提到MySQL、Oracle、 SQLServer这些都属于关系型数据库,里面都是基于二维存储数据。...是分组后结果进行过滤。... ADD CONSTRAINT 键名称 FOREIGN KEY (字段) REFERENCES 主表(主表字段名) ON UPDATE 行为 ON DELETE 行为; 多表查询 多表关系...一多(多一) 多多 一一 一多 案例:部门与员工 关系:一个部门对应多个员工,一个员工对应一个部门 实现:在多一方建立,指向一一方主键 多多 案例:学生与课程 关系:一个学生可以选多门课程...; 一一 案例:用户与用户详情 关系:一关系,多用于单拆分,将一张基础字段放在一张中,其他详情字段放在另一张中,以提升操作效率 实现:在任意一方加入,关联另外一方主键,并且设置为唯一

    1.9K10

    Python批量处理Excel数据后,导入SQL Server

    有些Excel对应是同一个,有些是单独 和Excel附件名称不一致,不过是有对应关系 eg....xlrd xlwt sqlalchemy:可以将关系数据库结构映射到对象上,然后通过处理对象来处理数据库内容; pymssql:python连接sqlserver数据库驱动程序,也可以直接使用其连接数据库后进行读写操作...代码如下,首先将字符串格式转变成日期类型数据,原数据为06/Jan/2022 12:27(数字日/英文月/数字年 数字小时:数字分钟),日期格式化符号解释中对应关系替换即可。...@CSDN-划船使者 “3)订单编号SOID去重 ” 这里去重复除了指定列去重,还需要按日期保留最新数据。...我想法是,首先调用pandassort_values函数将所有数据根据日期列进行升序排序,然后,调用drop_duplicates函数指定SOID列进行去重,并指定keep值为last,表示重复数据中保留最后一行数据

    4.6K30

    mysql学习笔记(四)约束与索引

    具有一些特性,这些特性定义了数据在如何存储 由列组成,我们也称为字段,每个字段描述了它所含有的数据意义,数据设计实际上就是字段设计 数据行存储 约束与索引 完整性 数据完整性(Data...例如学生和课程所在,依赖主表。...例如选课表,中有两个,分别参考学生和课程 约束五个等级: cascade方式:级联,主动权在主表上,如果主表被依赖字段修改了,从字段也会跟着修改。...set null方式:主动权在主表上,如果主表被依赖字段修改了,从字段会将值设置为Null,这里要求,字段不能有非空约束。...set default方式:主动权在主表上,如果主表被依赖字段修改了,从字段会将值设置为default,这里要求,字段必须有默认约束。

    2K00

    java核心技术第二篇之数据库SQL语法

    (前提是:字段允许NULL值) 2.修改数据:update(在有中不能查询同时,再进行修改) 格式:update set 字段名1 = 值1 , 字段名2 = 值2 , .... ,...(ASC):从小到大; 降序(DESC):从大到小; 4.多列进行排序: 例如:多列进行排序:按金额排序,如果金额相同,生产日期升序排序 SELECT * FROM product ORDER...: 保证数据完整性(在有中不能查询同时,再进行修改中数据) 如何删除外?...b, 说出多应用场景及其建原则 1).应用场景:学生和课程、用户和角色 2).需要创建第三张,中间中至少两个字段,这两个字段分别作为键指向各自一方主键. 9,能够理解约束 a...(cid); c, 通过sql语句能够建立多表及其关系 创建,并且创建约束。

    1.1K20

    Python 高级笔记第二部分:数据库概述和MySQL数据操作

    ORDER BY 子句来设定你想哪个字段哪种方式来进行排序,再返回搜索结果。...,所以没有办法用第一种方法 约束和关联关系 ⭐️约束:foreign key 建立之间某种约束关系,由于这种关系存在,能够让之间数据,更加完整,关连性更强,为了具体说明创建如下部门和人员...✨创建 [CONSTRAINT 键名称] FOREIGN KEY 从 REFERENCES 主表(主表主键) -- 从字段数据类型与指定主表主键应该相同。...,从会级联更新 set null:当主表记录变动时,从字段值变为null no action:不进行级联操作 ⭐️关联关系 当我们应对复杂数据关系时候,数据设计就显得尤为重要,认识数据之间依赖关系是更加合理创建数据关联性前提...如果多个存在一定关联关系,可以多表在一起进行查询操作,其实关联整理与约束之间并没有必然联系,但是基于约束设计具有关联性往往会更多使用关联查询查找数据。

    1.8K20
    领券