如何获得数据库里所有表的名字
平时我们操作比较多的都是表里的数据,也许突然有一天会需要把所有表的名字都列出来看一看——比如,你的论坛是按每个版块一个表来管理的,这时候你要在首页列出各版块的名字。应该怎么办呢?
肯定得用SELECT吧……但我们平时使用SELECT操作的数据都是表里的数据,表的名字并不是表的数据,这可怎么办呢?
你可能会想:“功能强大的SQL Server不会连这么简单的功能都实现不了吧?一定会把所有表的名字存储在某个表里……”注意啦!在这儿我要小小地偷换一下概念了——视图(View)也算是一种“表”,只不过它是由固定查询形成的一种“虚拟表”。
OK,你猜对啦!由SQL Server管理的每个数据库里都有一个名为sysobjects的视图,它是system级别的,所以它的全限定名是——sys.sysobjects
你可能又会问:“为什么不是sys.tables而是sys.objects呢?”问的好!因为这张表里存储的可不光是数据库里的表,它存储的是一个数据库中所有的“对象”——杂七杂八包括了表的主键、存储过程、触发器等等,一共是24种——表(Table,确切地说是“用户自定义表”)只是这24种对象中的一种。
剩下的事情……吼吼……
执行下面的查询语句,可以得到所有包含在sys.sysobjects视图里的数据
USEAdventureWorks
SELECT*
FROMsys.sysobjects
GO
得出数据后,请注意名为type的列——这一列标明了对象的类型,也就是前面提到的24种。在这里,我用一个表格把它们列出来:
AF = Aggregate function (CLR) |
C = CHECK constraint |
D = DEFAULT (constraint or stand-alone) |
F = FOREIGN KEY constraint |
FN = SQL scalar function |
FS = Assembly (CLR) scalar function |
FT = Assembly (CLR) table-valued function |
IF = SQL inline table-valued function |
IT = Internal table |
P = SQL stored procedure |
PC = Assembly (CLR) stored procedure |
PK = PRIMARY KEY constraint |
R = Rule (old-style, stand-alone) |
RF = Replication-filter-procedure |
S = System base table |
SN = Synonym |
SQ = Service queue |
TA = Assembly (CLR) DML trigger |
TF = SQL table-valued-function |
TR = SQL DML trigger |
U = Table (user-defined) |
UQ = UNIQUE constraint |
V = View |
X = Extended stored procedure |
OK,我们要得到名称的表(用户自定义表)就是类型为“U”的对象;而sys.objects的类型为“S”。所以,为了达到我们的最终目的,SQL语句应该是——
USEAdventureWorks
SELECTname
FROMsys.sysobjects
WHEREtype='U'
GO
下面我再给出一段用C#实现的代码:
//========<水之真谛>========//
//====<以人为本,关注民生>====//
// http://blog.csdn.net/FantasiaX //
using System;
using System.Data.SqlClient;
namespace SqlSample
{
class Program
{
static void Main(string[] args)
{
string connectionString = @"Server=(local); Database=AdventureWorks; User ID=sa; Password=password";
SqlConnection connection = new SqlConnection();
connection.ConnectionString = connectionString;
string sqlCommandString = @"USE AdventureWorks SELECT name FROM sys.sysobjects WHERE type='U' ORDER BY name";
SqlCommand command = new SqlCommand();
command.CommandType = System.Data.CommandType.Text;
command.CommandText = sqlCommandString;
command.Connection = connection;
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[@"name"]);
}
}
}
}
运行后得到的截图是:
嗯~~~小问题也要认真对待~~~细节体现品质。我要把这个问题加到面试题里去,呵呵~~~
分享到:
相关推荐
基于C#.NetCore+Vue框架通用管理系统(多数据库SQL+支持VUE3+丰富的表单).zip
SQL数据库类 C#SQL数据库源码 C#SQL数据库源 SQL数据库访问 C#ACCESS数据库操作
《SQL+C#工资管理系统》是一个综合性的项目,它结合了SQL数据库技术和C#编程语言,旨在实现企业工资的高效管理。这个系统包含了完整的程序代码、数据库结构以及详细的设计报告,确保用户可以理解并运行整个系统。...
本资料包可能包含了一些关于如何在实际项目中运用SQL Server与C#进行数据库操作的案例。 在SQL Server中,数据库是核心组成部分,它负责存储和组织数据。表是数据库的基本结构,用来存储数据记录。在C#中,我们可以...
在本项目中,“C#+SQL数据库实现学生管理系统”是一个典型的基于C#编程语言和SQL数据库技术构建的应用程序,主要用于管理教育机构中的学生信息。这个系统能够帮助管理员进行学生数据的录入、查询、更新和删除等操作...
《教学设备数据库管理系统:SQL与C#的课程设计实践》 在信息技术日益发展的今天,数据库管理系统已经成为各行各业不可或缺的工具。本教学设备数据库管理系统是专为SQL和C#课程设计而构建的,它不仅提供了完整的系统...
"数据库课程设计+SQL+Server2005+C#+课设" 本课程设计的目的是为了让学生了解数据库的原理和设计方法,掌握SQL Server 2005和C#的应用,设计并实现一个仓库管理系统。在课程设计中,学生需要完成以下几个步骤: ...
总的来说,“SQL+C#学生信息管理系统”是一个结合了数据库管理、编程和Web开发的综合项目,展示了如何利用现代技术解决实际问题。理解并掌握其中的技术原理和实践方法,对于提升IT专业人员的技能和经验具有重要意义...
在本课程设计中,我们将深入探讨如何使用C#编程语言与SQL数据库进行集成,从而创建高效、实用的应用程序。这个“c#SQL数据库课程设计整合版”覆盖了多个实际应用场景,包括学生信息管理系统、企业人事管理系统、库存...
本课程设计选择了C#作为前端开发语言,结合SqlSever作为后台数据库,构建了一个完整的数据处理系统。下面将详细阐述这两个关键技术及其相互配合的应用。 C#(读作"C sharp")是由微软公司推出的面向对象的编程语言...
SQL Server 2005是比较完备的数据库开发工具,利用其提供的各种面向对象的开发工具,建立强大的数据环境,实现了数据库和数据表的直接操作和处理,提高了编程效率和可靠性。ASP.net是基于通用语言的编译运行的程序,...
基于C#实现的仓库管理系统+sql数据库+项目说明.zip基于C#实现的仓库管理系统+sql数据库+项目说明.zip基于C#实现的仓库管理系统+sql数据库+项目说明.zip基于C#实现的仓库管理系统+sql数据库+项目说明.zip基于C#实现的...
《图书管理系统SQL+c#》是一套综合性的软件开发实践项目,旨在帮助学习者掌握数据库管理和C#编程在实际应用中的技巧。系统的核心是利用SQL语言进行数据库设计与管理,而C#作为前端开发语言,负责用户界面的交互与...
本文将深入探讨如何利用SQL数据库与C#编程语言,构建一个高效实用的个人管理系统,涵盖通信、备忘录及理财功能。 首先,我们要了解SQL(Structured Query Language),这是一种用于管理和处理关系数据库的强大工具...
标题“C# 开发SQLSERVER数据库自动建表”表明我们将讨论一个使用C#开发的程序,该程序可以自动化创建SQL Server数据库中的表结构。这个功能对于数据导入、系统初始化或简化数据库管理流程非常有用。 描述中提到,该...
同时,C#提供了ADO.NET框架,使得与SQL数据库的通信变得简单,例如使用SqlConnection、SqlCommand对象来执行SQL语句,实现数据的读写。 超市管理系统的主要功能模块包括商品管理、库存管理、销售管理、客户管理等。...
本教程将通过一个简单示例,讲解如何使用C#连接到SQL Server数据库,执行查询并显示结果。 首先,你需要在C#项目中引入System.Data.SqlClient命名空间,这是用于与SQL Server交互的关键库。在代码文件顶部添加以下...
1. **设计数据库结构**:首先,需要在数据库中创建一个表,包含用于存储倒计时的字段,如`startTime`(倒计时开始时间)和`endTime`(倒计时结束时间)。 2. **C#后台处理**:在C#代码中,你可以使用`DateTime`类来...
【个人通讯录系统SQL+C#】是一个结合了C#编程语言和SQL数据库技术的应用程序,旨在为用户提供一个方便、高效的方式来管理和存储个人联系信息。这个系统的核心特点是将数据存储在后台数据库中,使得数据能够在不同...
【标题】"web售票系统+C#语言+Sql2000数据库 v1.0"是一个基于Web技术构建的售票系统,使用C#编程语言作为后端开发语言,并且依赖于Microsoft SQL Server 2000作为数据库管理系统。这个系统旨在提供一个用户友好的...