quarta-feira, 1 de junho de 2011

Inserindo múltiplas linhas com um único comando

Uma das novidades do SQL Server 2008 em relação às versões anteriores é uma sintaxe alternativa para o comendo INSERT que permite a inserção de múltiplas linhas através da execução de um único comando.

A nova estrutura permite declarar várias linhas entre parênteses, separadas por vírgulas. Veja esta opção de sintaxe:

INSERT INTO tabela (coluna1,coluna2, coluna3)
VALUES (valor1,valor2,valor3),(valor4,valor5,valor6),(valor7,valor8,valor9)

Assim, pode-se substituir scripts como este:

INSERT INTO Contato(nome,email,telefone)
   VALUES ('Evandro','evandro@email.com','3456-7890')
INSERT INTO Contato(nome,email,telefone)
   VALUES ('Ronaldo','contato@ronaldo.com.br','8765-5432')
INSERT INTO Contato(nome,email,telefone)
    VALUES ('Mariana','mariana@email.com','3344-9988')
INSERT INTO Contato(nome,email,telefone)
    VALUES ('José','falecom@jose.com','5678-1011')

Por estruturas como esta:

INSERT INTO Contato(nome,email,telefone)
VALUES
   ('Evandro','evandro@email.com','3456-7890'),
   ('Ronaldo','contato@ronaldo.com.br','8765-5432'),
   ('Mariana','mariana@email.com','3344-9988'),
   ('José','falecom@jose.com','5678-1011')

Este modelo já vem sendo utilizado nos exemplos deste blog, pois diminui o tamanho dos scripts gerados e também facilita a vida do desenvolvedor SQL.

Verificar se um Banco de Dados existe em uma instância do SQL Server

Verificar se um banco de dados existe em um servidor SQL Server é uma tarefa simples quando se usa uma ferramenta gráfica ou assistente de conexão ao banco.

Porém, ao criar scripts mais complexos, pode ser necessário verificar manualmente se um banco de dados existe no servidor.

No SQL Server 2008, para cada banco de dados criado em uma instância, um novo registro na view de sistema sys.databases.

Assim, basta consultar esta tabela para realizar a tarefa desejada:

SELECT * FROM sys.databases WHERE name = 'dbTest'

Veja o resultado:


Observe que através da view sys.databases pode-se obter diversas informações sobre as bases de dados de uma instância. Pode-se também usá-la para exibir uma lista dos bancos de dados do servidor. Até a próxima!