if exists(select*from sysobjects where name ='bbsUsers' )
drop table bbsUsers
bbsUsers 是要查询的表
sysobjects 是系统表
楼上那个系统表没错,你先查看一下,网上再搜一下,没记错的话应该还要type=‘u’,你搜下那个type是什么意思。
你可以这么干,但好像不同的数据库有不同的简单办法,例如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];
}
?>
下面是Sql Server中判断Student表是否存在的脚本:
if Exists (select * from sysobjects wher name = 'Student' and xtype='U')
为真就存在,为假就不存在。
你好,
根据你的问题类型.我可以得知你使用的应该是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 '...'
sys.objects 是sql server 的数据字典,里面有该库的所有object,type表示对象类型;如:U : 用户自定义表;S :系统表; P :存储过程; V : 视图 ;(sys.objects 里面有一个desc字段,即是对类型的描述)
正解
select COUNT(*) from sys.tables where name='表名'
如果结果为0,则没有该表,否则则含有该表。