DOCUMENTO DE APOIO N.º 1

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

Download "DOCUMENTO DE APOIO N.º 1"

Transcrição

1 DOCUMENTO DE APOIO N.º 1 Tema: Structured Query Language (SQL) 1. O QUE É O SQL O SQL (Structured Query Language) é uma linguagem normalizada que serve para fazer consultas a Bases de Dados Relacionais (Relational Database). Características do SQL Implementa os conceitos definidos no Modelo Relacional. Com a linguagem SQL é possível: Criar, Alterar e Remover todas as componentes de uma Base de Dados (ex: tabelas); Inserir, Alterar e Apagar dados; Interrogar a Base de Dados; Controlar o acesso dos utilizadores à Base de Dados e as operações a que cada um deles pode ter acesso. Obter a garantia da consistência e integridade dos dados. A linguagem SQL tem duas vertentes: LDD Linguagem de Definição de Dados (DDL - Data Definition Language) LMD Linguagem de Manipulação de Dados (DML - Data Manipulation Language) 2. O SQL COMO LDD (LINGUAGEM DE DEFINIÇÃO DE DADOS O SQL como Linguagem de Definição de Dados (LDD) permite: Criar (CREATE), remover (DROP) e alterar (ALTER) tabelas Descrever restrições de integridade Registar e remover utilizadores Atribuir e retirar privilégios aos utilizadores. Criar Tabelas CREATE TABLE <nome-tabela> ( <definição de campos e restrições de integridade>) Exemplo: CREATE TABLE Empregado ( id INTEGER, nome CHAR (50), data_nasc DATE, salario NUMERIC (8, 2) ) Aluno: N.º: Turma: Pág. II / 1

2 Restrições de Integridade 1) Restrição NOT NULL especifica que um campo não admite valores nulos. 2) Restrição PRIMARY KEY Identifica o(s) campo(s) que constituem a chave primária. 3) Restrição UNIQUE Identifica um campo, ou um grupo de campos, como chave candidata, i.e., o seu valor não se repete na tabela. 4) Restrição CHECK restrições sobre valores de campos. 5) Restrições de integridade referencial: especificar na tabela referenciadora quais os atributos importados (chaves estrangeiras) e de que tabelas são importados (tabelas referenciadas). Exemplo definição da Tabela Funcionário: CREATE TABLE Funcionario ( cod_func INTEGER, Nome CHAR (50),... cod_dep CHAR (3), PRIMARY KEY (cod_func) FOREIGN KEY (cod_dep) REFERENCES Departamento (cod_dep) ON UPDATE CASCADE ON DELETE SET NULL) Alterar Tabelas Com ALTER TABLE é possível alterar-se as tabelas: adição de novas colunas ou restrições de integridade modificação das características de uma coluna eliminação de colunas ou restrições de integridade existentes. Exemplos: ou ALTER TABLE Funcionario ADD COLUMN nacionalidade CHAR (15) DEFAULT portuguesa ALTER TABLE Cliente DROP COLUMN nacionalidade Eliminar Tabelas A eliminação de uma tabela do esquema de uma Base de Dados é feita através do comando DROP TABLE. Exemplo: DROP TABLE Funcionario Pág. II / 2

3 3. O SQL COMO LMD (LINGUAGEM DE MANIPULAÇÃO DE DADOS SELECT (instrução para interrogação da base de dados) Select <campos> From <tabelas> Where <condições> Funções de Agregação Agrupamento (group by) Restrições sobre grupos (having) Ordenação (order by) INSERT, DELETE, UPDATE (para actualização da base de dados) Selecção (SELECT) Exemplo com SELECT - ( SELECT <colunas> FROM <tabelas> ) Tabela Cliente Num NIF Nome Telefone Morada Cidade Vendas Paula Av. AAA Lisboa Joana R. XPTO Coimbra Ana R. XXX Aveiro Pedro R. VVV Aveiro José R. SSS Porto Isabel R. BBB Porto Leonor R. SSS Lisboa ) Qual o nome, morada e telefone dos Clientes? (como seleccionava se a tabela estivesse impressa?) Exemplo com SELECT - Soluções em SQL: 1) SELECT Nome, Morada, Telefone FROM Cliente Resultado Final: Nome Morada Telefone Paula Av. AAA Joana R. XPTO Ana R. XXX Pedro R. VVV José R. SSS Isabel R. BBB Leonor R. SSS Aluno: N.º: Turma: Pág. II / 3

4 2) Qual o nome, telefone e morada dos clientes de Lisboa? Num NIF Nome Telefone Morada Cidade Vendas Paula Av. AAA Lisboa Joana R. XPTO Coimbra Ana R. XXX Aveiro Pedro R. VVV Aveiro José R. SSS Porto Isabel R. BBB Porto Leonor R. SSS Lisboa ) SELECT Nome, Telefone, Morada FROM Cliente WHERE Cidade = Lisboa Resultado Final: Nome Telefone Morada Paula Av. AAA Leonor R. SSS SELECT <colunas> FROM <tabelas> [ WHERE <condição> ] Uma condição é uma expressão que produz sempre um resultado do tipo boleano, isto é, TRUE ou FALSE (verdadeiro ou falso); Cada condição tem como finalidade filtrar os registos que se pretendem calcular, i.e., para cada linha da tabela a condição é avaliada e caso seja verdadeira o registo é seleccionado. Construção de condições com operadores relacionais ou lógicos Utilizam-se operadores relacionais e/ou lógicos para impor e combinar restrições de selecção; o resultado é sempre o valor lógico TRUE ou FALSE. Operadores Relacionais <Campo> vs <Valor> ( =, >, <, >=, <=, <> ) Operadores Lógicos para combinar restrições ( AND, OR, NOT ) Precedência dos Operadores - parêntesis, multiplicação e divisão, adição e subtracção, NOT, AND, OR. Pág. II / 4

5 Construção de condições com outros operadores (BETWEEN, IN, IS, AS) BETWEEN para verificar a pertença ou não a um intervalo de valores Exemplo: Qual o nome e número dos Clientes cujas Vendas estão compreendidas entre e 30000? Solução sem operador Between: SELECT Num, Nome FROM Cliente WHERE Vendas >= AND Vendas <= Solução com operador BETWEEN: SELECT Num, Nome FROM Cliente WHERE Vendas BETWEEN AND IN para verificar a pertença ou não a um conjunto de valores Exemplo: Qual o nome, morada e contacto dos clientes das cidades de Lisboa e Coimbra? Solução sem operador IN: SELECT Nome, Morada, Telefone FROM Cliente WHERE Cidade = "Lisboa" OR Cidade = "Coimbra Solução com operador IN SELECT Nome, Morada, Telefone FROM Cliente WHERE Cidade IN ("Lisboa","Coimbra") IS permite fazer comparações com o valor NULL (vazio) Exemplo: Qual o nome, morada e contacto dos clientes que possuam morada definida? SELECT Nome, Morada, Telefone FROM Cliente WHERE Morada IS NOT NULL Aluno: N.º: Turma: Pág. II / 5

6 Exemplo com os três operadores: Qual o nome, morada e contacto dos clientes cujas Vendas estão compreendidas entre e 30000, que são da cidade de Lisboa e Porto e que possuem morada definida? SELECT Nome, Morada, Telefone FROM Cliente WHERE (Vendas BETWEEN AND 30000) AND (Cidade IN ("Lisboa", "Porto")) AND (Morada IS NOT NULL) AS permite atribuir um novo nome a um campo ou a uma tabela Exemplo: Qual o nome dos clientes que possuam morada definida? SELECT C.Nome AS Nome do Cliente FROM Cliente AS C WHERE C.Morada IS NOT NULL Funções de Agregação (COUNT, MAX, MIN, SUM, AVG) Para cálculos sobre o resultado de um SELECT: COUNT - devolve o número de linhas MAX (coluna) - devolve o maior valor da coluna MIN (coluna) - devolve o menor valor da coluna SUM (coluna) - devolve a soma de todos os valores da coluna AVG (coluna) - devolve a média (AVeraGe) de todos os valores da coluna As funções Min, Max, Count ( ) e Count (*) podem ser utilizadas com qualquer tipo de dados (numéricos, alfanuméricos) As funções SUM e AVG apenas se aplicam a campos numéricos. Para SELECCIONAR e CALCULAR SELECT <f_agregacao> FROM <tabelas> [WHERE <condicao>] <f_agregacao>-função a aplicar ao resultado da selecção <condicao> - condição de selecção dos elementos sobre os quais será aplicada a função de cálculo NOTA: quando se utilizam funções de agregação não se podem seleccionar campos dos registos (excepto com o GROUP BY) Pág. II / 6

7 Exemplo 1: Qual o número de clientes da empresa? SELECT Count (*) FROM Cliente Exemplo 2: Qual menor venda a um cliente de Lisboa? SELECT Min (Vendas) FROM Cliente WHERE Cidade= Lisboa Exemplo 3: Qual o número de cidades? SELECT DISTINCT Count (Cidade) FROM Cliente Repare-se que: COUNT (*) devolve o número de linhas que resulta de um SELECT COUNT (Coluna) devolve nº de ocorrências numa coluna diferentes de NULL COUNT (DISTINCT Coluna) devolve o nº de ocorrências (sem repetições) na coluna Agrupamentos (GROUP BY) Para Agrupar SELECT <colunas> FROM <tabelas> WHERE <condicao>] [GROUP BY <Campo1, Campo2, >] Quando se pretende passar a ter agrupamentos. Perde-se a identidade individual em favor da categorização. Os elementos do SELECT não podem referir características de elementos individuais mas de grupo, que poderão ser: cálculos referentes aos grupos, ou propriedades identificadoras de cada grupo. A condição de WHERE aplica-se a cada elemento do grupo O agrupamento efectua-se com base nos atributos escritos na cláusula GROUP BY. As funções de Agregação executam cálculos autónomos dentro de cada grupo especificado pelo GROUP BY. Aluno: N.º: Turma: Pág. II / 7

8 Uma coluna que não seja uma função de agregação só pode estar na cláusula SELECT se estiver na cláusula GROUP BY. Exemplo: SELECT Departamento.DesigDep, Min (Empregado.SalarioBase) AS Minimo FROM Empregado, Departamento WHERE (Empregado.CodDep)= Departamento.CodigoDep GROUP BY Departamento.DesigDep Considere-se o seguinte exemplo: Departamento (CodDep, DesigDep) Categoria (CodCat, DesigCategoria,...) Empregado (CodEmp, Nome, CodCat, CodDep, SalárioBase) Perguntas: 1) Qual o número de funcionários por departamento? 2) Qual o montante de salários por departamento? 3) Qual a média salarial por categoria profissional? 4) Qual o salário mínimo praticado em cada Departamento para cada Categoria? As respostas implicam AGRUPAR e CALCULAR para isso iremos utilizar a cláusula GROUP BY 1) Qual o número de funcionários por departamento? SELECT Departamento.DesigDep, Count (*) FROM Empregado, Departamento WHERE Empregado.CodDep= Departamento.CodDep GROUP BY Departamento.DesDep Uma alternativa (qual a diferença?) SELECT CodDep, Count (*) FROM Empregado GROUP BY CodDep Pretendia-se listagem: Departamento, Número de Empregados Departamento: Atributo de Agrupamento (DesigDep) Número Empregados: Função Count Pág. II / 8

