Introdução

Concluído

A linguagem SQL

SQL é um acrônimo para Structured Query Language. SQL é usado para se comunicar com bancos de dados relacionais. As instruções SQL são utilizadas para realizar tarefas como atualizar os dados numa base de dados ou obter dados de uma base de dados. Por exemplo, a instrução SQL SELECT é usada para consultar o banco de dados e retornar um conjunto de linhas de dados. Alguns sistemas de gestão de bases de dados relacionais comuns que utilizam SQL incluem o Microsoft SQL Server, MySQL, PostgreSQL, MariaDB e Oracle.

Existe um padrão de linguagem SQL definido pelo American National Standards Institute (ANSI). Cada fornecedor adiciona suas próprias variações e extensões.

A SQL SELECT query retrieves a table of data from a database

Neste módulo, ficará a saber como:

  • Entenda o que é SQL e como ele é usado
  • Identificar objetos de banco de dados em esquemas
  • Identificar tipos de instrução SQL
  • Usar a instrução SELECT para consultar tabelas em um banco de dados
  • Trabalhar com tipos de dados
  • Manipular NULLs

Transact-SQL

Instruções SQL básicas, como SELECT, INSERT, UPDATE e DELETE estão disponíveis independentemente do sistema de banco de dados relacional com o qual você está trabalhando. Embora essas instruções SQL façam parte do padrão ANSI SQL, muitos sistemas de gerenciamento de banco de dados também têm suas próprias extensões. Estas extensões fornecem funcionalidades não abrangidas pela norma SQL e incluem áreas como a gestão de segurança e programação. Os sistemas de banco de dados da Microsoft, como SQL Server, Banco de Dados SQL do Azure, Azure Synapse Analytics e outros, usam um dialeto do SQL chamado Transact-SQL ou T-SQL. O T-SQL inclui extensões de linguagem para escrever procedimentos armazenados e funções, que são códigos de aplicativos armazenados no banco de dados, e gerenciar contas de usuário.

SQL é uma linguagem declarativa

As linguagens de programação podem ser categorizadas como processuais ou declarativas. As linguagens processuais permitem definir uma sequência de instruções que o computador segue para executar uma tarefa. As linguagens declarativas permitem descrever a saída desejada e deixar os detalhes das etapas necessárias para produzir a saída para o mecanismo de execução.

O SQL suporta alguma sintaxe processual, mas a consulta de dados com SQL geralmente segue a semântica declarativa. Você usa SQL para descrever os resultados desejados e o processador de consultas do mecanismo de banco de dados desenvolve um plano de consulta para recuperá-los. O processador de consultas usa estatísticas sobre os dados no banco de dados e índices que são definidos nas tabelas para chegar a um bom plano de consulta.

Dados relacionais

O SQL é usado com mais frequência (embora nem sempre) para consultar dados em bancos de dados relacionais . Um banco de dados relacional é aquele em que os dados foram organizados em várias tabelas (tecnicamente referidas como relações), cada uma representando um tipo específico de entidade (como um cliente, produto ou ordem de venda). Os atributos dessas entidades (por exemplo, o nome de um cliente, o preço de um produto ou a data do pedido de uma ordem de venda) são definidos como as colunas, ou atributos, da tabela, e cada linha da tabela representa uma instância do tipo de entidade (por exemplo, um cliente, produto ou ordem de venda específico).

As tabelas no banco de dados são relacionadas entre si usando colunas de chave que identificam exclusivamente a entidade específica representada. Uma chave primária é definida para cada tabela, e uma referência a essa chave é definida como uma chave estrangeira em qualquer tabela relacionada. Isso é mais fácil de entender olhando para um exemplo:

A relational database containing four tables

O diagrama mostra um banco de dados relacional que contém quatro tabelas:

  • Cliente
  • SalesOrderHeader
  • SalesOrderDetail
  • Produto

Cada cliente é identificado por um campo CustomerID exclusivo - este campo é a chave primária para a tabela Customer. A tabela SalesOrderHeader tem uma chave primária chamada OrderID para identificar cada pedido e também inclui uma chave estrangeira CustomerID que faz referência à chave primária na tabela Customer para identificar qual cliente está associado a cada pedido. Os dados sobre os itens individuais em um pedido são armazenados na tabela SalesOrderDetail, que tem uma chave primária composta que combina o OrderID na tabela SalesOrderHeader com um valor LineItemNo. A combinação desses valores identifica exclusivamente um item de linha. O campo OrderID também é usado como uma chave estrangeira para indicar a qual ordem o item de linha pertence, um campo ProductID é usado como uma chave estrangeira para a chave primária ProductID da tabela Product para indicar qual produto foi encomendado.

Processamento baseado em conjuntos

A teoria dos conjuntos é um dos fundamentos matemáticos do modelo relacional de gestão de dados e é fundamental para trabalhar com bases de dados relacionais. Embora você possa ser capaz de escrever consultas em T-SQL sem uma compreensão completa de conjuntos, você pode eventualmente ter dificuldade em escrever alguns dos tipos mais complexos de instruções que podem ser necessárias para o desempenho ideal.

Sem mergulhar na matemática da teoria dos conjuntos, pode-se pensar em um conjunto como "uma coleção de objetos definidos e distintos considerados como um todo". Em termos aplicados a bancos de dados do SQL Server, você pode pensar em um conjunto como uma coleção de objetos distintos contendo zero ou mais membros do mesmo tipo. Por exemplo, a tabela Customer representa um conjunto: especificamente, o conjunto de todos os clientes. Você verá que os resultados de uma instrução SELECT também formam um conjunto.

À medida que você aprende mais sobre instruções de consulta T-SQL, é importante sempre pensar em todo o conjunto, em vez de membros individuais. Essa mentalidade irá equipá-lo melhor para escrever código baseado em conjunto, em vez de pensar uma linha de cada vez. Trabalhar com conjuntos requer pensar em termos de operações que ocorrem "todas de uma vez" em vez de uma de cada vez.

Uma característica importante a ser observada sobre a teoria dos conjuntos é que não há nenhuma especificação sobre qualquer ordenação dos membros de um conjunto. Essa falta de ordem se aplica a tabelas de banco de dados relacional. Não existe o conceito de primeira linha, segunda linha ou última linha. Os elementos podem ser acessados (e recuperados) em qualquer ordem. Se você precisar retornar resultados em uma determinada ordem, deverá especificá-lo explicitamente usando uma cláusula ORDER BY em sua consulta SELECT.