SQL-在一个脚本中创建数据库和表
对不起,如果已经问过了,我找不到这方面的任何信息 我正在将一些东西从MySQL转移到SQL Server,我希望有一个.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 (
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