9 2) Qual o montante de salários por Departamento? Pretende-se: Departamento, Montante Salarial Departamento: Atributo de Agrupamento (DesDep) Montante Salarial: Função SUM SELECT Departamento.DesigDep, Sum (Empregado.SalarioBase) AS Total FROM Empregado, Departamento WHERE Empregado.CodDep= Departamento.CodDep GROUP BY Departamento.DesigDep Uma alternativa (qual a diferença?) SELECT CodDep, Sum (SalarioBase) AS Total FROM Empregado GROUP BY CodDep 3) Qual a média salarial por Categoria Profissional? Pretende-se: Categoria, Média Salarial Categoria: Atributo de Agrupamento (CodCat ) Média Salarial: Função AVG SELECT Categoria.CodCat, Avg (Empregado.SalarioBase) AS MediaSalario FROM Categoria, Empregado WHERE Empregado.CodCat= Categoria.CodCat GROUP BY Categoria.CodCat 4) Qual o salário mínimo praticado em cada Departamento para cada Categoria? Pretende-se: Departamento, Categoria,Salário Min. Departamento e Categoria: Atributos de Agrupamento (DesigDep e CodCat) Salário Mínimo: Função MIN SELECT Categoria.CodCat, Min (Empregado.SalarioBase) AS SalarioMinimo, Departamento.DesigDep FROM Empregado, Categoria, Departamento WHERE (Empregado.CodCat=Categoria.codcat) and (Empregado.CodDep=Departamento.CodDep) GROUP BY Categoria.CodCat, Departamento.DesDep outra solução: Pretende-se: Departamento, Categoria, Salário Min. Departamento e Categoria: Atributos de Agrupamento (cod_dep e cod_cat) Salário Mínimo: Função MIN SELECT CodDep, CodCat, MIN (SalarioBase) FROM Empregado GROUP BY CodDep, CodCat Aluno: N.º: Turma: Pág. II / 9

10 Restrições sobre os Agrupamentos (HAVING) Qual o salário mínimo praticado em cada Departamento cuja média salarial é superior a ? Pretende-se: Departamento, Salário Min Departamento: Atributo de Agrupamento (CodDep) Salário Mínimo: Função MIN Restrição: A média salarial do GRUPO > SELECT Departamento.coddep, MIN (SalarioBase) AS Minimo FROM Empregado, Departamento WHERE Empregado.coddep= Departamento.coddep GROUP BY Departamento.coddep HAVING AVG (SalarioBase)> Ou SELECT CodDep, MIN (SalarioBase) AS Minimo FROM Empregado GROUP BY CodDep HAVING AVG (SalarioBase)> Qual o número de trabalhadores por departamento cujo salário é superior a , onde a média salarial desses trabalhadores é superior ou igual a ? Eliminam-se os empregados com salário inferior ou igual a WHERE SalarioBase > Agrupam-se os funcionários seleccionados por departamento GROUP BY CodDep Calcula-se a Média (com AVG) desses funcionários por departamento e seleccionam-se os departamentos cuja média é >= HAVING AVG (SalarioBase) >= Contam-se os empregados seleccionados para esse grupo SELECT COUNT (*), CodDep Pretende-se: Departamento, NºTrabalhadores - Departamento: Atributo de Agrupamento (cod_dep) - NºTrabalhadores: Função COUNT Restrições: - Salário individual > A média salarial do GRUPO >= SELECT CodigoDep, COUNT(*) FROM Empregado WHERE Empregado.SalarioBase > GROUP BY CodDep HAVING AVG(SalarioBase)>= Pág. II / 10

11 A cláusula WHERE tem como finalidade seleccionar registos WHERE ou HAVING? A cláusula HAVING tem como finalidade seleccionar grupos que obedeçam a determinadas características de grupo A cláusula WHERE nunca contém funções de agregação A cláusula HAVING deve sempre conter funções de agregação A cláusula WHERE tem prioridade em relação à cláusula HAVING Ordenação (ORDER BY) Seleccionar todos os Empregados, ordenando o resultado pelo código de empregado. Utiliza-se comando SELECT com cláusula ORDER BY: SELECT * FROM Empregado ORDER BY CodEmp SELECT [DISTINCT] coluna, * FROM tabela [WHERE condição] [GROUP BY...] [HAVING...] [ORDER BY coluna [ASC DESC],...] A ordenação baseia-se no código ASCII de cada caracter. Os dígitos aparecem antes dos caracteres alfabéticos e as maiúsculas aparecem antes das minúsculas. 0 < 1< < 9 < < A < B < Z < < a < b < < z Por defeito a ordenação é Ascendente. Aluno: N.º: Turma: Pág. II / 11

12 Actualização da Base de Dados (INSERT, UPDATE, DELETE) Comando INSERT permite fazer inserções de registos na BD INSERT INTO <tabela> [(<colunas>)] VALUES (<valores>) Comando UPDATE permite fazer alterações de registos na BD UPADTE <tabela> SET <coluna> = <expressão>, = [WHERE <condição>] Comando DELETE permite apagar registos da BD DELETE FROM <tabela> [WHERE <condição>] Pág. II / 12

13 DOCUMENTO DE APOIO N.º 2 Tema: Microsoft Access e SQL 1. RECORDANDO O ACCESS Antes de iniciar a Parte II verifique se concluiu a Parte I com os seguintes dados nas tabelas Mercadoria, Entidade, Representante e Movimento. Para tal necessita de abrir o ficheiro de trabalho que criou anteriormente ARCOTEC.mdb. MERCADORIA código designação largura descrição cor peso m2 PLV2001 Pura Lã Virgem 2.10 Serra da Estrela Cinza 1900 SC105 Seda Chinesa 2.00 Padrão Possec Azul 550 L1021 Linho 2.50 Linho Fino Castanho 2100 ENTIDADE código interno nif sede designação social Guimarães Corte & Costura Braga Dedal Porto Comércio Internacional de Tecidos Bragança Lãs & Linho REPRESENTANTE IDrepresentante nome cargo telefone código interno 1 Joaquim vendedor Pedro vendedor José vendedor Avelino vendedor Aluno: N.º: Turma: Pág. II / 13

14 MOVIMENTO IDmovimento código código data preço quantidade tipo interno movimento 1 PLV /12/ Aquisição 2 SC /12/ Aquisição 3 PLV /12/ Venda 4 SC /12/ Venda 5 L /12/ Aquisição 6 SC /1/ Venda 7 L /1/ Venda 8 L /1/ Venda 9 L /1/ Aquisição 10 PLV /1/ Venda 11 PLV /1/ Venda TIPOS DE CONSULTAS Anteriormente criou alguns mecanismos de consulta dos dados contidos na base de dados. Os referidos mecanismos designam-se por consultas (queries). Refira-se porém, que existem diversos tipos de consultas com finalidades distintas, embora todas elas tenham como função seleccionar um conjunto de registos da Base de Dados mediante os critérios necessários para responder à questão em causa. Assim, qualquer consulta permite: o seleccionar um conjunto de atributos (ou colunas) de uma ou várias tabelas; o filtrar a informação através de um conjunto de condições; o criar novos campos calculados; o e efectuar operações estatísticas com os dados. Contudo anteriormente a nossa atenção apenas incidiu sobre a criação de Consultas de Selecção (Select Query), tendo agora o objectivo de apresentar e explicar a necessidade de cada um dos restantes tipos, designados por Consultas de Acção (Action Query): Consulta para Criação de uma Tabela ( Make Table Query ) Consulta de Actualização de dados ( Update Query ) Consulta para Adicionar Registos ( Append Query ) Consulta para eliminar Registos ( Delete Query ) Seguidamente este documento de apoio contemplará um mecanismo de interacção da consulta com o utilizador, para que cada vez que é executada o possa ser com parâmetros (valores atribuídos aos critérios de selecção) distintos: Consulta Parametrizada. Para finalizar far-se-á a relação entre o desenvolvimento de Consultas em Vista de Estrutura (Design View) e em Vista de SQL (SQL View), com a resolução de alguns exercícios práticos. Pág. II / 14

15 2. IMPLEMENTAÇÃO EM ACCESS CRIAR UMA CONSULTA DE ACÇÃO As consultas (queries) têm em comum o facto de potenciarem a selecção de registos das tabelas da base de dados, em função de critérios estabelecidos, porém diferem na finalidade atribuída à selecção realizada. Enquanto que as Consultas de Selecção têm como finalidade a exibição/consulta da informação seleccionada, as Consultas de Acção permitem a alteração e movimentação de dados nas tabelas em função dos registos seleccionados. Assim: Consulta Criar Tabela ( Make Table Query ) cria uma nova tabela na base de dados com o resultado da extracção de informação realizada; Consulta Actualização ( Update Query ) permite a actualização dos valores dos campos dos registos das tabelas; Consulta Acrescentar ( Append Query ) adiciona os registos obtidos a uma outra tabela cujos registos têm estrutura semelhante; Consulta Eliminar ( Delete Query ) permite apagar os registos seleccionados de uma tabela. A criação de uma Consulta de Acção divide-se em dois passos: 1. Definir o critério de selecção dos registos da base de dados procedimento semelhante a todos os tipos de consultas. Esta fase é realizada na grelha de construção da consulta. 2. Definir o tipo de acção a concretizar com os registos seleccionados: criar uma nova tabela, actualizar dados, adicionar registos ou apagar registos. Este passo é realizado com recurso às respectivas opções de menu, disponíveis no agrupamento Consulta, só visível quando se está perante a grelha representativa do corpo da consulta. Aluno: N.º: Turma: Pág. II / 15

16 CRIAR UMA TABELA A PARTIR DE UMA CONSULTA Criar uma tabela a partir de uma Consulta Consulta Criar Tabela (Make-Table Query) A tabela Movimento contém o acumulado dos movimentos desde que o sistema de informação foi concebido (Dezembro de 1999). Por uma questão de organização pretende-se que os movimentos de 1999 constem de uma tabela designada por Movimento 99, pois assim criar-se-á uma tabela arquivo com os movimentos de cada ano. Pretende-se então: Seleccionar os registos do ano de 1999 Criar uma tabela designada por Movimento 99 com os respectivos registos A solução será baseada na criação de uma Consulta de Criar Tabela (Make-Table Query). Recordando os dois passos para a criação da Consulta: I. Definir o critério de selecção dos registos da base de dados I.1. Para criar a Consulta seleccione o modo Criar Nova Consulta em Vista de Estrutura (Create Query in Design View). Como os registos a seleccionar da base de dados, provêm da tabela Movimento, adicione-a quando aparecer a respectiva janela. I.2. Seleccione para a linha de Campo (Field) todos os campos da tabela Movimento Para seleccionar todos os campos de uma vez, faça um duplo clique na barra de nome da tabela Movimento. Todos os campos ficaram seleccionados, coloque agora o cursor sobre essa zona e arraste-a para a linha Campo. I.3. Para o campo data escreva como critério Ano([data])=1999 I.4. Se executar a Consulta verificará que selecciona os registos referentes aos movimentos do ano de Para executar a consulta deverá inserir o nome respectivo Movimentos do ano de 1999 (neste momento está perante uma Consulta de Selecção dado que a está a usar com a finalidade de consultar os registos seleccionados no sentido de verificar se o critério está bem definido). Pág. II / 16

17 II. Definir o tipo de acção a concretizar com os registos seleccionados II.1. Se estiver a visualizar o resultado da consulta Movimentos do ano de 1999, volte ao modo de Vista de Estrutura, carregando no botão Vista de Estrutura (Design View). II.2. Clique no botão Consulta Criar Tabela (Make Table Query ) ou seleccione no menu Consulta a opção Consulta Criar Tabela (Make-Table Query). Aparece um diálogo com a solicitar a definição das propriedades da Consulta. II.3. Em Nome da Tabela (Table Name) escreva Movimento 99 (Nome da nova tabela a criar) II.4. Active a opção Base de Dados Actual (Current Database), uma vez que vamos usar uma tabela da base de dados ARCOTEC Clique no botão OK. II.5. Clique no botão Executar (Run) para executar a Consulta ou seleccione Consulta Executar. Aparece uma mensagem que indica a criação de uma nova tabela com 5 registos. II.6. Clique no botão Sim. II.7. Feche a Consulta, para isso pode utilizar a opção do menu Ficheiro/Fechar gravando as alterações realizadas. II.8. Verifique que foi criada uma nova tabela: Movimento 99, apenas com os movimentos que a empresa ARCOTEC realizou durante o ano de Atenção: a consulta que terminou de criar irá criar uma tabela com o nome Movimento 99, sempre que for executada. Assim, verificará que ao executar a consulta pela segunda vez, se a tabela Movimento 99 ainda constar da base de dados, aparecerá uma mensagem de erro com a indicação de que a tabela já existe e para que a execução da consulta possa prosseguir é necessário removê-la. Aluno: N.º: Turma: Pág. II / 17

18 APAGAR REGISTOS A PARTIR DE UMA CONSULTA Apagar registos a partir de uma Consulta Consulta Eliminar (Delete Query) Uma vez que os movimentos referentes ao ano de 1999 já estão armazenados numa tabela independente, como se fora um arquivo independente de registos antigos, a ARCOTEC decide que, e para evitar repetição de dados, na tabela Movimento apenas deverão constar os registos do ano Pretende-se então apagar os registos referentes a 1999 da tabela Movimento, para isso deverá: Seleccionar os registos do ano de 1999 Criar uma acção que elimine da tabela os respectivos registos A solução será baseada na criação de uma Consulta para Eliminar (Delete Query). Recordando os dois passos para a criação da Consulta de Acção: I. Definir o critério de selecção dos registos da base de dados I.1. Para criar a Consulta seleccione o modo Criar Nova Consulta em Vista de Estrutura (Create Query in Design View). Como os registos a seleccionar da base de dados, provêm da tabela Movimento, adicione-a quando aparecer a respectiva janela. I.2. Seleccione para a linha de Campo (Field) todos os campos da tabela Movimento I.3. Para o campo data escreva como critério Ano([data])=1999 I.4. Se executar a Consulta verificará que selecciona os registos referentes aos movimentos do ano de Para executar a consulta deverá inserir o nome Remoção dos Movimentos de 1999 (neste momento está perante uma Consulta de Selecção (Select Query) dado que a está a usar com a finalidade de consultar os registos seleccionados no sentido de verificar se o critério está bem definido). Pág. II / 18

19 II. Definir o tipo de acção a concretizar com os registos seleccionados II.1. Se estiver a visualizar o resultado da consulta Remoção dos Movimentos de 1999, volte ao modo de Vista de Estrutura, carregando no botão Vista de Estrutura (Design View). II.2. Clique no botão Consulta Eliminar (Delete Query) ou seleccione no Menu Consulta a opção Consulta Eliminar (Delete Query). Verifique que aparece uma nova linha Eliminar (Delete). II.3. Execute a Consulta. Aparece uma mensagem que indica irão ser apagados 5 registos correspondentes aos movimentos de 1999 da tabela Movimento. II.4. Clique em Sim para confirmar. II.5. Grave e feche a Consulta. Verifique que na tabela Movimento não existe nenhum registo pertencente ao ano de As Consultar para Eliminar (Delete Queries) têm como objectivo apagar um conjunto de registos de uma ou mais tabelas. Note que após executar a Consulta para Eliminar (Delete Query) não será possível recuperar os registos apagados. E se existirem tabelas relacionadas, com a restrição de integridade seleccionada com a opção Propagar eliminação dos registos relacionados (Delete Cascade Related Records) serão apagados também os registos associados nessas tabelas, sem existir a possibilidade de retorno à situação anterior (Anular). Ponto da Situação: neste momento a tabela Movimento contém somente as operações ocorridas no ano de 2000, todos os movimentos anteriores, neste caso de 1999, encontram-se na tabela Movimento 99. Possuímos ainda duas consultas de acção que utilizamos para a realização desta movimentação de registos, assim: A consulta Movimentos do ano de 1999 criou uma tabela-arquivo com os registos referentes ao ano de A consulta Remoção dos Movimentos de 1999 eliminou os registos de 1999 da tabela Movimento Aluno: N.º: Turma: Pág. II / 19

20 ADICIONAR REGISTOS A PARTIR DE UMA CONSULTA Adicionar registos a partir de uma Consulta Consulta Acrescentar (Append Query) Suponha que a ARCOTEC se arrepende da divisão dos movimentos em tabelas separadas. Como faria para retornar à situação inicial, i.e., a tabela Movimento conter todos os registos de 1999 e 2000? Pretende-se então: Seleccionar os registos do ano de 1999 que estão inseridos na tabela Movimento 99 Criar uma acção que adicione estes registos à tabela Movimento Apagar a tabela Movimento 99 A solução será baseada na criação de uma Consulta para Acrescentar (Append Query). Recordando os dois passos para a criação da Consulta de Acção: I. Definir o critério de selecção dos registos da base de dados I.1. Crie uma Consulta através do modo Criar Nova Consulta em Vista de Estrutura (Create Query in Design View). Como os registos a seleccionar da base de dados para transferir para a tabela Movimento provêm da tabela Movimento 99, adicione-a quando aparecer a respectiva janela. I.2. Seleccione para a linha de Campo (Field) todos os campos da tabela Movimento 99 I.3. Como se pretendem seleccionar todos os registos da tabela não há necessidade de criar qualquer critério de selecção. I.4. Se executar a Consulta verificará que selecciona os registos referentes aos movimentos do ano de Para executar a consulta deverá inserir o nome Transferência de Movimentos de 99. Pág. II / 20

21 II. Definir o tipo de acção a concretizar com os registos seleccionados II.1. Se estiver a visualizar o resultado da consulta Transferência de Movimentos de 99, volte ao modo de Vista de Estrutura, carregando no botão Vista de Estrutura (Design View). II.2. Clique no botão Consulta Acrescentar (Append Query) ou seleccione no Menu Consulta a opção Consulta Acrescentar (Append Query). Aparece a janela Acrescentar (Append).. II.3. Em Nome da Tabela (Table Name) escreva o nome da tabela para onde vão ser transferidos os registos da tabela Movimento 99 : Movimento. Poderá recorrer à Caixa de Combinação (Combo Box) para seleccionar o nome da tabela. II.4. Certifique-se que a opção Base de Dados Actual (Current Database) se encontra activa, pois só assim estará a indicar que a tabela para a qual vai transferir os registos pertence à base de dados em que se encontra a trabalhar. Aparece uma nova linha Acrescentar a (Append To): II.5. Clique no botão OK II.6. Execute a Consulta. Aparece uma mensagem a indicar que serão adicionados cinco registos à tabela Movimento. II.7. Clique em Sim para confirmar. II.8. Grave e feche a consulta. Verifique que a tabela Movimento tem os registos que possuía inicialmente, i.e., os correspondentes ao ano de 1999 e ao ano de As Consultas para Acrescentar (Append Queries) sempre que executadas adicionam os registos de uma tabela a uma outra. Se experimentar executar esta Consulta duas vezes verá que o Access não o permitirá devido a uma das regras de Integridade Referencial, sabe a qual? E porquê? Para eliminar a tabela Movimento 99 deverá seleccioná-la no Item das Tabelas (Tables) e activar a opção Eliminar (Delete) ou então simplesmente clicar na tecla Delete. Aluno: N.º: Turma: Pág. II / 21

22 MODIFICAR REGISTOS A PARTIR DE UMA CONSULTA Modificar registos a partir de uma Consulta Consulta Actualizar (Update Query) Foi detectado um problema com o nono movimento. O preço deveria ser em vez dos e a quantia em vez dos registados. Pretende-se então: Seleccionar o registo referente ao movimento número 9 Criar uma acção que altere o registo segundo o que foi proposto A solução será baseada na criação de uma Consulta para Actualizar (Update Query). Recordando os dois passos para a criação da Consulta de Acção: I. Definir o critério de selecção dos registos da base de dados I.1. Crie uma Consulta através do modo Criar Nova Consulta em Vista de Estrutura (Create Query in Design View). Como o registo a alterar está na tabela Movimento é esta que deverá ser seleccionada. I.2. Seleccione para a linha de Campo (Field) todos os campos da tabela Movimento I.3. Como se pretende seleccionar o registo número 9, na linha Critério (Criteria) da coluna IDMovimento deverá escrever =9 I.4. Se executar a Consulta verificará que selecciona somente o registo 9. Para executar a consulta deverá inserir o nome Alteração do Movimento 9. Pág. II / 22

