Você está na página 1de 20

DIVISÃO DE ENGENHARIA

CURSO DE ENGENHARIA INFORMÁTICA

CADEIRA: INTRODUÇÃO À BASE DE DADOS

TEMA: LINGUAGEM DE CONSULTA ESTRUTURADA OU SQL

Discente: António Ernesto Maússe Docente: Eng: Celso de


Sousa
Tete, Junho de 2018

António Ernesto Maússe

CURSO DE ENGENHARIA INFORMÁTICA

CADEIRA: INTRODUÇÃO À BASE DE DADOS

2º Ano, Turma A

Tema: LINGUAGEM DE CONSULTA ESTRUTURADA OU SQL

O presente trabalho é um trabalho


investigativo de forma avaliativa, para ser
apresentado na cadeira de Introdução à base
de Dados , Sob a Orientação do Eng: Celso
de Sousa
Tete, Junho de 2018
Agradecimentos

Agardeço a Deus por ter me dado saúde e força para superar as dificuldades.
A este instituto, o seu corpo docente, direção e administração que oportunizaram a janela que
hoje vislumbro o horizonte superior.
A minha Mãe e meus irmãos pelo amor incondicional.
Epigrafe

Uma das maiores certezas que carregamos na vida é a dificuldade de fazer um excelente
trabalho de pesquisa.
Existem inúmeras dicas para os estudantes que estão por este processo. Uma das coisas a
serem consideradas são os prazos.
Eduardo Andrade

A imaginação é mais importante que a ciência, porque a ciência é limitada, ao passo que a
imaginação abrange o mundo inteiro.
Albert Einstein
A primeira frase do saber é amar os nossos professores.
Erasmo de Roterdã
Linguagem de Consulta Estruturada

Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é a


linguagem de pesquisa declarativa padrão para banco de dados relacional (base de dados
relacional). Muitas das características originais do SQL foram inspiradas na álgebra
relacional.
O SQL foi desenvolvido originalmente no início dos anos 70 nos laboratórios da IBM em
San Jose, dentro do projeto System R, que tinha por objetivo demonstrar a viabilidade da
implementação do modelo relacional proposto por E. F. Codd. O nome original da linguagem
era SEQUEL, acrônimo para "Structured English Query Language" (Linguagem de Consulta
Estruturada, em Inglês), vindo daí o facto de, até hoje, a sigla, em inglês, ser comumente
pronunciada "síquel" ao invés de "ésse-kiú-él", letra a letra. No entanto, em português, a
pronúncia mais corrente é letra a letra: "ésse-quê-éle".

A linguagem é um grande padrão de banco de dados. Isto decorre da sua simplicidade e


facilidade de uso. Ela se diferencia de outras linguagens de consulta a banco de dados no
sentido em que uma consulta SQL especifica a forma do resultado e não o caminho para
chegar a ele. Ela é uma linguagem declarativa em oposição a outras linguagens procedurais.
Isto reduz o ciclo de aprendizado daqueles que se iniciam na linguagem.

Embora o SQL tenha sido originalmente criado pela IBM, rapidamente surgiram vários
"dialectos" desenvolvidos por outros produtores. Essa expansão levou à necessidade de ser
criado e adaptado um padrão para a linguagem. Esta tarefa foi realizada pela American
National Standards Institute (ANSI) em 1986 e ISO em 1987.
O SQL foi revisto em 1992 e a esta versão foi dado o nome de SQL-92. Foi revisto
novamente em 1999 e 2003 para se tornar SQL:1999 (SQL3) e SQL:2003, respectivamente.
O SQL:1999 usa expressões regulares de emparelhamento, queries recursivas
e gatilhos (triggers). Também foi feita uma adição controversa de tipos não-escalados e
algumas características de orientação a objeto. O SQL:2003 introduz características
relacionadas ao XML, sequências padronizadas e colunas com valores de auto-generalização
(inclusive colunas-identidade).
Tal como dito anteriormente, embora padronizado pela ANSI e ISO, possui muitas variações
e extensões produzidos pelos diferentes fabricantes de sistemas gerenciadores de bases de
dados. Tipicamente a linguagem pode ser migrada de plataforma para plataforma sem
mudanças estruturais principais.
Outra aproximação é permitir para código de idioma procedural ser embutido e interagir com
o banco de dados. Por exemplo, o Oracle e outros incluem Java na base de dados, enquanto
o PostgreSQL permite que
Tabela 'T' Consulta Resultado
funções sejam escritas
Select * from T
C C C C em Perl, Tcl, ou C, entre

1 2 1 2 outras linguagens.

