Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-在一个脚本中创建数据库和表_Sql_Sql Server_Database - Fatal编程技术网

SQL-在一个脚本中创建数据库和表

SQL-在一个脚本中创建数据库和表,sql,sql-server,database,Sql,Sql Server,Database,对不起,如果已经问过了,我找不到这方面的任何信息 我正在将一些东西从MySQL转移到SQL Server,我希望有一个.SQL文件在数据库中创建一个数据库和表。在解决了语法纠结之后,我已经让文件正常工作了(几乎) 如果我跑 IF db_id('dbname') IS NULL CREATE DATABASE dbname 它很好用,如果我跑 CREATE TABLE dbname.dbo.TABLE1 ( ); ... CREATE TABLE dbname.dbo.TABLEN (

对不起,如果已经问过了,我找不到这方面的任何信息

我正在将一些东西从MySQL转移到SQL Server,我希望有一个.SQL文件在数据库中创建一个数据库和表。在解决了语法纠结之后,我已经让文件正常工作了(几乎)

如果我跑

IF db_id('dbname') IS NULL 
    CREATE DATABASE dbname
它很好用,如果我跑

CREATE TABLE dbname.dbo.TABLE1 (
);
...
CREATE TABLE dbname.dbo.TABLEN (
);
它也很好用。但是,如果在同一个文件中运行它们,则会出现此错误

Database 'dbname' does not exist
现在,CREATETABLE语句不在我想要的IF语句中,但我似乎也找不到该语句的语法。({}不起作用?)

因此,我的大问题是,如何确保.sql文件中的特定命令在sql Server中的另一个命令之前完成?

我的第二个问题是,如何在IF子句中包含多条指令


为了清楚起见,我已经在sqlcmd中运行了这个命令。

在查询之间放置一个
GO
命令

IF db_id('dbname') IS NULL 
    CREATE DATABASE dbname

GO

CREATE TABLE dbname.dbo.TABLE1 ( 
); 

CREATE TABLE dbname.dbo.TABLEN ( 
); 
至于将表语句放在IF中,由于GO命令,您将无法这样做。您可以在之后创建额外的IF语句,以检查每个表是否存在

块的语法如下所示:

IF condition
BEGIN
   ....
   ....
END

通过在语句之间放置一个
GO
(创建单独的语句批)

您必须使用关键字分隔语句:


在创建数据库和创建表之间,您需要一个USE语句

USE dbname
这样就可以在正确的位置创建表,而无需在所有内容上指定DB名称


另外,像其他人说的那样开始…结束。

这些语句不是并行执行的,所以您可能需要修改标题。
USE dbname