Explorar a linguagem SQL

Concluído

SQL significa Linguagem de Consulta Estruturada e é usada para se comunicar com um banco de dados relacional. Ele é a linguagem padrão para sistemas de gerenciamento de banco de dados relacional. As instruções SQL são usadas para executar tarefas como atualizar dados em um banco de dados ou recuperar dados de um banco de dados. Alguns sistemas comuns de gerenciamento de banco de dados relacional que usam o SQL incluem Microsoft SQL Server, MySQL, PostgreSQL, MariaDB e Oracle.

Observação

O SQL foi originalmente padronizado pelo ANSI (American National Standards Institute) em 1986 e pela ISO (Organização Internacional de Normalização) em 1987. Desde então, o padrão foi estendido várias vezes, pois os fornecedores de banco de dados relacional adicionaram novos recursos aos sistemas. Além disso, a maioria dos fornecedores de banco de dados inclui as próprias extensões proprietárias que não fazem parte do padrão, o que resultou em uma variedade de dialetos do SQL.

Você pode usar instruções SQL como SELECT, INSERT, UPDATE, DELETE, CREATE e DROP para realizar quase tudo que precisa fazer com um banco de dados. Embora essas instruções SQL façam parte do SQL Standard, muitos sistemas de gerenciamento de banco de dados também têm as próprias extensões proprietárias adicionais para lidar com as especificidades desse sistema de gerenciamento de banco de dados. Essas extensões fornecem funcionalidades que não são abrangidas pelo SQL Standard e incluem áreas como gerenciamento de segurança e programação. Por exemplo, o Microsoft SQL Server e os serviços de banco de dados do Azure baseados no mecanismo de banco de dados do SQL Server, use o Transact-SQL. Essa implementação inclui extensões proprietárias para gravar procedimentos armazenados e gatilhos (código do aplicativo que pode ser armazenado no banco de dados) e gerenciar contas de usuário. O PostgreSQL e o MySQL também têm as próprias versões desses recursos.

Alguns dialetos populares do SQL incluem:

  • T-SQL (Transact-SQL). Essa versão do SQL é usada pelo Microsoft SQL Server e pelos serviços de SQL do Azure.

  • pgSQL. Esse é o dialeto que tem extensões implementadas no PostgreSQL.

  • PL/SQL. Esse é o dialeto usado pela Oracle. PL/SQL significa Procedural Language/SQL.

Os usuários que planejam trabalhar especificamente com um sistema de banco de dados individual devem aprender as complexidades do dialeto e da plataforma SQL preferenciais.

Observação

Os exemplos de código SQL neste módulo são baseados no dialeto Transact-SQL, salvo indicação em contrário. A sintaxe de outros dialetos geralmente é semelhante, mas pode variar em alguns detalhes.

Tipos de instrução SQL

Instruções SQL são agrupadas em três grupos lógicos principais:

  • DDL (linguagem de definição de dados)
  • DCL (linguagem de controle de dados)
  • DML (linguagem de manipulação de dados)

Instruções DDL

Você usa instruções DDL para criar, modificar e remover tabelas e outros objetos em um banco de dados (tabela, procedimentos armazenados, exibições, entre outros).

As instruções DDL mais comuns são:

Instrução Descrição
CREATE Cria um objeto no banco de dados, como uma tabela ou uma exibição.
ALTER Modifica a estrutura de um objeto. Por exemplo, alterar uma tabela para adicionar uma nova coluna.
DROP Remova um objeto do banco de dados.
RENAME Renomeia um objeto existente.

Aviso

A instrução DROP é muito avançada. Quando você remove uma tabela, todas as linhas dessa tabela são perdidas. A menos que você tenha um backup, não será possível recuperar esses dados.

O exemplo a seguir cria uma tabela de banco de dados. Os itens entre parênteses especificam os detalhes de cada coluna, incluindo o nome, o tipo de dados, se a coluna sempre precisa conter um valor (NOT NULL) e se os dados na coluna são usados para identificar exclusivamente uma linha (CHAVE PRIMÁRIA). Cada tabela deve ter uma chave primária, embora o SQL não aplique essa regra.

Observação

Colunas marcadas como NOT NULL são chamadas de colunas obrigatórias. Se você omitir a cláusula NOT NULL, poderá criar linhas que não contêm um valor na coluna. É dito que uma coluna vazia em uma linha tem um valor NULL.

CREATE TABLE Product
(
    ID INT PRIMARY KEY,
    Name VARCHAR(20) NOT NULL,
    Price DECIMAL NULL
);

Os tipos de dados disponíveis para as colunas em uma tabela variam entre os sistemas de gerenciamento de banco de dados. No entanto, a maioria dos sistemas de gerenciamento de banco de dados dá suporte a tipos numéricos, como INT (um inteiro ou número inteiro), DECIMAL (um número decimal) e tipos de cadeia de caracteres como VARCHAR (VARCHAR significa dados de caractere de comprimento variável). Para obter mais informações, confira a documentação do sistema de gerenciamento de banco de dados selecionado.

