Programação SQL. INTRODUÇÃO II parte
|
|
|
- Clara Dreer Dinis
- 10 Há anos
- Visualizações:
Transcrição
1 Programação SQL INTRODUÇÃO II parte
2 Programação SQL SELECT; INSERT; UPDATE; DELETE. Este conjunto de comandos faz parte da sublinguagem denominada por DML Data Manipulation Language (Linguagem de manipulação de dados).
3 Programação SQL Comando SELECT (selecções simples)
4 Programação SQL A interrogação de qualquer BD relacional faz-se sempre utilizando o comando SELECT. A sintaxe do comando SELECT é a seguinte:
5 Programação SQL SELECT Campo 1, Campo 2,, Campo n, * FROM Tabela 1,, Tabela k [WHERE Condição] [GROUP BY ] [HAVING ] [ORDER BY ]
6 Programação SQL O esqueleto de uma questão SQL, em relação à interrogação da base de dados, consiste no seguinte : SELECT <colunas> FROM <tabelas> [WHERE <condição>]
7 Programação SQL Em que : <colunas> especifica a lista de atributos cujos valores interessa conhecer; <tabelas> especifica quais as tabelas envolvidas no processamento da questão; <condição> traduz a expressão lógica que define a condição a verificar.
8 Programação SQL SELECT é a instrução de projecção de dados. Serve para seleccionar registos de uma ou mais tabelas. WHERE permite determinar os registos que irão surgir na consulta.
9 Programação SQL Seleccionando todos os registos de uma tabela: SELECT Codigo, Local FROM Postal Access Sql Server Oracle SyBase Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra
10 Programação SQL Seleccionando todos as colunas de uma tabela: SELECT * FROM Postal Access Sql Server Oracle SyBase Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra
11 Programação SQL Seleccionando todos as colunas de uma tabela Se pretendermos, seleccionar todas as colunas de uma tabela, então, para não termos que indicar cada uma das colunas, o nome de todas elas pode ser substituído pelo carácter asterisco *. SELECT * FROM Postal
12 Programação SQL Seleccionando todos as colunas de uma tabela Se por qualquer razão pretendermos as colunas por uma ordem diferente, então seremos obrigados a indicar qual a ordem pela qual as queremos mostrar. SELECT Local, Codigo FROM Postal
13 Programação SQL Seleccionando todos as colunas de uma tabela: SELECT Local, Codigo FROM Postal Access Sql Server Oracle SyBase Local Tabela Postal Codigo Lisboa 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Santarem 2000 Tomar 2300 Coimbra 3000
14 Programação SQL Comando SELECT (selecções simples) PROJECÇÃO
15 Projecção Nos exemplos anteriores, o nosso objectivo consistia em seleccionar toda a informação de uma determinada tabela (todas as linhas e todas as colunas). No entanto, podemos estar interessados em obter algumas das colunas da tabela: PROJECÇÃO:
16 Projecção:
17 Projecção - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro
18 Projecção - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Escrever o comando SQL que permita apresentar apenas as colunas ID, Nome, Telefone.
19 Projecção exemplo [solução] Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro SELECT Id, Nome, Telefone FROM Funcionários Access Sql Server Oracle SyBase
20 Projecção exemplo [resultado] Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Tabela Funcionários Id Nome Telefone 1 Ana Maria Pedro Access Sql Server Oracle SyBase
21 Programação SQL Comando SELECT (selecções simples) RESTRIÇÃO
22 Restrição A operação Restrição permite restringir o número de linhas a apresentar: Apenas é apresentado algumas das linhas que contêm a informação pretendida.
23 Restrição Para podermos restringir o conjunto dos registos a apresentar, iremos utilizar uma outra cláusula do comando SELECT a cláusula WHERE. SELECT FROM WHERE condição
24 Para relembrar: OPERADORES RELACIONAIS Permitem estabelecer relações entre elementos. O resultado da aplicação de um destes operadores é sempre o valor lógico TRUE ou FALSE. Operador Descrição Exemplo Resultado = Igual a 7=5 FALSE > Maior que 7>5 TRUE < Menor que 7<5 FALSE >= Maior ou Igual que 7>=5 TRUE <= Menor ou igual que 7<=5 FALSE <> Ou!= Diferente 7<>5 TRUE
25 Operadores Relacionais - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Seleccionar todos os funcionários da tabela: SELECT * FROM Funcionarios Access Sql Server Oracle SyBase
26 Operadores Relacionais - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Seleccionar todos os funcionários com 35 anos de idade: SELECT * FROM Pessoa WHERE Idade = 35 Access Sql Server Oracle SyBase
27 Operadores Relacionais exemplo [RESULTADO] Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 2 Maria (FALSE)
28 Operadores Relacionais - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Seleccionar todos os funcionários com salário superior ou igual a SELECT * FROM Pessoa WHERE Salário >= Access Sql Server Oracle SyBase
29 Operadores Relacionais exemplo [RESULTADO] Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Tabela Funcionários Id Nome Idade Cod_Postal Telefone 1 Ana Pedro ? (TRUE)
30 Para relembrar: OPERADORES LÓGICOS Funcionam sempre com valores lógicos ou com expressões que devolvam valores lógicos. Operador Exemplo AND Condição1 AND Condição2 OR Condição1 OR Condição2 NOT NOT Condição (o operador NOT é um operador unário) O resultado da utilização de um operador relacional é sempre um valor lógico.
31 Operadores Lógicos - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Seleccionar o Id, Nome, Idade e Salário de todos os funcionários com Idade entre os 37 e os 40 anos. SELECT Id, Nome, Idade, Salário FROM Funcionários WHERE Idade >=37 AND <=40 Access Sql Server Oracle SyBase
32 Operadores Lógicos exemplo [Resultado] Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Tabela Funcionários Id Nome Idade Salário 1 Ana Pedro
33 Operadores Lógicos - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Seleccionar o Id, Nome, Idade e Salário de todos os funcionários cuja Idade não está entre os 37 e os 40 anos. SELECT Id, Nome, Idade, Salário FROM Funcionários WHERE Idade <37 OR >40 Access Sql Server Oracle SyBase
34 Operadores Lógicos exemplo [Resultado] Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Tabela Funcionários Id Nome Idade Salário 2 Maria
35 Operadores Lógicos - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro SELECT Id, Nome, Idade, Salário FROM Funcionários Access Sql Server Oracle SyBase WHERE NOT(Idade >=37AND<=40)
36 Operadores Lógicos exemplo [Resultado] Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Tabela Funcionários Id Nome Idade Salário 2 Maria
37 Outros Operadores A linguagem SQL coloca à disposição dos utilizadores um conjunto adicional de operadores que visam aproximar, ainda mais, o SQL da linguagem falada: BETWEEN IN IS LIKE
38 Programação SQL Comando SELECT (selecções simples) Operador BETWEEN
39 Operador BETWEEN Permite especificar intervalos de valores: SELECT FROM WHERE valor [NOT] BETWEEN valor1 AND valor2
40 Operador BETWEEN - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Seleccionar o Id, Nome, Idade e Salário de todos os funcionários com Idade entre os 37 e os 40 anos. SELECT Id, Nome, Idade, Salário FROM Funcionários WHERE Idade >=37 AND <=40 Access Sql Server Oracle SyBase
41 Operador BETWEEN - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Seleccionar o Id, Nome, Idade e Salário de todos os funcionários com Idade entre os 37 e os 40 anos. SELECT Id, Nome, Idade, Salário FROM Funcionários WHERE Idade BETWEEN 37 AND 40 Access Sql Server Oracle SyBase
42 Operador BETWEEN exemplo [Resultado] Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Tabela Funcionários Id Nome Idade Salário 1 Ana Pedro
43 Operadores Lógicos - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Seleccionar o Id, Nome, Idade e Salário de todos os funcionários cuja Idade não está entre os 37 e os 40 anos. SELECT Id, Nome, Idade, Salário FROM Funcionários WHERE Idade <37 OR >40 Access Sql Server Oracle SyBase
44 Operador BETWEEN - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Seleccionar o Id, Nome, Idade e Salário de todos os funcionários cuja Idade não está entre os 37 e os 40 anos. SELECT Id, Nome, Idade, Salário FROM Funcionários Access Sql Server Oracle SyBase WHERE Idade NOT BETWEEN 37 AND 40
45 Operador BETWEEN exemplo [Resultado] Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Tabela Funcionários Id Nome Idade Salário 2 Maria
46 Operador BETWEEN exemplo [Resultado] Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Tabela Funcionários Id Nome Idade Salário 2 Maria
47 Programação SQL Comando SELECT (selecções simples) Operador IN
48 Operador IN Permite especificar conjuntos de valores: SELECT FROM WHERE valor [NOT] IN (valor1, valor2, valorn, )
49 Operador IN - exemplo Seleccionar o Código Postal completo de Lisboa e Tomar SELECT * FROM Postal WHERE Local IN ( Lisboa, Tomar ) Access Sql Server Oracle SyBase Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra
50 Operador IN exemplo [Resultado] Seleccionar o Código Postal completo de Lisboa e Tomar SELECT * FROM Postal WHERE Local IN ( Lisboa, Tomar ) Access Sql Server Oracle SyBase Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2300 Tomar
51 Operador IN exemplo [Resultado] Seleccionar os Códigos Postais que não pertencem a Lisboa nem a Tomar. SELECT * FROM Postal WHERE Local NOT IN ( Lisboa, Tomar ) Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem Access Sql Server Oracle SyBase Tabela Postal 2300 Tomar 3000 Coimbra
52 Operador IN - exemplo Seleccionar os Códigos Postais completos que não pertencem a Lisboa nem a Tomar. SELECT * FROM Postal WHERE Local NOT IN Codigo Local 2000 Santarem 3000 Coimbra Tabela Postal ( Lisboa, Tomar ) Access Sql Server Oracle SyBase
53 Programação SQL Comando SELECT (selecções simples) Operador IS
54 Para relembrar: Tratamento de Nulos Como já foi referido, as BD relacionais contêm um valor especial NULL que pode ser atribuído a qualquer tipo de dados. O valor NULL, quando presente num campo, indica Ausência de Valor. Porque razão é que necessitamos de um NULL num campo??
55 Para relembrar: Tratamento de Nulos Suponhamos uma BD de um professor, onde este atribui as notas aos alunos ao longo do ano. Como a nota do aluno é um inteiro, porque razão não colocamos 0 (zero) quando não sabemos a nota do aluno?
56 Para relembrar: Tratamento de Nulos Quando o aluno começa as aulas, ele não tem qualquer nota associada. Se colocarmos 0 (zero) na sua classificação, isto indica que ele obteve 0 (zero) como classificação daquela disciplina. Não se conseguiria diferenciar um aluno que não fez exame de outro que o fez e que obteve classificação 0 (zero).
57 Para relembrar: Tratamento de Nulos Assim, o valor NULL permite-nos indicar se existe ou não um valor já disponível para um determinado campo. As comparações de valores com NULL terão de ser realizadas utilizando o operador IS. A utilização de qualquer outro operador devolve sempre FALSE.
58 Operador IS A sua sintaxe é a seguinte: SELECT FROM WHERE valor IS [NOT] NULL
59 Operador IS - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Rui Susana Vasco Seleccionar os Nomes e Telefones de todos os Funcionários.
60 Operador IS - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Rui Susana Vasco SELECT Nome, Telefone FROM Funcionários Access Sql Server Oracle SyBase
61 Operador IS exemplo [Resultado] Tabela Funcionários Tabela Funcionários Nome Telefone Nome Telefone Ana Maria Pedro Rui Susana Vasco Ana Maria Pedro (NULL) Rui Susana Vasco (NULL) SELECT Nome, Telefone FROM Funcionários Access Sql Server Oracle SyBase
62 Operador IS - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Rui Susana Vasco Seleccionar os Nomes dos Funcionários sem Telefone.
63 Operador IS - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Rui Susana Vasco SELECT Nome FROM Funcionários WHERE Telefone IS NULL Access Sql Server Oracle SyBase
64 Operador IS exemplo [Resultado] Tabela Funcionários Nome Pedro Vasco SELECT Nome FROM Funcionários WHERE Telefone IS NULL Access Sql Server Oracle SyBase
65 Operador IS - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Rui Susana Vasco Seleccionar os Nomes e Telefones dos Funcionários com Telefone.
66 Operador IS - exemplo Tabela Funcionários Id Nome Idade Cod_Postal Telefone Salário 1 Ana Maria Pedro Rui Susana Vasco SELECT Nome FROM Funcionários WHERE Telefone IS NOT NULL Access Sql Server Oracle SyBase
67 Operador IS exemplo [Resultado] Tabela Funcionários Nome Telefone Ana Maria Rui Susana SELECT Nome FROM Funcionários WHERE Telefone IS NOT NULL Access Sql Server Oracle SyBase
68 Programação SQL Comando SELECT (selecções simples) Operador LIKE
69 Operador LIKE Permite resolver alguns problemas naturais que existem quando se pretende comparar strings. A comparação de strings com os operadores relacionais utiliza sempre, na comparação, a totalidade da string.
70 Operador LIKE exemplo Seleccionar os Códigos Postais associados a Lisboa SELECT * FROM Postal WHERE Local = Lisboa Access Sql Server Oracle SyBase Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra
71 Operador LIKE exemplo [Resultado] Seleccionar os Códigos Postais associados a Lisboa SELECT * FROM Postal WHERE Local = Lisboa Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa Access Sql Server Oracle SyBase 1500 Lisboa
72 Operador LIKE A utilização do operador LIKE permite fazer comparações de partes da string. Para tal, utilizam-se dois WildCards (caso seja Sql Server, Oracle, SyBase): WildCard Significado % Qualquer string de zero ou mais caracteres _ (underscore) Um carácter qualquer.
73 Operador LIKE A utilização do operador LIKE permite fazer comparações de partes da string. Para tal, utilizam-se dois WildCards (caso seja Access): WildCard Significado * Qualquer string de zero ou mais caracteres? Um carácter qualquer.
74 Operador LIKE exemplo Seleccionar todos os locais começados por S SELECT * FROM Postal Sql Server Oracle SyBase WHERE Local LIKE S% SELECT * FROM Postal Access WHERE Local LIKE S* Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra
75 Operador LIKE exemplo [Resultado] Seleccionar todos os locais começados por S SELECT * FROM Postal SELECT * FROM Postal Sql Server Oracle SyBase WHERE Local LIKE S% Access WHERE Local LIKE S* Tabela Postal Codigo Local 2000 Santarem
76 Operador LIKE exemplo Seleccionar todos os locais que não contenham a string oa SELECT * FROM Postal Sql Server Oracle SyBase WHERE Local NOT LIKE %oa% SELECT * FROM Postal Access WHERE Local NOT LIKE *oa* Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra
77 Operador LIKE exemplo Seleccionar todos os locais que não contenham a string oa SELECT * FROM Postal Sql Server Oracle SyBase WHERE Local NOT LIKE %oa% SELECT * FROM Postal Access WHERE Local NOT LIKE *oa* Tabela Postal Codigo Local 2000 Santarem 2300 Tomar 3000 Coimbra
78 Programação SQL Comando SELECT (selecções simples) Precedência dos Operadores
79 Precedência dos Operadores Tal como nas linguagens de programação tradicionais, também em SQL os operadores têm diferentes precedências, isto é, se aparecerem numa expressão vários operadores, alguns deles são executados antes dos outros.
80 Precedência dos Operadores Parêntesis ( ) Multiplicação / Divisão * / Adição / Subtracção + - NOT AND OR A precedência diminui no sentido da seta, quer isto dizer que os operadores que estão mais acima são executados primeiro.
81 Programação SQL Ordenação Cláusula ORDER BY
82 Ordenação A ordenação realizada por uma aplicação está baseada no valor do código ASCII de cada caracter. Assim, os dígitos aparecem antes dos caracteres alfabéticos e as maiúsculas aparecem antes das minúsculas.
83 Ordenação Alguns sistemas são case sensitive, outros não. Este facto irá influenciar a ordem pela qual são ordenados os valores. A ordenação pode ser realizada através da cláusula ORDER BY no comando SELECT.
84 Ordenação SELECT Campo 1, Campo 2,, Campo n, * FROM Tabela 1,, Tabela k [WHERE Condição] [GROUP BY ] [HAVING ] [ORDER BY Campo [ASC DESC], ]
85 Programação SQL Claúsula ORDER BY (Ordenação) Ordenação por uma coluna
86 Ordenação por uma coluna A ordenação por coluna faz-se especificando, na cláusula ORDER BY, qual a coluna pela qual se pretende ordenar. Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 5 Célia Jorge Ana Laura José Exemplo: Seleccionar todas as pessoas, ordenando o resultado pela Idade.
87 Ordenação por uma coluna Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 2 Laura Célia Jorge Ana José SELECT * FROM Funcionários ORDER BY Idade Access Sql Server Oracle SyBase
88 Ordenação por uma coluna Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 2 Laura Célia Jorge Ana José SELECT * FROM Funcionários ORDER BY Idade ASC Access Sql Server Oracle SyBase
89 Ordenação por uma coluna Seleccionar o Nome e Salário de todos os funcionários, ordenando o resultado pelo Salário, de tal forma que os maiores ordenados fiquem no topo da lista. Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 5 Célia Jorge Ana Laura José
90 Ordenação por uma coluna Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 5 Célia Jorge Ana Laura José SELECT Nome, Salario FROM Funcionários ORDER BY Salario DESC Access Sql Server Oracle SyBase
91 Ordenação por uma coluna Tabela Funcionários Nome Salario Jorge 750 Ana 740 Célia 700 José 670 Laura 650 SELECT Nome, Salario FROM Funcionários ORDER BY Salario DESC Access Sql Server Oracle SyBase
92 Ordenação por uma coluna Seleccionar o Nome e Salário de todos os funcionários, ordenando o resultado pelo Salário, de tal forma que os maiores ordenados fiquem no topo da lista, mas só para as pessoas que têm telefone. Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 5 Célia Jorge Ana Laura José
93 Ordenação por uma coluna Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 5 Célia Jorge Ana Laura José SELECT Nome, Salario FROM Funcionários WHERE Telefone IS NOT NULL ORDER BY Salario DESC Access Sql Server Oracle SyBase
94 Ordenação por uma coluna Tabela Funcionários Nome Salario Telefone Ana Célia José SELECT Nome, Salario FROM Funcionários WHERE Telefone IS NOT NULL ORDER BY Salario DESC Access Sql Server Oracle SyBase
95 Programação SQL Claúsula ORDER BY (Ordenação) Ordenação por várias colunas
96 Ordenação por várias colunas Seleccione todo o conteúdo da tabela Comissão ordenado por Id. Tabela Comissão SELECT * FROM Comissão ORDER BY ID Access Sql Server Oracle SyBase ID ID_Mesg Valor
97 Ordenação por várias colunas SELECT * FROM Comissão ORDER BY ID A coluna ID está correctamente ordenada. No entanto, os valores nas outras colunas aparecem por qualquer ordem, uma vez que não foi solicitada a sua ordenação Access Sql Server Oracle SyBase Tabela Comissão ID ID_Mesg Valor
98 Ordenação por várias colunas Para se ordenar o resultado de um SELECT por mais do que uma coluna, basta indicar, na cláusula ORDER BY, o conjunto das colunas pela ordem em que se pretende ordenar o resultado. A ordenação é feita pela primeira coluna, e entre valores iguais é ordenada pela segunda coluna,..
99 Ordenação por várias colunas Seleccione todo o conteúdo da tabela Comissão ordenado por ID e ID_Msg. Tabela Comissão SELECT * FROM Comissão ORDER BY ID, ID_Msg Access Sql Server Oracle SyBase ID ID_Msg Valor
100 Ordenação por várias colunas Seleccione, da tabela Comissão, as linhas cujo ID é menor que 45, ordenadas, dentro de cada ID, pela coluna Valor de forma descendente. ID ID_Mesg Valor SELECT * FROM Comissão WHERE ID < 45 ORDER BY ID, Valor DESC Access Sql Server Oracle SyBase Tabela Comissão
101 Ordenação por várias colunas Seleccione, da tabela Comissão, as linhas cujo ID é menor que 45, ordenadas, dentro de cada ID, pela coluna Valor de forma descendente. SELECT * FROM Comissão WHERE ID < 45 ORDER BY ID, Valor DESC Access Sql Server Oracle SyBase = Tabela Comissão ID ID_Mesg Valor
102 Ordenação por várias colunas Seleccione, da tabela Comissão, as linhas cujo ID é menor que 45, ordenadas, dentro de cada ID, pela coluna Valor de forma descendente. SELECT * FROM Comissão WHERE ID < 45 ORDER BY ID ASC, Valor DESC Access Sql Server Oracle SyBase Tabela Comissão ID ID_Mesg Valor
103 Programação SQL Claúsula ORDER BY (Ordenação) Selecção de Expressões
104 Selecção de Expressões O comando SELECT permite, para além da selecção de colunas, a selecção de expressões ou mesmo selecção de constantes. Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 5 Célia Jorge Ana Laura José
105 Selecção de Expressões Seleccionar o Nome e Idade de todos os Funcionários. Seleccionar também a Idade que irão ter daqui a um ano. O resultado deverá vir ordenado por Nome.
106 Selecção de Expressões Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 5 Célia Jorge Ana Laura José SELECT Nome, Idade, Idade+1 FROM Funcionários ORDER BY Nome Access Sql Server Oracle SyBase
107 Selecção de Expressões Tabela Funcionários O nome da coluna que resulta da expressão é Expr1002. Este nome pode variar de sistema para sistema. Nome Idade Expr1002 Ana Célia Jorge José Laura SELECT Nome, Idade, Idade+1 FROM Funcionários ORDER BY Nome Access Sql Server Oracle SyBase
108 Selecção de Expressões O nome com que uma coluna ou expressão é representada no resultado de um SELECT pode ser alterado através da cláusula AS. Tabela Funcionários Nome Idade IdadeNova Ana Célia Jorge José Laura SELECT Nome, Idade, Idade+1 AS IdadeNova FROM Funcionários ORDER BY Nome Access Sql Server Oracle SyBase
109 Programação SQL Claúsula ORDER BY (Ordenação) Ordenação e Null
110 Ordenação e Null A forma como o NULL é colocado no resultado ordenado de um SELECT depende de sistema para sistema. Alguns sistemas consideram o valor NULL menor que qualquer outro valor. Outros colocam o valor NULL sempre no topo dos valores, seja a ordenação ascendente ou descendente.
111 Ordenação e NULL Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 3 Jorge Laura Célia Ana José Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 5 Célia Ana José Jorge Laura
112 Programação SQL Claúsula ORDER BY (Ordenação) Eliminação de Repetições (DISTINCT e ALL)
113 Eliminação de Repetições (DISTINCT e ALL) Seleccionar o conjunto das Localidades existentes na tabela Postal. SELECT Local FROM Postal Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem Access Sql Server Oracle SyBase 2300 Tomar 3000 Coimbra
114 Eliminação de Repetições (DISTINCT e ALL) Seleccionar o conjunto das Localidades existentes na tabela Postal. SELECT Local FROM Postal Access Sql Server Oracle SyBase Tabela Postal Local Lisboa Lisboa Lisboa Lisboa Santarem Tomar Coimbra
115 Eliminação de Repetições (DISTINCT e ALL) Seleccionar o conjunto das Localidades existentes na tabela Postal. SELECT Local FROM Postal ou SELECT ALL Local FROM Postal Access Sql Server Oracle SyBase Tabela Postal Local Lisboa Lisboa Lisboa Lisboa Santarem Tomar Coimbra
116 Eliminação de Repetições (DISTINCT e ALL) Se pretendermos eliminar as repetições existentes nas linhas resultantes de um SELECT, poderemos utilizar a cláusula DISTINCT imediatamente a seguir ao SELECT.
117 Eliminação de Repetições (DISTINCT e ALL) SELECT DISTINCT Local FROM Postal Access Sql Server Oracle SyBase Tabela Postal Local Tabela Postal Local Lisboa Coimbra Lisboa Lisboa Santarem Lisboa Tomar Santarem Tomar Coimbra
118 Eliminação de Repetições (DISTINCT e ALL) SELECT ID, DISTINCT ID_Msg FROM Comissão SELECT DISTINCT ID, ALL ID_Msg FROM Comissão
119 Programação SQL Juntando várias tabelas JOIN
120 Juntando várias tabelas (JOIN) Vamos abordar a ligação entre tabelas, operação normalmente designada por JOIN. O JOIN (ligação) entre Tabelas permite extrair, num único SELECT, informação contida em diferentes Tabelas.
121 Álgebra Relacional Produto Cartesiano Tabela Produto cartesiano de A e B x y z u v w a b c m n o a b c p q r a b c s t u d e f m n o d e f p q r d e f s t u g h i m n o g h i p q r g h i s t u
122 Juntando várias tabelas (JOIN) A junção entre tabelas faz-se colocando na cláusula FROM o conjunto das tabelas que se pretende juntar. SELECT campo1, campo2, FROM Tabela1, Tabela2,
123 Juntando várias tabelas (JOIN) Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 5 Célia Jorge Ana Laura José Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar SELECT * 3000 Coimbra FROM Funcionários, Postal
124 Álgebra Relacional Produto Cartesiano Tabela Produto cartesiano de A e B x y z u v w a b c m n o a b c p q r a b c s t u d e f m n o d e f p q r d e f s t u g h i m n o g h i p q r g h i s t u
125 Juntando várias tabelas (JOIN) Tabela Funcionários e Tabela Postal ID Nome Idade Salario Telefone Cod_Postal Codigo Local 1 Ana Lisboa 1 Ana Lisboa 1 Ana Lisboa 1 Ana Lisboa 1 Ana Santarem 1 Ana Tomar 1 Ana Coimbra 2 Laura Lisboa O resultado é o produto cartesiano entre as Tabelas Funcionários e Postal, que associa a cada linha da Tabela Pessoa o conjunto das linhas da Tabela Postal.
126 Juntando várias tabelas CROSS JOIN O Produto Cartesiano entre tabelas também é conhecido por CROSS JOIN.
127 Juntando várias tabelas (JOIN) Tabela Funcionários e Tabela Postal ID Nome Idade Salario Telefone Cod_Postal Codigo Local 1 Ana Lisboa 1 Ana Lisboa 1 Ana Lisboa 1 Ana Lisboa 1 Ana Santarem 1 Ana Tomar 1 Ana Coimbra 2 Laura Lisboa
128 Juntando várias tabelas (JOIN) Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 5 Célia Jorge Ana Laura José Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem SELECT * FROM Funcionários, Postal WHERE Cod_Postal = Codigo 2300 Tomar 3000 Coimbra
129 Álgebra Relacional - Join
130 Juntando várias tabelas (JOIN) Tabela Funcionários e Tabela Postal ID Nome Idade Salario Telefone Cod_Postal Codigo Local 1 Ana Tomar 2 Laura Lisboa 3 Jorge Lisboa 4 José Santarem 5 Célia Lisboa A junção entre duas ou mais tabelas faz-se através das chaves estrangeiras, na cláusula WHERE. Caso não se faça a junção, o resultado é o Produto Cartesiano das duas tabelas.
131 Juntando várias tabelas EQUI-JOIN Estamos perante um EQUI-JOIN quando todas as colunas das tabelas são apresentadas e a ligação entre as tabelas é feita através de uma igualdade, dando assim origem a duas colunas de conteúdos exactamente iguais.
132 Juntando várias tabelas (JOIN) Tabela Funcionários e Tabela Postal ID Nome Idade Salario Telefone Cod_Postal Codigo Local 1 Ana Tomar 2 Laura Lisboa 3 Jorge Lisboa 4 José Santarem 5 Célia Lisboa
133 Juntando várias tabelas (JOIN) Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 5 Célia Jorge Ana Laura José Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra SELECT Funcionários.*, Postal.Local FROM Funcionários, Postal WHERE Codigo = Cod_Postal
134 Juntando várias tabelas (JOIN) Tabela Funcionários e Tabela Postal ID Nome Idade Salario Telefone Cod_Postal Local 1 Ana Tomar 2 Laura Lisboa 3 Jorge Lisboa 4 José Santarem 5 Célia Lisboa Como não faz muito sentido que na junção das tabelas se obtenham duas colunas com a mesma informação, é natural haver uma junção das tabelas sem que exista repetição dados.
135 Juntando várias tabelas NATURAL JOIN Estamos perante um NATURAL JOIN quando todas as colunas envolvidas na ligação entre as tabelas são apresentadas sem repetições de colunas.
136 Juntando várias tabelas JOIN CROSS JOIN EQUI-JOIN NATURAL JOIN
137 Programação SQL Juntando várias tabelas INNER JOIN
138 Juntando várias tabelas INNER JOIN O INNER JOIN corresponde a uma outra designação para o tipo de Join habitual em que se juntam duas ou mais tabelas, ligando-as através da Chave Primária de uma e da Chave Estrangeira da outra.
139 Juntando várias tabelas INNER JOIN Num INNER JOIN, apenas são apresentados os registos em que exista ligação entre as tabelas.
140 Juntando várias tabelas INNER JOIN Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 5 Célia Jorge Ana Laura José Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra Seleccionar o Nome e a Morada Completa de todos os funcionários.
141 Juntando várias tabelas INNER JOIN Seleccionar o Nome e a Morada Completa de todos os funcionários. SELECT Nome, Cod_Postal, Local FROM Funcionários, Postal WHERE Cod_Postal = Codigo Nome Cod_Postal Local Célia 1500 Lisboa Jorge 1100 Lisboa Ana 2300 Tomar Laura 1000 Lisboa José 2000 Santarem Tabela Funcionários e Tabela Postal
142 Juntando várias tabelas INNER JOIN Tabela Funcionários ID Nome Idade Salario Telefone Cod_Postal 5 Célia Jorge Ana Laura José Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra Seleccionar, unicamente, as localidades das pessoas que não têm telefone.
143 Juntando várias tabelas INNER JOIN Seleccionar, unicamente, as localidades das pessoas que não têm telefone. SELECT Local FROM Funcionários, Postal WHERE Cod_Postal = Postal AND Telefone IS NULL Local Lisboa Localidades apresentadas com repetições. Lisboa
144 Juntando várias tabelas INNER JOIN Seleccionar, unicamente, as localidades das pessoas que não têm telefone. SELECT DISTINCT Local FROM Funcionários, Postal WHERE Cod_Postal = Postal AND Telefone IS NULL Local Lisboa Localidades apresentadas sem repetições.
145 Juntando várias tabelas INNER JOIN Se os campos de selecção ou junção de duas tabelas tiverem o mesmo nome, então para eliminar quaisquer ambiguidades, cada um dos campos deve ser precedido do Nome da tabela, seguindo de um Ponto:
146 Juntando várias tabelas INNER JOIN Tabela Funcionários ID Nome Idade Salario Telefone Codigo 5 Célia Jorge Ana Laura José Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra SELECT Funcionários.Codigo, Nome, Postal.Local FROM Funcionários, Postal WHERE Funcionários.Codigo = Postal.Codigo
147 Juntando várias tabelas INNER JOIN O Nome de uma tabela pode ser reduzido ou alterado num SELECT, através da utilização de uma alias que deve ser colocado à frente da tabela e que passará a ser uma outra forma de identificar a Tabela:
148 Juntando várias tabelas INNER JOIN Tabela Funcionários ID Nome Idade Salario Telefone Codigo 5 Célia Jorge Ana Laura José Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra SELECT F.Codigo, Nome, P.Local FROM Funcionários F, Postal P WHERE F.Codigo = P.Codigo
149 Programação SQL Juntando várias tabelas OUTER JOIN
150 Juntando várias tabelas OUTER JOIN No JOIN tradicional, a junção entre as tabelas T1 e T2 é sempre realizada apenas para valores de T1 que tenham um valor correspondente em T2.
151 Juntando várias tabelas OUTER JOIN O papel do OUTER JOIN é estender este conceito, permitindo que a totalidade das linhas de uma tabela seja obtida, ainda que não exista o correspondente valor na outra tabela a que está ligada pela junção.
152 Juntando várias tabelas OUTER JOIN Tabela Funcionários ID Nome Idade Salario Telefone Codigo 5 Célia Jorge Ana Laura José Tabela Postal Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra
153 Juntando várias tabelas OUTER JOIN Em Access e SqlServer, o OUTER JOIN é implementado através das palavras LEFT JOIN e RIGHT JOIN.
154 Juntando várias tabelas OUTER JOIN Quando o OUTER JOIN é realizado à esquerda, são considerados todos os registos da tabela da esquerda e apenas os registos correspondentes na tabela da direita.
155 Juntando várias tabelas OUTER JOIN Exemplo [Left Join]: SELECT Nome, Cod_Postal, Codigo, Local FROM Postal LEFT JOIN Funcionários ON Postal.Codigo = Funcionários.Cod_Postal Access Sql Server
156 Juntando várias tabelas OUTER JOIN Quando o OUTER JOIN é realizado à direita, são considerados todos os registos da tabela da direita e apenas os registos correspondentes na tabela da esquerda.
157 Juntando várias tabelas OUTER JOIN Exemplo [Right Join]: SELECT Nome, Valor FROM Comissão RIGHT JOIN Funcionários ON Comissao.Id=Pessoa.Id Access Sql Server
158 Juntando várias tabelas OUTER JOIN O Access obriga à colocação do Nome da tabela junto a cada Campo (formato Tabela.Campo) que seja colocado na condição do OUTER JOIN. Em Sql Server a indicação do nome da tabela só é necessária se existir ambiguidade entre os campos.
159 Juntando várias tabelas OUTER JOIN A implementação do OUTER JOIN em Oracle é realizada através do operador (+). Este operador é indicado a seguir à coluna que se pretende preencher com NULL, caso não existam os valores associados à coluna da outra tabela.
160 Juntando várias tabelas OUTER JOIN Formato Significado (+) = Insere todos os valores da coluna da direita. = (+) Insere todos os valores da coluna da esquerda. SELECT Nome, Cod_Postal, Codigo, Local FROM Postal, Funcionários WHERE Codigo = Cod_postal (+) ;
161 Juntando várias tabelas OUTER JOIN Regras operador (+): só pode aparecer na cláusula WHERE; tem de ser utilizado em todas as condições; só pode ser aplicado a uma coluna; não pode ser aplicado a expressões;
162 Programação SQL Juntando várias tabelas Union
163 Juntando várias tabelas UNION Uma união não é propriamente uma ligação entre tabelas. A UNION permite juntar o conteúdo de múltiplos comandos SELECT.
164 Juntando várias tabelas UNION Exemplo: SELECT ID_Msg, Mensagem FROM Mensagem UNION SELECT Codigo, Local FROM Postal
165 Juntando várias tabelas UNION Numa UNION, o número de campos a seleccionar em cada um dos comandos SELECT tem de ser igual. Numa UNION, o nome das colunas apresentado no resultado é o nome das colunas seleccionadas na primeira instrução SELECT.
166 Juntando várias tabelas UNION Cada SELECT pode conter a sua própria cláusula WHERE, no entanto poderá existir uma única cláusula ORDER BY no último SELECT, sendo a ordenação aplicada a todo o resultado.
167 Juntando várias tabelas UNION Exemplo: SELECT ID_Msg, Mensagem FROM Mensagem WHERE ID_Msg <=50 UNION SELECT Codigo, Local FROM Postal WHERE Local LIKE *AR* ORDER BY Mensagem
168 Juntando várias tabelas UNION Por defeito uma UNION remove sempre linhas duplicadas. Se em vez de UNION, utilizarmos o operador UNION ALL, os duplicados não são retirados da selecção.
169 Programação SQL Juntando várias tabelas INTERSECT
170 Juntando várias tabelas INTERSECT O operador INTERSECT permite juntar o resultado de dois comandos SELECT, apresentando apenas as linhas que resultam de ambos os comandos.
171 Juntando várias tabelas INTERSECT Tabela Postal SELECT * Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa FROM Postal WHERE Codigo <= 1500 Tabela Postal Codigo Local 1000 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra 1100 Lisboa 1200 Lisboa 1500 Lisboa
172 Juntando várias tabelas INTERSECT Tabela Postal SELECT * Codigo Local 1000 Lisboa 1100 Lisboa 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra FROM Postal WHERE Codigo >= 1200 Tabela Postal Codigo Local 1200 Lisboa 1500 Lisboa 2000 Santarem 2300 Tomar 3000 Coimbra
173 Juntando várias tabelas INTERSECT Tabela Postal Codigo Local Tabela Postal 1200 Lisboa Codigo Local 1000 Lisboa 1500 Lisboa 1100 Lisboa 2000 Santarem 1200 Lisboa 2300 Tomar Tabela Postal Codigo Local 1200 Lisboa 1500 Lisboa 1500 Lisboa 3000 Coimbra SELECT * FROM Postal WHERE Codigo <= 1500 INTERSECT SELECT * FROM Postal WHERE Codigo >= 1200
174 Programação SQL Juntando várias tabelas MINUS
175 Juntando várias tabelas MINUS O operador MINUS devolve os registos que resultam do primeiro SELECT e que não aparecem no segundo. Exemplo: seleccionar todas as linhas da tabela Postal cujo Codigo é menor ou igual a 1500, ignorando todos os elementos cujo Codigo está entre os 1000 e 1200.
176 Juntando várias tabelas MINUS SELECT * FROM Postal WHERE Codigo <= 1500 Codigo NOT BETWEEN 1000 AND 1200 ORACLE SELECT * FROM Postal WHERE Codigo <= 1500 MINUS SELECT * FROM Postal WHERE Codigo BETWEEN 1000 AND 1200
177 Juntando várias tabelas RESUMO DAS JUNÇÕES Join Produto Cartesiano INNER JOIN OUTER JOIN UNION UNION ALL Descrição Juntar cada linha da tabela T1 com todas as linhas da tabela de T2. Junção tradicional, em que apenas são apresentadas as linhas comuns às duas tabelas. Extensão do Inner Join ao proporcionar todos os registos de uma das tabelas, mesmo que sobre estes não exista qualquer ligação. Todos os registos de qualquer das pesquisas (sem duplicados). Todos os registos de qualquer das pesquisas (com duplicados).
178 Juntando várias tabelas RESUMO DAS JUNÇÕES Join Descrição INTERSECT Todos os registos comuns a ambas as pesquisas. MINUS Todos os registos da primeira pesquisa que não aparecem na segunda.
179 Programação SQL Funções de Agregação
180 Funções de Agregação Também designadas por Funções Estatísticas, têm por objectivo obter informação sobre conjuntos de linhas especificados na cláusula WHERE ou sobre grupos de linhas na cláusula GROUP BY.
181 Funções de Agregação Função Count Max Min Sum AVG Descrição Devolve o número de linhas. Devolve o Maior valor da coluna. Devolve o Menor valor da coluna. Devolve a Soma de todos os valores da coluna. Devolve a Média (Average) de todos os valores da coluna.
182 Programação SQL Funções de Agregação COUNT
183 Funções de Agregação - COUNT Devolve o nº de linhas que resultam num SELECT. Pode ser utilizada de três formas distintas: Forma COUNT (*) COUNT (Coluna) COUNT (DISTINCT Coluna) Descrição Devolve o número de linhas que resulta de um SELECT. Devolve o número de ocorrências na coluna diferentes de NULL. Devolve o número de ocorrências (sem repetições) na coluna.
184 Funções de Agregação - COUNT Quantos funcionários existem na BD? SELECT COUNT (*) AS Total FROM Funcionários Total 7
185 Funções de Agregação - COUNT Qual o número de Funcionários e quantos têm telefone? SELECT COUNT (*) AS Total1, COUNT (Telefone) AS Total2 FROM Funcionários Total1 Total2 7 3
186 Funções de Agregação - COUNT Quantos funcionários têm telefone? SELECT COUNT (Telefone) AS Total FROM Funcionários Total 3
187 Funções de Agregação - COUNT Quantos funcionários NÃO têm telefone? SELECT COUNT (*) AS Total FROM Funcionários WHERE Telefone IS NULL Total 4
188 Funções de Agregação - COUNT Quantas comissões têm valor superior ou igual a 1000? SELECT COUNT (*) AS ValorCom FROM Comissão WHERE Valor >= 1000 ValorCom 7
189 Funções de Agregação - COUNT Quais os ID envolvidos na tabela Comissões? SELECT ID FROM Comissão ID
190 Funções de Agregação - COUNT Quais os ID envolvidos na tabela de Comissões? SELECT COUNT (ID) AS Total FROM Comissão Total 8 Com esta solução iremos obter o número de todos os ID, incluindo as repetições.
191 Funções de Agregação - COUNT Quais os ID envolvidos na tabela de Comissões? SELECT COUNT (DISTINCT ID) AS Total FROM Comissão Total Com esta solução iremos obter o número de todos os ID, sem repetições. 5
192 Programação SQL Funções de Agregação MIN e MAX
193 Funções de Agregação MIN e MAX Permitem obter o menor e o maior valor de uma determinada coluna. Qual o valor do maior salário pago na empresa? SELECT MAX (Salario) AS MaiorSalario FROM Funcionários ; MaiorSalario 1500
194 Funções de Agregação MIN e MAX Qual a idade do funcionário mais novo? SELECT MIN (Idade) AS MinIdade FROM Funcionários ; MinIdade 19
195 Funções de Agregação MIN e MAX Qual o menor e o maior valor de comissão superior a 1000 e inferior a 5000? SELECT MIN (Valor) AS Menor, FROM Comissão, MAX (Valor) AS Maior, WHERE Valor > 1000 AND Valor < 5000 ; Menor Maior
196 Funções de Agregação MIN e MAX As funções MIN e MAX podem ser aplicadas a colunas que não contenham valores numéricos. No caso de serem aplicadas a campos do tipo string, são devolvidos os Menor e Maior valores alfabeticamente.
197 Funções de Agregação MIN e MAX Qual o nome do primeiro funcionário, se a lista fosse ordenada alfabeticamente? SELECT MIN (Nome) AS Primeiro, FROM Funcionários ; Primeiro Ana Dias
198 Funções de Agregação MIN e MAX Qual o nome do último funcionário, se a lista fosse ordenada alfabeticamente? SELECT MAX (Nome) AS Ultimo, FROM Funcionários ; Ultimo Zulmira Silva
199 Programação SQL Funções de Agregação SUM
200 Funções de Agregação SUM Devolve a soma de uma determinada coluna. Qual o valor total das comissões a pagar? SELECT SUM (Valor) AS Comissoes, FROM Comissao ; Comissoes 42480
201 Funções de Agregação SUM Devolve a soma de uma determinada coluna. Qual o valor total das comissões e IVA (21%) a pagar? SELECT SUM (Valor) AS Comissoes, SUM (Valor*0.21) AS IVA, FROM Comissao ; Comissoes IVA
202 Programação SQL Funções de Agregação AVG
203 Funções de Agregação AVG Devolve a média dos valores de uma determinada coluna. Qual a média das idades dos funcionários? SELECT AVG (Idade) AS MediaIdade, FROM Funcionarios ; MediaIdade 30,
204 Funções de Agregação AVG Qual a média das idades dos funcionários? SELECT FORMAT(AVG(Idade), 0.00 ) AS MediaIdade, FROM Funcionarios ; Access MediaIdade 30,86
205 Funções de Agregação AVG Seleccionar o Salário Médio dos Funcionários com mais de 30 anos. SELECT AVG(Salario)AS MediaSal, FROM Funcionarios, WHERE Idade > 30 ; MediaSal
206 Funções de Agregação AVG Seleccionar o Salário Médio dos Funcionários com mais de 30 anos. SELECT AVG(Salario), FROM Funcionarios, WHERE Idade > 30 ; Expr
207 Funções de Agregação As funções MIN, MAX, COUNT( ) e COUNT(*) podem ser utilizadas com qualquer tipo de dados. As funções SUM e AVG apenas podem ser aplicadas a campos numéricos.
208 Programação SQL Agrupando a Informação
209 Agrupando a Informação As funções de agregação permitem obter informação resumida sobre o resultado de um comando SELECT. Estas funções podem ser úteis no tratamento de forma agrupada, não como um todo, mas em grupos mais pequenos.
210 Agrupando a informação Exemplo: Mostrar o Valor das Comissões existentes na Base de Dados SELECT ID, Valor FROM Comissão ORDER BY ID Access Sql Server Oracle SyBase ID Valor Tabela Comissão
211 Agrupando a informação Exemplo: Mostrar o Valor TOTAL das Comissões existentes na Base de Dados SELECT SUM (Valor) AS Total FROM Comissão Total Access Sql Server Oracle SyBase
212 Agrupando a Informação Mas o nosso objectivo consiste em obter o valor da soma das comissões de cada ID e não a soma de todas elas. É aí que entra a cláusula GROUP BY.
213 Agrupando Informação SELECT Campo 1, Campo 2,, Campo n, * FROM Tabela 1,, Tabela k [WHERE Condição] [GROUP BY ] [HAVING ] [ORDER BY Campo [ASC DESC], ]
214 Programação SQL Agrupando a Informação Cláusula GROUP BY
215 Agrupando a Informação Cláusula Group BY A cláusula GROUP BY divide o resultado de um SELECT em grupos de resultados que irão ser tratados com as funções de agregação.
216 Agrupando a Informação Cláusula Group BY Obter o valor da soma das comissões agrupadas por ID. SELECT ID, SUM (Valor) AS Total FROM Comissão GROUP BY ID ID Valor ID Valor Tabela Comissão Tabela Comissão
217 Agrupando a Informação Cláusula Group BY Mostrar o valor total (Salário + Comissões) a receber por cada funcionário. SELECT Nome, SUM (Valor) +Salario AS FROM Funcionarios F, Comissao C WHERE F.ID = C.ID GROUP BY Nome, Salario Total Para resolver este exercício, teremos que somar cada um dos salários com o resultado da soma das respectivas comissões.
218 Agrupando a Informação Cláusula Group BY Tabela Funcionários Tabela Comissão ID Nome Idade Salario Telefone Codigo ID ID_Mesg Valor 5 Célia Jorge Ana Laura José SELECT Nome, SUM (Valor) +Salario AS Total FROM Funcionarios F, Comissao C WHERE F.ID = C.ID GROUP BY Nome, Salario
219 Agrupando a Informação Cláusula Group BY Nome Total Ana 7340 Célia 2900 Jorge 4250 = ( )+740 Soma dos valores da tabela comissão Salário da tabela Funcionários José 4470 Laura 4450 SELECT Nome, SUM (Valor) +Salario AS Total FROM Funcionarios F, Comissao C WHERE F.ID = C.ID GROUP BY Nome, Salario
220 Agrupando a Informação Cláusula Group BY Seleccionar a maior comissão de cada ID: SELECT ID, MAX (Valor) AS Maior FROM Comissão GROUP BY ID
221 Agrupando a Informação Cláusula Group BY Seleccionar o número de comissões de cada ID. SELECT ID, COUNT (*) AS NumCom FROM Comissão GROUP BY ID ID NumCom Tabela Comissão
222 Programação SQL Agrupando a Informação Cláusula HAVING
223 Agrupando a Informação Cláusula HAVING A cláusula HAVING serve para fazer restrições ao nível dos grupos que são processados. Se pretendermos mostrar os grupos com uma característica em particular, não utilizamos a cláusula WHERE, pois esta destina-se à restrição das linhas.
224 Agrupando a Informação Cláusula HAVING Utiliza-se a cláusula HAVING, que actua unicamente sobre o resultado dos grupos.
225 Agrupando a Informação Cláusula HAVING Mostrar o valor total de cada comissão agrupada por ID. ID Total SELECT ID, SUM (Valor) AS Total FROM Comissão GROUP BY ID Tabela Comissão
226 Agrupando a Informação Cláusula HAVING Resolver o problema anterior, seleccionando apenas os ID com comissões totais superiores ou iguais a SELECT ID, SUM (Valor) AS Total FROM Comissão GROUP BY ID HAVING SUM (Valor) >= 3800 ID Total Tabela Comissão
227 Programação SQL Agrupando a Informação WHERE vs. HAVING
228 Agrupando a Informação WHERE vs. HAVING Por vezes surge a dúvida sobre quando utilizar a cláusula WHERE ou a cláusula HAVING para restringir o conjunto de registos a apresentar.
229 Agrupando a Informação WHERE vs. HAVING Utiliza-se a cláusula WHERE sempre que se pretende restringir os registos a considerar na selecção. A cláusula HAVING serve para restringir os grupos que foram formados depois de aplicada a restrição da cláusula WHERE.
230 Agrupando a Informação Cláusula HAVING Saber qual o total das comissões (por ID), considerando apenas aquelas cujo valor total seja superior a SELECT ID, SUM (Valor) AS Total FROM Comissão GROUP BY ID HAVING SUM (Valor) > 2000
231 Agrupando a Informação Cláusula HAVING Saber qual o total das comissões (por ID), considerando apenas aquelas cujo valor seja superior a SELECT ID, SUM (Valor) AS Total FROM Comissão WHERE Valor > 2000 GROUP BY ID
232 Agrupando a Informação WHERE vs. HAVING A cláusula WHERE só pode ser aplicada a registos individuais, A cláusula HAVING só pode ser aplicada a funções de grupo.
233 Programação SQL Agrupando a Informação Agrupamentos e o Valor NULL
234 Agrupando a Informação Agrupamentos e o valor NULL Uma questão interessante consiste em saber o que acontece quando numa tabela mandamos ordenar os dados de uma coluna e nessa coluna existe o valor NULL. Num SELECT com a cláusula GROUP BY, se existirem NULLS na coluna ou colunas de agrupamento, estes são também agrupados.
235 Agrupando a Informação Agrupamentos e o valor NULL No exemplo abaixo, o valor NULL aparece 4 vezes na coluna denominada Telefone: SELECT Telefone, COUNT (*) AS Tlf FROM Funcionarios GROUP BY Telefone Telefone Tlf
236 Programação SQL Agrupando a Informação Ordenação
237 Agrupando a Informação Ordenação Relativamente à ordenação de grupos, devem-se seguir as regras apresentadas anteriormente, isto é, pode-se fazer a ordenação por colunas, expressões ou pela ordem da coluna ou expressão seleccionada.
238 Agrupando a Informação Ordenação Ordenação por uma coluna SELECT ID, COUNT (ID) FROM Comissão GROUP BY ID ORDER BY ID [DESC]
239 Agrupando a Informação Ordenação Ordenação por uma expressão ou função de agregação. SELECT ID, COUNT (ID) FROM Comissão GROUP BY ID ORDER BY COUNT (ID) [DESC]
240 Programação SQL SubQueries
241 SubQueries Uma das características do comando SELECT, que por vezes passa despercebida, reside no facto de qualquer comando SELECT não devolver dados, linhas ou colunas, mas devolver sempre uma Tabela como resultado da sua execução. O resultado do comando SELECT é sempre uma Tabela, ainda que da sua execução não resulte qualquer linha.
242 SubQueries Sendo o resultado de qualquer comando SELECT uma tabela, podemos então utilizar os resultados devolvidos nessa tabela e incorporá-los noutro comando SELECT que deles necessite. Uma SubQuery consiste num SELECT dentro de outro.
243 SubQueries Um comando SELECT pode ser colocado: Dentro de um outro SELECT nas cláusulas WHERE, HAVING, SELECT e FROM; Dentro de uma outra SubQuery nas mesmas componentes do ponto anterior; Nos comandos INSERT, UPDATE, DELETE.
244 SubQueries É esta capacidade que o SQL tem de integrar comandos SELECT de forma encadeada que fez com que fosse baptizado com o nome de Structured Query Language (Linguagem Estruturada de Pesquisas). Vamos ver como se implementam e usam as SubQueries:
245 SubQueries Qual o nome do funcionário com menor salário? Dois problemas para resolver: Qual o valor do menor salário; Qual o nome do funcionário a que esse salário corresponde.
246 SubQueries Qual o nome do funcionário com menor salário? 1º problema: Qual o valor do menor salário?
247 SubQueries Tabela Funcionários ID Nome Idade Salario Telefone Codigo 5 Célia Jorge Ana Laura José SELECT MIN (Salario) AS Menor FROM Funcionários Salario 650
248 SubQueries Qual o nome do funcionário com menor salário? 2º problema: Qual o funcionário que ganha esse salário?
249 SubQueries Tabela Funcionários ID Nome Idade Salario Telefone Codigo 5 Célia Jorge Ana Laura José SELECT Nome FROM Funcionários WHERE Salario = 650 Nome Laura
250 SubQueries Qual o nome do funcionário com menor salário? SELECT MIN (Salario) AS Menor FROM Funcionários Salario 650 SELECT Nome FROM Funcionários WHERE Salario = 650 Nome Laura
251 SubQueries Qual o nome do funcionário com menor salário? SELECT Nome FROM Funcionários Nome Laura WHERE Salario = ( SELECT MIN (Salario) FROM Funcionários ) O resultado deste SELECT encadeado é apenas a coluna Nome seleccionada no SELECT exterior.
252 SubQueries Quando um SELECT contém outro SELECT encadeado, pode acontecer que o SELECT anterior necessite de valores do SELECT exterior.
253 SubQueries Qual o nome dos funcionários cujo salário é menor que 15 vezes o conjunto das suas Comissões. SELECT Nome, Salarios FROM Funcionários F WHERE Salario < ( SELECT SUM (Valor) FROM Comissão C WHERE C.ID=F.ID ) * 15
254 SubQueries A forma como os sistemas executam as Queries depende do tipo de Query em que se está em presença. Estas podem classificar-se como Correlacionadas ou Não- Correlacionadas.
255 Programação SQL SubQueries SubQuery Não-Correlacionada
256 SubQueries Não-Correlacionadas Numa Query Não-Correlacionada o SELECT interior não depende do SELECT exterior: SELECT Nome FROM Funcionários WHERE Salario = ( SELECT MIN (Salario) FROM Funcionários )
257 Programação SQL SubQueries SubQuery Correlacionada
258 SubQueries Não-Correlacionadas Numa Query Correlacionada o SELECT interior depende efectivamente dos dados que lhe são fornecidos pelo SELECT exterior: SELECT Nome, Salarios FROM Funcionários F WHERE Salario < ( SELECT SUM (Valor) FROM Comissão C WHERE C.ID=F.ID ) * 15
259 Programação SQL SubQueries Operador Exists
260 SubQueries SELECT Nome, Cod_Postal FROM Funcionários WHERE Cod_Postal IN (SELECT Codigo FROM Postal WHERE Local= Lisboa ) Quais os códigos postais (numéricos) que estão associados à cidade de Lisboa?
261 SubQueries Operador EXISTS Só pode ser utilizado para avaliar o resultado de SubQueries. O seu objectivo é verificar se, da execução da SubQuery, resultou ou não alguma linha de resultado.
262 SubQueries Operador EXISTS O formato do operador EXISTS é: SELECT FROM WHERE [NOT] EXISTS (SubQuery)
263 SubQueries Operador EXISTS Seleccionar o Nome e Morada completa de todos os funcionários que têm comissões a receber: SELECT Nome, Cod_Postal, Local FROM Funcionários F, Postal WHERE EXISTS (SELECT ID FROM Comissão WHERE ID = F.ID )
264 SubQueries Operador EXISTS Seleccionar o Nome e Morada completa de todas os funcionários que NÃO têm comissões a receber: SELECT Nome, Cod_Postal, Local FROM Funcionários F, Postal WHERE NOT EXISTS (SELECT ID FROM Comissão WHERE ID = F.ID )
265 SubQueries Operador EXISTS Seleccionar todos os códigos e localidades que não estão associados a qualquer funcionário: SELECT * FROM Postal WHERE NOT EXISTS (SELECT * FROM Funcionários WHERE Cod_Postal=Codigo )
266 Programação SQL SubQueries Operador All e Any
267 Para relembrar: OPERADORES RELACIONAIS Permitem estabelecer relações entre elementos. O resultado da aplicação de um destes operadores é sempre o valor lógico TRUE ou FALSE. Operador Descrição Exemplo Resultado = Igual a 7=5 FALSE > Maior que 7>5 TRUE < Menor que 7<5 FALSE >= Maior ou Igual que 7>=5 TRUE <= Menor ou igual que 7<=5 FALSE <> Ou!= Diferente 7<>5 TRUE
268 SubQueries ALL e ANY As palavras reservadas ALL e ANY podem ser adicionadas a comparações que utilizem os operadores relacionais, alterando um pouco o seu uso habitual. A utilização destas palavras permite realizar comparações.
269 SubQueries ALL e ANY Seleccionar o Nome e Idade de todas os funcionários que não vivem em Lisboa: SELECT Nome e Idade FROM Funcionários WHERE Cod_Postal <> ALL (1000, 1100, 1200, 1500) ORACLE
270 SubQueries ALL e ANY Seleccionar o Nome e Idade de todas os funcionários que não vivem em Lisboa: SELECT Nome, Idade FROM Funcionarios WHERE Cod_Postal <> ALL (SELECT Codigo FROM Postal WHERE Local= Lisboa )
271 SubQueries ALL e ANY Seleccionar o Nome e Idade de todas os funcionários que não vivem em Lisboa: SELECT Nome, Idade FROM Funcionarios WHERE Cod_Postal = ANY (SELECT Codigo FROM Postal WHERE Local<> Lisboa )
272 Programação SQL SubQueries Resumo
273 SubQueries Utilização de uma SubQuery como expressão de selecção: SELECT (SELECT MAX (Codigo) FROM Postal FROM Postal), Local ORACLE
274 SubQueries Utilização de uma SubQuery como tabela na cláusula FROM SELECT ID FROM (SELECT * FROM Funcionários WHERE Telefone IS NULL) ORACLE
275 SubQueries Utilização de uma SubQuery com funções de agregação em condições ALL / ANY SELECT Codigo FROM Postal WHERE Codigo > ALL (SELECT 2* MIN (Codigo) FROM Postal)
276 Programação SQL Manipulação de Dados DML Data Manipulation Language
277 Manipulação de Dados (DML) Os comandos INSERT, UPDATE, DELETE, são normalmente classificados como pertencendo a uma sublinguagem da linguagem SQL denominada DML.
278 Programação SQL Comando INSERT (inserção de registos simples)
279 Comando INSERT Permite realizar a introdução de novos registos numa tabela: INSERT INTO Nome_Tabela (Campo1, Campo2, ) VALUES (valor1, valor2, ) INSERT INTO Nome_Tabela VALUES (valor1, valor2, )
280 Comando INSERT Introduzir na tabela Postal uma linha com os valores 1250 e Mouraria: INSERT INTO Postal (Codigo, Local) VALUES (1250, Mouraria ) INSERT INTO Postal VALUES (1250, Mouraria )
281 Comando INSERT Pretende-se inserir na Tabela Postal, o ID e o Nome de todos os funcionários: INSERT INTO Postal (Codigo, Local) SELECT ID, Nome FROM Funcionarios
282 Programação SQL Comando UPDATE
283 Comando UPDATE Permite alterar os valores já existentes nos campos de uma única tabela: UPDATE Nome_Tabela [Alias] SET Nome_Coluna1 = {expressão1, query1}, Nome_Coluna2 = {expressão2, query2}, [WHERE Condiçao]
284 Comando UPDATE Aumentar o salário 10% a todos os funcionários: UPDATE Funcionarios SET Salario = Salario * 1.1
285 Comando UPDATE Aumentar o salário 10% apenas ao Paulo Silva, adicionando-lhe um ano à idade: UPDATE Funcionarios SET Salario = Salario * 1.1, WHERE Nome = Paulo Silva
286 Comando UPDATE Pretende-se que o Salário de Ana Lopes passe a ser igual ao menor salário da empresa e que o seu campo Telefone passe a ter o valor NULL. UPDATE Funcionarios SET Salario = (SELECT MIN (Salario) FROM Funcionarios), Telefone = NULL WHERE Nome = Ana Lopes
287 Comando UPDATE Adiciona o prefixo 21 ao telefone de todos os funcionários que têm telefone e vivem em Lisboa: UPDATE Funcionarios SET Telefone = 21 + Telefone WHERE Telefone IS NOT NULL AND EXISTS (SELECT * FROM Postal WHERE Codigo = Cod_Postal AND Local = Lisboa )
288 Programação SQL Comando DELETE
289 Comando DELETE Permite apagar conjunto de linhas existentes numa única tabela: DELETE FROM Nome_Tabela [Alias] [WHERE Condiçao]
290 Comando DELETE Escrever o comando SQL que permita apagar todas as linhas da tabela Comissão. DELETE FROM Comissão O comando DELETE apaga linhas completas de uma determinada tabela.
291 Comando DELETE Eliminar o registo do funcionário Jorge da tabela Funcionários: DELETE FROM Funcionarios WHERE ID = 3 DELETE FROM Funcionarios WHERE Nome LIKE Jorge% DELETE FROM Funcionarios SqlServer Oracle SyBase Access WHERE Nome LIKE Jorge*
292 Comando DELETE Apagar as localidades da tabela Postal que não estão associadas a ninguém. DELETE FROM Postal WHERE codigo NOT IN ( SELECT Cod_Postal FROM Funcionarios )
293 Comando DELETE Se na BD estiver definida integridade referencial* entre as tabelas A e B, então só poderá apagar uma linha A quando em B não existirem referências à linha que se pretende apagar. Por exemplo, não faz sentido remover as linhas na tabela Postal que têm códigos associados na tabela Funcionários.
294 Comando DELETE Se estiver definida uma relação do tipo CASCADE* DELETE entre as tabelas A e B, e se o campo x for chave primária em A e chave estrangeira em B, então bastará eliminar uma linha em A que todas as linhas de B que contenham essa chave estrangeira serão eliminadas automaticamente.
295 Comando DELETE Exemplo: Quando pretendemos apagar uma factura: Quando se apaga o cabeçalho da factura, não faz sentido deixar o conjunto das linhas que a compõem.
296 Programação SQL Manipulação de Datas
297 Manipulação de Datas Um dos principais problemas da informática é o tratamento de Datas. Representar um número: 10 ; ; Representar um conjunto de caracteres: escola secundária Representar uma data:?
298 Manipulação de Datas - ACCESS O Access usa o formato #mm/dd/yyyy# (entre cardinais) para representar uma data no formato habitual. A introdução tem que ser obrigatoriamente feita no formato mm/dd/yyyy INSERT INTO tabela (numero, texto, data_nasc) VALUES (1, Maria, #07/02/1969#)
299 Manipulação de Datas Sql Server No Sql Server envia-se a data como se fosse uma string: INSERT INTO tabela (numero, texto, data_nasc) VALUES (1, Maria, 02 Jul 1969 )
300 Manipulação de Datas Oracle Em Oracle utiliza-se a função TO_DATE que recebe uma data (em formato string) e o formato (outra string) em que esta está especificada, devolvendo uma data formatada de acordo com o formato especificado: INSERT INTO tabela (numero, texto, data_nasc) VALUES (1, Maria, TO_DATE ( 02/07/1969, dd/mm/yyyy ))
301 Programação SQL Views e Índices
302 Views e Índices Suponhamos, por exemplo, que na nossa tabela Funcionários existia informação geral (nome, morada, telefone, etc.), informação contabilística (salário, subsídios, ) e informação médica (hepatites, sida, drogas, )
303 Views e Índices Embora a informação esteja toda localizada fisicamente na mesma tabela, não faz sentido que o departamento de contabilidade tenha acesso aos dados médicos de cada pessoa, da mesma forma que o pessoal médico não deverá ter acesso ao salário que cada funcionário aufere.
304 Views e Índices Mas apesar desta separação ser absolutamente necessária, ambos os serviços deverão ter acesso aos dados de informação geral para que o cheque com o salário possa ser enviado para a mesma morada para onde devem seguir as análises clínicas realizadas nos serviços médicos.
305 Views e Índices As Views servem para resolver esta necessidade de diferentes utilizadores verem a mesma tabela ou tabelas de forma distinta.
306 Programação SQL Views e Índices Comando CREATE VIEW
307 Views e Índices Comando CREATE VIEW Para criar um View, utiliza-se o comando CREATE VIEW, cuja sintaxe é a seguinte: CREATE VIEW nome_view [(Lista de colunas)] AS comando_ SELECT [WITH CHECK OPTION]
308 Views e Índices Comando CREATE VIEW Criar uma View Funcionarios01 com o conjunto dos funcionários cujo salário é menor que CREATE VIEW Funcionarios01 AS SELECT * FROM Funcionarios ACCESS WHERE Salario < 3800 Uma vez criada a View podemos interrogar a View como se de uma tabela vulgar se tratasse.
309 Views e Índices Comando CREATE VIEW Mostrar todo o conteúdo da View Funcionarios01. SELECT * FROM Funcionarios01 ACCESS Sql Server Oracle SyBase
310 Views e Índices As Views servem para resolver esta necessidade de diferentes utilizadores verem a mesma tabela ou tabelas de forma distinta.
311 Views e Índices Comando CREATE VIEW Mostrar o conteúdo da View Funcionarios01 para as pessoas com mais de 30 anos. SELECT * FROM Funcionarios01 WHERE Idade > 30 Access Sql Server Oracle SyBase
312 Views e Índices Comando CREATE VIEW Criar uma View Funcionarios02 com o conjunto dos funcionários cujo salário é menor que Esta View deverá conter apenas os Campos ID, Nome e Salário. CREATE VIEW Funcionarios02 AS SELECT ID, Nome, Salario FROM Funcionarios ACCESS WHERE Salario < 3800 Uma vez criada a View podemos interrogar a View como se de uma tabela vulgar se tratasse.
313 Views e Índices Comando CREATE VIEW Mostrar todo o conteúdo da View Funcionarios02. SELECT * FROM Funcionarios02 ACCESS Sql Server Oracle SyBase
314 Views e Índices O nomes das colunas da View são. Por defeito, iguais aos nomes das tabelas a que pertencem. No entanto, se o utilizador o desejar, pode atribuir um novo nome a cada uma das colunas da View. Exemplo:
315 Views e Índices Comando CREATE VIEW Criar uma View Funcionarios03 com cas características da View anterior, alterando os nomes das colunas para Num, Nome e Ordenado: CREATE VIEW Funcionarios03 (Num, Nome, Ordenado) AS SELECT ID, Nome, Salario FROM Funcionarios WHERE Salario < 3800 ACCESS
316 Views e Índices Qualquer alteração nos dados da tabela Funcionários será imediatamente reflectida em todas as Views que lhe estejam associadas: UPDATE Funcionarios SET Salario=600 WHERE ID=37 UPDATE Funcionarios03 SET Salario=600 WHERE ID=37
317 Views e Índices As Views não possuem dados próprios, os seus dados pertencem às tabelas das quais derivam. Na definição de uma View podem existir tabelas ou outras Views.
318 Programação SQL Views e Índices Juntando várias tabelas numa View
319 Views e Índices Juntando várias tabelas numa View É possível juntar várias tabelas numa única view: CREATE VIEW Moradas AS SELECT Nome, Cod_Postal, Local FROM Funcionarios, Postal WHERE Cod_Postal=Codigo ACCESS
320 Views e Índices Juntando várias tabelas numa View As Views podem, inclusive, simplificar muito o processo de cálculo e de agrupamento da informação: CREATE VIEW vcomissão (ID, Nome, Salario, Comissao) AS SELECT C.ID, Nome, Salario, SUM(Valor) FROM Funcionarios F, Comissao C WHERE F.ID=C.ID GROUP BY C.ID, Nome, Salario ACCESS
321 Programação SQL Views e Índices Cláusula WITH CHECK OPTION
322 Views e Índices Cláusula WITH CHECK POINT CREATE VIEW Funcionarios01 AS SELECT * FROM Funcionarios WHERE Salario < ACCESS Esta é constituída pelo seguinte conjunto de dados:
323 Views e Índices Cláusula WITH CHECK POINT ID Nome Idade Salario Telefone Cod_Postal 25 Paulo Isabel António Para inserir um valor nesta View, bastará escrever o comando INSERT adaptado à View:
324 Views e Índices Cláusula WITH CHECK POINT INSERT INTO Funcionarios01 VALUES (999, Mário, 38, 85000, NULL, 1500) O comando INSERT é executado com sucesso. No entanto, nada nos impede de inserir nesta View alguém cujo salário seja superior a , embora a condição de criação da View não incluísse valores superiores a :
325 Views e Índices Cláusula WITH CHECK POINT INSERT INTO Funcionarios01 VALUES (100, Fernanda, 69, , NULL, 2300) O comando INSERT é executado com sucesso, sem qualquer tipo de erro. No entanto, se seleccionarmos os dados da View, podemos constatar que esta linha não aparece:
326 Views e Índices Cláusula WITH CHECK POINT ID Nome Idade Salario Telefone Cod_Postal 25 Paulo Isabel António Mário CREATE VIEW Funcionarios01 AS SELECT * FROM Funcionarios WHERE Salario <
327 Views e Índices Cláusula WITH CHECK POINT No entanto, se seleccionarmos o conteúdo da tabela Funcionarios, podemos observar que, embora estejamos a usar a View, estamos na realidade a introduzir valores da Tabela Funcionarios fora dos limites do salário a que a View deveria estar sujeita. A cláusula WITH CHECK POINT existe para evitar que uma View possa manipular registos fora dos seus limites de definição:
328 Views e Índices Cláusula WITH CHECK POINT CREATE VIEW TesteView AS SELECT * FROM Funcionarios WHERE Salario < WITH CHECK OPTION ACCESS
329 Programação SQL Views e Índices Comando DROP VIEW
330 Views e Índices Comando DROP VIEW Para se apagar uma View, utiliza-se o comando: ACCESS DROP VIEW nome_da_view
331 Programação SQL Views e Índices Índices
332 Views e Índices Índices Uma das maiores confusões que existe entre os utilizadores de Bases de Dados reside na confusão entre os termos Ordenação e Indexação. A Indexação é a estrutura que permite simular a ordenação dos dados. Na realidade consiste normalmente numa árvore de termos que revertem para uma determinada posição no ficheiro ou tabela.
333 Views e Índices Índices Suponhamos que pretendíamos, a partir de um ficheiro de dados vazio, criar um índice numa árvore binária. Uma árvore binária é um estrutura em que, para cada um dos nós da árvore, todos os nós à esquerda são menores ou iguais à chave de indexação e todos os nós à direita são superiores à chave de indexação.
334 Views e Índices Índices ID Nome Apelido 2456 Célia Morais 4561 José Lopes 6452 Florinda Simões 1289 António Dias 4978 Beatriz Costa 3254 Ana Rita 5698 Paulo Viegas Assim, o conjunto de dados daria origem à árvore apresentada a seguir:
335 Views e Índices Índices Célia 1 António 4 José 2 Ana 6 Beatriz 5 Florinda 3 Paulo 7 Index sobre o Nome
336 Programação SQL Views e Índices Comando CREATE INDEX
337 Views e Índices Comando CREATE INDEX Este comando permite fazer a criação de índices a partir de código SQL, apesar da maioria dos sistemas gestores de BD incluir utilitários que o façam de forma, mais ou menos, visual: A sintaxe do comando CREATE INDEX é a seguinte:
338 Views e Índices Comando CREATE INDEX CREATE[UNIQUE]INDEX Nome_do_Index ON Nome_Tabela (col1 {ASC DESC}, col2 )
339 Views e Índices Comando CREATE INDEX Criar um índice sobre o campo Local CREATE INDEX ilocal ON Postal (Local) Criar um índice único sobre o nome dos Funcionários. CREATE UNIQUE INDEX indnome ON Funcionários (Nome)
340 Views e Índices Comando CREATE INDEX Criar um índice descendente sobre o Salário. CREATE INDEX indsal ON Funcionários (Salário DESC) Criar um índice único sobre os campos ID e ID_Msg da tabela das Comissões CREATE UNIQUE INDEX indcomissao ON Comissao (ID, ID_Msg)
341 Views e Índices Comando CREATE INDEX Os índices são automaticamente actualizados pelos sistema gestor de BD, cada vez que um registo indexado é inserido, alterado ou apagado.
342 Programação SQL Views e Índices Comando DROP INDEX
343 Views e Índices Comando DROP INDEX Para apagar um índice, utiliza-se o comando DROP INDEX que, mais uma vez, segue a forma de uso dos comandos DROP anteriormente apresentados. A sua sintaxe é:
344 Views e Índices Comando DROP INDEX DROP INDEX Nome_do_Index
345 Views e Índices Comando DROP INDEX Escrever os comandos necessários para apagar todos os índices criados anteriormente: DROP INDEX ilocal DROP INDEX indnome DROP INDEX indsal DROP INDEX indcomissao
346 Views e Índices Ao contrários das VIEWS (também chamadas tabelas virtuais por não existirem fisicamente), os índices existem fisicamente em disco.
Programação SQL. Manipulação de Dados. DML Data Manipulation Language
Programação SQL Manipulação de Dados DML Data Manipulation Language Manipulação de Dados (DML) Os comandos INSERT, UPDATE, DELETE, são normalmente classificados como pertencendo a uma sublinguagem da linguagem
SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri
SQL Linguagem de Manipulação de Dados Banco de Dados SQL DML SELECT... FROM... WHERE... lista atributos de uma ou mais tabelas de acordo com alguma condição INSERT INTO... insere dados em uma tabela DELETE
SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados
SQL (Structured Querie Language) SQL é mais que uma linguagem de interrogação estruturada. Inclui características para a definição da estrutura de dados, para alterar os dados de uma base de dados, e para
1. Assinale as afirmações que são verdadeiras e as que são falsas, corrigindo-as:
Curso Profissional Técnico de Informática de Gestão 10ºB Prof. Pedro Lopes S i s t e m a s d e I n f o r m a ç ã o M ó d u l o : L i n g u a g e m S Q L T e s t e s u m a t i v o d u r a ç ã o 8 0 m i
Comandos de Manipulação
SQL - Avançado Inserção de dados; Atualização de dados; Remoção de dados; Projeção; Seleção; Junções; Operadores: aritméticos, de comparação,de agregação e lógicos; Outros comandos relacionados. SQL SQL
Tarefa Orientada 13 Agrupamento e sumário de dados
Tarefa Orientada 13 Agrupamento e sumário de dados Objectivos: Funções de agregação Agrupamento e sumário de dados Funções de agregação Nesta tarefa orientada iremos formular consultas que sumariam os
SQL UMA ABORDAGEM INTERESSANTE
SQL é uma linguagem de consulta estruturada, do inglês Structured Query Language. É uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional). Muitas das características
Definida pelo American National Standard Institute (ANSI) em 1986
2.3. Linguagens Relacionais SQL Structured Query Language Linguagem para o modelo relacional: Definida pelo American National Standard Institute (ANSI) em 1986 Adoptada em 1987 como um standard internacional
Tarefa Orientada 15 Manipulação de dados
Tarefa Orientada 15 Manipulação de dados Objectivos: Criação de tabelas teste Comando INSERT INTO Inserção de dados Comando INSERT Actualização de dados Comando UPDATE Eliminação de dados Comando DELETE
Tarefa Orientada 14 Subconsultas
Tarefa Orientada 14 Subconsultas Objectivos: Subconsultas não correlacionadas Operadores ALL, SOME e ANY Subconsultas correlacionadas Operador EXISTS Subconsultas incluídas na cláusula FROM de uma consulta
António Rocha Nuno Melo e Castro
António Rocha Nuno Melo e Castro SQL- Strutured Query Language é a linguagem mais usada nas bases dados relacionais. Originalmente desenvolvida pela IBM Actualmente é um standard, o mais recente é o SQL:2003
Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )
PRONATEC - Programador de Sistemas Banco de Dados 1) Incluindo linhas nas tabelas a. Para incluir linhas em tabelas utilize o comando INSERT INTO INSERT INTO tabela [ ( coluna [, coluna,...] ) ] VALUES
Structured Query Language (SQL)
SQL Histórico Structured Query Language (SQL) Foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation Language) para suas primeiras tentativas
Tarefa Orientada 16 Vistas
Tarefa Orientada 16 Vistas Objectivos: Vistas só de leitura Vistas de manipulação de dados Uma vista consiste numa instrução de SELECT que é armazenada como um objecto na base de dados. Deste modo, um
IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1
IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1 Banco de Dados Fundamentos de SQL Structured Query Language Aula2 Apresentado por: Robson do Nascimento Fidalgo [email protected] IF685
Prof.: Clayton Maciel Costa [email protected]
Programação com acesso a BD Prof.: Clayton Maciel Costa [email protected] 1 Agenda Estrutura Básica de consultas SQL: A cláusula SELECT; A cláusula FROM; A cláusula WHERE. Operação com cadeias
Sumário 1 0.1 Introdução 1 0.2 Breve História da Linguagem SQL l 0.3 Características da Linguagem SQL 3 0.4 A Composição deste Livro 3
ÍNDICE o -INTRODUÇÃO Sumário 1 0.1 Introdução 1 0.2 Breve História da Linguagem SQL l 0.3 Características da Linguagem SQL 3 0.4 A Composição deste Livro 3 0.5 Sistemas Utilizados 6 0.5.1 Access 2003 (Microsoft)
Bases de Dados 2005/2006. Aula 5
Bases de Dados 2005/2006 Aula 5 Sumário -1. (T.P.C.) Indique diferenças entre uma tabela e uma relação. 0. A base de dados Projecto 1. SQL Join (variantes) a. Cross Join b. Equi-Join c. Natural Join d.
SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL
SQL TGD/JMB 1 Projecto de Bases de Dados Linguagem SQL SQL TGD/JMB 2 O que é o SQL? SQL ("ess-que-el") significa Structured Query Language. É uma linguagem standard (universal) para comunicação com sistemas
SQL DML. Frederico D. Bortoloti [email protected]
Banco de Dados I SQL DML Frederico D. Bortoloti [email protected] SQL - DML Os exemplos da aula serão elaborados para o esquema de dados a seguir: Empregado(matricula, nome, endereco, salario, supervisor,
Programação SQL. Introdução
Introdução Principais estruturas duma Base de Dados: Uma BD relacional é constituída por diversas estruturas (ou objectos ) de informação. Podemos destacar: Database: designa a própria BD; Table/Tabela:
SQL (Structured Query Language)
(Structured Query Language) I DDL (Definição de Esquemas Relacionais)... 2 I.2 Domínios... 2 I.3 Criação de Tabelas... 2 I.4 Triggers... 4 II DML Linguagem para manipulação de dados... 5 II.2 Comando SELECT...
Bases de Dados. DML Data Manipulation Language Parte 1
Bases de Dados DML Data Manipulation Language Parte 1 DML Data Manipulation Language Diz respeito à manipulação dos dados. É utilizada para: Inserir dados numa tabela(tuplos) Remover dados de uma tabela(tuplos)
Tarefa Orientada 10 Obter informação a partir de uma tabela
Tarefa Orientada 10 Obter informação a partir de uma tabela Objectivos: Consultar dados de uma tabela Utilizar operadores aritméticos, relacionais, lógicos, de concatenação de cadeias de caracteres, LIKE
Tarefa Orientada 12 Junção Externa, Auto-Junção e União
Tarefa Orientada 12 Junção Externa, Auto-Junção e União Objectivos: Junção externa (Outer JOIN) Junção externa à esquerda (LEFT Outer JOIN) Junção externa à direita (RIGHT Outer JOIN) Junção externa completa
UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II
UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II BANCO DE DADOS II AULA 3 Linguagem SQL Linguagem de manipulação de dados (DML) DISCIPLINA: Banco de
Structured Query Language (SQL) SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.
Structured Query Language (SQL) SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais. A instrução SELECT As consultas a uma base de dados relacional fazem-se
Linguagem de Consulta Estruturada SQL- DML
Linguagem de Consulta Estruturada SQL- DML INTRODUÇÃO A SQL - Structured Query Language, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation
PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.
PROGRAMA ANO LECTIVO: 2005/2006 CURSO: LICENCIATURA BI-ETÁPICA EM INFORMÁTICA ANO: 2.º DISCIPLINA: BASE DE DADOS DOCENTE RESPONSÁVEL PELA REGÊNCIA: Licenciado Lino Oliveira Objectivos Gerais: Aquisição
PROGRAMA. Objectivos Gerais :
PROGRAMA ANO LECTIVO : 2005/2006 CURSO : ENGENHARIA MULTIMÉDIA ANO: 2.º DISCIPLINA : SISTEMA DE GESTÃO DE BASE DE DADOS DOCENTE RESPONSÁVEL PELA REGÊNCIA : Licenciado Lino Oliveira Objectivos Gerais :
Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:
Álgebra Relacional Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída operação (REL 1 ) REL 2 operação (REL 1,REL 2 ) REL 3 Operações básicas: seleção projeção
DESENVOLVIMENTO DE SOFTWARE
VARIAÁ VEL Antes de iniciarmos os comandos referentes a Banco de Dados, precisamos de uma breve descrição técnica sobre Variáveis que serão uma constante em programação seja qual for sua forma de leitura.
SQL Structured Query Language
Janai Maciel SQL Structured Query Language (Banco de Dados) Conceitos de Linguagens de Programação 2013.2 Structured Query Language ( Linguagem de Consulta Estruturada ) Conceito: É a linguagem de pesquisa
DML - SELECT Agrupando Dados
DML - SELECT Agrupando Dados 1. Apresentação Já conhecemos os comandos básicos de manipulação de dados: insert; delete; update e select. O comando de consulta select utilizado até aqui era aplicado sobre
Linguagem de Banco de Dados DML Exercícios
Linguagem de Banco de Dados DML Exercícios 1. A partir do modelo conceitual abaixo e das descrições das tabelas, crie o modelo físico e implanteo no banco de dados. 2. Acrescente os dados, conforme descrito
Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003
Bases de Dados Introdução à linguagem SQL História Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R Renomeada para SQL (Structured Query Language) Standards ISO e ANSI SQL-86, SQL-89,
Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.
MySQL 101 Recapitulando Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas. As bases de dados são úteis quando necessitamos
Introdução às Bases de Dados
Introdução às Bases de Dados Chave primária Domínios Relação F# F Nome Estado Cidade F1 José 20 Braga F2 João 10 Faro F3 Luís 30 Lisboa F4 Rui 30 Setúbal Atributos Tuplas Introdução às Bases de Dados Modelo
Banco de Dados. Prof. Antonio
Banco de Dados Prof. Antonio SQL - Structured Query Language O que é SQL? A linguagem SQL (Structure query Language - Linguagem de Consulta Estruturada) é a linguagem padrão ANSI (American National Standards
Introdução à Banco de Dados. Nathalia Sautchuk Patrício
Introdução à Banco de Dados Nathalia Sautchuk Patrício Histórico Início da computação: dados guardados em arquivos de texto Problemas nesse modelo: redundância não-controlada de dados aplicações devem
Banco de Dados. Marcio de Carvalho Victorino www.dominandoti.eng.br. Exercícios SQL
Banco de Dados Exercícios SQL 1 TRF (ESAF 2006) 32. Analise as seguintes afirmações relacionadas a Bancos de Dados e à linguagem SQL: I. A cláusula GROUP BY do comando SELECT é utilizada para dividir colunas
Consultas SQL Parte II
CURSO TÉCNICO EM INFORMÁTICA COMPONENTE CURRICULAR: BANCO DE DADOS PROFESSOR (A): Josiane Ferri TURMA: 11/1 - Tarde Consultas SQL Parte II Outras cláusulas que o comando select apresenta são DISTINCT,
Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )
Tecnologia em Análise e Desenvolvimento de Sistemas Disciplina: B1SGB - Sistemas Gerenciadores de Banco de Dados Memória de aula Aula 10 1) Incluindo linhas nas tabelas a. Para incluir linhas em tabelas
Uma expressão básica em SQL consiste em três cláusulas: select, from e where.
Introdução a Banco de Dados O.K. Takai; I.C.Italiano; J.E. Ferreira. 67 8 A Linguagem SQL A linguagem SQL é um padrão de linguagem de consulta comercial que usa uma combinação de construtores em Álgebra
Banco de Dados I Linguagem SQL Parte 2. Autor: Prof. Cláudio Baptista Adaptado por: Prof. Ricardo Antonello
Banco de Dados I Linguagem SQL Parte 2 Autor: Prof. Cláudio Baptista Adaptado por: Prof. Ricardo Antonello Introdução Como vimos, um SGBD possui duas linguagens: DDL: Linguagem de Definição de Dados. Usada
NOME SEXO CPF NASCIMENTO SALARIO
Tutorial SQL Fonte: http://www.devmedia.com.br/articles/viewcomp.asp?comp=2973 Para começar Os Sistemas Gerenciadores de Bancos de Dados Relacionais (SGBDr) são o principal mecanismo de suporte ao armazenamento
Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)
Básico da Linguagem SQL Definição de Esquemas em SQL SQL(Structured Query Language) Desenvolvida como a linguagem de consulta do protótipo de SGBD Sistema R (IBM, 1976). Adotada como linguagem padrão de
BDII SQL Junção Revisão 8
exatasfepi.com.br BDII SQL Junção Revisão 8 André Luís Duarte Leais são as feridas feitas pelo amigo, mas os beijos do inimigo são enganosos. Provérbios 27:6 SQL Introdução Produto cartesiano Nomes alternativos
Treinamento sobre SQL
Treinamento sobre SQL Como Usar o SQL Os dois programas que você mais utilizara no SQL Server são: Enterprise Manager e Query Analyzer. No Enterprise Manager, você pode visualizar e fazer alterações na
SQL BANCO DE DADOS. Linguagem de consulta SQL. Linguagem de consulta SQL. Linguagem de Consulta Estruturada
Revisão de tpicos anteriores BANCO DE DADOS Linguagem de consulta SQL Roberto Duarte Fontes Brasília - DF [email protected] Projeto de banco de dados Modelagem Conceitual (independe da implementação)
Projeto de Banco de Dados
Projeto de Banco de Dados SQL-Consultas Comando SELECT Prof. Luiz Antônio Vivacqua C. Meyer ([email protected]) Sintaxe Geral SELECT [ALL/DISTINCT] coluna1, coluna2,..., colunan FROM nome_tabela1,
EXEMPLOS DE COMANDOS NO SQL SERVER
EXEMPLOS DE COMANDOS NO SQL SERVER Gerenciando Tabelas: DDL - DATA DEFINITION LANGUAG Criando uma tabela: CREATE TABLE CLIENTES ID VARCHAR4 NOT NULL, NOME VARCHAR30 NOT NULL, PAGAMENTO DECIMAL4,2 NOT NULL;
SQL. Prof. Márcio Bueno. {bd2tarde,bd2noite}@marciobueno.com
SQL Prof. Márcio Bueno {bd2tarde,bd2noite}@marciobueno.com Material dos professores Ana Carolina Salgado, Fernando Foncesa e Valéria Times (CIn/UFPE) SQL SQL - Structured Query Language Linguagem de Consulta
Tarefa Orientada 11 Junção Interna
Tarefa Orientada 11 Junção Interna Objectivos: Junção Interna (INNER JOIN) Junção Interna A operação de junção interna (INNER JOIN) é utilizada para combinar colunas de duas ou mais tabelas. O resultado
3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si.
NOME: BRUNO BRUNELI BANCO DE DADOS - ADS create database ProducaoMinerais use ProducaoMinerais create table Mineral( nome varchar(15) primary key, preco real) create table Pais( nome varchar(30) primary
DESENVOLVIMENTO DE SOFTWARE
VARIAÁ VEL Antes de iniciarmos os comandos referentes a Banco de Dados, precisamos de uma breve descrição técnica sobre Variáveis que serão uma constante em programação seja qual for sua forma de leitura.
Memória de aula Semanas 15 e 16
FMU Curso: Ciência da Computação Disciplina: Banco de Dados I Professor: Ecivaldo Matos Memória de aula Semanas 15 e 16 1) Incluindo linhas nas tabelas a. Para incluir linhas em tabelas utilize o comando
ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas
ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL Carga horária: 32 Horas Pré-requisito: Para que os alunos possam aproveitar este treinamento ao máximo, é importante que eles tenham participado dos treinamentos
COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.
PLANIFICAÇÃO DA DISCIPLINA DE SISTEMAS DE INFORMAÇÃO 12.ºH CURSO PROFISSIONAL DE TÉCNICO MULTIMÉDIA ANO LECTIVO 2013/2014 6. LINGUAGENS DE PROGRAMAÇÃO IV Pré-requisitos: - Planificar e estruturar bases
BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011
BASES DE DADOS I LTSI/2 Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011 Ao nível das linguagens de manipulação de dados (Data Manipulation Language - DML) o SQL
Linguagem de Consulta Estruturada (SQL)
Linguagem de Consulta Estruturada (SQL) Conceitos sobre a versão ANSI da SQL, a sublinguagem de definição de dados (DDL) e a sublinguagem de manipulação de dados (DML) Prof. Flavio Augusto C. Correia 1
Pedro F. Carvalho OCP Oracle 2008.2 10g LINGUAGEM SQL. www.pedrofcarvalho.com.br [email protected] São José do Rio Preto
Pedro F. Carvalho OCP Oracle 2008.2 10g LINGUAGEM SQL Objetivos Revisando a sintaxe SQL SELECT, UPDATE, INSERT, DELETE Manipulando expressões Funções matemáticas, etc Condições de Pesquisa Funções de Agregação
Consultas (Queries) ou Interrogações
Consultas (Queries) ou Interrogações Principal finalidade das interrogações: Extracção, manipulação (inserção, alteração e remoção) e definição de dados. As interrogações mais comuns destinam-se a pesquisar
SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:
SQL Tópicos Especiais Modelagem de Dados Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Mestrado Profissional em Ensino de Ciências
1. SQL Instrumental...2 1.1 Select...3 1.2 Delete...13 1.3 Update... 1.4 Insert... 1.5 Group by... 1.6 Having... 1.7 Unnion All...
SQL 1. SQL Instrumental...2 1.1 Select...3 1.2 Delete...13 1.3 Update... 1.4 Insert... 1.5 Group by... 1.6 Having... 1.7 Unnion All... 2. Servidor... 2.1 Ativando log no Broker... 2.2 Leitura do log no
SQL92 DDL( RIS, ACTUALIZAÇÕES E VISTAS) DML (QUERIES, SUBQUERIES,JUNÇÕES, E OPERAÇÕES SOBRE CONJUNTOS)
SQL92 DDL( RIS, ACTUALIZAÇÕES E VISTAS) DML (QUERIES, SUBQUERIES,JUNÇÕES, E OPERAÇÕES SOBRE CONJUNTOS) SQL SQL, é uma linguagem de programação que foi desenvolvida para questionar bases de dados relacionais
1.264 Aula 7. Introdução ao SQL
1.264 Aula 7 Introdução ao SQL Linguagem Estruturada de Consulta (SQL) Aula 7 SELECT, INSERT, DELETE, UPDATE Junções Aula 8 Subconsultas Visões (tabelas virtuais) Índices Transações Segurança Desempenho
FEAP - Faculdade de Estudos Avançados do Pará PROFª LENA VEIGA PROJETOS DE BANCO DE DADOS UNIDADE V- SQL
Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação. O Departamento de Pesquisas da IBM desenvolveu a SQL como forma de interface para
f. Vocês podem selecionar todos os campos indicando-os, ou seja, sem usar * (boa prática) g. Muito relevante na manutenção de BD e de aplicações.
Tecnologia em Análise e Desenvolvimento de Sistemas Disciplina: B1SGB - Sistemas Gerenciadores de Banco de Dados Memória de aula Aula 11 1) Cláusulas SELECT e FROM a. Apesar de ser a primeira, ela é a
SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.
SQL (Structured Query Language) SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável. Além de permitir a realização de consultas, SQL possibilita: definição
Introdução ao SQL Avançado
Introdução ao SQL Avançado Introdução as consultas, manipulação e a filtragem de dados com a linguagem SQL Prof. MSc. Hugo Vieira L. Souza Este documento está sujeito a copyright. Todos os direitos estão
LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS
LINGUAGEM SQL PARA CSULTAS EM MICROSOFT ACCESS Objetivos: Neste tutorial serão apresentados os principais elementos da linguagem SQL (Structured Query Language). Serão apresentados diversos exemplos práticos
Banco de Dados Oracle 10g: Introdução à Linguagem SQL
Oracle University Entre em contato: 0800 891 6502 Banco de Dados Oracle 10g: Introdução à Linguagem SQL Duração: 5 Dias Objetivos do Curso Esta classe se aplica aos usuários do Banco de Dados Oracle8i,
Linguagem de Consulta - SQL
Complementos da Linguagem SQL - Eliminando Tuplas Repetidas Exemplo: Obter o código das editoras que têm livros publicados CodEditora Titulo Publicacao... 04 Banco de Dados 1989 02 Análise 2000 01 XML
EXERCÍCIOS PRÁTICOS. Banco de Dados
EXERCÍCIOS PRÁTICOS Banco de Dados Introdução ao uso do SQL Structured Query Language, considerando tanto DDL Data Definition Language quanto DML Data Manipulation Language. Banco de Dados selecionado:
Exercícios de Lógica Exercícios de Fixação 08
Exercícios Exercícios de Lógica Exercícios de Fixação 08 1. A linguagem SQL apresenta uma série de comandos que permitem a definição dos dados, chamada de DDL (Data Definition Language). Assinale a alternativa
Principais Instruções em SQL. Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados.
Principais Instruções em SQL Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados. Atenção: Esta apostila foi desenvolvida com o auxílio on-line do banco MS-ACCESS,
O que são Bancos de Dados?
SQL Básico Liojes de Oliveira Carneiro [email protected] www.professor-liojes.blogspot.com O que são Bancos de Dados? É o software que armazena, organiza, controla, trata e distribui os dados
Banco de dados 1. Linguagem DML SQL Select Avançado. Professor: Victor Hugo L. Lopes
Banco de dados 1 Linguagem DML SQL Select Avançado Professor: Victor Hugo L. Lopes Agenda: -União de tabelas em consultas; -Joins. 2 Até este momento, vimos as capacidades da SQL de completa manipulação
Junções e Índices em Tabelas
Junções e Índices em Tabelas Prof. Fernanda Baião [email protected] SGBD Considerados MySQL (http://www.mysql.org) SGBD gratuito e simples, sem muitos recursos avançados Fácil de instalar
Sistemas de Bases de Dados Relacionais Introdução ao SQL. Interrogações diversas sobre a Base de Dados Northwind
SQL (01) Sistemas de Bases de Dados Relacionais Introdução ao SQL Interrogações diversas sobre a Base de Dados Northwind /* Introdução ao SQL - Parte I =========================== Folha de Exercícios Resolução
BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc. [email protected]
BANCO DE DADOS -INTRODUÇÃO AO SQL Prof. Angelo Augusto Frozza, M.Sc. [email protected] Os comandos SQL podem ser agrupados em 3 classes: DDL Data Definition Language Comandos para a Definição
Query SQL (Structured Query Language)
Query SQL (Structured Query Language) Forma básica SELECT FROM WHERE obrigatório obrigatório opcional Em FROM coloca-se uma tabela. Em SELECT colocam-se colunas ou expressões envolvendo colunas da tabela
LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados
LINGUAGEM SQL Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional). Muitas das características
SQL BÁSICO. Introdução. Prof. Suelane Garcia. Linguagem SQL (Structured Query Language)
SQL BÁSICO Prof. Suelane Garcia Introdução 2 Linguagem SQL (Structured Query Language) Linguagem de Consulta Estruturada padrão para acesso a Banco de Dados. Usada em inúmeros Sistemas de Gerenciamento
Principais Instruções em SQL
Instrução Principais Instruções em SQL Instrui o programa principal do banco de dados para retornar a informação como um conjunto de registros. Sintaxe [predicado { * tabela.* [tabela.]campo1 [AS alias1]
SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.
SQL comando SELECT Uma das tarefas mais requisitadas em qualquer banco de dados é obter uma listagem de registros armazenados. Estas tarefas são executadas pelo comando SELECT Sintaxe: SELECT [DISTINCT]
Tarefa Orientada 19 Triggers
Tarefa Orientada 19 Triggers Objectivos: Criar triggers AFTER Criar triggers INSTEAD OF Exemplos de utilização Os triggers são um tipo especial de procedimento que são invocados, ou activados, de forma
ANÁLISE E PROJETO DE BANCO DE DADOS
ANÁLISE E PROJETO DE BANCO DE DADOS SQL FELIPE G. TORRES SQL A linguagem SQL (Struct Query Language) é utilizada como padrão em bancos de dados relacionais. Seu desenvolvimento foi originalmente no início
Linguagem SQL Sub-linguagem DDL
Linguagem SQL Sub-linguagem DDL A SQL - Structured Query Language, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation Language para suas
Principais Comandos SQL Usados no MySql
Principais Comandos SQL Usados no MySql O que é um SGBD? Um Sistema Gerenciador de Banco de Dados (como no Brasil) ou Sistema Gestor de Base de Dados (SGBD) é o conjunto de programas de computador (softwares)
MODELO DE DADOS VS ESQUEMA
MODELO DE DADOS VS ESQUEMA Um modelo de dados é um conjunto de conceitos usados para se descrever dados. Um esquema é uma descrição de uma determinada coleção de dados, descrição essa baseada num certo
S Q L 31/03/2010. SQL - Structured Query Language Linguagem de Consulta Estruturada
Gerenciamento de Dados e Informação Fernando Fonseca Ana Carolina Robson Fidalgo SQL SQL - Structured Query Language Linguagem de Consulta Estruturada Apesar do QUERY no nome, não é apenas de consulta,
Projeto e Implementação
Felipe Nery Rodrigues Machado Banco de Dados Projeto e Implementação 2 Edição 4 Reimpressão São Paulo 2011 Editora Érica Ltda. 3 Projeto Sumário Capítulo 1 O Que É Projeto de Banco de Dados 15 Modelagem
4.6. SQL - Structured Query Language
4.6. SQL - Structured Query Language SQL é um conjunto de declarações que é utilizado para acessar os dados utilizando gerenciadores de banco de dados. Nem todos os gerenciadores utilizam SQL. SQL não
LINGUAGEM SQL. SQL Server 2008 Comandos iniciais
1 LINGUAGEM SQL SQL Server 2008 Comandos iniciais SQL - STRUCTURED QUERY LANGUAGE Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação.
Memória de aula Aulas 11 e 12
Tecnologia em Análise e Desenvolvimento de Sistemas Disciplina: B1SGB - Sistemas Gerenciadores de Banco de Dados Memória de aula Aulas 11 e 12 1) Revisão a. Cláusula join (inner e outer) 2) Cláusula GROUP
Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. (http://bidu.lab.ic.unicamp.br/~celio/metasql.php)
Clínica Todos os exemplos apresentados utilizam o SGBD Postgre - open source Documentação: http://www.postgresql.org/docs (http://bidu.lab.ic.unicamp.br/~celio/metasql.php) Ambulatorios(numero, andar,
Microsoft Access. No Access, existem vários tipos de objectos: Tabelas. Consultas. Formulários Relatórios Macros Módulos
É um SGBD do tipo relacional para a utilização em windows. Ao abrirmos o Access, podemos efectuar várias operações: abrir uma base de dados existente, ou então criar uma nova base de dados. Se criarmos
Operação de União JOIN
Operação de União JOIN Professor Victor Sotero SGD 1 JOIN O join é uma operação de multi-tabelas Select: o nome da coluna deve ser precedido pelo nome da tabela, se mais de uma coluna na tabela especificada
