SQL o que é? Guia Explicativo e Conciso

SQL o que é Guia Explicativo e Conciso

Linguagem de Manipulação, Consulta e Controle de Dados.

1. Histórico da Linguagem SQL

A linguagem SQL foi desenvolvida pela IBM no final dos anos 70, tendo sido a linguagem adotada em seu protótipo de banco de dados relacional denominado System R. O primeiro banco de dados comercial a utilizar  a linguagem SQL foi apresentado em 1979, pela Oracle.

No início dos anos 80, o Instituto Americano de Padronização (ANSI – American National Standards Institute) iniciou os trabalhos de desenvolvimento de uma versão padronizada do SQL, a qual foi publicada nos anos de 1986 e 1987. Posteriormente outras revisões e acréscimos foram efetuados no SQL que sofreu importantes melhorias.
Como ela é padronizada pelo ANSI, assim como acontece, por exemplo com as linguagens C, C++ e Pascal, diversos fabricantes de bancos de dados sentiram-se seguros em adota-la como sendo a linguagem padrão para seus bancos de dados.

Outro fator, talvez mais significativo que o anterior e que levou à adoção do padrão SQL por diversos bancos de dados, foi o fato de que essa linguagem não é procedural. Isso pode ser traduzido da seguinte maneira: “não importa como uma tarefa vai ser executada pelo banco de dados; importa apenas que ela vai ser executada”. Em breve veremos as estruturas básicas do SQL, e certamente aqueles que nunca tiveram contato com ela irão se surpreender com as facilidades apresentadas.

Bancos de dados, como Access, SQL Server, Oracle, DB2 e Paradox, utilizam o SQL. Embora boa parte do SQL padrão ANSI seja utilizada por esses bancos, os programadores encontrarão algumas variações e uma série de acréscimos ao padrão desses bancos de dados.

Uma das grandes vantagens do SQL é que é uma linguagem universal para os bancos de dados profissionais. Uma boa parte dessa linguagem está padronizada. Evidentemente existem alguns acréscimos conforme o banco de dados utilizado (MSSQL Server, Oracle, DB2, etc). Entretanto, a base é a mesma.


Exemplo

Uma outra vantagem é que essas instruções são executadas pelo banco de dados e não pelo programa. Vamos imaginar o método sem SQL. Tendo uma lista com 80.000 nomes, desejo saber se existe um cliente como o nome de João Gomes Araújo. O usual seria verificar registro por registro, testando o nome de cada cliente cadastrado. Uma alternativa para otimizar a performance é dividir o banco de dados conforme as letras do alfabeto. Assim sendo, poderíamos ter uma tabela com os nomes iniciados em  A, B, C,D outra com os nomes iniciados com E,F,G e assim por diante.

De qualquer forma, o programa teria que abrir o arquivo, ler registro por registro até receber o resultado. Então cabe uma pergunta: se ele encontrar o nome desejado, ele pára ou verifica se existem mais clientes com o mesmo nome? E se desejarmos mandar uma mala direta apenas para os clientes de uma determinada cidade, ou para aqueles que fazem aniversário em um determinado dia do mês. Devemos abrir uma ou mais tabelas e ir filtrando registro por registro.
Bom, se você não tem pressa ou se seu banco de dados é pequeno (uns 500 registros no máximo) tudo bem.

