Programação SQL. INTRODUÇÃO II parte

Tamanho: px
Começar a partir da página:

Download "Programação SQL. INTRODUÇÃO II parte"

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 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

Leia mais

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 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

Leia mais

SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados

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

Leia mais

1. Assinale as afirmações que são verdadeiras e as que são falsas, corrigindo-as:

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

Leia mais

Comandos de Manipulação

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

Leia mais

Tarefa Orientada 13 Agrupamento e sumário de dados

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

Leia mais

SQL UMA ABORDAGEM INTERESSANTE

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

Leia mais

Definida pelo American National Standard Institute (ANSI) em 1986

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

Leia mais

Tarefa Orientada 15 Manipulação de dados

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

Leia mais

Tarefa Orientada 14 Subconsultas

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

Leia mais

António Rocha Nuno Melo e Castro

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

Leia mais

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

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

Leia mais

Structured Query Language (SQL)

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

Leia mais

Tarefa Orientada 16 Vistas

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

Leia mais

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

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

Leia mais

Prof.: Clayton Maciel Costa [email protected]

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br 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

Leia mais

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

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)

Leia mais

Bases de Dados 2005/2006. Aula 5

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.

Leia mais

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 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

Leia mais

SQL DML. Frederico D. Bortoloti [email protected]

SQL DML. Frederico D. Bortoloti freddb@ltc.ufes.br 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,

Leia mais

Programação SQL. Introdução

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:

Leia mais

SQL (Structured Query Language)

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...

Leia mais

Bases de Dados. DML Data Manipulation Language Parte 1

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)

Leia mais

Tarefa Orientada 10 Obter informação a partir de uma tabela

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

Leia mais

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

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

Leia mais

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 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

Leia mais

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. 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

Leia mais

Linguagem de Consulta Estruturada SQL- DML

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

Leia mais

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. 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

Leia mais

PROGRAMA. Objectivos Gerais :

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 :

Leia mais

Á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çõ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

Leia mais

DESENVOLVIMENTO DE SOFTWARE

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.

Leia mais

SQL Structured Query Language

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

Leia mais

DML - SELECT Agrupando Dados

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

Leia mais

Linguagem de Banco de Dados DML Exercícios

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

Leia mais

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

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,

Leia mais

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

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

Leia mais

Introdução às Bases de Dados

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

Leia mais

Banco de Dados. Prof. Antonio

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

Leia mais

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

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

Leia mais

Banco de Dados. Marcio de Carvalho Victorino www.dominandoti.eng.br. Exercícios SQL

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

Leia mais

Consultas SQL Parte II

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,

Leia mais

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

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

Leia mais

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

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

Leia mais

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 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

Leia mais

NOME SEXO CPF NASCIMENTO SALARIO

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

Leia mais

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) 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

Leia mais

BDII SQL Junção Revisão 8

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

Leia mais

Treinamento sobre SQL

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

Leia mais

SQL BANCO DE DADOS. Linguagem de consulta SQL. Linguagem de consulta SQL. Linguagem de Consulta Estruturada

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)

Leia mais

Projeto de Banco de Dados

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,

Leia mais

EXEMPLOS DE COMANDOS NO SQL SERVER

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;

Leia mais

SQL. Prof. Márcio Bueno. {bd2tarde,bd2noite}@marciobueno.com

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

Leia mais

Tarefa Orientada 11 Junção Interna

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

Leia mais

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si.

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

Leia mais

DESENVOLVIMENTO DE SOFTWARE

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.

Leia mais

Memória de aula Semanas 15 e 16

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

Leia mais

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 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

Leia mais

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

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

Leia mais

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 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

Leia mais

Linguagem de Consulta Estruturada (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

Leia mais

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. www.pedrofcarvalho.com.br contato@pedrofcarvalho.com.br 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

Leia mais

Consultas (Queries) ou Interrogações

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

Leia mais

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

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

Leia mais

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...

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

Leia mais

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) 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

Leia mais

1.264 Aula 7. Introdução ao SQL

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

Leia mais

FEAP - Faculdade de Estudos Avançados do Pará PROFª LENA VEIGA PROJETOS DE BANCO DE DADOS UNIDADE V- SQL

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

Leia mais

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.

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

Leia mais

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

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

Leia mais

Introdução ao SQL Avançado

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

Leia mais

LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS

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

Leia mais

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

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,

Leia mais

Linguagem de Consulta - SQL

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

Leia mais

EXERCÍCIOS PRÁTICOS. Banco de Dados

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:

Leia mais

Exercícios de Lógica Exercícios de Fixação 08

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

Leia mais

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. 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,

Leia mais

O que são Bancos de Dados?

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

Leia mais

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 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

Leia mais

Junções e Índices em Tabelas

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

Leia mais

Sistemas de Bases de Dados Relacionais Introdução ao SQL. Interrogações diversas sobre a Base de Dados Northwind

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

Leia mais

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. frozza@ifc-camboriu.edu.br 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

Leia mais

Query SQL (Structured Query Language)

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

Leia mais

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

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

Leia mais

SQL BÁSICO. Introdução. Prof. Suelane Garcia. Linguagem SQL (Structured Query Language)

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

Leia mais

Principais Instruções em SQL

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]

Leia mais

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

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]

Leia mais

Tarefa Orientada 19 Triggers

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

Leia mais

ANÁLISE E PROJETO DE BANCO DE DADOS

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

Leia mais

Linguagem SQL Sub-linguagem DDL

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

Leia mais

Principais Comandos SQL Usados no MySql

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)

Leia mais

MODELO DE DADOS VS ESQUEMA

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

Leia mais

S Q L 31/03/2010. SQL - Structured Query Language Linguagem de Consulta Estruturada

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,

Leia mais

Projeto e Implementação

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

Leia mais

4.6. SQL - Structured Query Language

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

Leia mais

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

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.

Leia mais

Memória de aula Aulas 11 e 12

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

Leia mais

Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. (http://bidu.lab.ic.unicamp.br/~celio/metasql.php)

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,

Leia mais

Microsoft Access. No Access, existem vários tipos de objectos: Tabelas. Consultas. Formulários Relatórios Macros Módulos

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

Leia mais

Operação de União JOIN

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

Leia mais