首页 新闻 会员 周边

在sql数据库中怎么判断某张表是否已经存在了

0
悬赏园豆:10 [待解决问题]

if  Exists (select * from ? wher name = DB)

drop table

?里填写那些信息?求解

wangzisky111的主页 wangzisky111 | 初学一级 | 园豆:190
提问于:2011-09-24 15:13
< >
分享
所有回答(7)
0

if exists(select*from sysobjects where name ='bbsUsers' )
drop table bbsUsers

bbsUsers 是要查询的表 

sysobjects 是系统表

秋风sao落叶 | 园豆:44 (初学一级) | 2011-09-24 15:22
0

楼上那个系统表没错,你先查看一下,网上再搜一下,没记错的话应该还要type=‘u’,你搜下那个type是什么意思。

顾晓北 | 园豆:10844 (专家六级) | 2011-09-24 15:26
0

你可以这么干,但好像不同的数据库有不同的简单办法,例如MySql 

这里有个php的例子  

<?php
$link = mysql_connect('localhost','root','') or die('数据库连接失败');
$database = 'test';
$tables = array();//用于存放表
mysql_select_db($database, $link);
$ret = mysql_query('SHOW TABLES');
while ($row = mysql_fetch_row($ret)) {
$tables[] = $row[0];
}
?>
Daywei | 园豆:551 (小虾三级) | 2011-09-24 18:25
0

下面是Sql Server中判断Student表是否存在的脚本:

if  Exists (select * from sysobjects wher name = 'Student' and xtype='U')

为真就存在,为假就不存在。

水晶途途 | 园豆:1443 (小虾三级) | 2011-09-24 20:09
0

你好,

根据你的问题类型.我可以得知你使用的应该是SQL Server了,所以下面的脚本对你绝对有帮助

use [AdventureWorks] --此处更改为你的数据库

DECLARE @schemaName nvarchar(100)
DECLARE @tableName nvarchar(100)

SET @schemaName = N'dbo'
SET @tableName = N'DatabaseLog'

IF exists(
SELECT
s.name SchemaName,
t.name TableName
FROM
sys.tables t INNER JOIN sys.schemas s
ON t.schema_id = s.schema_id
WHERE
s.name = @schemaName
AND t.name = @tableName
)
PRINT 'EXEC DROP TABLE ...'
ELSE
PRINT '...'


 

dotNetDR_ | 园豆:2078 (老鸟四级) | 2011-09-25 11:11
0

sys.objects  是sql server 的数据字典,里面有该库的所有object,type表示对象类型;如:U : 用户自定义表;S :系统表; P :存储过程; V : 视图 ;(sys.objects 里面有一个desc字段,即是对类型的描述)

Devin Mao | 园豆:596 (小虾三级) | 2011-09-25 20:43

正解

支持(0) 反对(0) JentleWang | 园豆:160 (初学一级) | 2011-10-06 15:32
0

select COUNT(*) from sys.tables where name='表名'

 

如果结果为0,则没有该表,否则则含有该表。

幻天芒 | 园豆:37175 (高人七级) | 2011-10-25 21:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册