23 II. Definir o tipo de acção a concretizar com o registo seleccionado II.1. Se estiver a visualizar o resultado da consulta Alteração do Movimento 9, volte ao modo de Vista de Estrutura, carregando no botão Vista de Estrutura (Design View). II.2. Carregue no botão Consulta Actualizar (Update Query) ou seleccione no Menu Consulta a opção Consulta Actualizar (Update Query). Aparece a linha Actualizar para: (Update To:). II.3. Na coluna preço, linha Actualizar para (Update to) coloque o preço que se pretende inserir: II.4. Na coluna quantidade, linha Actualizar para (Update to) coloque II.5. Execute a Consulta. Aparece uma mensagem a indicar que irá ser alterado um registo. II.6. Clique em Sim para confirmar. Verifique que o registo número 9 da tabela Movimento regista a alteração provocada. Aluno: N.º: Turma: Pág. II / 23

24 CRIAR UMA CONSULTA COM PARÂMETROS Criar uma Consulta com parâmetros É necessário criar uma funcionalidade que permita consultar a qualquer momento toda a informação (propriedades) constante sobre determinada mercadoria. A indicação da mercadoria que se pretende consultar é realizada no momento da pesquisa. Pretende-se então: Criar uma Consulta de Selecção (Select Query) que permita consultar a informação sobre uma única mercadoria A indicação do código da mercadoria a consultar é inserido de cada vez que se executa a consulta Uma hipótese de solução poderá ser criar uma consulta de selecção (select query) com um critério de selecção baseado no código, em que sempre que se pretenda executar a consulta altera-se o valor do critério na Vista de Estrutura (Design View). Esta solução é pouco prática e funcional, pois obrigaria a que qualquer funcionário que pretendesse trabalhar com a aplicação tivesse conhecimentos de Access para poder fazer as alterações correctas e necessárias. O ideal será solicitar ao utilizador o código da mercadoria a consultar sempre que realize a consulta, para isso devemos utilizar as consultas com parâmetros. 1. Crie uma nova consulta com a tabela Mercadoria, de onde pretende extrair a informação. Coloque na linha Campo (Field) todos os campos da tabela. 2. O critério de selecção do registo é feito com base no código da mercadoria, então na coluna respectiva na linha Critério Criteria escreva... se escrever um código a consulta ficará estática (não se pretende estaticidade mas uma solução dinâmica), então escreva entre [ ] (parêntesis rectos) uma pergunta que queira fazer ao utilizador para que ele possa introduzir o código da mercadoria sempre que executar a Consulta. Por exemplo: [Qual o código do mercadoria que pretende visualizar?]. 3. Execute a Consulta. 4. Repare que a pergunta que inseriu como critério de selecção aparece com a hipótese de introduzir o código que pretender dentro de uma caixa de texto. Responda à pergunta com um código de uma mercadoria que exista. 5. Feche a janela. Grave a Consulta com o nome Consulta Parametrizada de Mercadoria Na realidade, a questão que insere no critério de uma Consulta Parametrizada, funciona como se fosse um parâmetro/variável à qual pode ser atribuído um valor de cada vez que a Consulta é executada. Pág. II / 24

25 VISITA AO SQL Visita ao SQL 1. Seleccione a Consulta Peso Tecido. Clique no botão Ver. Aparece a definição da Consulta. 2. Clique agora no botão Vista de SQL (SQL View) ou seleccione no menu Ver (View) a opção Vista de SQL (SQL View). Aparece uma janela de texto da Consulta em SQL. Realmente é isto que constitui a definição da Consulta. 3. O SQL é uma linguagem normalizada de definição de Consultas (Queries). A generalidade dos Sistemas de Gestão de Bases de Dados Relacionais usa o SQL como linguagem de Consultas. 4. Como linguagem normalizada o SQL, em principio, deveria ser exactamente igual em todos os Sistemas de Gestão de Bases de Dados Relacionais. Mas não é assim. Muitos programas usam variantes do standard com algumas coisas a mais, outras a menos e outras diferentes. É o caso do Access. 5. Acontece que escrever as Consultas (Queries) em texto SQL é aborrecido. Por isso o Access tem a Vista de Estrutura que permite a definição de Queries de uma forma visual e mais apelativa para o utilizador. O Access traduz a definição indicada na Vista de Estrutura para o SQL correspondente. Neste caso temos o seguinte texto SQL que corresponde a dizer que: SELECT Mercadoria.[designação], Mercadoria.[largura], Mercadoria.[peso m2] FROM Mercadoria; Seleccionar os campos designação largura peso m2 Da tabela Mercadoria 6. Feche a janela. Criar uma Consulta em SQL 1. Crie uma Consulta em modo de desenho. 2. Feche a janela que solicita a adição de tabelas à Consulta sem adicionar qualquer uma. 3. Mude a visualização para Vista de SQL (SQL View). Poderá fazê-lo na opção Ver (View) do menu ou alternativamente no respectivo botão da barra de botões. 4. Confrontar-se-á com uma janela de edição de texto onde poderá ler: SELECT. Esta é a estrutura base do comando SQL que formula uma Consulta, i.e., começa com a palavra SELECT e termina com ; entre estes dois elementos poderá completar o corpo da Consulta respectiva. 5. Supondo que se pretende consultar a informação sobre todas as mercadorias da empresa escreverse-ia: SELECT Mercadoria.* FROM Mercadoria; 6. Se mudar o modo de visualização para avista de Estrutura (Design View), poderá verificar que a tabela Mercadoria foi adicionada à Consulta e que na linha Campo (Field) aparece a referência a todos os campos da tabela. Aluno: N.º: Turma: Pág. II / 25

26 É possível fazer uma consulta em modo de desenho ou em modo SQL, ou até fazê-la em modo desenho e alterá-la em modo SQL ou vice-versa. Os modos de visualização exibem a mesma informação mas com uma estrutura diferente. Mercadoria.* - representa todos os campos da tabela Mercadoria. É equivalente a escrever o nome de todos os campos da tabela. [ ] parêntesis rectos são utilizados no Access exclusivamente para delimitar o nome de campos das tabelas. São estritamente necessários quando o nome do campo contém espaços, caso contrário o Access pode interpretar como o nome de vários campos. 3. EXERCÍCIOS Recorde o Modelo relacional: MERCADORIA (código, designação, largura, descrição, cor, peso m2) ENTIDADE (código interno, nif, sede, designação social) MOVIMENTO (IDmovimento, código, código interno, data, quantidade, preço, tipo movimento) 1 REPRESENTANTE (IDrepresentante, nome, telefone, cargo, código interno) Resolva em SQL as questões seguintes: 1. Qual o peso da mercadoria Pura Lã Virgem (código = PLV2001 )? 2. Quais as mercadorias que a empresa possui? 3. Quais as entidades com que a empresa estabelece contactos? 4. Quais as entidades que estão localizadas fora do Porto? (Exibir código interno, designação social e sede) 5. Qual o nome do representante de cada entidade? Deverá ser exibida a respectiva designação social. 6. Quais as entidades que são clientes da empresa? (Exibir código interno e designação social) 7. Quais as entidades que são fornecedoras da empresa? (Exibir código interno e designação social) 8. Qual o montante transaccionado (sem IVA) nos meses de Janeiro e Fevereiro de 2005? (compras + vendas) 9. Qual o volume de transacções dos clientes do Porto? 10. Qual a maior transacção por tipo de mercadoria? 11. Qual o nosso maior parceiro comercial (em quantidade)? 1 A utilização do ID é uma forma utilizada para colmatar algumas imprecisões da transposição do modelo de classes para o relacional. Senão vejamos, a não utilização do ID impossibilitava que o binómio codigo da mercadoria e codigointerno da entidade se repetissem impossibilitando a existência de mais que uma transacção comercial com uma entidade para a mesma mercadoria. Como esta realidade vai contra a natureza da relação de muitos-para-muitos estabelecida no diagrama de classes a utilização de um ID como chave vai suprir a limitação detectada. Pág. II / 26

