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)
Observação
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.
- Instale o SQL Server Management Studio.
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.
Em uma janela do Editor de Consultas, digite, mas não execute o seguinte código:
CREATE DATABASE TestData GO
Use o ponteiro para selecionar as palavras
CREATE DATABASE
e, em seguida, pressione F1. O artigoCREATE DATABASE
deve abrir. Você pode usar esta técnica para localizar a sintaxe completa deCREATE DATABASE
e para as outras instruções que são usadas neste tutorial.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.
Observação
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).
Observação
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
, Price
e ProductDescription
. A coluna ProductID
é a chave primária da tabela. int
, varchar(25)
, money
e 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
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.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
eProductName
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
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 colunaPrice
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
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 colunaProductDescription
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 Screwdriver
para 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
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
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
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
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
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-chaveAS
.-- 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_Names
de 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: