2010-07-30 3 views
10

죄송합니다. 이미 질문이 있으시면 죄송합니다.SQL - 하나의 스크립트에서 데이터베이스와 테이블을 생성하십시오.

나는 MySQL에서 SQL Server로 옮겨 가고있다 .sql 파일에 데이터베이스와 데이터베이스 테이블을 만들고 싶다. 구문 결함을 해결 한 후 작업 할 파일을 얻었습니다 (거의).

내가

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

를 실행하면 잘 작동, 나는

CREATE TABLE dbname.dbo.TABLE1 (
); 
... 
CREATE TABLE dbname.dbo.TABLEN (
); 

을 실행하면 그것도 잘 작동합니다. 나도 같은 파일을 실행한다면, 나는 TABLE 문은 내가 좋아하는 것 IF 문 내에 있지 CREATE,

Database 'dbname' does not exist 

지금이 오류가 있지만, 나는 또한 구문을 찾을 수 없습니다 그. ({}가 작동하지 않습니까?)

그래서 내 큰 질문은 SQL Server에서 .sql 파일의 특정 명령이 다른 명령보다 먼저 완료되도록하려면 어떻게해야합니까?

두 번째 질문은 IF 절에 여러 명령어를 포함시키는 방법입니다.

분명히하기 위해 sqlcmd를 실행했습니다.

+3

이러한 문은 동시에 실행되지 않으므로 제목을 수정할 수 있습니다. –

답변

17

쿼리간에 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 
1

(문 별도의 배치를 만드는)

0

당신은 GO 키워드로 문을 분리해야 문 사이에 GO을 배치하여 :

sql query 
GO 

another sql query 
GO 

and so on 
4

데이터베이스를 만들고 테이블을 만드는 사이에 USE 문이 필요합니다.

USE dbname 

이렇게하면 DB 이름을 모두 지정하지 않아도 테이블이 올바른 위치에 만들어집니다.

또한 GO와 BEGIN ... END 다른 사람들처럼 말하고 있습니다.

관련 문제