Lição 1: criar e consultar objetos de banco de dados

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure PDW (Analytics Platform System)

Nota

O roteiro de aprendizagem Introdução à consulta com Transact-SQL fornece conteúdo mais detalhado, juntamente com exemplos práticos.

Esta lição mostra como criar um banco de dados, criar uma tabela no banco de dados e, então, acessar e alterar os dados na tabela. Como esta lição é uma introdução ao uso do Transact-SQL, ela não usa nem descreve as várias opções disponíveis para essas instruções.

As instruções Transact-SQL podem ser escritas e enviadas ao Mecanismo de Banco de Dados das seguintes maneiras:

  • Usando SQL Server Management Studio. Este tutorial pressupõe que você esteja usando o Management Studio, mas também é possível usar o Management Studio Express, que está disponível como um download gratuito no Centro de Download da Microsoft.

  • Usando o utilitário sqlcmd.

  • Conectando de um aplicativo criado por você.

O código é executado da mesma maneira no Mecanismo de Banco de Dados e com as mesmas permissões, independentemente de como você envia as instruções de código.

Para executar instruções Transact-SQL no Management Studio, abra o Management Studio e conecte-se a uma instância de Mecanismo de Banco de Dados do SQL Server.

Pré-requisitos

Para concluir este tutorial, você precisa de acesso ao SQL Server Management Studio e a uma instância do SQL Server.

Se você não tiver uma instância de SQL Server, crie uma. Para criar uma, selecione a plataforma nos links a seguir. Se você escolher Autenticação do SQL, use suas credenciais de logon do SQL Server.

Criar um banco de dados

Como muitas instruções Transact-SQL, a instrução CREATE DATABASE possui um parâmetro obrigatório: o nome do banco de dados. O CREATE DATABASE também tem muitos parâmetros opcionais, como o local de disco onde você deseja armazenar os arquivos de banco de dados. Quando você executa CREATE DATABASE sem os parâmetros opcionais, o SQL Server usa valores padrão para muitos destes parâmetros.

  1. Em uma janela do Editor de Consultas, digite, mas não execute o seguinte código:

    CREATE DATABASE TestData
    GO
    
  2. Use o ponteiro para selecionar as palavras CREATE DATABASEe, em seguida, pressione F1. O artigo CREATE DATABASE deve abrir. Você pode usar esta técnica para localizar a sintaxe completa de CREATE DATABASE e para as outras instruções que são usadas neste tutorial.

  3. No Editor de Consultas, pressione F5 para executar a instrução e criar um banco de dados denominado TestData.

Ao criar um banco de dados, o SQL Server faz uma cópia do banco de dados model e renomeia a cópia para o nome do banco de dados. Esta operação deve levar somente alguns segundos, a menos que você especifique um tamanho inicial grande do banco de dados como um parâmetro opcional.

Nota

A palavra-chave GO separa instruções quando mais de uma instrução é enviada em um único lote. GO é opcional quando o lote contém somente uma instrução.

Criar uma tabela

Aplica-se a: SQL Server Banco de Dados SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System)

Para criar uma tabela, você deve fornecer um nome para a tabela e os nomes e tipos de dados de cada coluna na tabela. Também é uma prática recomendada indicar se são permitidos valores nulos em cada coluna. Para criar uma tabela, você deve ter a permissão CREATE TABLE , além da permissão ALTER SCHEMA no esquema que conterá a tabela. A função de banco de dados fixa db_ddladmin tem essas permissões.

A maioria das tabelas tem uma chave primária, composta de uma ou mais colunas da tabela. Uma chave primária sempre é exclusiva. O Mecanismo de Banco de Dados aplica a restrição que nenhum valor de chave primária pode ser repetido na tabela.

Para obter uma lista de tipos de dados e links para uma descrição de cada um, confira Tipos de dados (Transact-SQL).

Nota

O Mecanismo de Banco de Dados pode ser instalado diferenciando ou não maiúsculas e minúsculas. Se o Mecanismo de Banco de Dados for instalado diferenciando maiúsculas e minúsculas, os nomes de objeto sempre terão o mesmo tipo (em maiúsculas ou em minúsculas). Por exemplo, uma tabela denominada OrderData é diferente de uma tabela denominada ORDERDATA. Se o Mecanismo de Banco de Dados estiver instalado como sem distinção entre maiúsculas e minúsculas, esses dois nomes de tabela serão considerados como sendo a mesma tabela, e esse nome poderá ser usado somente uma vez.

