多数据库学习之SQL Server查询表自增主键字段信息SQL

news2025/1/12 23:02:52

多数据库学习之SQL Server查询表自增主键字段信息SQL

  • 前言
  • 概念
  • SQL样例
    • 方式一:系统内置存储过程查找
    • 方式二:通过INFORMATION_SCHEMA模式下系统视图获取
    • 方式三:通过sys模式下系统视图获取
  • 参考链接

前言

  • Microsoft SQL Server简介

    Microsoft SQL Server 服务由一个实例(Instance)和多个数据库(Databases)组成,一个数据库有多个架构(Schema),另外用户和架构是多对多的关系。实例包含了后台线程和占用的内存,默认的系统数据库包括 master、model、msdb 以及 tempdb。
    Microsoft SQL Server 的整体系统结构

  • 需求说明

    实际开发中需要根据表主键字段批量更新数据,从而避免全表扫描,加快数据库操作速度。在获取表结构时,提前查询表主键信息,根据主键作为条件拼接,完成批量操作

概念

  • 主键

    表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行,这样的一列或多列称为表的主键。通过它可强制表的实体完整性,一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。

SQL样例

方式一:系统内置存储过程查找

    
    EXEC sp_pkeys @table_name='table_name',@table_owner = 'schema_name'

方式二:通过INFORMATION_SCHEMA模式下系统视图获取


    SELECT 
            TABLE_SCHEMA, 
            TABLE_NAME, 
            COLUMN_NAME, 
            ORDINAL_POSITION
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE TABLE_NAME = 'table_name'
    AND TABLE_SCHEMA = 'schema_name'


方式三:通过sys模式下系统视图获取


    -- 样例一
    select s.name      as TABLE_SCHEMA,
           t.name         as TABLE_NAME,
           k.name         as CONSTRAINT_NAME,
           c.name         as COLUMN_NAME,
           c.is_identity  as IS_IDENTITY,
           typ.name       AS DATA_TYPE,
           ic.key_ordinal AS ORDINAL_POSITION
    from sys.key_constraints as k -- 主键信息
            join sys.tables as t on t.object_id = k.parent_object_id -- 获取表名
            join sys.schemas as s on s.schema_id = t.schema_id -- 获取数据库名
            join sys.index_columns as ic on ic.object_id = t.object_id and ic.index_id = k.unique_index_id -- 获取key顺序
            join sys.columns as c on c.object_id = t.object_id and c.column_id = ic.column_id -- 获取列名称
            LEFT JOIN sys.types typ ON typ.system_type_id = c.system_type_id -- 列类型
    where k.type = 'PK'
    AND s.name = 'schema_name'
    AND t.name = 'table_name';


    -- 样例二
    select o.name as TABLE_NAME,
           c.name as COLUMN_NAME,
           COLUMNPROPERTY(c.id, c.name, 'IsIdentity') as IS_IDENTITY,
           k.colid as COLUMN_POSITION,
           k.keyno as ORDINAL_POSITION
    from sys.sysindexes i
            join sys.sysindexkeys k on i.id = k.id and i.indid = k.indid
            join sys.sysobjects o on i.id = o.id
            join sys.syscolumns c on i.id = c.id and k.colid = c.colid
            LEFT JOIN sys.objects s ON o.id = s.object_id
    where o.xtype = 'U'
    and exists(select 1 from sys.sysobjects where xtype = 'PK' and name = i.name)
    AND SCHEMA_NAME(s.schema_id) IN ('schema_name')
    AND o.name = 'table_name';

参考链接

  • SQL Server查询表主键的方法

  • 四种找到SqlServer主键的方法

  • SQL Server technical documentation

  • Microsoft SQL Server 数据库体系结构图解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/139198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zookeeper详解(三)——开源客户端curator

