SQL Server 获取所有库名

----1. 获取所有的数据库名-----

SELECT NAME FROM MASTER.DBO.SYSDATABASES ORDER BY NAME

-----2. 获取所有的表名------

SELECT NAME FROM SYSOBJECTS WHERE XTYPE=‘U‘ ORDER BY NAME

--XTYPE=‘U‘:表示所有用户表;

--XTYPE=‘S‘:表示所有系统表;

SELECT NAME FROM SYSOBJECTS WHERE TYPE = ‘U‘ AND SYSSTAT = ‘83‘

----注意:一般情况只需要TYPE = ‘U‘,但有时候会有系统表混在其中(不知道什么原因),加上后面一句后就能删除这些系统表了。

----3.获取所有字段名-----

SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID(‘BCUSTOMER‘);

SELECT SYSCOLUMNS.NAME,SYSTYPES.NAME,SYSCOLUMNS.ISNULLABLE,SYSCOLUMNS.LENGTHFROM SYSCOLUMNS, SYSTYPES

WHERE SYSCOLUMNS.XUSERTYPE = SYSTYPES.XUSERTYPE AND SYSCOLUMNS.ID = OBJECT_ID(‘BCUSTOMER‘);

/*注意点:

----(A)这里为了重点突出某些重要内容,选取了其中几项信息输出。

(B)SYSCOLUMNS表中只含有数据类型编号,要获取完整的名字需要从SYSTYPES表中找,一般用户使用的数据类型用XUSERTYPE对应比较好,不会出现一对多的情况。

(C)SYSCOLUMNS.LENGTH得到的是物理内存的长度,所以NVARCHAR和VARCHAR等类型在数据库中的显示是这个的一半。*/

----4、得到表中主键所包含的列名------

SELECT SYSCOLUMNS.NAME ,SYSOBJECTS.XTYPE

FROM SYSCOLUMNS,SYSOBJECTS,SYSINDEXES,SYSINDEXKEYS

WHERE SYSCOLUMNS.ID = OBJECT_ID(‘BCUSTOMER‘)

AND SYSOBJECTS.XTYPE = ‘PK‘

AND SYSOBJECTS.PARENT_OBJ = SYSCOLUMNS.ID

AND SYSINDEXES.ID = SYSCOLUMNS.ID

AND SYSOBJECTS.NAME = SYSINDEXES.NAME

AND SYSINDEXKEYS.ID = SYSCOLUMNS.ID

AND SYSINDEXKEYS.INDID = SYSINDEXES.INDID

AND SYSCOLUMNS.COLID = SYSINDEXKEYS.COLID;

/*注意:这是在4张系统表中寻找的,关系比较复杂,大致可以表示为:

SYSCOLUMNS中存有表中的列信息和表ID,

SYSOBJECTS表中存有主键名字(即PK_TABLE类似)和表ID,

SYSINDEXES中存有主键名字和表ID和INDEX编号,

SYSINDEXKEYS中存有表ID和INDEX编号和列编号,

一项一项对应起来后就能找到列名了,呼~*/

----5、得到表中列的描述内容-----

‘表示没有找到‘

SELECT A.NAME,G.VALUE

FROM SYSCOLUMNS AS A

LEFT JOIN SYSPROPERTIES G  

ON A.ID=G.ID

AND A.COLID = G.SMALLID  

 WHERE A.ID=‘BCUSTOMER‘

原文地址:https://www.cnblogs.com/YZFHKMS-X/p/11756250.html

时间: 2024-08-29 17:38:13

SQL Server 获取所有库名的相关文章

SQL Server获取下一个编码字符串的实现方案分割和进位

我在前一种解决方案SQL Server获取下一个编码字符实现和后一种解决方案SQL Server获取下一个编码字符实现继续重构与增强两篇博文中均提供了一种解决编码的方案,考虑良久对比以上两种方案的,后一种方案虽然解决了其中方案的缺点,但是依然存在的编码字符串长度的限制(最多满足8位长度),本博文提供的方案将编码字符串长度增加到19位,也可以足够项目中实现这些编码. 具体的编码规则可以参看以上两种解决方案博文中的描述,也可以进入SQL Server 大V潇湘隐者的获取下一个编码字符串问题这篇博文.

