Você está na página 1de 60

SISTEMAS DE INFORMAO

Curso Profissional Tcnico de Multimdia

Sistemas de Informao
Mdulo 6 Programao SQL

Breve evoluo histrica do SQL

- SQL - Structured Query Language, ou Linguagem de Consulta Estruturada, uma linguagem de pesquisa declarativa para base de dados relacional. Muitas das caractersticas originais do SQL foram inspiradas na lgebra relacional .

Sistemas de Informao
Mdulo 6 Programao SQL

Breve evoluo histrica do SQL


- Para aceder a uma base de dados relacional, necessrio uma linguagem de programao; - O SQL a linguagem de programao usada pela maioria das bases de dados; - A Structured Query Language (SQL), ou Linguagem Estruturada de Consulta, foi criada pela IBM no incio dos anos 70;

Sistemas de Informao
Mdulo 6 Programao SQL

Breve evoluo histrica do SQL


- A Linguagem SQL, tornou-se um padro mundial em meados da dcada de 80; - Esse padro regido actualmente pela norma ISO/IEC 9075 de 1999 e suas actualizaes. - O SQL foi revisto em 1992 e a esta verso foi dado o nome de SQL-92. Foi revisto novamente em 1999 e 2003 para se tornar SQL:1999 (SQL3) e SQL:2003, respectivamente

Sistemas de Informao
Mdulo 6 Programao SQL

Caractersticas do SQL
- uma linguagem de comandos que permite Definir, Manipular e Administrar bases de dados Relacionais; - uma linguagem baseada no ingls, e usa palavras como: SELECT, INSERT, DELETE como parte do seu conjunto de comandos; - uma linguagem onde se especifica qual a informao que queremos e no como traz-la;

Sistemas de Informao
Mdulo 6 Programao SQL

Caractersticas do SQL
- O SQL oferece uma srie de comandos para uma variedade de tarefas diferentes, incluindo: - seleco de dados; - insero, alterao, e eliminao de linhas em uma tabela; - criar, eliminar e alterar objectos de bases de dados; - controlar o acesso aos dados e aos objectos de bases de dados; - garantir a consistncia da base de dados; - etc.
6

Sistemas de Informao
Mdulo 6 Programao SQL

Componentes do SQL
- A Linguagem SQL mais que uma linguagem de interrogao estruturada. Inclui caractersticas para a definio da estrutura de dados, para alterar os dados de uma base de dados, e para especificar esquemas de segurana. A linguagem SQL possui trs componentes principais: - DDL Data Definition Language; - DML Data Manipulation Language; - DCL Data Control Language.

Sistemas de Informao
Mdulo 6 Programao SQL

Componentes do SQL
- Componentes principias do SQL: - DDL Data Definition Language (Linguagem de definio de dados) descreve a estrutura do BD.

Sistemas de Informao
Mdulo 6 Programao SQL

Componentes do SQL
- Componentes principias do SQL: - DML - Data Manipulation Language (Linguagem de manipulao de dados) permite recuperar e alterar os dados do BD. Pode ser embutida em outra linguagem de programao.

Sistemas de Informao
Mdulo 6 Programao SQL

Componentes do SQL
- Componentes principias do SQL: - DCL Data Control Language (Linguagem de controlo de dados)

SQL = DML + DDL + DCL


10

Sistemas de Informao
Mdulo 6 Programao SQL

Componentes do SQL
- Numa base de dados relacional, toda a informao est logicamente organizada em tabelas. - Podemos considerar a existncia de dois tipos de tabelas numa base de dados: as tabelas base que efectivamente esto armazenadas num suporte fsico da base de dados; as tabelas virtuais que s existem em resultado da execuo de um conjunto de comandos de consulta, executados sobre as tabelas base.

11

Sistemas de Informao
Mdulo 6 Programao SQL

Componentes do SQL
- A palavra inglesa Querie (query) designa uma consulta base de dados e consiste na execuo de uma ou mais operaes sobre tabelas. - As Queries ou consultas podem ser executadas sobre as tabelas base ou sobre as tabelas virtuais que resultam de outras consultas.

