首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用MS SQL2008获取数据库中的表列表?

如何使用MS SQL2008获取数据库中的表列表?
EN

Stack Overflow用户
提问于 2011-07-06 22:43:06
回答 3查看 131.6K关注 0票数 35

我想要验证表是否存在于数据库中,如果不存在,则创建它。如何获取当前数据库中所有表的列表?

我可以使用如下SELECT命令来获取数据库列表:

代码语言:javascript
复制
SELECT * FROM sys.databases

剩下的就是在表不存在的情况下创建它。

我还尝试使用数据库同时创建表,如下所示:

代码语言:javascript
复制
if not exists(select * from sys.databases where name = 'db')
begin 
    create database [db]
    use [db];
    create table [test] (
         Time datetime,
         Message varchar(1024) )
    end

但它在'use‘行给出了错误,说'db’不存在。这一次,我将尝试使用两个不同的命令来完成此操作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-06 22:53:19

这将为您提供数据库中所有表的列表

代码语言:javascript
复制
SELECT Distinct TABLE_NAME FROM information_schema.TABLES

因此,您可以使用与数据库检查类似的方法。

代码语言:javascript
复制
If NOT EXISTS(SELECT Distinct TABLE_NAME FROM information_schema.TABLES Where TABLE_NAME = 'Your_Table')
BEGIN
    --CREATE TABLE Your_Table
END
GO
票数 65
EN

Stack Overflow用户

发布于 2011-07-06 22:52:59

此查询将获取数据库中的所有表

代码语言:javascript
复制
USE [DatabaseName];

SELECT * FROM information_schema.tables;
票数 18
EN

Stack Overflow用户

发布于 2011-07-06 22:54:12

在回答标题中的问题时,您可以查询sys.tablessys.objects where type = 'U'来检查表的存在。也可以使用OBJECT_ID('table_name','U')。如果它返回一个非空值,则该表存在:

代码语言:javascript
复制
IF (OBJECT_ID('dbo.My_Table', 'U') IS NULL)
BEGIN
    CREATE TABLE dbo.My_Table (...)
END

您可以使用DB_ID()对数据库执行相同的操作:

代码语言:javascript
复制
IF (DB_ID('My_Database') IS NULL)
BEGIN
    CREATE DATABASE My_Database
END

如果您想创建数据库,然后开始使用它,则需要分批完成。我不知道你的具体情况,但应该不会有很多情况下这是不可能的。在SQL脚本中,您可以使用GO语句。在应用程序中,在创建数据库后发送一个新命令非常容易。

唯一可能有问题的地方是,如果您试图在存储过程中执行此操作,并且像这样动态创建数据库通常不是一个好主意。

如果您确实需要在一个批处理中完成此操作,您可以通过使用EXEC解决数据库不存在的解析错误来解决此问题:

代码语言:javascript
复制
CREATE DATABASE Test_DB2

IF (OBJECT_ID('Test_DB2.dbo.My_Table', 'U') IS NULL)
BEGIN
    EXEC('CREATE TABLE Test_DB2.dbo.My_Table (my_id INT)')
END

EDIT:正如其他人所建议的,INFORMATION_SCHEMA.TABLES系统视图可能更可取,因为它被认为是未来的标准,并且可能在RDBMS之间。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6598289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档