Instruções DCL

Os administradores de banco de dados geralmente usam instruções DCL para gerenciar o acesso a objetos em um banco de dados, concedendo, negando ou revogando permissões a usuários ou grupos específicos.

As três instruções DCL principais são:

Instrução Descrição
GRANT Conceder permissão para executar ações específicas
NEGAR Negar permissão para executar ações específicas
REVOKE Remover uma permissão concedida anteriormente

Por exemplo, a instrução GRANT a seguir permite que um usuário chamado user1 leia, insira e modifique dados na tabela Product.

GRANT SELECT, INSERT, UPDATE
ON Product
TO user1;

Instruções DML

Você usa instruções DML para manipular as linhas em tabelas. Essas instruções permitem recuperar (consultar) dados, inserir novas linhas ou modificar linhas existentes. Você também poderá excluir linhas se não precisar mais delas.

As quatro instruções DML principais são:

Instrução Descrição
SELECT Ler linhas de uma tabela
INSERT Inserir novas linhas em uma tabela
UPDATE Modificar dados em linhas existentes
DELETE Excluir linhas existentes

A forma básica de uma instrução INSERT insere uma linha por vez. Por padrão, as instruções SELECT, UPDATE e DELETE são aplicadas a todas as linhas em uma tabela. Normalmente, você aplica uma cláusula WHERE com essas instruções para especificar critérios. Somente as linhas que correspondem a esses critérios serão selecionadas, atualizadas ou excluídas.

Aviso

O SQL não fornece prompts tem certeza?, portanto, tenha cuidado ao usar DELETE ou UPDATE sem uma cláusula WHERE, pois você pode perder ou modificar uma grande quantidade de dados.

O código a seguir é um exemplo de uma instrução SQL que seleciona todas as colunas (indicado por *) da tabela Customer, em que o valor da coluna City é "Seattle":

SELECT *
FROM Customer
WHERE City = 'Seattle';

Para recuperar apenas um subconjunto específico de colunas da tabela, liste-os na cláusula SELECT, desta forma:

SELECT FirstName, LastName, Address, City
FROM Customer
WHERE City = 'Seattle';

Se uma consulta retornar muitas linhas, elas não serão necessariamente exibidas em nenhuma sequência específica. Se você quiser classificar os dados, poderá adicionar uma cláusula ORDER BY. Os dados serão classificados pela coluna especificada:

SELECT FirstName, LastName, Address, City
FROM Customer
WHERE City = 'Seattle'
ORDER BY LastName;

Você também pode executar instruções SELECT que recuperam dados de várias tabelas usando uma cláusula JOIN. As junções indicam como as linhas em uma tabela são conectadas com as linhas em outra tabela a fim de determinar quais dados retornar. Uma condição de junção típica corresponde a uma chave estrangeira de uma tabela e a chave primária associada na outra tabela.

A consulta a seguir mostra um exemplo que une as tabelas Customer e Order. A consulta usa aliases de tabela para abreviar os nomes de tabela ao especificar quais colunas recuperar na cláusula SELECT e quais colunas corresponder na cláusula JOIN.

SELECT o.OrderNo, o.OrderDate, c.Address, c.City
FROM Order AS o
JOIN Customer AS c
ON o.Customer = c.ID

O exemplo a seguir mostra como modificar uma linha existente usando SQL. Ele altera o valor da coluna Address na tabela Customer nas linhas que têm o valor 1 na coluna ID. Todas as outras linhas permanecem inalteradas:

UPDATE Customer
SET Address = '123 High St.'
WHERE ID = 1;

Aviso

Se você omitir a cláusula WHERE, uma declaração UPDATE modificará todas as linhas na tabela.

Use a instrução DELETE para remover linhas. Você especifica a tabela da qual excluir e uma cláusula WHERE que identifica as linhas a serem excluídas:

DELETE FROM Product
WHERE ID = 162;

Aviso

Se você omitir a cláusula WHERE, uma instrução DELETE removerá todas as linhas na tabela.

A instrução INSERT tem um formato um pouco diferente. Você especifica uma tabela e as colunas em uma cláusula INTO e uma lista de valores a serem armazenados nessas colunas. O SQL Standard dá suporte apenas à inserção de uma linha por vez, conforme mostrado no exemplo a seguir. Alguns dialetos permitem que você especifique várias cláusulas VALUES para adicionar várias linhas por vez:

INSERT INTO Product(ID, Name, Price)
VALUES (99, 'Drill', 4.99);

Observação

Este tópico descreve algumas instruções e a sintaxe SQL básica para ajudar você a entender como o SQL é usado para trabalhar com objetos em um banco de dados. Se você quiser saber mais sobre como consultar dados com o SQL, examine roteiro de aprendizagem Introdução à consulta com Transact-SQL no Microsoft Learn.