1 a 1 a

2 b 2 b

Select C1 from T
C C C
1 2 1

1 a 1

2 b 2

Select * from T where C1=1


C C C C
1 2 1 2

1 a 1 a

2 b

Subconjuntos do SQL
A linguagem SQL é dividida em subconjuntos de acordo com as operações que queremos
efetuar sobre um banco de dados, tais como:

DML - Linguagem de Manipulação de Dados


O primeiro grupo é a DML (Data Manipulation Language - Linguagem de manipulação de
dados). DML é um subconjunto da linguagem SQL que é utilizado para realizar inclusões,
consultas, alterações e exclusões de dados presentes em registros. Estas tarefas podem ser
executadas em vários registros de diversas tabelas ao mesmo tempo. Os comandos que
realizam respectivamente as funções acima referidas são Insert, Select, Update e Delete.

comandos
função descrição do commando Exemplo
SQL

é usada para inserir um registro


INSERT INTO Pessoa (id,
inclusões INSERT (formalmente uma tupla) a uma
nome, sexo) VALUE;
tabela existente.

para mudar os valores de dados UPDATE Pessoa SET


alteraçõe
UPDATE em uma ou mais linhas da tabela data_nascimento = '11/09/1985'
s
existente. WHERE id_pessoa = 7
permite remover linhas DELETE FROM pessoa WHERE
exclusões DELETE
existentes de uma tabela. id_pessoa = 7

É possível inserir dados na tabela Area usando o INSERT INTO:


INSERT INTO Area (arecod, aredes) VALUES (100, "Informática"), (200, "Turismo"),

(300, "Higiene e Beleza");

DDL - Linguagem de Definição de Dados


O segundo grupo é a DDL (Data Definition Language - Linguagem de Definição de Dados).
Uma DDL permite ao utilizador definir tabelas novas e elementos associados. A maioria dos
bancos de dados de SQL comerciais tem extensões proprietárias no DDL.

Os comandos básicos da DDL são poucos:

 CREATE: cria um objeto (uma Tabela, por exemplo) dentro da base de dados.


 DROP: apaga um objeto do banco de dados.

Alguns sistemas de banco de dados usam o comando ALTER, que permite ao usuário alterar
um objeto, por exemplo, adicionando uma coluna a uma tabela existente.

Outros comandos DDL:
 CREATE TABLE
 CREATE INDEX
 CREATE VIEW
 ALTER TABLE
 ALTER INDEX
 DROP INDEX
 DROP VIEW

DCL - Linguagem de Controle de Dados


O terceiro grupo é o DCL (Data Control Language - Linguagem de Controle de Dados). DCL
controla os aspectos de autorização de dados e licenças de usuários para controlar quem tem
acesso para ver ou manipular dados dentro do banco de dados.

Duas palavras-chaves da DCL:

 GRANT - autoriza ao usuário executar ou setar operações.

 REVOKE - remove ou restringe a capacidade de um usuário de executar operações.

DTL - Linguagem de Transação de Dados

 BEGIN WORK (ou START TRANSACTION, dependendo do dialeto SQL) pode


ser usado para marcar o começo de uma transação de banco de dados que pode ser
completada ou não.

 COMMIT finaliza uma transação dentro de um sistema de gerenciamento de banco de


dados.

 ROLLBACK faz com que as mudanças nos dados existentes desde o último


COMMIT ou ROLLBACK sejam descartadas.
COMMIT e ROLLBACK interagem com áreas de controle como transação e locação. Ambos
terminam qualquer transação aberta e liberam qualquer cadeado ligado a dados. Na ausência
de um BEGIN WORK ou uma declaração semelhante, a semântica de SQL é dependente da
implementação.
DQL - Linguagem de Consulta de Dados

Embora tenha apenas um comando, a DQL é a parte da SQL mais utilizada. O comando
SELECT permite ao usuário especificar uma consulta ("query") como uma descrição do
resultado desejado. Esse comando é composto de várias cláusulas e opções, possibilitando
elaborar consultas das mais simples às mais elaboradas.

Comandos
Função Descrição do commando Exemplo
SQL

O Select é o principal comando usado em SQL


Select * From
consultas SELECT para realizar consultas a dados pertencentes a uma
Pessoa;
tabela.

Palavras-chave em SQL

Cláusulas

As cláusulas são condições de modificação utilizadas para definir os dados que deseja
selecionar ou modificar em uma consulta.

 FROM – Utilizada para especificar a tabela que se vai selecionar os registros.


 WHERE – Utilizada para especificar as condições que devem reunir os registros que