27 ANEXO Tipos de critério Escrever na Consulta Significado >= Lisboa desde a palavra Lisboa até ao fim do alfabeto Between And data entre e Lisboa Or Porto Lisboa ou Porto <= data igual ou anterior a [L-P]* palavras começadas por L, M, N, O ou P not Lisboa* não contem a palavra Lisboa?R* palavras com segunda letra R Null campos vazios Not Null campos não vazios >date()-7 datas entre a actual e os sete dias anteriores */*/96 datas de 1996 Year([dia])=1990 o ano da data do campo dia tem que ser 1990 Month([dia])=7 o mês da data do campo dia tem que ser 7 Cálculo de Totais Tipo de Operador Sum Avg Min Max Count StDev Var First Last Significado Somatório Média menor valor maior valor quantidade de registos em que o campo não é vazio desvio padrão Variância valor do campo do primeiro registo da tabela valor do campo do último registo da tabela Aluno: N.º: Turma: Pág. II / 27

28 Tipos de ligação (Join). Inner-join Produto Cartesiano, em que apenas são seleccionados tuplos nos quais os valores dos atributos comuns são idênticos. Normalmente o atributo comum não é repetido. A Expressão: SELECT REPRESENTANTE.nome, ENTIDADE.[designação social] FROM ENTIDADE INNER JOIN REPRESENTANTE ON ENTIDADE.[codigo interno]=representante.[codigo interno]; É equivalente a: SELECT REPRESENTANTE.nome, ENTIDADE.[designação social] FROM ENTIDADE, REPRESENTANTE WHERE ENTIDADE.[codigo interno]=representante.[codigo interno];. Equi-join só são mostrados os campos de uma tabela que tiverem correspondência na outra tabela (opção 1 da janela Join Properties);. Outer join são mostrados os campos de uma tabela mesmo que não tenham correspondência na outra tabela (opção 2 ou 3 da janela Join Properties);. Self-join processo de relacionar uma tabela consigo mesma através de dois campos com informação da mesma natureza. Pág. II / 28

29 FICHA DE TRABALHO N.º 1 Tema: Structured Query Language (SQL) Considere o seguinte esquema relacional e responda às questões apresentando o respectivo SQL 2 : CLIENTE (cod_cliente, nome, profissao, localidade) AGENCIA (cod_agencia, designacao, localidade) CONTA (num_conta, tipo_conta, cod_cliente, cod_agencia, saldo) EMPRESTIMO (num_emprestimo, cod_cliente, cod_agencia, valor) 1. Quais os clientes (cod_cliente, nome e localidade) deste Banco? 2. Quais os clientes (cod_cliente e nome) que residem em Braga? 3. Quais os clientes (cod_cliente e nome) com contas na agência cod_agencia = 123? 4. Quais os clientes que residem em localidades onde existem agências? 5. Quais os clientes que residem na mesma localidade das agências onde possuem contas? 6. Quais os clientes com empréstimos de valor superior a Quais os nomes dos clientes com a mesma profissão que o cliente com cod_cliente = 1234? 8. Listar as contas (num_conta, saldo) da agência cujo cod_agencia = 123, por ordem decrescente do seu valor de saldo. 9. Quantas contas existem em todas as agências do Banco? 10. Quantos clientes possuem contas na agência cujo cod_agencia = 123? 11. Listar o número de contas existentes em cada agência. 12. Quais os clientes cuja profissão é desconhecida? 13. Para cada agência (cod_agencia) com menos de 1000 contas, listar os valores máximo e mínimo dos saldos dessas contas, assim como o saldo médio. 14. Quais os clientes (cod_cliente e nome) que são ou depositantes ou devedores da agência cod_agencia = 123? 15. Quais os clientes (cod_cliente e nome) que são, simultaneamente, depositantes e devedores na agência cujo cod_agencia = 123? 16. Quais os clientes (cod_cliente e nome) da agência com cod_agencia = 123 que apenas são depositantes? 17. Quais os clientes (cod_cliente e nome) com, pelo menos, dois empréstimos no banco? 18. Quais as agências (cod_agencia e designacao) com depositantes residentes em Lisboa? 19. Quais os clientes cujo saldo total das suas contas é superior ao valor de qualquer empréstimo contraído neste banco? 2 Retirado de Tecnologia de Bases de Dados, J. Pereira. FCA Ed. Aluno: N.º: Turma: Pág. II / 29

30 Pág. II / 30

31 FICHA DE TRABALHO N.º 2 Tema: Structured Query Language (SQL) Considere o seguinte esquema relacional: EMPRESA (n_contrib_empresa, nome, mnemónica) LOCAL (n_contrib_empresa, n_filial, morada, telefone) EMPREGADO (n_emp, nome, morada, data_nasc, n_contr_empresa, n_filial, extensão) que resultou da seguinte descrição: Existem empresas identificadas univocamente pelo respectivo número de contribuinte. Adicionalmente, são caracterizadas por um nome e uma mnemónica. Cada empresa possui uma sede e zero, uma ou mais filiais. Tanto a sede como as filiais possuem uma morada e um só número de telefone cada uma. Os empregados das empresas são identificados univocamente por um número de empregado. São ainda caracterizados pelo respectivo nome, morada e data de nascimento. Cada empregado trabalha apenas num local (sede ou filial); no seu local de trabalho, possui uma extensão telefónica privativa. Traduza em SQL as seguintes interrogações: 1. Quantas empresas existem? 2. Qual o nome da empresa em que trabalha o empregado nº 100? 3. Quais os empregados cuja data de nascimento é desconhecida? 4. Listar o número de filiais das várias empresas. Aluno: N.º: Turma: Pág. II / 31

32 1. Quantas empresas existem? SELECT COUNT(*) AS [Número Total de Empresas] FROM Empresa 2. Qual o nome da empresa em que trabalha o empregado nº 100? SELECT Empresa.Nome FROM Empresa, Empregado WHERE Empregado.n_emp=100 AND Empresa.n_contrib=Empregado.n_contr_empresa 3. Quais os empregados cuja data de nascimento é desconhecida? SELECT n_emp, nome FROM Empregado WHERE data_nasc IS NULL 4. Listar o número de filiais das várias empresas. SELECT n_contrib, COUNT(*) AS [Número de Filiais] FROM Local GROUP BY n_contrib Pág. II / 32

33 FICHA DE TRABALHO N.º 3 Tema: Structured Query Language (SQL) Considere o seguinte esquema relacional e responda às questões a seguir apresentando o SQL. EDITORA (editoraid, denominação, morada, telefone) INTERPRETE (interpreteid, nome artístico, país, contacto, editoraid) DISCO (referência, titulo, duração, ano edição, editoraid, interpreteid) 1. Quais os interpretes portugueses da editora Pimba Records? 2. Quantos interpretes há por país. 3. Quais as denominações, moradas e telefones das editoras com discos anteriores a Com base nos valores apresentados para as tabelas, apresente o SQL para obter o resultado que se apresenta a seguir: Editora editoraid denominação morada telefone 1 Editora Estrelas Rua do Astrolábio Pimba Records Rua dos Descobridores Interprete interpreteid nome artístico país contacto editoraid 1 Juanita Espanha Martim Espanha Grega Portugal Joaquim Barros Portugal Manuel Portugal Resultado denominação Interpretes associados Pimba Records 3 Editora Estrelas 2 Aluno: N.º: Turma: Pág. II / 33

34 1. Quais os interpretes portugueses da editora Pimba Records? SELECT Interprete.[nome artístico] FROM Interprete, Editora WHERE Editora.denominação LIKE Pimba Records AND Interprete.país LIKE Portugal AND Interprete.editoraID=Editora.editoraID 2. Quantos interpretes há por país. SELECT país, COUNT(*) AS [Número de Intérpretes] FROM Interprete GROUP BY país 3. Quais as denominações, moradas e telefones das editoras com discos anteriores a SELECT Editora.denominação, Editora.morada, Editora.telefone FROM Editora, Disco WHERE Disco.[ano edição]<1960 AND Disco.editoraID=Editora.editoraID 4. Com base nos valores apresentados para as tabelas, apresente o SQL para obter o resultado que se apresenta a seguir: Editora editoraid denominação morada telefone 1 Editora Estrelas Rua do Astrolábio Pimba Records Rua dos Descobridores Interprete interpreteid nome artístico país contacto editoraid 1 Juanita Espanha Martim Espanha Grega Portugal Joaquim Barros Portugal Manuel Portugal Resultado denominação Interpretes associados Pimba Records 3 Editora Estrelas 2 Pretende-se saber o número de Intérpretes associados a cada Editora. Em SQL seria: SELECT denominação, COUNT(*) AS [Interpretes associados] FROM Interprete, Editora WHERE Interprete.editoraID= Editora.editoraID GROUP BY denominação Pág. II / 34

35 FICHA DE TRABALHO N.º 4 Tema: Structured Query Language (SQL) Considere o seguinte esquema relacional, relativo à parte estática de um Sistema de Gestão de uma pequena Biblioteca: LIVRO ( número, título, ano, primeiro autor, referência ) ASSUNTO ( referência, designação ) LEITOR ( código, nome, telefone ) LIDO (número, código) Traduza em SQL as seguintes interrogações: 1. Quantos livros existem dos anos 90? 2. Qual o título do livro mais lido na biblioteca? ATENÇÃO: Um livro só pode ser lido uma única vez por cada leitor 3. Quantos leitores têm o telefone desconhecido? 4. Listar o título de cada livro e a respectiva designação de assunto. Aluno: N.º: Turma: Pág. II / 35

36 Considere o seguinte esquema relacional, relativo à parte estática de um Sistema de Gestão de uma pequena Biblioteca: LIVRO ( número, título, ano, primeiro autor, referência ) ASSUNTO ( referência, designação ) LEITOR ( código, nome, telefone ) LIDO ( número, código ) Traduza em SQL as seguintes interrogações: 1. Quantos livros existem dos anos 90? SELECT COUNT(*) AS [Número de Livros dos Anos 90] FROM Livro WHERE ano >=90 AND ano <=99 2. Qual o título do livro mais lido na biblioteca? SELECT título FROM Livro, Lido WHERE Livro.número=Lido.número GROUP BY título HAVING COUNT(*) >= ALL(( SELECT COUNT(*) FROM Livro, Lido WHERE Livro.número=Lido.número GROUP BY título )) ATENÇÃO: Um livro só pode ser lido uma única vez por cada leitor 3. Quantos leitores têm o telefone desconhecido? SELECT COUNT(*) AS [Leitores com o Número de Telefone Desconhecido] FROM Leitor WHERE Telefone IS NULL 4. Listar o título de cada livro e a respectiva designação de assunto. SELECT título, designação FROM Livro, Assunto WHERE Livro.referência=Assunto.referência Pág. II / 36

37 FICHA DE TRABALHO N.º 5 Tema: Structured Query Language (SQL) Considere o esquema relacional seguinte e responda às questões, apresentando o respectivo SQL. DESPESA ( despesaid, valor, natureza, reservaid) PAGAMENTO( pagamentoid, montante, reservaid) RESERVA( reservaid, num_noites, clienteid) CLIENTE( clienteid, nome, morada, telefone, datanascimento) 1. O Hotel pretende saber o montante das vendas em função da sua natureza. 2. Qual o valor da conta corrente (pagamentos - despesas) do cliente, que deverá ser identificado pelo clienteid? Atenda ao facto de que o cliente pode ter várias reservas em simultâneo. 3. Qual o ano em que nasceu o cliente mais idoso da cadeia de hoteis? 4. Liste os clientes (clienteid) ordenados por ordem ascendente de clienteid, cuja média de noites por reserva é superior a 2. Aluno: N.º: Turma: Pág. II / 37

38 Considere o esquema relacional seguinte e responda às questões, apresentando o respectivo SQL. DESPESA ( despesaid, valor, natureza, reservaid) PAGAMENTO( pagamentoid, montante, reservaid) RESERVA( reservaid, num_noites, clienteid) CLIENTE( clienteid, nome, morada, telefone, datanascimento) 1. O Hotel pretende saber o montante das vendas em função da sua natureza. SELECT natureza, SUM(valor) AS [Volume de Vendas] FROM Despesa GROUP BY natureza 2. Qual o valor da conta corrente (pagamentos - despesas) do cliente, que deverá ser identificado pelo clienteid? Atenda ao facto de que o cliente pode ter várias reservas em simultâneo. SELECT clienteid, SUM(montante)-SUM(valor) AS [Conta Corrente] FROM Despesa, Pagamento, Reserva WHERE Despesa.reservaID= Reserva.reservaID AND Pagamento.reservaID=Reserva.reservaID GROUP BY clienteid 3. Qual o ano em que nasceu o cliente mais idoso da cadeia de hoteis? SELECT MIN(YEAR(dataNascimento)) AS [Ano denascimento do Cliente mais Idoso] FROM Cliente 4. Liste os clientes (clienteid) ordenados por ordem ascendente de clienteid, cuja média de noites por reserva é superior a 2. SELECT clienteid FROM Reserva GROUP BY clienteid HAVING AVG(num_noites)>2 ORDER BY clienteid Pág. II / 38

39 FICHA DE TRABALHO N.º 6 Tema: Structured Query Language (SQL) Considere o seguinte esquema relacional, referente a um excerto de um hipotético Sistema de Gestão do Zoo de Lisboa. ANIMAL ( numero, nome, origem, datanascimento, dataentrada, datasaida, tipoespecie ) TRATADOR ( tratadorid, nome, morada, telefone) TRATAMENTO ( fichaid, data, estadoanimal, observacao, numero, tratadorid) Onde: Animal representa cada animal que é ou então já foi habitante do Jardim Zoológico, onde o tipoespécie determina a sua natureza (réptil, mamífero,...). A data de saída só é preenchida aquando do respectivo afastamento do Zoo; Tratador pessoa especializada responsável pelo tratamento dos animais; Tratamento ficha criada pelo tratador diariamente para registar o estado clínico do animal. O estado do animal pode ser classificado em: saudável, estado_alerta, doente. A identificação desta ficha é definida por um número sequencial. Pretende-se que responda às questões seguintes, apresentando o respectivo SQL. 1. Liste os répteis que ainda habitam no Zoo. 2. Quais os tratadores (nome ordenado por ordem alfabética ascendente) que cuidaram de um determinado animal? A indicação do animal deverá ser solicitada sempre que a consulta for realizada. 3. Seleccione a última ficha de cada animal cujos estados de saúde registaram estado_alerta e doente. 4. Qual a média de idades para cada espécie representada por mais de 500 habitantes no Zoo? Para efeitos do cálculo das idades considere apenas o ano de nascimento. Aluno: N.º: Turma: Pág. II / 39

SQL (Tópicos) Structured Query Language

SQL (Tópicos) Structured Query Language SQL (Tópicos) Structured Query Language ISI Introdução aos Sistemas de Informação SQL (Tópicos) 1 SQL: componentes SQL / DDL (Data Definition Language) Permite definir os Esquemas de Relação Permite definir

Leia mais

Rápida revisão do Modelo Relacional

Rápida revisão do Modelo Relacional Rápida revisão do Modelo Relacional Conceito de relação Tuplas e atributos Rápida revisão do Modelo Relacional Regras de integridade Entidade: Deve existir uma chave primária com valor único e não-nulo.

Leia mais

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL. LINGUAGEM SQL SQL CREATE DATABASE MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL. SQL CREATE TABLE SQL NOT NULL O valor NOT NULL obriga que o campo contenha sempre

Leia mais

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR SQL Structured Query Language, ou Linguagem de Consulta Estruturada, foi desenvolvida pela IBM nos anos 70 para demonstrar a viabilidade do modelo relacional para bancos de dados. No final dos anos 80

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com 02/06/2016 SUMÁRIO SQL DDL DML SQL (STRUCTURED

Leia mais

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados> BANCO DE DADOS 1. Scripts de criação de banco de dados Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE Onde:

Leia mais

Tarefa Orientada 7 Consultas de selecção

Tarefa Orientada 7 Consultas de selecção Tarefa Orientada 7 Consultas de selecção Objectivos: Consultas de selecção O Sistema de Gestão de Bases de Dados MS Access Consultas As consultas (queries) permitem interrogar a base de dados, de acordo

Leia mais

- Um "query block" permite a implementação das operações de selecção, projecção e junção da álgebra relacional.

- Um query block permite a implementação das operações de selecção, projecção e junção da álgebra relacional. 2.3 Linguagens relacionais (continuação) SQL Structured Query Language 1) "Query block" Select From Where - Um "query block" permite a implementação

Leia mais

SQL. Prof. Roger Cristhian Gomes

SQL. Prof. Roger Cristhian Gomes SQL Prof. Roger Cristhian Gomes SQL SQL - Structured Query Language Linguagem de acesso e manipulação de sistemas de base de dados computacionais que segue o padrão ANSI Existem diferenças entre as versões

Leia mais

Importar e Exportar Dados

Importar e Exportar Dados Importar e Exportar Dados Administração de Base de Dados OBJECTIVOS: Definir comandos e formatos Definir restrições (constraints) DEFINIÇÃO DO ESQUEMA DA BASE DE DADOS O esquema da BD e composto pelas

Leia mais

BCD29008 Banco de dados

BCD29008 Banco de dados BCD29008 Banco de dados Linguagem SQL Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/bcd 21 de agosto de 2017

Leia mais

E-BOOK GUIA RÁPIDO DE SQL W W W. T R E I N A W E B.C O M. B R

E-BOOK GUIA RÁPIDO DE SQL W W W. T R E I N A W E B.C O M. B R 101010101 001010101 101010100 E-BOOK GUIA RÁPIDO DE SQL INTRODUÇÃO Este é um guia rápido de SQL criado pela equipe do TreinaWeb e serve principalmente para iniciantes na linguagem. SQL é a sigla em inglês

Leia mais

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO Disciplina: Banco de Dados I Professor: Prof. Me. Everton

Leia mais

Bases de Dados. DDL Data Definition Language

Bases de Dados. DDL Data Definition Language Bases de Dados DDL Data Definition Language SQL SQL = Structured Query Language Foi originalmente criada pela IBM nos anos 70 como parte de um protótipo de sistema relacional Posteriormente foi implementada

Leia mais

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010 Sumário SQL - Criação de Tabelas André Restivo Faculdade de Engenharia da Universidade do Porto October 18, 2010 1 Introdução 2 Tabelas 3 Colunas 4 5 Modificação de Tabelas 6 Domínios André Restivo (FEUP)

Leia mais

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL Sistemas de Informação e Bases de Dados 2012/2013 Linguagem SQL Alberto Sardinha Bibliografia Raghu Ramakrishnan, Database Management Systems, Cap. 3 e 5 1 Sumário Linguagem SQL 2 História Princípio dos

Leia mais

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS Técnicas e Linguagens para Banco de Dados I ACCESS Criando um Banco de Dados 1 2 3 4 5 6 7 8 Tipos de Relações existentes nos Bancos de Dados Relacionamentos 1 1 Um para Um : neste tipo de Relação,

Leia mais

MySql. Introdução a MySQL. Andréa Garcia Trindade

MySql. Introdução a MySQL. Andréa Garcia Trindade MySql Introdução a MySQL Andréa Garcia Trindade Introdução O que é Banco de Dados SGBD MYSQL Tipos de Tabelas Tipos de Dados Linguagem SQL Comandos SQL O que é um Banco de Dados? Conjuntos de dados Grupo

Leia mais

Utilizando o Postgres - comandos SQL para a manipulação de dados

Utilizando o Postgres - comandos SQL para a manipulação de dados Utilizando o Postgres - comandos SQL para a manipulação de dados SELECT A declaração SELECT é utilizada para selecionar os dados de um banco de dados. SELECT nome FROM clientes WHERE A cláusula WHERE é

Leia mais

Benvindo ao Curso de Introdução ao Firebird com Ferramenta de Relatórios!

Benvindo ao Curso de Introdução ao Firebird com Ferramenta de Relatórios! (Apresentação SQL Manager Lite for InterBase and Firebird) Benvindo ao Curso de Introdução ao Firebird com Ferramenta de Relatórios! Ferramenta de alta performance para a otimização da administração de

Leia mais

Linguagem de pesquisa declarativa para banco de dados relacional; 1ª Versão - Desenvolvida pela IBM no laboratório de pesquisa de San José;

Linguagem de pesquisa declarativa para banco de dados relacional; 1ª Versão - Desenvolvida pela IBM no laboratório de pesquisa de San José; MySQL SQL (Structured Query Languagem ) Linguagem de pesquisa declarativa para banco de dados relacional; 1ª Versão - Desenvolvida pela IBM no laboratório de pesquisa de San José; Inicialmente - Sequel

Leia mais

Teste Exemplo Revisão da tentativa 1

Teste Exemplo Revisão da tentativa 1 Teste Exemplo Revisão da tentativa 1 Iniciado em: Quinta, 6 Dezembro 2007, 21:31 Completado em: Quinta, 6 Dezembro 2007, 21:48 Tempo gasto: 16 minutos 53 segundos Classificação: 8/20 (40% Nota: 8 sobre

Leia mais

Agenda. Linguagem de Consulta SQL. 1. Introdução Histórico. 1. Introdução BD Relacionais

Agenda. Linguagem de Consulta SQL. 1. Introdução Histórico. 1. Introdução BD Relacionais Linguagem de Consulta SQL Profa. Carla A. Lima Reis SQL Agenda Introdução Histórico BD relacionais Linguagem SQL Definição de BD Manipulação de BD com SQL Consultas SQL Consultas com várias tabelas Subconsultas

Leia mais

Modulo 2 Gestão de Base

Modulo 2 Gestão de Base Didáxis - Escola Cooperativa de Vale S. Cosme Modulo 2 Gestão de Base de Dados Aula Nº 55 / 56 09-01-2008 Sumário: Programa de gestão de bases de dados. Introdução ao estudo das tabelas. 2 Gestão de Base

Leia mais

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language) AULA 8 8.1. OBJETIVO DA AULA Relembrar conceitos e recursos básicos apresentados nas aulas anteriores, dar continuidade nas codificações iniciadas e ainda não finalizadas, explorar acesso a banco de dados

Leia mais

Bancos (Bases) de Dados

Bancos (Bases) de Dados Bancos (Bases) de Dados Aula #8 SQL Prof. Eduardo R. Hruschka * Slides baseados no material elaborado pelas professoras: Cristina D. A. Ciferri Elaine P. M. de Souza SQL (Structured Query Language) Linguagem

Leia mais

Informática II Cap. 5-2 Bases de Dados - MsAccess

Informática II Cap. 5-2 Bases de Dados - MsAccess Cap. 5-2 Bases de Dados - MsAccess Filipe Caldeira - 2001 1 Introdução Porquê a utilização de Sistemas de Bases de Dados (SBD)? Armazenamento dos dados de uma forma consistente ( a informação não deve

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

Introdução ao PostgreSQL

Introdução ao PostgreSQL Introdução ao PostgreSQL Fontes Karine Reis Ferreira karine@dpi.inpe.br Gilberto Câmara gilberto@dpi.inpe.br Gilberto Ribeiro de Queiroz gribeiro@dpi.inpe.br Marcos André Gonçalves - UFMG Parte 3 Aula

Leia mais

Banco de Dados I Introdução SQL

Banco de Dados I Introdução SQL Banco de Dados I Introdução SQL Frederico Queiroga fredericoqueiroga@gmail.com https://sites.google.com/site/fredericoqueiroga/ Linguagem SQL Aspectos Gerais: Independência do fabricante: Está incorporada

Leia mais

A Linguagem SQL. Tecnologia de Base de Dados. MSc. Eugénio. Macumbe

A Linguagem SQL. Tecnologia de Base de Dados. MSc. Eugénio. Macumbe A Linguagem SQL Tecnologia de Base de Dados MSc. Eugénio. Macumbe A Linguagem SQL As raízes da linguagem SQL remontam a 1974, altura em que na IBM corp. se desenvolvia o protótipo de um sistema relacional

Leia mais

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013 Linguagem de Manipulação de Dados (DML) Estudo Dirigido A Linguagem SQL Preparação Criar um banco de dados denominado Escola ; Criar a tabela, como especificado abaixo: # RA Numeric(8) Nome Serie Turma

Leia mais

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO... Ciência da Computação GBC043 Sistemas de Banco de Dados SQL Linguagem de Manipulação de Dados Profa. Maria Camila Nardini Barioni camila.barioni@facom.ufu.br Bloco B - sala 1B137 SQL DML CONTINUAÇÃO...

Leia mais

Manipulação de Dados com SQL

Manipulação de Dados com SQL Manipulação de Dados com SQL Wendel Melo Faculdade de Computação Universidade Federal de Uberlândia www.facom.ufu.br/~wendelmelo Banco de Dados I manipulação de dados com SQL 2 Structured Query Language

Leia mais

Revisão de Bancos de Dados

Revisão de Bancos de Dados Revisão de Bancos de Dados Conceitos Básicos 1. Defina o que é um banco de dados e o que é um sistema gerenciador de bancos de dados (SGBD). 2. Defina as arquiteturas de software em duas camadas (cliente/servidor)

Leia mais

ZS Rest. Manual Avançado. Início v.1. v2011

ZS Rest. Manual Avançado. Início v.1. v2011 Manual Avançado Funcionamento Início v.1 com cartões v2011 1. Índice 2. INTRODUÇÃO... 2 3. INICIAR O ZSRest FrontOffice... 3 1 4. Séries... 4 b) Adicionar Série... 4 i. Tipo de série... 5 c) Modificar

Leia mais

Manipulando a base de dados

Manipulando a base de dados Manipulando a base de dados Uma base de dados pode ser manipulada com quatro operações básicas: Incluir, Apagar, Alterar e Pesquisar. Vale lembrar que como toda linguagem para computadores, o MySQL tem

Leia mais

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas O que é banco de dados? São conjuntos de registros dispostos

Leia mais

SQL (com MySQL) Apresentação OBJETIVOS. Programação

SQL (com MySQL) Apresentação OBJETIVOS. Programação SQL (com MySQL) Programação Formato: Mentored - Presencial Preço: 395 ( Os valores apresentados não incluem IVA. Oferta de IVA a particulares e estudantes. ) Horário: Flexível das 2ª a 6ª das 9h às 21h30

Leia mais

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018 Linguagem de Manipulação de Dados (DML) Estudo Dirigido A Linguagem SQL Preparação criar tabela Criar um novo arquivo de banco de dados chamado Escola Criar a tabela, como especificado abaixo: Create table

Leia mais

SQL. Linguagem de Definição de Dados (DDL) Tipos em SQL. Tipos Data/Tempo em SQL (cont.)

SQL. Linguagem de Definição de Dados (DDL) Tipos em SQL. Tipos Data/Tempo em SQL (cont.) SQL Linguagem de Definição de Dados (DDL) Linguagem de Definição dos Dados Tipos em SQL Manipular Tabelas (relações) Integridade e Segurança Linguagem de Manipulação dos Dados Estrutura básica Operações

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 Laboratório de Computação para Ciências Módulo II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Mestrado Profissional em Ensino

Leia mais

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language) 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

IMPLEMENTAÇÃO DE BANCO DE DADOS

IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS MODULO 2 LINGUAGEM SQL CONTEÚDO 2. LINGUAGEM SQL 2.1 Linguagens de Definição de Dados (DDL) 2.1.1 Criação de tabela: CREATE 2.1.2 Alteração de Tabela: ALTER 2.1.3 Exclusão

Leia mais

Introdução ao Banco de Dados. Banco de Dados

Introdução ao Banco de Dados. Banco de Dados Introdução ao Banco de Dados Prof. Tiago Garcia de Senna Carneiro UFOP Prof. Técnicas de Programação II 2006 PARTE 1: Conceitos Básicos Banco de Dados SGDB: Sistema Gerenciador de Banco de Dados Definição:

Leia mais

AULA TEÓRICA 11 Tema 7. Introdução ao Microsoft Access (cont.)

AULA TEÓRICA 11 Tema 7. Introdução ao Microsoft Access (cont.) AULA TEÓRICA 11 Tema 7. Introdução ao Microsoft Access (cont.) Ø Listas de pesquisa Ø Edição e formatação de tabelas Ø Ordenação de dados Ø Relações entre tabelas Ø Consultas Ø Relatórios Ø Formulários

Leia mais

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes Escola Secundária de Albufeira Comandos MySQL (Páginas Web Dinâmicas: PHP e MySQL) (csmnunes@gmail.com) 2009/2010 Criar Base de Dados CREATE DATABASE basededados; Apagar Base de Dados DROP DATABASE basededados;

Leia mais

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD. Definição do esquema da base de dados o esquema da BD é composto pelas definições de todas as tabelas da BD. existem outros elementos (views, índices, triggers) que também fazem parte do esquema e que

Leia mais

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language) 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

Tarefa Orientada 8 Criação de tabelas

Tarefa Orientada 8 Criação de tabelas Tarefa Orientada 8 Criação de tabelas Objectivos: Iniciar o MS SQL Server Manegement Studio Criar tabelas Especificar tipos de dados Definir restrições Alterar as definições de uma tabela Eliminar uma

Leia mais

Banco de Dados. Professora: Luciana Faria

Banco de Dados. Professora: Luciana Faria Banco de Dados Professora: Luciana Faria Introdução ao linguagem é a SQL (Structured Query Language) Linguagem de Consulta Estruturada Para se utilizar, administrar, e trabalhar com um banco de dados é

Leia mais

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g Pedro F. Carvalho OCP Oracle 2008.2 10g SQL Avançado Atualização e Inserção de Dados Comando INSERT Sumário Inclusão simples, inclusão de dados com SELECT Comando UPDATE Alteração simples, alteração usando

Leia mais

Linguagem de Consulta Estruturada (SQL)

Linguagem de Consulta Estruturada (SQL) Linguagem de Consulta Estruturada (SQL) SQL SQL (Structured Query Language), ou Linguagem de Consulta Estruturada. Usada em Bancos de Dados Relacionais. É padronizada (SQL ANSI). ANSI (American National

Leia mais

Instrução Create Table

Instrução Create Table Tipos em SQL char(n): cadeia de caracteres de comprimento fixo n varchar(n): cadeia de caracteres de comprimento variável, com o máximo n especificado pelo utilizador int: inteiro (um subconjunto finito

Leia mais

BANCO DE DADOS PARA NINJAS

BANCO DE DADOS PARA NINJAS BANCO DE DADOS PARA NINJAS PARANGABA RONNISON REGES VIDAL Ceará, 25 de Outubro de 2016 ROTEIRO l Conhecimento Pra que usar? Ferramentas SGBD's Consultas (Jutsu) Linguagem de Consulta PRA QUE USAR? PRA

Leia mais

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A BANCO DE DADOS GERENCIAL 1 A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A CONCEITOS LINGUAGEM DE MANIPULAÇÃO DE DADOS (DML) A linguagem

Leia mais

mod._1_teoria_sistemas de bancos de dados.doc

mod._1_teoria_sistemas de bancos de dados.doc SISTEMAS DE BANCOS DE DADOS Os Sistemas de Bancos de Dados apareceram para acabar com os problemas e desvantagens dos tradicionais Sistemas de Processamento de Arquivos, onde os registros permanentes eram

Leia mais

PSI Linguagem de Definição de dados. Módulo 15

PSI Linguagem de Definição de dados. Módulo 15 PSI Linguagem de Definição de dados Módulo 15 Objetivos de aprendizagem No final deste módulo os alunos devem ter adquirido conhecimentos, procedimentos e atitudes que lhe permitam: Criação, alteração

Leia mais

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki PROGRAMA 3.SQL Básico 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação 1 3.SQL Básico A linguagem SQL foi desenvolvida para o ambiente relacional, podendo ser adaptada a ambientes

Leia mais

Ordenação de tuplos order by

Ordenação de tuplos order by Bases de Dados Elementos da linguagem SQL Ordenação de tuplos order by A cláusula order by permite ordenar tuplos exemplo: listar por ordem alfabética os nomes dos clientes com empréstimo na agência de

Leia mais

Conceitos básicos. Funcionario SIAPE Nome Lotacao Cargo Salario Admissao

Conceitos básicos. Funcionario SIAPE Nome Lotacao Cargo Salario Admissao SQL Lúbia Vinhas Conceitos básicos En#dades: en4dade é uma coisa do mundo real, com uma existência independente. Atributos são as propriedades dessa coisa. Cada atributo está associado a um determinado

Leia mais

Consultas I Para que servem? Como funcionam Tipos de consulta Consultas Selecção Consultas parametrizadas Consultas Tabela de referência cruzada

Consultas I Para que servem? Como funcionam Tipos de consulta Consultas Selecção Consultas parametrizadas Consultas Tabela de referência cruzada Consultas I Para que servem? Servem para analisar, filtrar, agrupar e/ou alterar dados de diversas maneiras e podem servir como origem de registos para formulários e relatórios Como funcionam As consultas

Leia mais

BANCO DE DADOS GERENCIAL 1 A U L A 2

BANCO DE DADOS GERENCIAL 1 A U L A 2 BANCO DE DADOS GERENCIAL 1 A U L A 2 N Í V E I S D E V I S Ã O, S U B G R U P O D D L : C R I A N D O B A N C O D E D A D O S, C R I A N D O T A B E L A S, E S T R U T U R A D A T A B E L A CONCEITOS :

Leia mais

Tarefa Orientada 9 Base de Dados Pagamentos

Tarefa Orientada 9 Base de Dados Pagamentos Tarefa Orientada 9 Base de Dados Pagamentos Objectivos: Criar as tabelas da base de dados Pagamentos Criar um diagrama da base de dados Inserir registos com os dados de teste Criar as tabelas da base de

Leia mais

SQL-99: Esquema de BD EMPRESA

SQL-99: Esquema de BD EMPRESA SQL-99: Esquema de BD EMPRESA SQL-99: Instâncias do esquema EMPRESA 1 Consultas externa, aninhada e correlacionada para cada tupla da consulta externa, a consulta aninhada devolve o atributo solicitado

Leia mais

Tarefa Orientada 17 Scripts

Tarefa Orientada 17 Scripts Tarefa Orientada 17 Scripts Objectivos: Declaração de variáveis escalares Declaração de variáveis do tipo tabela Tabelas temporárias Estruturas Condicionais Estruturas de Repetição Tratamento de erros

Leia mais

A linguagem SQL

A linguagem SQL SQL 2008.1 A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua primeira versão

Leia mais

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU Aula 6 BD1 Modelo Relacional Profa. Elaine Faria UFU - 2017 Introdução Modelo Relacional Proposto por Codd em 1970 Revolucionou a área de banco de dados É o modelo dominante base para os SGBDs líderes

Leia mais

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho Laboratório de Banco de Dados II Aula 04 Prof. Érick de Souza Carvalho 1 SQL (Structured Query Language ) Prof. Érick de Souza Carvalho 2 SQL Structured Query Language - Introdução É uma Linguagem para

Leia mais

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka Aula de SQL Comandos DDL André Luiz de Oliveira Eduardo Raul Hruschka E-mail: andre_luiz@icmc.usp.br erh@icmc.usp.br Agenda Instalação do MySQL e Workbench Comandos DDL Data Definition Language Criação

Leia mais

U.C Fundamentos de Bases de Dados Resolução e Critérios de Correção INSTRUÇÕES:

U.C Fundamentos de Bases de Dados Resolução e Critérios de Correção INSTRUÇÕES: e-fólio B U.C. 21053 Fundamentos de Bases de Dados 2017-2018 Resolução e Critérios de Correção INSTRUÇÕES: 1) O e-fólio é constituído por 5 perguntas. A cotação global é de 5 valores. 2) O e-fólio deve

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

TLBD II. Continuação

TLBD II. Continuação TLBD II Continuação As expressões aritméticas podem conter nomes de colunas, valores numéricos constantes e os operadores aritméticos: OPERADOR DESCRIÇÃO + Adição - Subtracção * Multiplicação / Divisão

Leia mais

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas Banco de dados Conteúdo: DDL Prof. Patrícia Lucas O mysql MySQL Workbench é uma ferramenta de design de banco de dados visual que integra o desenvolvimento SQL, administração, design de banco de dados,

Leia mais

Fundamentos de Banco de Dados Postgre com Sql

Fundamentos de Banco de Dados Postgre com Sql Fundamentos de Banco de Dados Postgre com Sql Prof. Luiz Claudio Ferreira de Souza Prof. Luiz Claudio F. de Souza 1 Obtenha os Slids no endereço www.luizclaudiofs.blogspot.com Prof. Luiz Claudio F. de

Leia mais

{... ou CTRL+O } João Muranho Pág. 1

{... ou CTRL+O } João Muranho Pág. 1 Departamento(DepNum, Nome, Local) Empregado(EmpNum, Nome, Categoria, Salario, DepNum) Projecto(ProjNum, Designacao, Fundos) Atribuicao(EmpNum,ProjNum, Funcao) {... ou CTRL+O } João Muranho Pág. 1 {Seleccione

Leia mais

Tabelas Dinâmicas Excel

Tabelas Dinâmicas Excel 1º Trim 2º Trim Jan Fev Mar Abr Mai Jun Marca A Família Marca B 1 Marca C Família Marca D 2 Marca E Viseu Aveiro Porto Centro-I Braga Norte-A Guimarães Excel 1 O que são? São tabelas interactivas que resumem

Leia mais

Exame de Recurso de Base de Dados Universidade do Algarve 03/Fev/2005, (duração: 2 horas)

Exame de Recurso de Base de Dados Universidade do Algarve 03/Fev/2005, (duração: 2 horas) Exame de Recurso de Base de Dados Universidade do Algarve 03/Fev/2005, (duração: 2 horas) Este exame consiste em 16 perguntas de escolha múltipla. Para todas as questões existe apenas 1 resposta correcta.

Leia mais

Linguagem SQL. ENG1518 Sistemas de Informação Gerenciais Prof. Marcos Villas

Linguagem SQL. ENG1518 Sistemas de Informação Gerenciais Prof. Marcos Villas Linguagem SQL ENG1518 Sistemas de Informação Gerenciais Prof. Marcos Villas villas@puc-rio.br SQL Linguagem padrão de acesso tabelas em um banco de dados relacional Permite definir e manipular dados DML

Leia mais

MYSQL - PRIMEIROS COMANDOS CRIAÇÃCO DO BD E DAS TABELAS, INSERÇÃO E CONSULTA DE REGISTROS. create database [if not exists] <nome>

MYSQL - PRIMEIROS COMANDOS CRIAÇÃCO DO BD E DAS TABELAS, INSERÇÃO E CONSULTA DE REGISTROS. create database [if not exists] <nome> 1. Manuseio do banco de dados MYSQL - PRIMEIROS COMANDOS CRIAÇÃCO DO BD E DAS TABELAS, INSERÇÃO E CONSULTA DE REGISTROS As seguintes instruções manuseiam o banco de dados: cria o banco mostra os bancos

Leia mais

A cláusula order by permite ordenar tuplos exemplo: listar por ordem alfabética os nomes dos clientes com empréstimo na agência de Perryridge

A cláusula order by permite ordenar tuplos exemplo: listar por ordem alfabética os nomes dos clientes com empréstimo na agência de Perryridge Bases de Dados Elementos da linguagem SQL Ordenação de tuplos orderby A cláusula order by permite ordenar tuplos exemplo: listar por ordem alfabética os nomes dos clientes com empréstimo na agência de

Leia mais

15 - Introdução às Bases de Dados

15 - Introdução às Bases de Dados ICE-B 15 - Introdução às Bases de Dados Ludwig Krippahl Bases de Dados Resumo Introdução aos sistemas de bases de dados: Modelo relacional SQL (Structured Query Language) Criar tabelas Inserir dados Consultar

Leia mais

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer SQL BÁSICO Luiz Antônio Vivacqua Corrêa Meyer SQL (Structured Query Language) Início na década de 70 pela IBM com o nome de SEQUEL. Em 1980 o produto mudou seu nome para SQL. American National Standards

Leia mais

Algumas Notas sobre Queries em Access 2007

Algumas Notas sobre Queries em Access 2007 Cadeira de Tecnologias de Informação Ano lectivo 2009/10 Algumas Notas sobre Queries em Access 2007 TI2009/2010_1 Tópicos O que é uma Query? Tipos de Queries Select Query Crosstab Query Make-Table Query

Leia mais

SQL Básica. Andre Noel

SQL Básica. Andre Noel SQL Básica Andre Noel Introdução A SQL é um dos principais motivos de sucesso dos BDs relacionais comerciais Introdução A SQL é um dos principais motivos de sucesso dos BDs relacionais comerciais Se tornou

Leia mais

Resumo do Módulo 2 Access

Resumo do Módulo 2 Access Resumo do Módulo 2 Access 1 - Criar uma Base de Dados Abre o Access, e aparece a janela de Introdução ao Access Clica no botão Base de Dados Vazia, e irá aparecer no lado direito da janela a seguinte informação

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

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

'%'! $!0 $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,/)!)+,/)% *! +,0''% * %$!*!$$ #!%&%'%'%$! 94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31? MODELAGEM FÍSICA Capítulo 3! " # $ $!%%%& '$! $% $$%"%' ) ' *'!%'!$ $ $ $% +, %#!!" '$*'#%! $ $$%" % '$%!!% $% * % $ *-! %$% $!* '% $!$$.!'% & $%!% $ $ ' %/!$ 0 $*' $% *0 )#%!$0% 1&$$$%+#!*22,"$% )'%$$%%&

Leia mais

Múltiplas Tabelas. Disciplina de Banco de Dados

Múltiplas Tabelas. Disciplina de Banco de Dados Múltiplas Tabelas Uma das grandes características de um sistema de banco de dados relacional é a capacidade de interagir com múltiplas tabelas relacionadas. Precisamos lembrar que para relacionar tabelas

Leia mais

Banco de Dados. Linguagem SQL

Banco de Dados. Linguagem SQL Banco de Dados Linguagem SQL 1 A linguagem SQL: história Em junho de 1970, o matemático Edgar Frank Codd, publicou o artigo "A Relational Model of Data for Large Shared Data Banks" na revista "Communications

Leia mais

Exemplos de Vistas SQL. Tipos em SQL. Linguagem de Definição de Dados (DDL) CREATE VIEW todososclientes As

Exemplos de Vistas SQL. Tipos em SQL. Linguagem de Definição de Dados (DDL) CREATE VIEW todososclientes As Exemplos de Vistas SQL Considere-se a vista (com o nome todososconsumidores) contento os nomes das agências e seus clientes CREATE VIEW todososclientes As Π nomebalcao,nomecliente (temconta conta) Π nomebalcao,nomecliente

Leia mais

Flickr, shindotv/ / BASES DE DADOS. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes

Flickr, shindotv/ / BASES DE DADOS. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes Flickr, shindotv/3835365695/ BASES DE DADOS Laboratórios de Informática 2014-2015 João Paulo Barraca, André Zúquete, Diogo Gomes Armazenamento de Informação Aplicações necessitam de armazenar informação

Leia mais

Oracle Database 11g: Introdução à Linguagem SQL Novo

Oracle Database 11g: Introdução à Linguagem SQL Novo Oracle University Contact Us: 0800 891 6502 Oracle Database 11g: Introdução à Linguagem SQL Novo Duration: 5 Days What you will learn Neste curso, os alunos aprendem os conceitos de bancos de dados relacionais.

Leia mais

Modelo Entidade-Relacionamento (E-R)

Modelo Entidade-Relacionamento (E-R) Modelo Entidade-Relacionamento (E-R) composto n lote n n n contrato_compra_venda n possui proprietário possui n associado cadastro n banco faz fronteira pertence n ruas n quadras n financiado empréstimo

Leia mais

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT 2) Componentes do Select: - DISTINCT - WHERE - AND e OR - ORDER BY 2) Visão Geral - A SQL é dividida em

Leia mais

Fundamentos de SQL. Curso: Técnico em Redes de Computadores Disciplina: Tecnologias e Linguagem de Banco de dados Professor: Rodrigo da Rocha

Fundamentos de SQL. Curso: Técnico em Redes de Computadores Disciplina: Tecnologias e Linguagem de Banco de dados Professor: Rodrigo da Rocha Fundamentos de SQL Curso: Técnico em Redes de Computadores Disciplina: Tecnologias e Linguagem de Banco de dados Professor: Rodrigo da Rocha SQL - Introdução SQL-Structured Query Language (Linguagem de

Leia mais

Oracle Database: Fundamentos de SQL e PL/SQL

Oracle Database: Fundamentos de SQL e PL/SQL Oracle University Contact Us: 0800 891 6502 Oracle Database: Fundamentos de SQL e PL/SQL Duration: 5 Days What you will learn Este curso apresenta os fundamentos de SQL e PL/SQL e as vantagens das linguagens

Leia mais

MODELAGEM DE DADOS - INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc.

MODELAGEM DE DADOS - INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc. MODELAGEM DE DADOS - INTRODUÇÃO AO SQL: DML Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza DML Data Manipulation Language Linguagem de Manipulação de Dados Comandos básicos: Insert Update

Leia mais