Alternar a conexão do Editor de Consulta com o banco de dados TestData

Em uma janela do Editor de Consultas, digite e execute o código a seguir para alterar sua conexão com o banco de dados TestData .

USE TestData
GO

Criar a tabela

Em uma janela do Editor de Consultas, digite e execute o seguinte código para criar uma tabela chamada Products. As colunas na tabela são nomeadas ProductID, ProductName, Pricee ProductDescription. A coluna ProductID é a chave primária da tabela. int, varchar(25), moneye varchar(max) são todos tipos de dados. Somente as colunas Price e ProductionDescription podem não ter dados quando uma linha for inserida ou alterada. Essa instrução contém um elemento opcional (dbo.) chamado de um esquema. O esquema é o objeto do banco de dados que possui a tabela. Se você for um administrador, dbo será o esquema padrão. dbo representa o proprietário do banco de dados.

CREATE TABLE dbo.Products
    (ProductID int PRIMARY KEY NOT NULL,
    ProductName varchar(25) NOT NULL,
    Price money NULL,
    ProductDescription varchar(max) NULL)
GO

Inserir e atualizar dados em uma tabela

Agora que você criou a tabela Products, está pronto para inserir dados na tabela usando a instrução INSERT. Depois que os dados forem inseridos, você alterará o conteúdo de uma linha usando uma instrução UPDATE. Você usa a cláusula WHERE da instrução UPDATE para restringir a atualização a uma única linha. As quatro instruções inserem os dados a seguir.

ProductID ProductName Preço ProductDescription
1 Clamp 12.48 Workbench clamp
50 Screwdriver 3,17 Flat head
75 Tire Bar Tool for changing tires.
3000 Colchete de 3 mm 0.52

A sintaxe básica é: INSERT, nome da tabela, lista de colunas, VALUES e uma lista de valores a serem inseridos. Os dois hifens antes de uma linha indicam que a linha é um comentário e o texto é ignorado pelo compilador. Neste caso, o comentário descreve uma variação admissível da sintaxe.

Inserir dados em uma tabela

  1. Execute a instrução a seguir para inserir uma linha na tabela Products que foi criada na tarefa anterior.

    -- Standard syntax
    INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription)
        VALUES (1, 'Clamp', 12.48, 'Workbench clamp')
    GO
    

    Se a inserção tiver sucesso, vá para a próxima etapa.

    Se a inserção falhar, talvez a tabela de Product já tenha uma linha com essa ID de produto. Para continuar, exclua todas as linhas na tabela e repita a etapa anterior. TRUNCATE TABLE exclui todas as linhas da tabela.

    Execute o seguinte comando para excluir todas as linhas na tabela:

    TRUNCATE TABLE TestData.dbo.Products;
    GO
    

    Depois de truncar a tabela, repita o comando INSERT nesta etapa.

  2. A instrução a seguir mostra como você pode alterar a ordem na qual os parâmetros são fornecidos alternando o posicionamento de ProductID e ProductName na lista de campos (entre parênteses) e na lista de valores.

    -- Changing the order of the columns
    INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription)
        VALUES ('Screwdriver', 50, 3.17, 'Flat head')
    GO
    
  3. A instrução a seguir demonstra que os nomes das colunas são opcionais, desde que os valores estejam listados na ordem correta. Esta sintaxe é comum, mas não é recomendada, pois possivelmente outras usuários terão dificuldade para compreender o código. NULL é especificado para a coluna Price porque o preço desse produto ainda não é conhecido.

    -- Skipping the column list, but keeping the values in order
    INSERT dbo.Products
        VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.')
    GO
    
  4. O nome de esquema é opcional, desde que você esteja acessando e alterando uma tabela em seu esquema padrão. Como a coluna ProductDescription permite valores nulos e nenhum valor está sendo fornecido, o nome de coluna ProductDescription e o valor podem ser descartados completamente da instrução.

    -- Dropping the optional dbo and dropping the ProductDescription column
    INSERT Products (ProductID, ProductName, Price)
        VALUES (3000, '3 mm Bracket', 0.52)
    GO
    

Atualizar a tabela de produtos

Digite e execute a instrução UPDATE a seguir para alterar o ProductName do segundo produto de Screwdriverpara Flat Head Screwdriver.

UPDATE dbo.Products
    SET ProductName = 'Flat Head Screwdriver'
    WHERE ProductID = 50
GO

Ler dados de uma tabela

Use a instrução SELECT para ler os dados em uma tabela. A instrução SELECT é um das instruções Transact-SQL mais importantes e há muitas variações na sintaxe. Para este tutorial, você trabalhará com cinco versões básicas.

