Este artigo se concentrará em escrever consultas SQL na tabela de referência do banco de dados com uma estrutura bastante simples de entender e implementar.
Além disso, vamos esclarecer os conceitos por trás da escrita de consultas SQL eficazes, juntamente com algumas dicas de vida profissional.
Antes de consultar as tabelas do banco de dados
Como este artigo trata da consulta de tabelas de banco de dados com a ajuda de scripts SQL, os leitores devem ter uma certa experiência para entender completamente os conceitos e exemplos. Precisamos ter a impressão de como referenciar uma tabela. Além disso, o equipamento necessário deve estar presente:
Você precisa:
- O conhecimento básico de bancos de dados relacionais e SQL.
- Um servidor de banco de dados SQL instalado local ou remotamente.
- Ferramentas de gerenciamento de banco de dados, como SQL Server Management Studio ou dbForge Studio para SQL Server.
Você deve ser capaz de criar um banco de dados de exemplo (com a ajuda dos scripts fornecidos), conectar-se ao SQL Server e executar nesse banco de dados de exemplo.
Antes de continuarmos a executar consultas em um banco de dados em branco, talvez seja necessário consultar o artigo anterior dedicado ao assunto para atualizar o conhecimento:
Como escrever consultas SQL simples de um banco de dados em branco
Escrevendo consultas SQL a partir de tabelas de referência
Precisamos escrever consultas SQL em um banco de dados de amostra que contém duas tabelas. O plano é visualizar os dados de uma das tabelas conhecidas como tabela de referência SQL. Nota:A tabela de referência pode ser qualquer tabela que não exija dados de outra tabela.
Primeiro, precisamos entender a estrutura do banco de dados de amostra para consultá-lo com precisão.
Exemplo de tabela de referência de banco de dados
Usamos uma amostra BookSimple2 banco de dados que consiste em duas tabelas, BookType e Reservar .
O BookType tabela contém os tipos de livros a serem atribuídos a um livro. O Livro tabela contém nomes, tipos e estoque (número de cópias disponíveis) de livros.
É fácil adivinhar que ambas as tabelas estão vinculadas por meio de chaves. O tipo de livro armazenado no Livro tabela é definida originalmente no BookType tabela. Permite manter os dados consistentes e confiáveis.
Portanto, o BookType table é uma tabela de referência – ela fornece sua referência (tipo de livro) para o Livro principal tabela.
Observe a ilustração abaixo:
Se não vincularmos o Livro tabela com BookType para obter o tipo do livro, devemos definir o tipo necessário cada vez que um novo livro é armazenado. Como resultado, erros ocorrerão em breve porque estamos armazenando o mesmo tipo repetidamente. Além disso, podemos acabar criando muitos outros tipos devido a erros de ortografia.
Digamos que se ignorarmos o uso de tabelas de referência e criarmos apenas uma tabela principal, podemos usar diferentes maneiras de representar um tipo, como Design , Projeto , e Designs . Confunde, especialmente ao consultar e entender os dados.
Você também pode consultar o artigo anterior para obter mais informações sobre como as tabelas se relacionam entre si no SQL:
Aprenda o design de banco de dados com o SQL Server Management Studio (SSMS) – Parte 2
Agora que você vê o histórico de uso das tabelas de referência e das tabelas principais, podemos prosseguir para os exemplos.
Como criar uma tabela de referência em SQL
Abra a ferramenta de desenvolvimento de banco de dados (pode ser SQL Server Management Studio ou dbForge Studio para SQL Server) e conecte-se à instância do servidor SQL instalada.
Escreva o seguinte script no banco de dados mestre para configurar um banco de dados de amostra BookSimple2 com duas tabelas:
-- Create sample database BookSimple2
USE MASTER
GO
CREATE DATABASE BookSimple2
GO
USE BookSimple2
-- Creating a reference table BookType
CREATE TABLE dbo.BookType
(
BookTypeId INT IDENTITY(1,1),
Name VARCHAR(50)NOT NULL,
Detail VARCHAR(200)NULL
CONSTRAINT PK_BookType_BookTypeId PRIMARY KEY (BookTypeId)
)
GO
-- Populating (adding rows to the) table BookType
SET IDENTITY_INSERT dbo.BookType ON
GO
INSERT INTO dbo.BookType
(
BookTypeId
,Name
,Detail
)
VALUES
(
1 -- ID - INT Primary Key
,'Designing' -- Name - varchar(50) NOT NULL
,'This is Designing' -- Detail - varchar(200)
),
(
2 -- ID - INT Primary Key
,'Testing' -- Name - varchar(50) NOT NULL
,'This is Testing' -- Detail - varchar(200)
),
(
3 -- ID - INT Primary Key
,'Coding' -- Name - varchar(50) NOT NULL
,'This is Coding' -- Detail - varchar(200)
);
GO
SET IDENTITY_INSERT dbo.BookType OFF
GO
-- Creating a table Book
CREATE TABLE dbo.Book
(
BookId INT IDENTITY(1,1),
Name VARCHAR(50),
BookTypeId INT,
Stock INT,
CONSTRAINT PK_Book_BookId PRIMARY KEY (BookId)
)
GO
Após executar o script, você pode visualizar o banco de dados recém-criado no SSMS Object Explorer ou na seção Database Explorer do dbForge Studio for SQL Server:
Como fazer referência a duas tabelas com chave estrangeira SQL
Excluí deliberadamente a parte do script que cria o relacionamento entre a tabela de referência (BookType ) e a tabela principal (Livro ) na forma de chaves.
Execute o seguinte script no banco de dados de amostra para vincular a tabela de referência à tabela principal:
-- Creating foreign key constraint on Book table to get BookTypeId values from BookType table
ALTER TABLE dbo.Book
ADD CONSTRAINT [FK_Book_BookType_BookTypeId]
FOREIGN KEY ([BookTypeId]) REFERENCES dbo.[BookType] ([BookTypeId]);
Expanda o BookSimple2 banco de dados> Livro tabela> Chaves pasta:
Podemos ver que as duas tabelas estão vinculadas com sucesso.
A imagem acima é a captura de tela do SQL Server Management Studio. No entanto, a exibição é exatamente a mesma se você exibir o banco de dados no Database Explorer do dbForge Studio para SQL Server.
Uma dica importante sobre como selecionar o banco de dados desejado: Você deve garantir que está executando consultas no banco de dados correto – o banco de dados de amostra. Portanto, selecione-o na lista de bancos de dados disponíveis ou execute o seguinte script:
-- Select the sample SQL database to query it
USE BookSimple2
Importante! O uso de um script para selecionar o banco de dados não é aplicável se você trabalha com uma versão em nuvem do banco de dados SQL conhecido como Banco de Dados SQL do Azure.
Escrevendo a primeira consulta
Para consultar as tabelas do banco de dados, basta ter em mente a instrução SELECT na seguinte forma:
SELECT * FROM <TableName>
Substitua o
A instrução SELECT é muito mais flexível, mas por enquanto, vamos nos concentrar apenas em ver todos os registros (linhas) de uma tabela.
Uma dica importante sobre SQL :Lembre-se de que SQL (particularmente referente a T-SQL) não diferencia maiúsculas de minúsculas . Relaciona-se tanto com a palavra reservada SQL (SELECT é igual a Selecionar ) ou nomes definidos pelo usuário (BookType é igual a tipo de livro ) .
Visualizar todas as linhas da tabela de referência BookType
Escreva o seguinte script no banco de dados de amostra:
-- View all data from the BookType table
SELECT * FROM dbo.BookType
A saída é:
Podemos ver todas as colunas e linhas da tabela. É de longe o método mais rápido para obter todos os dados de uma tabela.
Dica importante sobre SELECT *: Você deve usar SELECT * para obter todas as linhas e colunas de uma tabela somente quando você verifica uma tabela pequena (como uma tabela de referência). Caso contrário, pode consumir muito tempo, enquanto podemos precisar dos dados em algumas colunas e linhas de uma tabela maior.
Encontre todas as linhas da tabela BookType usando o nome da tabela
Existe uma maneira melhor de consultar a tabela. Nomeamos uma tabela e a associamos a todas as colunas, conforme mostrado abaixo:
-- View all data from the BookType table using bt alias
SELECT bt.* FROM dbo.BookType bt
Visualizar colunas selecionadas da tabela de referência
O uso de nomes de tabelas traz mais benefícios. Primeiro, podemos selecionar rapidamente a coluna desejada da tabela. Então, torna mais claro o uso de tabelas e colunas limitadas porque na maioria dos casos exigimos apenas algumas colunas.
Aqui está um exemplo de como obter IDs e nomes apenas do BookType tabela:
-- View book type id and name columns from the reference table
SELECT bt.BookTypeId,bt.Name FROM dbo.BookType bt
O resultado é:
Melhorando a sintaxe SELECT
Assim, com base nas informações mencionadas acima, podemos melhorar a sintaxe do SELECT da seguinte forma:
SELECT t.<column1>,t.<column2> FROM <TableName> t
Classificar dados por coluna de nome usando a cláusula Ordenar por
Você pode classificar o conjunto de resultados com base em uma coluna ou conjunto de colunas específico. A classificação dos dados fornece um ponto de vista diferente.
O uso do Ordenar por cláusula neste caso é:
SELECT t.<column1>,t.<column2> FROM <TableName> t order by t.<column1>
Por exemplo, queremos ver os tipos de livros ordenados pelo nome do tipo (ordem alfabética). Nesse caso, usamos a cláusula Order By no script da instrução SELECT da seguinte maneira:
-- View book types (name) sorted by type name
SELECT bt.Name FROM dbo.BookType bt ORDER BY bt.Name
A saída é:
Classificar dados por coluna de nome em ordem decrescente
Também podemos classificar os dados em ordem decrescente conforme o requisito. Por exemplo, queremos ver a lista de todos os tipos de livros com base na coluna Nome em ordem decrescente (Z a A). A sintaxe será:
SELECT t.<column1>,t.<column2> FROM <TableName> t order by t.<column1> desc
O script T-SQL é o seguinte:
-- View book types (name) sorted by a type name in descending order (from Z to A)
SELECT bt.Name FROM dbo.BookType bt ORDER BY bt.Name desc
O conjunto de resultados está abaixo:
Visualizar os principais N registros de uma tabela
Finalmente, podemos selecionar o número desejado de linhas a serem extraídas de um banco de dados usando a cláusula TOP. Após essa cláusula, devemos fornecer o número necessário:
SELECT Top N t.<column1>,t.<column2> FROM <TableName> t
No entanto, a cláusula TOP sem qualquer ordem não é a melhor opção. Devemos especificar a ordem das colunas a serem consideradas ao escolher as n primeiras linhas.
Aqui, podemos melhorar a sintaxe acima da seguinte forma:
SELECT Top N t.<column1>,t.<column2> FROM <TableName> t order by <column> Desc/Asc
Lembre-se de que devemos mencionar a ordem decrescente usando DESC no final. No entanto, não é obrigatório mencionar a ordem crescente – é a opção padrão.
Vejamos os 2 principais tipos de livros ordenados por nome em ordem decrescente:
--View Top 2 types of the books ordered by name in descending order (from Z to A)
SELECT TOP 2 bt.Name FROM dbo.BookType bt
ORDER BY bt.Name DESC
A saída é:
Dica importante sobre o TOP N: use a cláusula TOP N (com um order by) para visualizar uma tabela em vez de visualizar todas as linhas da tabela se quiser verificar rapidamente os dados conhecidos como sneak peek.
Em cenários de vida profissional, a cláusula Top N serve para atualizar grandes blocos de dados de uma grande tabela em etapas.
Agora, consultamos com sucesso a tabela de um banco de dados SQL. Além disso, conhecemos algumas dicas para executar consultas como um profissional e aprendemos algumas práticas recomendadas para escrita de consultas SQL.
Prática de tabela de referência de banco de dados
Agora você pode escrever, executar e aumentar a eficácia das consultas SQL em qualquer tabela. Tente os seguintes exercícios para melhorar as novas habilidades:
- Tente escrever um script para visualizar o ID do tipo de livro (BookTypeId ) com os detalhes (Detalhe ) somente colunas.
- Tente classificar a referência BookType tabela por ids (BookTypeId ) em ordem decrescente (de 3 a 1).
- Tente obter as duas primeiras linhas do BookType tabela incluindo apenas id (BookTypeId ) e detalhes (Detalhes ) do tipo de livro classificado por Detalhes coluna.