12

Sistemas de Informao
Mdulo 6 Programao SQL

Componentes do SQL
- Do ponto de vista lgico, o resultado de uma consulta (querie) uma tabela. - A diferena entre uma tabela base e uma tabela virtual basicamente a seguinte: . as tabelas base existem fisicamente como estruturas de dados; . as tabelas virtuais (resultados de queries) existem apenas como um conjunto de comandos que permitem extrair informao da base de dados.

13

Sistemas de Informao
Mdulo 6 Programao SQL

Comandos do SQL
- A Linguagem de Definio de Dados (DDL), contm comandos que permitem por exemplo: - Criar uma base de dados (CREATE DATABASE); - Criar uma nova tabela (CREATE TABLE); - Alterar uma tabela (ALTER TABLE); - Eliminar uma tabela (DROP TABLE); - Eliminar uma base de dados (DROP DATABASE).

14

Sistemas de Informao
Mdulo 6 Programao SQL

Comandos do SQL
- Exemplos: Linguagem de Definio de Dados (DDL)

CREATE table "CATEGORIAS_PRODUTOS" ( "CAT_CODIGO" NUMBER NOT NULL Primary Key, "CAT_DESCRICAO" VARCHAR2(100) NOT NULL, );
15

Sistemas de Informao
Mdulo 6 Programao SQL

Comandos do SQL
- A Linguagem de Manipulao de Dados (DML), contm comandos que permitem efectuar os seguintes tipos de operaes: - Inserir novos registos numa tabela (INSERT INTO); - Apagar registos numa tabela (DELETE FROM); - Alterar dados numa tabela (UPDATE); - Consultar uma Base de Dados (SELECT).

16

Sistemas de Informao
Mdulo 6 Programao SQL

Comandos do SQL
- Exemplos: Linguagem de Manipulao de Dados (DML)

SELECT CLI_NOME, CLI_ENDERECO FROM CLIENTES;

17

Sistemas de Informao
Mdulo 6 Programao SQL

Comandos do SQL
- Os comandos podem ser escritos em mais de uma linha; - Clusulas diferentes so colocadas usualmente em linhas diferentes;

- Podem ser usadas tabulaes;


- Comandos podem ser escritos em letras maisculas e/ou minsculas; - Finaliza-se a query com o sinal de ponto e vrgula (;)

18

Sistemas de Informao
Mdulo 6 Programao SQL

Noes elementares do SQL


- Ao programar em SQL, utilizam-se os seguintes operadores aritmticos:
Soma + Subtraco Multiplicao * Diviso /

- Os operadores lgicos so:


AND OR NOT

19

Sistemas de Informao
Mdulo 6 Programao SQL

Noes elementares do SQL


- Predicados Um predicado uma condio que pode ser realizada para produzir um valor verdadeiro, falso ou desconhecido. So eles: Comparao (=, <, >, <>, <=, =>) Entre (... BETWEEN ... AND ..., IN, NOT IN) LIKE NULL Quantificadores (ALL, SOME, ANY) EXISTS, NOT EXISTS
20

Sistemas de Informao
Mdulo 6 Programao SQL

Noes elementares do SQL


- As clusulas so expresses realizadas em tabelas que se usam para derivar tabelas, tais como: FROM WHERE GROUP BY HAVING ORDER BY

