sql server 2000问题???建表 建数据库

来源:百度知道 编辑:UC知道 时间:2024/06/06 11:28:16
在建立数据库的时候 检测已有数据裤存在的语句是什么?如下面是不是这样写??????
IF EXISTS (SELECT *
FROM sysdatabases
WHERE name = 'mydb')
DROP DATABASE mydb
GO
CREATE DATABASE mydb
go
use mydb
go
IF EXISTS(SELECT TABLE_NAME FROM mydb //这里检测数据库中表是否存在news表 这里table_name应该怎样写?????
WHERE TABLE_NAME = 'news')
DROP TABLE news
go
CREATE TABLE news
(id int identity(1,1) not null, //这里自动增加,如果中间删除一行,造成空缺,该用什么语句弥补??(如自动增加1,2,3,把2删了后成为1,3,4则怎样把2再补添上)??????????
name varchar(40) not null,
type varchar(40) not null,
info text,
constraint id_contraint_pk primary key (id,name),
constraint news_type_ck check(type in('餐饮','娱乐'))
);
插入数据,自动增加往后面加.怎样把之前删除的造成的空缺补上?

1 检测已有数据库的语句就是那样
2 查询表是否存在应该是:
SELECT *
FROM MSysObjects
WHERE MSysObjects.Name='news'
3 自动增加的字段不能弥补,只会按照最大的序号逐渐增加.如果补删除的空缺代价很大,且使用SQL语句很难实现

SQL的缺点

只能重新建表

祝你好运

在建立数据库的时候 检测已有数据裤存在的语句,你写的对,但最好在它前加上
use master
go
检测表用 : IF EXISTS(SELECT TABLE_NAME FROM sysobjects WHERE name= 'news')
DROP TABLE news

第三个问题:
id为2的被删掉了,自动插入时是以最大的标识值递增,但我们可以手动插入2
代码如下:
SET IDENTITY_INSERT [news] ON
INSERT INTO news (包括标识列全部字段)
VALUES(2,其它值)
SET IDENTITY_INSERT [news] OFF
这样表识列值为2的数据就插进去了

你去试试吧!呵呵

TABLE_NAME 具体表名就可以
插入行数据 insert 来写就可以,好像在数据库中是有自己的排列顺序的。