开源客户端curator (true re de) curator是Netflix公司开源的一个zookeeper客户端,后捐献给apache,curator框架在zookeeper原生API接口上进行了包装,解决了很多zooKeeper客户端非常底层的细节开发。提供zooKeeper各种应用场景(比如&#xf…

CSS3 动画案例

文章目录变形效果案例照片墙过渡效果案例鼠标移动显示内容图片文字滑动效果白光闪过效果手风琴效果动画案例脉冲动画loading效果灯光闪烁动画代码变形效果案例 照片墙 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>&…

ESP IDF:观察者Observer用例实现

ESP IDF:观察者 Observer用例实现 #include <stdio.h> // #include #include // using namespace std; //抽象的英雄 抽象的观察者 Observer class AbstractHero { public: virtual void Update() 0; }; std::list<AbstractHero*> mlist; std::list<Abstr…

Linux:vim工具

文章目录一.vim简单介绍1.1vim使用1.2vim常见的模式二.vim中的指令2.1set nu/set nonu(调出/取消行号)先导&#xff1a;下面这些命令都是在命令模式下运行2.2yy/p(复制/粘贴)2.3dd(剪切)2.4u/ctrl r(撤销/把撤销撤销)2.5shift g/g g(光标定位末尾/光标定位第一行)2.6shift 4/sh…

Docker高级篇_mysql主从复制、redis集群

目录Docker复杂安装详说安装mysql主从复制安装redis集群3主3从Redis集群&#xff08;基于哈希槽分区&#xff09;主从容错切换迁移主从扩容主从缩容Docker复杂安装详说 安装mysql主从复制 1.新建主服务容器3307 docker run -d -p 3307:3306 --privilegedtrue -v /zhoujmi/my…

Spring Framwork_01

Core Container(核心容器):管理对象的技术 1.Beans 2.Core 3.Context 4.SpEL Core&#xff1a;核心工具包&#xff0c;包括字节码操作cglib、asm&#xff0c;资源的抽象Resource&#xff0c;对象实例化化工具等等。 Beans&#xff1a;Bean 的定义、Bean 的创建以及对 Bean 的解…

【自学Java】Java循环结构

Java循环结构 Java while教程 在 Java 语言 中&#xff0c;关键字 whie 用于判断一个判断条件&#xff0c;如果返回值都是 true&#xff0c;那么它会一直执行。与 if 不同之处在于&#xff0c;if 只会执行一次&#xff0c;而 while 中&#xff0c;只要条件满足&#xff0c;会…

【迅为iMX6Q】开发板 u-boot 2015.04 SD卡 启动

前言 最近为了深入研究 嵌入式Linux 的开发&#xff0c;把【迅为iMX6Q】开发板 找了出来&#xff0c;重新搭建了开发编译环境 【迅为iMX6Q】开发板 的 u-boot&#xff0c;放在了 android 源码中&#xff0c;可以从 【迅为iMX6Q】开发板 网盘资料里&#xff0c;下载 iTOP-iMX6_…

Windows下redis环境搭建(可查看源码及Debug调试进入源码)及简易使用

Windows下redis环境搭建&#xff08;可查看源码及Debug调试进入源码&#xff09;及简易使用 在我们使用redis进行学习的过程中&#xff0c;在Windows平台上进行学习是一个非常高效的选择&#xff0c;因此下面介绍如何在Windows环境下搭建一个redis环境&#xff08;即可Debug调试…

数据结构之入门二叉树

文章目录前言1.二叉树的知识铺垫2.二叉树的具体实现1.递归实现前中后序遍历2.其它相关接口的实现1.求二叉树的节点个数2.求叶子节点个数3.二叉树查找值为x的节点3.求树高度4.求k层节点的个数5.层序遍历6.判断二叉树是否是完全二插树3.总结前言 之前用数组实现了一种特殊的完全…

解决word写论文改成两栏时mathtype的公式无法居中的问题

想要的格式 投论文的时候&#xff0c;有很多期刊的要求是两栏排版&#xff0c;比如中国电机工程学报 理论上&#xff0c;用mathtype输入的公式&#xff0c;会根据word的格式自动地调整自己的缩进量&#xff08;更确切地说&#xff0c;是会自动调整制表位&#xff09;。比如下…

新手入门指南之玩转蓝桥云课(线上运行虚拟机,c++,Java,Javaweb,python环境,以及如何成功利用命令行运行这些环境)

目录 你好&#xff0c;蓝桥云课 &#x1f44b; &#x1f332;欢迎来到蓝桥云课&#x1f332; 为什么要用 Linux 实验精神 蓝桥云课课程 加入课程 开始实验 实验环境 讨论发帖 实验报告 有效学习时间 我们的目标是星辰大海 &#x1f350;Linux 桌面环境使用指南&…

【C++ Primer】阅读笔记(4):string

目录 简介初始化string对象初始化方法直接初始化与拷贝初始化string对象上的操作操作方式读取string对象(cin>>s、cout<<s)getline(is,s)empty()size()string对象的比较(>、<、<=、>=)两个string对象相加(s1+s2)字面值与string对象相加遍历string对象参…

Jenkins复制和导出导入job

一、同一个Jenkins中复制job如果是同一个Jenkins复制job&#xff0c;只需要在创建Job时&#xff0c;选择Copy from一个已有的job即可。也就是在下方上面的红框中输入你新建job的名称&#xff0c;在下面的红框中输入你想要复制的job(已经建好的job)&#xff0c;然后点击确定。这…

【C初阶】实用调试技巧

实用调试技巧前言一、什么是bug&#xff1f;二、调试是什么&#xff1f;&#xff08;一&#xff09;调试&#xff08;二&#xff09;调试的基本步骤&#xff08;三&#xff09;Debug和Release的介绍。1.简单介绍三、Windows环境调试介绍&#xff08;一&#xff09;调试环境的准…

【SAP Abap】SAP ALV开发(REUSE_ALV_GRID_DISPLAY_LVC)全网最详细 DEMO

SAP ALV开发&#xff08;REUSE_ALV_GRID_DISPLAY_LVC&#xff09;全网最详细 DEMO1、ALV 简介2、演示程序1、ALV 简介 ALV 报表程序&#xff0c;是我们在 SAP 项目中最常开发的程序类型。 SAP 系统提供了三种 ALV 实现方式&#xff0c;分别是&#xff1a; FM ALV&#xff0c;…

win10下安装多个JDK配置方法

环境变量配置 此电脑 --- 属性 -- 高级系统设置 -- 环境变量 -- 系统变量 -- 新建 1、配置JAVA_HOME JAVA6_HOME jdk1.6的安装路径 JAVA8_HOME jdk1.8的安装路径 JAVA_HOME %JAVA8_HOME% 两个%表示引用变量的值&#xff0c;直接用JAVA_HOME&#xff0c;就能表示一连串长…

SAR影像变化检测方法之(SAR_CD_DDNet(无监督变化检测))论文阅读

一、论文信息 1、论文标题&#xff1a;Change Detection in Synthetic Aperture Radar Images Using a Dual-Domain Network 2、代码链接&#xff1a;https://github.com/summitgao/SAR_CD_DDNet 二、摘要 合成孔径雷达(SAR)图像的变化检测是一项关键而具有挑战性的任务。现…

Android---BottomAppBar

目录 BottomAppBar FloatingActionButton UI 完整代码 BottomAppBar Material Design 的一个重要特征是设计 BottomAppBar 。可适应用户不断变化的需求和行为。因此&#xff0c;BottomAppBar 是一个从标准物质指导的演变。它更注重功能&#xff0c;增加参与…

ansible 第三天

1.挂载本地光盘到/mnt 2.配置yum源仓库文件通过多种方式实现 仓库1 &#xff1a; Name: RH294_Base Description&#xff1a; RH294 base software Base urt: file:///mnt/BaseOS 不需要验证钦件包 GPG 签名 启用此软件仓库 仓库 2: Name: RH294_Stream Description &#xff1…