寻一SQL语句!

JackileXM 2003-09-30 10:07:06
1 如何知道数据库中是否存在某个表!
2 如果存在则删除之,再创建一个,我是在查询分析器里操作,希望能给予答复!
3 如何列出数据库中所有表!
...全文
35 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sonique 2003-10-01
  • 打赏
  • 举报
回复
zt

-- ======================================================

--列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息

--在查询分析器里运行即可,可以生成一个表,导出到EXCEL中

-- ======================================================

SELECT

(case when a.colorder=1 then d.name else '' end)表名,

a.colorder 字段序号,

a.name 字段名,

(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识,

(case when (SELECT count(*)

FROM sysobjects

WHERE (name in

(SELECT name

FROM sysindexes

WHERE (id = a.id) AND (indid in

(SELECT indid

FROM sysindexkeys

WHERE (id = a.id) AND (colid in

(SELECT colid

FROM syscolumns

WHERE (id = a.id) AND (name = a.name))))))) AND

(xtype = 'PK'))>0 then '√' else '' end) 主键,

b.name 类型,

a.length 占用字节数,

COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度,

isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,

(case when a.isnullable=1 then '√'else '' end) 允许空,

isnull(e.text,'') 默认值,

isnull(g.[value],'') AS 字段说明



FROM syscolumns a left join systypes b

on a.xtype=b.xusertype

inner join sysobjects d

on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'

left join syscomments e

on a.cdefault=e.id

left join sysproperties g

on a.id=g.id AND a.colid = g.smallid

order by a.id,a.colorder

-------------------------------------------------------------------------------------------------

zsy0925 2003-10-01
  • 打赏
  • 举报
回复
真是学东西的好地方啊!请以后多多发表,谢了。
Jackile 2003-09-30
  • 打赏
  • 举报
回复
都很好的代码啊!
cansum396 2003-09-30
  • 打赏
  • 举报
回复
1.
IF EXISTS(SELECT * FROM sysobjects WHERE XTYPE = 'U' AND NAME = 'CAL_ACCOUNT_ORDER')
BEGIN
DROP TABLE CAL_ACCOUNT_ORDER
END
2.

SELECT * FROM sysobjects WHERE XTYPE = 'U'


golden24kcn 2003-09-30
  • 打赏
  • 举报
回复
select * from systable where tablename=mytable

drop thistalbe

select * from systalbe

如果是sql server就写个procedure

CREATE PROCEDURE selectanddeltable @tablenames varchar(20) AS

declare @thistalbe varchar(20)
declare @ExeSQL varchar(50)

select @thistable=name from sysobject where name=@tablename

if @thistalbe!=''
begin
@exesql='drop ' + @thistalbe
execute @exesql
end

SELECT * FROM sysobjects WHERE xtype = 'U'
go

///你要用RecordSet来执行,不然不会返回表名
gzqg 2003-09-30
  • 打赏
  • 举报
回复
if exitst tablename then drop ...
好像是这么写、记不清了、自己生成一个表的脚本在查询分析器里打开一看就知道了
  • 打赏
  • 举报
回复
UP
golden24kcn 2003-09-30
  • 打赏
  • 举报
回复
select * from systable where tablename=mytable
unkowme 2003-09-30
  • 打赏
  • 举报
回复
在SQL数据库里,点右键,选生成SQL脚本,那里就有。
txlicenhe 2003-09-30
  • 打赏
  • 举报
回复
1.
IF EXISTS(SELECT * FROM sysobjects WHERE XTYPE = 'U' AND NAME = 'CAL_ACCOUNT_ORDER')
BEGIN
DROP TABLE CAL_ACCOUNT_ORDER
END
或者:
if object_id('cal_account_order') is not null
drop table cal_account_order
2.

SELECT * FROM sysobjects WHERE XTYPE = 'U'

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