serão selecionados.
 GROUP BY – Utilizada para separar os registros selecionados em grupos específicos.
 HAVING – Utilizada para expressar a condição que deve satisfazer cada grupo.
 ORDER BY – Utilizada para ordenar os registros selecionados com uma ordem
especifica.
 DISTINCT – Utilizada para selecionar dados sem repetição.
 UNION - combina os resultados de duas consultas SQL em uma única tabela para
todas as linhas correspondentes.

Operadores Lógicos
 AND – E lógico. Avalia as condições e devolve um valor verdadeiro caso ambos
sejam corretos.
 OR – OU lógico. Avalia as condições e devolve um valor verdadeiro se algum for
correto.
 NOT – Negação lógica. Devolve o valor contrário da expressão.

Operadores relacionais

O SQL possui operadores relacionais, que são usados para realizar comparações entre
valores, em estruturas de controle.

Operado
Descrição
r

< Menor

> Maior

<= Menor ou igual

>= Maior ou igual

= Igual

<> Diferente

 BETWEEN – Utilizado para especificar valores dentro de um intervalo fechado.


 LIKE – Utilizado na comparação de um modelo e para especificar registros de um
banco de dados. "Like" + extensão % significa buscar todos resultados com o mesmo início
da extensão.
 IN - Utilizado para verificar se o valor procurado está dentro de um« »a lista. Ex.:
valor IN (1,2,3,4).

Funções de Agregação

As funções de agregação, como os exemplos abaixo, são usadas dentro de uma cláusula
SELECT em grupos de registros para devolver um único valor que se aplica a um grupo de
registros.
 AVG – Utilizada para calcular a média dos valores de um campo determinado.
 COUNT – Utilizada para devolver o número de registros da seleção.
 SUM – Utilizada para devolver a soma de todos os valores de um campo
determinado.
 MAX – Utilizada para devolver o valor mais alto de um campo especificado.
 MIN – Utilizada para devolver o valor mais baixo de um campo especificado.

Por exemplo, uma instrução SQL simples que recupera uma lista de sobrenomes de contatos
cujo nome é Mary pode se parecer com isto:

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

Observação: SQL não é usado somente para manipulação de dados, mas também para criar e
alterar o design de objetos de banco de dados, como tabelas. A parte do SQL que é usado
para criar e alterar objetos de banco de dados é chamada linguagem de definição de dados
(DDL). Este tópico aborda DDL. Para obter mais informações, consulte o artigo criar ou
modificar tabelas ou índices utilizando uma consulta de definição de dados.

Instruções SELECT

Para descrever um conjunto de dados usando o SQL, você escrever uma instrução SELECT.
Uma instrução SELECT contém uma descrição completa de um conjunto de dados que você
deseja obter de banco de dados. Isso inclui o seguinte:

 Quais tabelas contêm os dados.

 Como os dados de diferentes fontes estão relacionados.

 Quais campos ou cálculos produzirá os dados.

 Critérios que dados devem corresponder a serem incluídos.

 Se e como classificar os resultados.


Cláusulas SQL

Como uma frase, uma instrução SQL possui cláusulas. Cada cláusula executa uma função da
instrução SQL. Algumas cláusulas são necessários em uma instrução SELECT. A tabela a
seguir lista as cláusulas SQL mais comuns.

Cláusula O que ela faz Necessário


SQL
SELECT Lista os campos que contêm dados de interesse. Sim
FROM Lista as tabelas que contêm os campos listados na cláusula SELECT. Sim
WHERE Especifica critérios de campo que devem ser atendidos por cada Nº
registro incluído nos resultados.
ORDER Especifica como classificar os resultados. Nº
BY
GROUP Em uma instrução SQL que contém funções de agregação, lista os Somente se houver
BY campos que não são resumidos na cláusula SELECT. esses campos
HAVING Em uma instrução SQL que contém funções de agregação, especifica Nº
as condições que se aplicam aos campos resumidos na instrução
SELECT.

Termos SQL

Cada cláusula SQL é composta dos termos — comparável à partes do discurso. A tabela a
seguir lista os tipos de termos SQL.

Termo Comparável Explicação Exemplo


SQL parte da fala
identificador substantivo Um nome que você usa para identificar um Clientes. [Telefone]
objeto de banco de dados, como o nome de
um campo.
Operador verbo ou Uma palavra-chave que representa uma AS
advérbio ação ou modifica uma ação.
Termo Comparável Explicação Exemplo
SQL parte da fala
Constant substantivo Um valor que não muda, como um número 42
ou NULO.
Expressão adjetivo Uma combinação de identificadores, >= Produtos.[Preço
operadores, constantes e funções que são Unitário]
avaliados como um único valor.

