如何使用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 |
|
|
|
|
|