21

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- A Linguagem de Manipulao de Dados (DML) utilizada para efectuar operaes de seleco, ordenao, clculo de informao guardada em tabelas, entre outras. - O comando SELECT - Permite extrair informao de uma Base de Dados (DB Data Base). - Sintaxe: SELECT <lista_campos> FROM <lista_tabelas>
22

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplos: Consulta todos os autores da tabela Autores: SELECT Autor FROM Autores Consulta todos os campos da tabela Autores: SELECT * FROM Autores Consulta todos os autores visualizando o dobro da sua idade: SELECT Autor, Idade * 2 AS [Idades] FROM Autores
23

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- A clusula WHERE, permite estabelecer condies entre campos da tabela(s) ou at mesmo envolvendo inputs digitados pelo utilizador. - Sintaxe: SELECT <lista_campos> FROM <lista_tabelas> [ WHERE <critrios_de_seleco> ] - as listas so separadas por vrgulas - se desejarmos seleccionar todos os campos usamos *
24

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplos: Uma consulta tabela no sentido de obter apenas os elementos relativos s editoras situadas na cidade de Lisboa: SELECT Pubid, Nome AS [Nome Editora], Morada, Cod_Postal, Cidade, Telefone FROM Editoras WHERE Cidade=Lisboa
25

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplos: Consulta o nome e morada de todas as editoras da cidade de Lisboa: SELECT Nome, Morada FROM Editoras WHERE Cidade=Lisboa

26

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplos: Consulta o Nome, Regio e Cidade quando a regio toma o valor CA e a cidade Lisboa: SELECT Nome, Regio, Cidade FROM Editoras WHERE Regio=CA AND Cidade=Lisboa

27

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- A clusula WHERE - LIKE, destina-se a comparar strings com padro. - Exemplo: Consulta os nomes de todos os autores que tenham Lopes no nome: SELECT Autor FROM Autores WHERE Autor LIKE *Lopes*
28

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplo: Consulta o(s) cdigo(s) e descrio(es) do(s) produto(s) quando na descrio est envolvida a palavra sumos: SELECT Prod_Cod, Prod_Descrio FROM Produtos WHERE Prod_Descrio LIKE *sumos*

29

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- A clusula WHERE - BETWEEN AND, destina-se a especificar um intervalo de valores. - Exemplo: Consulta todos os nomes e cidades onde o campo Pubid toma valores entre 10 e 20: SELECT Nome, Cidade FROM Editoras WHERE Pubid BETWEEN 10 AND 20
30

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- A clusula WHERE - IN, destina-se a especificar conjuntos de valores. - Exemplo: Consulta todos os nomes e cidades onde o campo regio toma valores no conjunto (NY,CA, AK): SELECT Nome, Cidade FROM Editoras WHERE Regio IN (NY, CA, AK)
31

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- A clusula WHERE na ligao de duas ou mais tabelas. - Sintaxe: SELECT <tabela1.colunaA>, <tabela2.colunaA> FROM <tabela1>, <tabela2> WHERE <tabela1.colunaA> = <tabela2.colunaA>

32

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplo: Consulta todas as linhas da tabela Ttulos e da tabela Autores com o mesmo campo Au_ID. Se existir algum ttulo para o qual no foi introduzido cdigo de um Autor, o mesmo no aparecer (se o cdigo do autor no for chave primria). SELECT Titulos.Titulo, Autores.Autor FROM Titulos, Autores WHERE Titulos.Au_ID = Autores.Au_ID Esta operao designa-se por INNER JOIN.
33

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- A clusula AS, permite alterar o cabealho (titulo) que ir aparecer na listagem obtida. - Exemplo: SELECT Titulos.Titulo AS [Titulo do Livro], Autores.Autor AS [Autor do Livro] FROM Titulos.Autores WHERE Titulos.Au_ID = Autores.Au_ID

34

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Funes agregadas clusula AS: COUNT(<nome_campo>) - Devolve o nmero de linhas em que o campo <nome_campo> no nulo. MAX(<nome_campo>) - Devolve o maior valor para o campo <nome_campo>.

MIN(<nome_campo>) - Devolve o menor valor para o campo <nome_campo>.


35

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Funes agregadas clusula AS:
SUM(<nome_campo>) - Devolve a soma dos contedos do campo <nome_campo>. AVG(<nome_campo>) - Devolve a mdia dos contedos do campo <nome_campo>. FIRST(<nome_campo>) - Devolve o valor do primeiro registo da tabela ou Querie.

LAST(<nome_campo>) - Devolve o valor do ltimo registo da tabela ou Querie.


36

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplos de funes agregadas clusula AS:
Devolve o nmero de elementos da tabela Produtos: SELECT COUNT(Prod_Codigo) AS [Total] FROM Produtos Se no for mencionado o Nome da coluna [Total], por defeito Expr1000. Como tal, conveniente atribuir um ttulo coluna.

37

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplos de funes agregadas clusula AS:
Devolve o menor, o maior e o preo mdio dos livros: SELECT COUNT(Unidades) AS [N Elementos], MIN(Preo_Unidades) AS Min, MAX(Preo_Unidades) AS Max, AVG(Preo_Unidades) AS Mdia FROM Preos_Livros

38

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplos de funes agregadas clusula AS:
Consulta os livros com menor preo SELECT titulo, anopublicao, preo FROM titulos, preos WHERE titulos.codpreco = precos.codpreco AND Preco = (SELECT Min(preco) FROM precos)

39

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- A clusula INNER JOIN, estabelece ligao entre duas ou mais tabelas atravs de campos chave. - Exemplo: SELECT titulos.titulo, autores.autor FROM titulos, autores.titulos INNER JOIN autores ON titulos.au_ID = autores.au_ID

40

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- A clusula INNER JOIN, estabelece ligao entre duas ou mais tabelas atravs de campos chave. - Exemplo: Poderamos escrever o mesmo comando com uma clusula WHERE (talvez mais prtico). SELECT titulos.titulo, titulos.ISBN, autores.autor, editoras.nome FROM titulos, autores, editoras WHERE editoras.editID = titulos.editID AND titulos.au_ID = autores.au_ID
41

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- A clusula LEFT JOIN, inclui todos os registos da primeira tabela ( esquerda), mesmo que no exista nenhuma relao com a segunda tabela ( direita).

- Exemplo: Listar todos os ttulos, mesmo os que no tenham editoras:


SELECT titulos.titulo, editoras.nome FROM titulos, editoras titulos LEFT JOIN editoras ON titulos.editID = editoras.auID
42

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- A clusula RIGHT JOIN, inclui todos os registos da segunda tabela ( direita), mesmo que no exista nenhuma relao com a primeira tabela ( esquerda). - Exemplo: Listar todas as editoras, mesmo que no tenham nenhum titulo publicado: SELECT titulos.titulo, editoras.nome FROM titulos, editoras titulos RIGHT JOIN editoras ON titulos.editID = editoras.auID
43

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- A clusula ORDER BY, permite ordenar a listagem pelo campo referido, por ordem crescente. - Exemplo: ordena a listagem pelo campo autor, por ordem crescente: SELECT au_ID, autor FROM autores ORDER BY autor
44

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplo: Consulta as regies e cidades por ordem descendente e ascendente respectivamente: SELECT regiao, cidade FROM editoras ORDER BY regiao DESC, cidade ASC

45

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- As clusulas TOP n e TOP n PERCENT - Estas clusulas servem para limitar o nmero de registos num conjunto de resultados. - TOP n Devolve os primeiros n registos. Quando utilizamos a clusula TOP por vezes recorre-se ao uso da clusula ORDER BY. SELECT TOP 5 * FROM precos_livros ORDER BY unidades DESC
46

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- As clusulas TOP n e TOP n PERCENT - Estas clusulas servem para limitar o nmero de registos num conjunto de resultados. - TOP n PERCENT Devolve os primeiros n por centos de registos. SELECT TOP 5 PERCENT * FROM preco_livros ORDER BY unidades DESC
47

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- A clusula GROUP BY - Agrupa os resultados das queries segundo um determinando critrio. - Sintaxe: GROUP BY <coluna1>, <coluna2>, ..., <colunaN>

48

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplo: Consulta o nmero de elementos da tabela Produtos para cada categoria de Produto:

SELECT prod_categoria AS Categoria, COUNT(prod_categoria) AS [N Elementos] FROM Produtos GROUP BY prod_categoria