sql server 获取每一个类别中值最大的一条数据

sql server 获取每一个类别中值最大的一条数据 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 /* 数据如下: name val memo a    2   a2(a的第二个值) a    1   a1--a的第一个值 a    3   a3:a的第三个值 b    1   b1--b的第一个

SQL Server获取指定行的数据

SQL Server获取指定行(如第二行)的数据 --SQL Server获取指定行(如第二行)的数据-- --法一(对象法)-- select * from ( select * , number = row_number() over(order by Grade desc) from Students )  m where number = 2 --法二(排除法)--- select top 1 * from Students where Grade not in ( select top

MS Sql Server 中主从库的配置和使用介绍(转)

网站规模到了一定程度之后,该分的也分了,该优化的也做了优化,但是还是不能满足业务上对性能的要求:这时候我们可以考虑使用主从库. 主从库是两台服务器上的两个数据库,主库以最快的速度做增删改操作+最新数据的查询操作:从库负责查询较旧数据,做一些对实效性要求较小的分析,报表生成的工作.这样做将数据库的压力分担到两台服务器上从而保证整个系统响应的及时性. SQL Server提供了复制机制来帮我们实现主从库的机制.我们看下如何在sql server 2005中实践: 实践前需要新创建一个Test的数据库

SQL Server获取下一个编码字符实现继续重构与增强

我在SQL Server获取下一个编码字符实现的博文中,虽然实现了这个问题,但是感觉维护起来比较麻烦,例如如果调整编码字符串的固定长度,就需要变更三个函数,这样的为何成本确实比较大.面向对象编程很重视讲究开放封闭原则,我认为数据库对象特别函数.存储等对象也要尽量封装成实现单一功能,维护起来简单,也方便后续人员的维护,便利别人也是便利自己. 针对编码字符串的规则,继续延伸总结如下: 1.第一个字符必须是字母A-Z中任意一个字符,其长度可以为1位.2位.3位,……,6位.7位.8位.……: 2.编码

Sql Server用户名和登录名的关系总结

Sql Server用户名和登录名的关系总结 以前经常被Sql Server中的用户名和登录名搞迷糊,因为用sa(登录名)就搞定一切东西了,当然这会存在一些安全隐患.网上的文章也貌似讲得很好,但还是不明白.今天决心把这个问题弄明白.mashallah, 看了N多文章加实验后终于弄明白了(学东西最重要的还是要亲自动手试试),现将学到的分享一下,看是否对你有帮助. 登录名:服务器方的一个实体,使用一个登录名只能进入服务器,但是不能让用户访问服务器中的数据库资源.每个登录名的定义存放在master数据

SQL SERVER获取错误文本信息

SQL SERVER获取错误文本信息,BDE.adoquery一直取不到,FDQuery可以了 Some DBMS, like SQL Server, return messages as an additional result set. So, to process messages, the application needs to process multiple result sets. Here is a more complex example, providing status

PowerDesigner16 生成的备注脚本,在sql server 2008 中报“对象名 'sysproperties' 无效”的错误的解决办法

主要是在建模时我们对表.列增加了些说明注释,而Sql2005之后系统表sysproperties已废弃删除而改用sys.extended_properties所致. 1.修改Table TableComment 部分 菜单Database -> Edit Current DBMS 窗体 General 选项卡 下 Script -> Objects -> Table –> TableComment 在开头部分替换如下: [if exists (select 1           

SQL SERVER 2008 服务器登录名、角色,数据库用户、角色、架构知识点总结

SQL SERVER 2008 服务器登录名.角色,数据库用户.角色.架构的关系可以用下面一张图表示: 用例过程如下: 新建服务器登录名: 登录名角色选定: 新建数据库DB1: 然后新建数据库架构Schema1 再新建数据库用户名  User1 服务器登录名属于某组服务器角色:服务器登录名需要于数据库的用户映射后才拥有操作数据库的权限数据库用户属于某组数据库角色以获取操作数据库的权限数据库角色拥有对应的数据库架构,数据库用户可以通过角色直接拥有架构 服务器角色 public sysadmin--