Entretanto, pense na seguinte situação: um diretor deseja saber AGORA todos os clientes que moram no Recife e que tenham entre 25 e 35 anos, com renda mensal superior a R$ 1.500,00, com nível de instrução superior e que tenham comprado algum produto nos últimos três meses.
Se  você for programar isso em código, talvez eles comecem a pensar em outro programador para ocupar seu lugar. Entretanto se você usar um banco de dados compatível com SQL bastará montar uma consulta para obter esse resultado no ato.
Isso porque as consultas (ou queriespodem ser escritas e testadas sem a necessidade de compilaçãoVocê faz isso diretamente no servidor ou mesmo em uma estação. Simples, rápido e fácil.

2. Definição

O SQL é uma linguagem padrão, especificamente concebida para permitir que as pessoas a criem Bancos de Dados, adicionem novos dados a essas bases, manipulem os dados, e recuperem partes selecionadas dos dados.

Existem basicamente duas formas de manipulação de dados usando o software de banco de dados. Uma abordagem é interagir diretamente com o SGBD usando uma linguagem especial chamada linguagem de consulta. Na segunda abordagem, o utilizador interage com o programa de aplicação. O programa de aplicação envia instruções para o SGBD, que então executa as ações especificadas pelo programa. Esta lição irá se concentrar em usar linguagens de consulta para executar tarefas de processamento de dados.

Depois de ler esta lição, você deve ser capaz de:

  • Definir a linguagem de consulta de dados.
  • Descreva um exemplo de uma linguagem de consulta.
  • Discutir as funções e capacidades de uma linguagem de consulta.

Query Language (linguagem de consulta)

Linguagem de consulta permite ao usuário interagir diretamente com o software de banco de dados, a fim de executar as tarefas de processamento de informações, usando dados em um banco de dados. É normalmente uma linguagem de computador fácil de usar, que se baseia em palavras básicas, tais como SELECT, DELETE ou ALTER. Usando linguagem de consulta e um teclado de computador, o usuário digita comandos que instruem o SGBD para recuperar dados de uma base de dados ou A atualização de um banco de dados.

Structured Query Language (SQL – linguagem de consulta estruturada)

É um tipo de linguagem de consulta que é amplamente utilizada para executar operações usando bancos de dados relacionais. Lembre-se que os bancos de dados relacionais são compostos por tabelas com linhas e colunas. A Linguagem SQL pode ser usado para recuperar informações de tabelas relacionadas em um banco de dados ou para selecionar e recuperar informações de linhas e colunas específicas em uma ou mais tabelas. Uma das chaves para a compreensão de como funciona o SQL em um banco de dados relacional é perceber que cada tabela e coluna tem um nome específico associado a ele. Para consultar uma tabela, o usuário especifica o nome da tabela (indicando as linhas a ser exibido) e os nomes das colunas a serem exibidas.

Uma consulta SQL típica contém três elementos-chave:

SELECT (os nomes das colunas a serem exibidos)

FROM (indica o nome da tabela da qual os nomes das colunas será derivado)

WHERE (descreve a condição para a consulta)

Para ilustrar a aplicação deste tipo de consulta, vamos supor que um determinado usuário deseje consultar um banco de dados relacional contendo informações sobre os doadores para uma organização de caridade. Se o usuário quiser saber o nome e endereço de todos os indivíduos que doam US$ 100 ou mais, a seguinte consulta poderá ser usada:

SELECT Nome, Endereço

FROM Lista-de-Doadores

WHERE Doacao > 100


Uma vez que este comando foi executado, o computador irá exibir uma lista de doadores que atenda aos critérios pré-definidos. Neste caso, todos os dados são extraídos a partir de uma única tabela. Consultas semelhantes podem ser feitas para extrair dados de várias tabelas. Tal estratégia pode ser usada para analisar as informações do cliente, envolvendo dados de faturamento e dados de ordem, usando duas tabelas separadas.

Outras capacidades e linguagens de consulta

SQL tem muitas outras capacidades, uma das quais é a de ser capaz de atualizar e revisar um banco de dados relacional. Os usuários podem descobrir a necessidade de adicionar ou excluir colunas em um banco de dados.

Outros tipos de linguagens de consulta também estão disponíveis para manipulação de dados em bancos de dados relacional. Outro exemplo popular é chamado de consulta por exemplo (QBE). Esta linguagem utiliza uma abordagem gráfica e padrões de grade para permitir ao usuário especificar os dados a serem exibidos. SQL QBE não pode ser usado com Bancos de Dados hierárquicos e rede. Linguagens de consulta exclusivas foram projetados especificamente para esses bancos de dados.

O que pode fazer o SQL?

  • SQL pode executar consultas em um banco de dados
  • SQL pode selecionar e recuperar dados a partir de um banco de dados
  • SQL pode inserir registros em um banco de dados
  • SQL pode atualizar registros em um banco de dados
  • SQL pode excluir registros de um banco de dados
  • SQL pode criar novos Bancos de Dados
  • SQL pode criar novas tabelas em um banco de dados
  • SQL pode criar procedimentos armazenados (stored procedures) em um banco de dados
  • SQL pode criar visões (views) em um banco de dados
  • SQL pode definir permissões em tabelas, procedimentos, e visões

SQL é um padrão

Embora o SQL seja um padrão ANSI (American National Standards Institute), há muitas versões diferentes da linguagem SQL. No entanto, para ser compatível com o padrão ANSI, a linguagem deve possuir pelo menos, os comandos principais (como SELECT, UPDATE, DELETE, INSERT) de maneira semelhante.

Nota: A maioria dos programas de banco de dados SQL também têm suas próprias extensões proprietárias, além do padrão SQL!

 

Tenha em mente que…

  • SQL não é case sensitive (não é sensível a maiúsculas)
  • Alguns sistemas de banco de dados requerem um ponto e vírgula no final de cada instrução SQL.

DML, DDL e DCL

A linguagem SQL pode ser dividida em três partes:

  • DDL – linguagem de definição de dados (Data Definition Language) permite a criação, eliminação e alteração da estrutura fisica da Base de Dados. Ela também define os índices (chaves), especifica as ligações entre as tabelas, e impõe restrições entre tabelas. As declarações mais importantes DDL em SQL são:
    • CREATE DATABASE – cria um novo banco de dados
    • ALTER DATABASE – altera um banco de dados
    • CREATE TABLE – cria uma nova tabela
    • ALTER TABLE – modifica uma tabela
    • DROP TABLE – apaga uma tabela
    • CREATE INDEX – cria um índice (chave de busca)
    • DROP INDEX – exclui um índice
  • DML – linguagem de manipulação de dados (Data Manipulation Language) permite a Inserção, edição e exclusão dos dados das tabelas. A consulta e os comandos de atualização formam a parte DML de SQL são:
    • SELECT – extrai dados de um banco de dados
    • UPDATE – atualiza os dados em um banco de dados
    • DELETE – exclui dados de um banco de dados
    • INSERT – insere novos dados em um banco de dados
  • DCL – Linguagem de Controle de Dados (Data Control Language) atribui permissões aos objetos através dos comandos Grant, revoke e Deny. A Linguagem de Controle de Dados (DCL) é um subconjunto do Lanaguge SQL (Structured Query) que permite que os administradores de banco de dados para configurar o acesso de segurança para bancos de dados relacionais. DCL é o mais simples dos subconjuntos SQL, já que consiste em apenas três comandos: GRANT, REVOKE e DENY. Combinados, esses três comandos oferecem aos administradores a flexibilidade para definir e remover permissões de banco de dados de forma extremamente granular.
    • GRANT é utilizado para adicionar novas permissões para um usuário
    • REVOKE é utilizado para remover o acesso de banco de dados de um usuário
    • DENY é utilizado para impedir explicitamente que um usuário receba uma permissão especial

Lição de encerramento

Usuários confiam na linguagem de consulta para manipular dados em um banco de dados. O SQL, por exemplo, é largamente utilizado para gerir Bancos de Dados relacionais. É importante entender o propósito de linguagens de consulta. Talvez um dia, você terá a oportunidade de usar essas línguagem para ajudar sua organização a manipular e extrair o significado de um dos seus muitos bancos de dados.

Agora que você completou esta lição, você deve ser capaz de:

  • Definir a linguagem de consulta.
  • Descrever um exemplo de uma linguagem de consulta estruturada.
  • Discutir as funções e capacidades de uma linguagem de consulta estruturada.

3. Tipos de Dados

Antes de criar uma tabela você precisa entender as diferenças entre os tipos de dados que você pode utilizar em uma coluna. Os tipos de dados SQL se classificam em 13 tipos de dados primários e de vários sinônimos válidos reconhecidos por tais tipos de dados. Os tipos de dados primários são:

Tipo de DadosLongitudeDescrição
BINARY1 bytePara consultas sobre tabela anexa de produtos de banco de dados que definem um tipo de dados Binário.
BIT1 byteValores Sim/Não ou True/False
BYTE1 byteUm valor inteiro entre 0 e 255.
COUNTER4 bytesUm número incrementado automaticamente (de tipo Long)
CURRENCY8 bytesUm inteiro escalável entre 922.337.203.685.477,5808 e 922.337.203.685.477,5807.
DATETIME8 bytesUm valor de data ou hora entre os anos 100 e 9999.
SINGLE4 bytesUm valor em ponto flutuante de precisão simples com uma classificação de – 3.402823*1038 a -1.401298*10-45 para valores negativos, 1.401298*10- 45 a 3.402823*1038 para valores positivos, e 0.
DOUBLE8 bytesUm valor em ponto flutuante de dupla precisão com uma classificação de – 1.79769313486232*10308 a -4.94065645841247*10-324 para valores negativos, 4.94065645841247*10-324 a 1.79769313486232*10308 para valores positivos, e 0.
SHORT2 bytesUm inteiro curto entre -32,768 e 32,767.
LONG4 bytesUm inteiro longo entre -2,147,483,648 e 2,147,483,647.
LONGTEXT1 byte por caractereDe zero a um máximo de 1.2 gigabytes.
LONGBINARYSegundo se necessiteDe zero 1 gigabyte. Utilizado para objetos OLE.
TEXT1 byte por caractereDe zero a 255 caracteres.

A seguinte tabela recolhe os sinônimos dos tipos de dados definidos:

Tipo de DadoSinônimosDescrição
BINARYVARBINARYVarbinary – dados binários com tamanho variável até 8 Kb
BITBOOLEAN
LOGICAL
LOGICAL1
YESNO
 
BYTEINTEGER1 
COUNTERAUTOINCREMENT 
CURRENCYMONEYMoney – ± 922.337.203.685.447,5808 – 8 bytes
DATETIMEDATE
TIME
TIMESTAMP
Date– 1/1/1753 a 31/12/9999 – 8 bytes
Timestamp – cria um valor único gerado pelo SQL Server, automaticamente atualizado em caso de inclusão ou alteração de uma linha.
SINGLEFLOAT4
IEEESINGLE
REAL
 
DOUBLEFLOAT
FLOAT8
IEEEDOUBLE
NUMBER
NUMERIC
 
SHORTINTEGER2
SMALLINT
Smallint –  ± 32.767 – 2 bytes
LONGINT
INTEGER
INTEGER4
 
LONGBINARYGENERAL
OLEOBJECT
 
LONGTEXTLONGCHAR
MEMO
NOTE
 
TEXTALPHANUMERIC
CHAR – CHARACTER
STRING – VARCHAR
Char – para carácteres com tamanho fixo até 8 Kb
Varchar – para carácteres com tamanho variável até 8 Kb


Veja no quadro abaixo o melhor tipo de dados para os exemplos


Nome da coluna
DescriçãoExemploMelhor tipo de dado
precoPreço de um item a venda5678.39Money
cep5 a 10 carácteres11015-420VARCHAR(10)
massaPeso atômico de um elemento4.066054FLOAT
comentariosBloco de texto giganteJoe, I’m at the shareholder’s meeting. They just gave a demo and there were rubber duckies flying around the screen. Was this your idea of a joke? You might want to spend some time on Monster.com….LONGCHAR
quantidadeItens em estoque239INT
taxaUma porcentagem3.755FLOAT
tituloUm textoGuia de bolso do administradorVARCHAR(50)
sexoUm carácter M ou FMCHAR(1)
telefoneDez dígitos sem pontuação32027100CHAR(10)
estadoDois carácteresSPCHAR(2)
aniversárioDia, mês e ano28/10/1973DATE

Cada SGBD possui variantes e particularidades em seus tipos de dados. Para maiores informações sobre os tipos de dados nos diferentes SGBDs clique nos links abaixo:

sql server

MySQL

Perguntas Frequentes

O que é SQL?

SQL (Structured Query Language) é uma linguagem de programação usada para gerenciar bancos de dados relacionais. Ela permite a criação, a manipulação e a consulta de dados, bem como a definição e a modificação da estrutura do banco de dados.

Quais são os principais comandos SQL?

Alguns dos principais comandos SQL incluem SELECT (para consultar dados), INSERT (para inserir dados), UPDATE (para atualizar dados) e DELETE (para excluir dados). Além disso, há comandos para criar tabelas, definir restrições, criar índices e realizar junções de tabelas.

Quais são os SGBDs que suportam SQL?

A maioria dos SGBDs relacionais suporta SQL. Exemplos de SGBDs populares que utilizam SQL incluem MySQL, PostgreSQL, Oracle, Microsoft SQL Server e SQLite

Prof. Eduardo H Gomes
Prof. Eduardo H Gomes

Mestre em Engenharia da Informação, Especialista em Engenharia da Computação, Cientista da Computação, Professor de Inteligência Artificial no IFSP, 18 anos de docência no Ensino Superior. Apaixonado por Surf, Paraglider, Mergulho livre, Tecnologia, SEO, Banco de Dados e Desenvolvimento Web.