Ler os dados em uma tabela

  1. Digite e execute as instruções seguintes para ler os dados na tabela Products .

    -- The basic syntax for reading data from a single table
    SELECT ProductID, ProductName, Price, ProductDescription
        FROM dbo.Products
    GO
    
  2. Você pode usar um asterisco (*) para selecionar todas as colunas na tabela. O asterisco é para consultas ad hoc. Em código permanente, forneça a lista de colunas para que a instrução retorne as colunas previstas, mesmo se uma coluna nova for adicionada posteriormente à tabela.

    -- Returns all columns in the table
    -- Does not use the optional schema, dbo
    SELECT * FROM Products
    GO
    
  3. Você pode omitir colunas que não deseja retornar. As colunas são retornadas na ordem em que são listadas.

    -- Returns only two of the columns from the table
    SELECT ProductName, Price
        FROM dbo.Products
    GO
    
  4. Use uma cláusula WHERE para limitar as linhas que serão retornadas ao usuário.

    -- Returns only two of the records in the table
    SELECT ProductID, ProductName, Price, ProductDescription
        FROM dbo.Products
        WHERE ProductID < 60
    GO
    
  5. Você pode trabalhar com os valores nas colunas à medida que elas forem retornadas. O exemplo seguinte executa uma operação matemática na coluna Price . Colunas que foram alteradas dessa maneira não têm um nome, a menos que você forneça um, usando a palavra-chave AS.

    -- Returns ProductName and the Price including a 7% tax
    -- Provides the name CustomerPays for the calculated column
    SELECT ProductName, Price * 1.07 AS CustomerPays
        FROM dbo.Products
    GO
    

Funções úteis em uma instrução SELECT

Para obter informações sobre algumas funções que você pode usar para trabalhar com instruções SELECT, consulte os seguintes artigos:

Criar exibições e procedimentos armazenados

Uma exibição é uma instrução SELECT armazenada e um procedimento armazenado é uma ou mais instruções Transact-SQL executadas como um lote.

As visualizações são consultadas como tabelas e não aceitam parâmetros. Procedimentos armazenados são mais complexos que exibições. Procedimentos armazenados podem ter parâmetros de entrada e saída e conter instruções para controlar o fluxo do código, como instruções IF e WHILE. É uma boa prática de programação usar procedimentos armazenados para todas as ações repetitivas no banco de dados.

Neste exemplo, você usa CREATE VIEW para criar uma exibição que seleciona apenas duas das colunas na tabela Products. Em seguida, você usa CREATE PROCEDURE para criar um procedimento armazenado que aceita um parâmetro de preço e retorna apenas produtos que custam menos do que o valor do parâmetro especificado.

Criar uma exibição

Execute a instrução a seguir para criar uma exibição que executa uma instrução SELECT e retorna os nomes e preços de nossos produtos para o usuário.

CREATE VIEW vw_Names
   AS
   SELECT ProductName, Price FROM Products;
GO

Teste a exibição

Exibições são tratadas como tabelas. Use uma instrução SELECT para acessar uma exibição.

SELECT * FROM vw_Names;
GO

Criar um procedimento armazenado

A instrução a seguir cria um pr_Namesde nome de procedimento armazenado, aceita um parâmetro de entrada denominado @VarPrice do tipo de dados money. O procedimento armazenado imprime a instrução Products less than concatenada com o parâmetro de entrada que é alterado do tipo de dados money para o tipo de dados de caractere varchar(10) . Depois, o procedimento executa uma instrução SELECT na exibição, passando o parâmetro de entrada como parte da cláusula WHERE . Isso retorna todos os produtos que custam menos do que o valor do parâmetro de entrada.

CREATE PROCEDURE pr_Names @VarPrice money
   AS
   BEGIN
      -- The print statement returns text to the user
      PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10));
      -- A second statement starts here
      SELECT ProductName, Price FROM vw_Names
            WHERE Price < @VarPrice;
   END
GO

Testar o procedimento armazenado

Para testar o procedimento armazenado, digite e execute a instrução a seguir. O procedimento deve retornar os nomes dos dois produtos inseridos na tabela Products , na Lição 1, com um preço menor que 10.00.

EXECUTE pr_Names 10.00;
GO

Próximas etapas

O próximo artigo ensina a configurar permissões em objetos de banco de dados. Os objetos criados na lição 1 também serão usados na lição 2.

Vá até o próximo artigo para saber mais: