文档章节

sql server如何判断数据库是否存在

N3verL4nd
 N3verL4nd
发布于 2017/03/25 10:41
字数 956
阅读 13
收藏 0
如何判断数据库是否存在       执行下列的SQL,获得一张表,根据表的行数来判断。

select * from master..sysdatabases where name=N'所查询的数据库名'

if exists(select * from master.dbo.sysdatabases where name = 'yexinwinners')
begin
drop database yexinwinners
print 'yexinwinners己存在,己被删除'
end
else
begin
create database yexinwinners
on primary
(
name = yexinwinners_mdf,
filename = 'c:\yexinwinners.mdf',
size = 10mb,
maxsize = 50mb,
filegrowth = 25%
)
log on
(
name = yexinwinners_ldf,
filename = 'c:\yexinwinners.ldf',
size = 10mb,
maxsize = 50mb,
filegrowth = 25%
)
print 'yexinwinners 数据库创建成功'

end

--建聚集索引
create clustered index index_yexinwinners
on tablename(column_name)
with fillfactor = 10
--建非聚集索引
create nonclustered index index_yexinwinners
on tablename(column_name)
with fillfactor = 10
--建视图
create view view_name
as
select * from pubs.titles(sql语句,任意)
--建检查视图
create view view_name
as
select * from pubs.titles(sql语句,任意)
with check option
--建加密视图
create view view_name
with encryption
as
select * from pubs.titles(sql语句,任意)

--建表

create table tablename
( ---(字段名,字段类型 自己任意)
stuID int not null identity(1,1) primary key,
stuName varchar(30) not null,
stuAge char(3) not null
)
--添加check约束
alter table tablename
add check(stuAge >0 and stuAge <100)
--添加外键
alter table tablename
add foreign key (stuName)
references Xtablename(stuName)
--添加唯一约束
alter table tablename
add unique(stuID) ---建事务
begin tranaction
update Xtable set Money = Money + 10000 where ID = 1
update Xtable set Money = Money - 10000 where ID = 3
if(@@error <> 0)
begin
print '转帐失败'
rollback transaction
end
else
begin
print '转帐成功'
commit transaction
end

--建游标
declare cursor_name Cursor
for select * from northwind.product
--建更新游标
declare cursor_name Cursor
for select * from northwind.product
for update
--建随意移动游标
declare cursor_name Cursor scroll
for select * from northwind.product
--使用游标
open cursor_name
--关闭游标
close cursor_name
--删除游标
deallocate cursor_name
--移动游标
fetch next -- 下一条记录
fetch last --最后一条记录
fetch first --第一条记录
fetch prior --上一条记录
fetch ABSOLUTE n -- 绝对位置 name = yexinwinners
EMail = yexin@cncmax.tj.cn
blog = blog.sina.com.cn/yexins

QQ = 306677309



SQL Server中判断数据库是否存在:
select * From master.dbo.sysdatabases where name='pubs'

最初安装 SQL Server 时,sysdatabases 包含 master、model、msdb、mssqlweb 和 tempdb 数据库的项。该表只存储在 master 数据库中。

但在实际使用中,需判断Status状态位:
其中某些状态位可由用户使用 sp_dboption(read only、dbo use only、single user 等)进行设置: 
1 = autoclose;使用 sp_dboption 设置。 数据库完全关闭,其资源在最后一个用户注销后释放。
4 = select into/bulkcopy;使用 sp_dboption 设置。允许使用 Select INTO 语句和快速大容量复制。
8 = trunc. log on chkpt;使用 sp_dboption 设置。如果数据库处于日志截断模式,则检查点将截断日志中非活动的部分。只能为 master 数据库设置此选项。16 = torn page detection,使用 sp_dboption 设置。可以检测残缺页。
32 = loading。
64 = pre recovery。
128 = recovering。
256 = not recovered。
512 = offline;使用sp_dboption 设置。数据库将处于脱机状态。
1024 = read only;使用 sp_dboption 设置。用户仅能读取数据库中的数据而无法对其进行修改。
2048 = dbo use only;使用sp_dboption 设置。只有数据库所有者可以使用数据库。
4096 = single user;使用 sp_dboption 设置。每次只能有一个用户访问数据库。
32768 = emergency mode。
4194304 = autoshrink。
1073741824 = cleanly shutdown。
可以同时打开多个位。

