Explorar a linguagem SQL

Concluído

O SQL significa Linguagem de Consulta Estruturada e é usado para se comunicar com um banco de dados relacional. É o idioma 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 Organização Internacional para a Padronização (ISO) em 1987. Desde então, o padrão foi estendido várias vezes, pois os fornecedores de banco de dados relacionais adicionaram novos recursos aos sistemas. Além disso, a maioria dos fornecedores de banco de dados inclui suas 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 o que você precisa fazer com um banco de dados. Embora essas instruções SQL façam parte do padrão SQL, muitos sistemas de gerenciamento de banco de dados também têm suas 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 usam 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 suas próprias versões desses recursos.

Alguns dialetos populares do SQL incluem:

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

  • pgSQL. Esse é o dialeto, com extensões implementadas no PostgreSQL.

  • PL/SQL. Este é o dialeto usado pelo Oracle. PL/SQL significa Linguagem Processual/SQL.

Os usuários que planejam trabalhar especificamente com um único sistema de banco de dados devem aprender os meandros de sua plataforma e dialeto SQL preferidos.

Observação

Os exemplos de código SQL neste módulo são baseados no dialeto Transact-SQL, a menos que indicado de outra forma. A sintaxe de outros dialetos geralmente é semelhante, mas pode variar em alguns detalhes.

Tipos de instrução SQL

As 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 e assim por diante).

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

Declaração Descrição
CRIAR Crie um novo objeto no banco de dados, como uma tabela ou uma exibição.
ALTER Modifique a estrutura de um objeto. Por exemplo, alterar uma tabela para adicionar uma nova coluna.
DROP Remova um objeto do banco de dados.
RENAME Renomeie um objeto existente.

Aviso

A instrução DROP é muito poderosa. Quando você exclui 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 nova tabela de banco de dados. Os itens entre os parênteses especificam os detalhes de cada coluna, incluindo o nome, o tipo de dados, se a coluna deve sempre 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 imponha essa regra.

Observação

Colunas marcadas como NOT NULL são conhecidas como colunas obrigatórias . Se você omitir a cláusula NOT NULL , poderá criar linhas que não contêm um valor na coluna. Diz-se 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 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 número 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, consulte 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:

Declaração Descrição
SUBVENÇÃO 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 seguir permite que um usuário chamado user1 leia, insira e modifique dados na tabela Produto.

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 dados (consulta), inserir novas linhas ou modificar linhas existentes. Você também pode excluir linhas se não precisar mais delas.

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

Declaração Descrição
SELECIONAR Ler linhas de uma tabela
INSERIR Inserir novas linhas em uma tabela
ATUALIZAÇÃO Modificar dados em linhas existentes
DELETE Excluir linhas existentes

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

Aviso

O SQL não fornece você tem certeza? Solicitações, portanto, tenha cuidado ao usar DELETE ou UPDATE sem uma cláusula WHERE, pois você pode perder ou modificar muitos dados.

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

SELECT *
FROM Customer
WHERE City = 'Seattle';

Para recuperar apenas um subconjunto específico de colunas da tabela, você as lista 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 aparecerão necessariamente 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 linhas na outra para determinar quais dados devem ser retornados. 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 tabelas cliente e pedido . A consulta usa aliases de tabela para abreviar os nomes de tabela ao especificar quais colunas devem ser recuperadas na cláusula SELECT e quais colunas devem ser correspondidas 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 Endereço na tabela Cliente para linhas que têm o valor 1 na coluna ID . Todas as outras linhas são deixadas inalteradas:

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

Aviso

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

Use a instrução DELETE para remover linhas. Especifique a tabela da qual excluir e uma cláusula WHERE que identifique 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 da tabela.

A instrução INSERT usa uma forma ligeiramente diferente. Especifique uma tabela e colunas em uma cláusula INTO e uma lista de valores a serem armazenados nessas colunas. O SQL Standard só dá suporte à 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 SQL básicas e sintaxe para ajudá-lo 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 SQL, examine o roteiro de aprendizagem Get Started Querying with Transact-SQL no Microsoft Learn.