回答

收藏

如何使用MS SQL 2008获取数据库中的表列表?

技术问答 技术问答 205 人阅读 | 0 人回复 | 2023-09-14

我想验证数据库中是否存在表,如果不存在,则要创建它。如何获取当前数据库中所有表的列表?( c8 G& Z: H, p
我可以使用SELECT来获得数据库列表,如下所示:
* e9 X* K# E1 ^- y+ T* lSELECT * FROM sys.databases
1 C, }* f. A+ l! ?, K剩下的就是创建表(如果不存在)。4 S/ i# D4 U7 `
我还尝试使用以下数据库同时创建表:
, c' l: Z  A2 X. O/ o5 [& l4 Cif not exists(select * from sys.databases where name = 'db')
& |: M* n3 _9 L0 g" U' nbegin 1 Q4 j6 j( c5 z0 Q& x& ^( b
    create database [db]
; ?2 B+ y% x4 d    use [db];% a3 \: A2 w- F9 t5 N7 b1 W
    create table [test] (
# \" v) B3 P: K9 t$ [  B% |         Time datetime,- [, Q0 K) o+ q0 J7 H
         Message varchar(1024) )
1 I9 r2 w) S+ q7 }3 |& k" N    end  Q) z4 U5 E4 [2 I
但这在“使用”行上给了我错误,说“ db”不存在。这次,我将尝试使用2个不同的命令来执行此操作。- E, Z6 ^9 a) S' v3 Y
               
2 ^3 z% [* o# d* v解决方案:
  @& y9 T  Q5 M5 |* v                5 E3 n& l2 `4 G7 z/ [
- H/ d7 S6 i+ b, S; ~

. G' C! o* p5 o* R$ V. d                这应该为您提供数据库中所有表的列表" [% F# a/ l2 Z6 J/ I
SELECT Distinct TABLE_NAME FROM information_schema.TABLES
4 k) b2 F8 x8 O0 a) I2 @" c7 W因此,您可以像使用数据库检查一样使用它。, W5 p! z4 ^6 t% m# N# Z
If NOT EXISTS(SELECT Distinct TABLE_NAME FROM information_schema.TABLES Where TABLE_NAME = 'Your_Table')8 w% h0 |0 N& R9 e4 E) n6 i
BEGIN
; y! x+ V* G+ H% [9 Q# M* R    --CREATE TABLE Your_Table1 D# q+ w( B; x) z" [
END
; t# w0 L" a" L+ Y% u+ C0 BGO
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则