譬如:判断一个数据库是否offline
select * From master.dbo.sysdatabases where name='pubs' and status<>512

SQL Server中判断表对象是否存在:
select count(*) from sysobjects where id = object_id('数据库名.Owner.表名')

if exists 
(select count(*) from sysobjects where id = object_id('数据库名.Owner.表名'))
print '存在'
else
print '不存在'

SQL Server中判断表中字段是否存在:
if exists(select * from syscolumns where name='colname1' and id=object_id('数据库名.Owner.表名'))
print '存在'
else
print '不存在'
代表表tablename1中存在colname1字段 
例:
select * from syscolumns where name='Test' and id=object_id('dbo.test')

Access中判断表对象是否存在:
其实,Access数据库也有系统表,存放有对象名
Select Count(*) AS Qty FROM MSysObjects Where ((MSysObjects.Name) Like '表名');

判断数据库和表是否存在  
 if not exists(select 1 From master.dbo.sysdatabases where name=N'JZKStarCfg')

© 著作权归作者所有

上一篇: 文件解压压缩
下一篇: HDOJ1175连连看
N3verL4nd
粉丝 1
博文 379
码字总数 481243
作品 0
朝阳
私信 提问
SQL Server · 特性介绍 · 统计信息

SQL Server查询优化器对于执行计划成本的评估是基于数据库统计信息的。所以,数据库统计信息直接影响到数据库查询效率,是数据库系统快速响应,低延迟特性的幕后英雄,但是我们又经常忽视数据...

阿里云RDS-数据库内核组
2016/12/04
0
0
SQL语句判断表 数据库 数据是否存在

Sql Server中判断表或者数据库是否存在 if exists(select 1 from master..dbo.sysdatabases where name='example')print 'DataBase existed'elseprint 'Database not existed' 2.表 IF Exist......

五大三粗
2014/12/08
158
0
Oracle体系结构之SQL语句的执行过程

一般来说,数据库处理SQL都会经过三个过程:解析(parse)、执行(exec)、返回结果(fetch) 1.解析 当用户发起一个SQL语句时,Oracle通过Server Process 接收SQL语句到达oracle实例,并在Shared po...

技术小胖子
2017/11/15
0
0
关于Hyperic资源可用性的认识

在Hyperic中,有一个重要的指标是“可用性”,开始接触时总有些迷惑,这到底是什么,如何获得的?按可用性判断一个资源的状态是否满足我们的需求? 分析几个常用的使用场景: 1,平台可用性。...

MartinKing
2014/10/31
615
0
MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建

前言 在操作数据库的时候经常会用到判断数据表、视图、函数/方法、存储过程是否存在,若存在,则需要删除后再重新创建。以下是MS SQL Server中的示例代码。 数据表(Table) 创建数据表的时候判...

seayxu
2016/04/22
53
0

没有更多内容

加载失败,请刷新页面

加载更多

JS--function

一、声明提前(hoist) 在js程序开始执行前,引擎会查找所有var声明的变量和function声明的函数,集中到当前作用域顶部集中创建,赋值留在原地 二、三种创建函数的方式 1、声明方式创建函数-...

wytao1995
今天
4
0
微服务之间调用控制器注解类型的差异

今天在一个业务服务通过Feign调用文件服务上传文件时遇到了几个问题: 1. 提示http请求头过大的问题; 此时需要修改bootstrap.yml,加入 server: max-http-header-size: 10000000 用以放大...

不再熬夜
今天
5
0
用 4G 工作是什么体验

七月开始,因为工作原因,在公司附近租了个住处,方便工作。离公司近了,感觉就是不一样,之前每天 5:30 就要起床赶地铁,现在可以睡到自然醒,一看才 7 点,悠闲的起床洗漱,踱步到公司,都...

zzxworld
今天
6
0
sonar报错volatile

问题发生 原先代码如下: //认证授权码private static volatile String AUTHORIZATION_CODE = "init"; git push 之后,sonar认为这是个bug检测报告截图如下: 分析排查 解释说明: Markin...

开源小菜鸟2333
今天
5
0
《Java实践指南》--读后

闲读《Java实践指南》... 1.lvy 某些项目中能够看到ivy.xml。早期使用ant的项目中,常常用ivy.xml来下载项目依赖。 2.ant 作为java程序员,应该都知道ant,虽然可能用过的人不多。为什么ant...

RippleChan
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部