Básicas cláusulas SQL: SELECT, FROM e onde

Uma instrução SQL assume a forma geral:

SELECT field_1
FROM table_1
WHERE criterion_1
;

Observações:

 O Access ignora quebras de linha em uma instrução SQL. No entanto, considere o uso
de uma linha para cada cláusula para ajudar a melhorar a legibilidade das suas instruções
SQL para você e outras pessoas.

 Cada instrução SELECT termina com um ponto e vírgula (;). A ponto e vírgula pode
aparecer no final da última cláusula ou em uma linha por si só no final da instrução SQL.

Um exemplo no Access

A seguir ilustra como uma instrução SQL para uma consulta seleção simples pode parecer no
Access:
1. cláusula SELECT

2. cláusula FROM

3. cláusula WHERE

Este exemplo instrução SQL lê "Selecionar os dados que estão armazenados nos campos
denominados email e empresa da tabela denominada contatos, especificamente esses registros
no qual o valor do campo Cidade for Seattle".

Vamos examinar o exemplo, uma cláusula por vez, para ver como funciona a sintaxe SQL.

Cláusula SELECT

SELECT [E-mail Address], Company

Esta é a cláusula SELECT. Ele consiste em um operador (selecione) seguido por dois
identificadores ([email] e empresa).

Se um identificador contiver espaços ou caracteres especiais (como "endereço de email"), ele


deve estar entre colchetes.

Uma cláusula SELECT não têm a dizer quais tabelas contêm os campos e ele não pode
especificar qualquer condições que devem ser atendidas pelos dados a serem incluídos.

Cláusula SELECT sempre aparece na frente de cláusula FROM em uma instrução SELECT.
A cláusula FROM

FROM Contacts Esta é a cláusula FROM. Ele consiste em um operador (FROM) seguido
por um identificador (contatos).

Uma cláusula FROM não lista os campos a serem selecionados.

A cláusula WHERE

WHERE City="Seattle"

Esta é a cláusula WHERE. Ele consiste em um operador (onde) seguido por uma expressão
(cidade = "Seattle").

Observação: Ao contrário de selecionar e cláusulas FROM, a cláusula WHERE é não um


elemento obrigatório de uma instrução SELECT.

Você pode realizar muitas das ações que SQL permite que você faça usando SELECT,
FROM e cláusulas WHERE. Obter mais informações sobre como usar essas cláusulas são
apresentadas nestes artigos adicionais:

 Access SQL: Cláusula SELECT

 Access SQL: cláusula FROM

 Access SQL: Cláusula WHERE

Classificar os resultados:

ORDER BY

Como o Microsoft Excel, o Access permite que você classifique os resultados de consulta em
uma folha de dados. Você também pode especificar na consulta como você deseja classificar
os resultados quando a consulta é executada, usando uma cláusula ORDER BY. Se você usar
uma cláusula ORDER BY, ela é a última cláusula na instrução SQL.
Uma cláusula ORDER BY contém uma lista dos campos que você deseja usar para a
classificação, na mesma ordem em que você deseja aplicar as operações de classificação.

Por exemplo, suponha que você deseja que os resultados classificados primeiro por valor do
campo da empresa em ordem decrescente, e — se há registros com o mesmo valor para a
empresa — classificados Avançar pelos valores no campo endereço de email em ordem
crescente. Sua cláusula ORDER BY seria semelhante ao seguinte:

ORDER BY Company DESC, [E-mail Address]

Observação: Por padrão, o Access classifica valores em ordem crescente (A-Z, menor para o
maior). Use a palavra-chave DESC para classificar valores em ordem decrescente em vez
disso.

Para obter mais informações sobre a cláusula ORDER BY, consulte o tópico Pela cláusula
ORDER.

Trabalhando com dados resumidos: Agrupar por e HAVING

Às vezes você quer trabalhar com dados resumidos, como o total de vendas em um mês ou os
itens mais caros em um inventário. Para fazer isso, você aplicar um função de agregação a um
campo na cláusula SELECT. Por exemplo, se quiser que sua consulta para mostrar a
contagem de endereços de email listados para cada empresa, cláusula SELECT pode lembrar
o seguinte:

SELECT COUNT([E-mail Address]), Company

As funções agregadas que você pode usar dependem do tipo de dados no campo ou expressão
que você deseja usar. Para obter mais informações sobre as funções de agregação disponíveis,
consulte o artigo Funções de agregação SQL.

Especificando campos que não são usados em uma função de agregação: cláusula o GROUP
BY

