2015-06-05 108 views
2

我目前正在尝试做一个简单的数据库,但每次运行脚本时,它都会创建数据库,但不会创建任何表,任何创意?SQL脚本不创建表

use master 
IF EXISTS(select * from sys.databases where name = 'MyWebDB') 
DROP DATABASE MyWebDB 

CREATE DATABASE MyWebDB 
DROP TABLE Users 
CREATE TABLE Users 
(
UserID int IDENTITY PRIMARY KEY, 
EmailAddress varchar(100) NOT NULL, 
FirstName varchar(50) NOT NULL, 
LastName varchar(50) NOT NULL, 
); 
CREATE TABLE Products(
ProductID int IDENTITY PRIMARY KEY, 
ProductName varchar(100) NOT NULL 
); 
DROP TABLE Downloads 
CREATE TABLE Downloads(
DownloadID int IDENTITY PRIMARY KEY, 
UserID int FOREIGN KEY REFERENCES Users(UserID), 
DownloadDate datetime NOT NULL, 
FileName varchar(100) NOT NULL, 
ProductID int FOREIGN KEY REFERENCES Products(ProductID) 
); 
+3

你得到了降表的错误和脚本结束?如果你刚刚创建了整个数据库,那么这些表格如何存在? –

+2

'use master'是那里的表格吗? –

+2

看起来像你正在使用主,然后创建一个新的数据库。您的表可能会转到master数据库而不是MyWebDB –

回答

3

摆脱你降表,并确保使用USE关键字和数据库名称更改数据库环境。如果您想要像查询数据库一样检查表的存在,则查询是否存在于sys.tables中。

USE master 
 
GO 
 
IF EXISTS(select * from sys.databases where name = 'MyWebDB') 
 
DROP DATABASE MyWebDB 
 

 
CREATE DATABASE MyWebDB 
 
USE MyWebDB 
 
GO 
 
CREATE TABLE Users 
 
(
 
UserID int IDENTITY PRIMARY KEY, 
 
EmailAddress varchar(100) NOT NULL, 
 
FirstName varchar(50) NOT NULL, 
 
LastName varchar(50) NOT NULL, 
 
); 
 
CREATE TABLE Products(
 
ProductID int IDENTITY PRIMARY KEY, 
 
ProductName varchar(100) NOT NULL 
 
); 
 
CREATE TABLE Downloads(
 
DownloadID int IDENTITY PRIMARY KEY, 
 
UserID int FOREIGN KEY REFERENCES Users(UserID), 
 
DownloadDate datetime NOT NULL, 
 
FileName varchar(100) NOT NULL, 
 
ProductID int FOREIGN KEY REFERENCES Products(ProductID) 
 
);

+0

这样做了,谢谢! – OysterMaker

+0

很高兴帮助:) –

2
use master; 
IF EXISTS(select * from sys.databases where name = 'MyWebDB') 
DROP DATABASE MyWebDB; 

CREATE DATABASE MyWebDB; 

-- added line 
USE MyWebDB; 

DROP TABLE Users; 
CREATE TABLE Users 
(
UserID int IDENTITY PRIMARY KEY, 
EmailAddress varchar(100) NOT NULL, 
FirstName varchar(50) NOT NULL, 
LastName varchar(50) NOT NULL, 
); 
CREATE TABLE Products(
ProductID int IDENTITY PRIMARY KEY, 
ProductName varchar(100) NOT NULL 
); 

- 丢失; ?

DROP TABLE Downloads; 
CREATE TABLE Downloads(
DownloadID int IDENTITY PRIMARY KEY, 
UserID int FOREIGN KEY REFERENCES Users(UserID), 
DownloadDate datetime NOT NULL, 
FileName varchar(100) NOT NULL, 
ProductID int FOREIGN KEY REFERENCES Products(ProductID) 
); 
+0

我所指的分号在Drop Table下载的末尾;在原文中,该行没有分号。虽然,也可能也需要在其他drop table上使用它。删除表用户;删除数据库MyWebDB;和创建数据库MyWebDB; –

+0

更重要的是,像Darren和Lain指出的那样。创建后,您需要切换到WebDB数据库。 –

+0

那么,我需要更改使用master来使用MyWebDB? – OysterMaker

3
  1. 你有use master所以你的表可能去那里。
  2. 在创建它之前,您将放弃Users表。 (由于你删除了数据库,所有的表都被隐式删除)。
  3. 您在某些行末尾丢失了一些分号。
+0

试图删除不存在的表可能会导致错误,并且脚本的其余部分不会执行。 – Tingo

2

我同意stazima,你设置数据库为主,所以你的表可能在那里。

设置脚本来使用新的数据库将有助于:

use master 
IF EXISTS(select * from sys.databases where name = 'MyWebDB') 
DROP DATABASE MyWebDB 

CREATE DATABASE MyWebDB; 
USE MyWebDB; 
GO 

DROP TABLE Users; 
CREATE TABLE Users 
(
UserID int IDENTITY PRIMARY KEY, 
EmailAddress varchar(100) NOT NULL, 
FirstName varchar(50) NOT NULL, 
LastName varchar(50) NOT NULL, 
); 
CREATE TABLE Products(
ProductID int IDENTITY PRIMARY KEY, 
ProductName varchar(100) NOT NULL 
); 
DROP TABLE Downloads; 
CREATE TABLE Downloads(
DownloadID int IDENTITY PRIMARY KEY, 
UserID int FOREIGN KEY REFERENCES Users(UserID), 
DownloadDate datetime NOT NULL, 
FileName varchar(100) NOT NULL, 
ProductID int FOREIGN KEY REFERENCES Products(ProductID) 
);