A clusula GROUP BY especifica o modo como queremos agrupar o resultado da funo agregada.
49

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplo: Consulta o menor preo, maior preo e preo mdio dos produtos por categoria: SELECT prod_categoria AS Categoria, COUNT(prod_categoria) AS [N Elementos], MIN(prod_preco) AS Min, MAX(prod_preco) AS Max, AVG(prod_preco) AS Mdia FROM Produtos GROUP BY prod_categoria
50

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplo: Consulta o nome dos autores e o nmero de ttulos publicados pelos mesmos:

SELECT autores.autor, COUNT(titulos.titulo) FROM titulos, autores WHERE titulos.au_ID = autores.au_ID GROUP BY autores.autor

51

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- A clusula HAVING Utiliza-se para aplicar um filtro ao resultado de um querie ao contrrio daclusula WHERE que aplica um filtro a toda(s) a(s) tabela(s) envolvida(s).

52

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplo:Vejamos a mesma querie com a aplicao de um filtro, para limitar as categorias de produtos a bolachas e aperitivos. SELECT prod_categoria AS Categoria, COUNT(prod_categoria) AS [N Elementos], MIN(prod_preco) AS Min, MAX(prod_preco) AS Max, AVG(prod_preco) AS Mdia FROM Produtos GROUP BY prod_categoria HAVING prod_categoria IN [Bolachas,Aperitivos]
53

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplo: Consulta os autores que escrevam mais de um titulo SELECT autores.autor, COUNT(titulos.titulo) FROM titulos, autores WHERE titulos.au_ID = autores.au_ID GROUP BY autores.autor HAVING COUNT(titulos.titulo)>1

54

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- O predicado ALL Se no incluir um dos predicados referidos, ALL assumido e todos os registos que verificam as condies so devolvidos.

- Exemplo:
SELECT ALL FROM titulos, autores WHERE editoras.editID = titulos.editID

55

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- O predicado ALL Se no incluir um dos predicados referidos, ALL assumido e todos os registos que verificam as condies so devolvidos.

- Exemplo equivalente ao anterior:


SELECT * FROM titulos, autores WHERE editoras.editID = titulos.editID

56

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- O predicado DISTINCT - Esta clusula omite todos os registos que contm dados duplicados nos campos seleccionados. Por outras palavras, se a querie contiver um campo com o mesmo valor em mais do que uma linha, a clusula DISTINCT elimina todos os duplicados. - Exemplo: Lista as editoras que tm pelo menos um titulo publicado: SELECT editoras.nome FROM titulos, editoras WHERE editoras.editID = titulos.edit.ID
57

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplo: Este querie devolve tantas linhas quantos os ttulos que existem na tabela de ttulos. Para eliminar a repetio do nome das editoras, usa-se: SELECT DISTINCT editoras.nome FROM titulos, editoras WHERE editoras.editID = titulos.edit.ID

58

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- O predicado DISTINCTROW - Omite dados baseados em registos duplicados, mas no referentes a campos duplicados. - Exemplo: SELECT DISTINCTROW titulos.titulo, titulos.anoedicao, autores.autor, editoras.nome AS Editora FROM editoras, titulos.(editoras RIGHT JOIN titulos ON editoras.editID = titulos.editID) LEFT JOIN autores ON titulos.au_ID = autores.au_ID WHERE (editoras.nome = [Insira Nome]) ORDER BY titulos.titulo

59

Sistemas de Informao
Mdulo 6 Programao SQL

Linguagem de Manipulao de Dados (DML)


- Exemplo: WHERE (editoras.nome = [Insira Nome]) ORDER BY titulos.titulo

Observa que no exemplo anterior existe [Insira Nome]. Isto significa que solicitado ao utilizador que insira um nome para depois efectuar-se a comparao. Deste modo, quando se utiliza uma string entre parntesis rectos que no seja o nome de um campo, o SQL solicita ao utilizador que insira um valor (string ou no) pelo teclado.

60

Você também pode gostar