Quando você usa funções de agregação, você geralmente também deve criar uma cláusula
GROUP BY. Uma cláusula GROUP BY lista todos os campos aos quais você não aplicar
uma função de agregação. Se você aplicar funções de agregação para todos os campos em
uma consulta, você não precisa criar cláusula GROUP BY.

Uma cláusula GROUP BY segue imediatamente a cláusula WHERE, ou a cláusula FROM se


não houver nenhuma cláusula WHERE. Uma cláusula GROUP BY lista os campos que
aparecem na cláusula SELECT.

Por exemplo, continuar no exemplo anterior, se sua cláusula SELECT se aplica a uma função
de agregação para [email], mas não a empresa, sua cláusula GROUP BY seria semelhante ao
seguinte:

GROUP BY Company

Para obter mais informações sobre a cláusula GROUP BY, consulte o tópico Pela cláusula
GROUP.

Limitando valores agregados usando critérios de grupo: a cláusula HAVING

Se você quiser usar critérios para limitar os resultados, mas o campo que você deseja aplicar
critérios é usada em uma função de agregação, você não pode usar uma cláusula WHERE.
Em vez disso, você pode usar uma cláusula HAVING. Uma cláusula HAVING funciona
como uma cláusula WHERE, mas é usada para dados agregados.

Por exemplo, suponha que você use a função média (que calcula um valor médio) com o
primeiro campo na cláusula SELECT:

SELECT COUNT([E-mail Address]), Company

Se desejar que a consulta para restringir os resultados com base no valor da função Contar,
você não pode usar critérios para esse campo na cláusula WHERE. Em vez disso, você
colocar os critérios em uma cláusula HAVING. Por exemplo, se desejar somente a consulta
retorne linhas se houver mais de endereços de um email associados a empresa, a cláusula
HAVING pode lembrar o seguinte:

HAVING COUNT([E-mail Address])>1


Observação: Uma consulta pode ter uma cláusula WHERE e uma cláusula HAVING — vá
de critérios para campos que não são usados em uma função de agregação na cláusula
WHERE e critérios para campos que são usados com funções de agregação ir na cláusula
HAVING.

Para obter mais informações sobre a cláusula HAVING, consulte o tópico Tendo cláusula.

Combinando resultados da consulta: união

Quando desejar analisar todos os dados que são retornados por várias consultas seleção
semelhantes juntos, como um conjunto combinado, você usa o operador de união.

O operador de união permite combinar duas instruções SELECT em uma. As instruções


SELECT que você combinar devem ter o mesmo número de campos de saída, na mesma
ordem e com os tipos de dados iguais ou compatíveis. Quando você executa a consulta, os
dados de cada conjunto de campos correspondentes são combinados em um campo de saída,
para que a saída da consulta tem o mesmo número de campos à medida que cada uma das
instruções select.

Observação: Em uma consulta união, os tipos de dados Número e Texto são compatíveis.

Quando você usa o operador de união, você também pode especificar se os resultados da
consulta devem incluir linhas duplicadas, se houver, usando a palavra-chave tudo.

A sintaxe SQL básica para uma consulta união que combina duas instruções SELECT é da
seguinte maneira:

SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a FROM table_a
;

Por exemplo, suponha que você tenha uma tabela chamada produtos e outra tabela
denominada serviços. Ambas as tabelas têm campos que contêm o nome da garantia do
produto ou serviço, o preço, ou garantem a disponibilidade, e se você oferece o produto ou
serviço exclusivamente. Embora a tabela de produtos armazena informações de garantia e os
armazenamentos de tabela de serviços garantem informações, as informações básicas são o
mesmo (se um determinado produto ou serviço inclui uma promessa de qualidade). Você
pode usar uma consulta união, como as seguintes, para combinar os quatro campos das duas
tabelas:

SELECT name, price, warranty_available, exclusive_offer


FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services

a) SHOW TABLE

CREATE TABLE processo (

->idProcesso INT (5) AUTO_INCREMENT PRIMARY KEY,

->IdPaciente VARCHAL (20) ,

->idMedico VARCHAL (20) ,

->DataDeatendimeento DATE,

->ENGINE=MYISAM;

idProcesso Medico Paciente dataDeatendimento


1
2

b) πNome(paciente)
Paciente
Mario
Alfredo
Minate
Rogerio
c) πNome(σPatologia=Malaria(Paciente))
Paciente
Nome Patologia
Mario Malaria
Rogerio Malaria

d) πNome(σEspecialidade=Generalista(Processo Medico))
Processo médico
Nome Especialidade
Generalista

Você também pode gostar