SCC Bancos de Dados e Suas Aplicações

Slides:



Advertisements
Apresentações semelhantes
Tópicos em Banco de Dados
Advertisements

O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Banco de Dados Prof. Antonio.
SQL Renata Viegas.
SQL Avançado Continuação
SQL Structured Query Language (continuação)
SQL Structured Query Language (continuação)
Banco de Dados Prof.: Bruno Rafael de Oliveira Rodrigues.
Banco de Dados Bruno Rafael de Oliveira Rodrigues.
Elaini Simoni Angelotti
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone: 9531 – 7555.
Visões Marilde Santos.
SQL Structured Query Language Juliano Brito da Justa Neves PESCD – Programa de Estágio Supervisionado de Capacitação Docente.
SGBD.
SQL – Comandos de Agregação
SQL – Consultas Básicas
SQL – Noções Gerais Por Márcia Jacyntha N. Rodrigues Lucena
SQL – DML Consulta a dados de uma tabela
Ordenação de Resultados
Operadores Especiais da SQL
Introdução à Engenharia da Computação
Oficina sobre banco de dados
SCC Bancos de Dados e Suas Aplicações
SCC Bancos de Dados e Suas Aplicações
SCC Bancos de Dados e Suas Aplicações
Linguagem de Banco de Dados - SQL
Linguagem de Banco de Dados - SQL
Banco de dados Profª Kelly Medeiros.
Comandos de SQL Excel VBA II.
1 SQL (Structured Query Language) Linguagem padrão usada em BD relacionais –SQL1 ou SQL-86: primeira versão do padrão. –SQL2 ou SQL-92: versão usada atualmente.
Monitoria GDI Aula Prática
Monitoria GDI Aula Prática
SQL Álvaro Vinícius de Souza Coêlho
Cronograma Formato do Comando SELECT – 1ª Seção Uso de Funções (DATE_FORMAT, DAY, MONTH, NOW, CONCAT, FORMAT, COUNT, AVG, MAX, MIN e FORMAT) AS DISTINCT.
BANCO DE DADOS UNIVERSIDADE ESTADUAL DE SANTA CRUZ
Design Patterns / Acesso ao banco de dados (java.sql)
Tipos de Linguagens do Banco de Dados
Banco de Dados Aplicado ao Desenvolvimento de Software
Oracle 9i: SQL e PL/SQL Bruno Celso Cunha de Freitas
Capítulo 3: SQL Korth • Silberschatz • Sundarshan.
Desenvolvendo um script SQL
Linguagem SQL.
Banco de dados.
Treinamento PHP Módulo 2 PHP Avançado Waelson Negreiros waelson.com.br “Está conosco o Senhor dos Exércitos”
Baseado no material do Professor Raul Paradeda
REVISÃO Comandos SQL - DML SELECT * FROM ?.
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
SCC Bancos de Dados e Suas Aplicações
Fundamentos de Banco de Dados Fundamentos de Banco de Dados Prof. Gale 2º. Semestre 2008.
Banco de Dados I I Comandos SQL
NOTA DE AULA SQL.
SQL Structured Query Language Linguagem de Consulta Estruturada
Structured Query Language
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
SQL (Structured Query Language)
Subconsulta na Cláusula FROM
1 Introdução à Manipulação de Dados SQL – Structured Query Language  Tabela = Relação  DDL – Data Definition Language  Sub-conjunto do SQL que suporta.
Recuperação de Dados Banco de Dados Carina Farias
VBA – Visual Basic para Aplicativos
UCSal – Bacharelado em Informática
Linguagem de definição de dados - SQL
SELECT Professor: Virgílio Fries Müller www. vfm.com.br
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 4 SQL básica.
Programação para Internet Aula 12 SQL (Comandos de Consulta ao BD)
Prática de Banco de Dados Créditos: Prof. Jefferson Silva Adaptações: Prof. Nécio de Lima Veras.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
José Antônio da Cunha 3/6/2016 José Antônio - CEFET-RN 1 Copyright © Dale Carnegie & Associates, Inc.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 5 Mais SQL: Consultas Complexas, Triggers e Views.
SQL – COMANDOS DML Profª Rosana Traversa.
Transcrição da apresentação:

SCC0141 - Bancos de Dados e Suas Aplicações Prof. Jose Fernando Rodrigues Junior Material original: Elaine Parros Machado de Sousa Linguagem SQL – DML

DML - Introdução Comandos da DML: INSERT UPDATE DELETE SELECT USP – ICMC – GBDI

Comandos DML INSERT – insere uma ou mais tuplas em uma tabela Inserção de 1 tupla: INSERT INTO tabela [(atrib1,atrib2,...)] VALUES (valor1, valor2,...) Inserção de múltiplas tuplas: <comando SELECT> USP – ICMC – GBDI

Exercício Inserir os seguintes dados: Aluno = {Nome, Nusp, Idade, DataNasc, CidadeOrigem}    Professor = {Nome, NFunc, Idade, Titulação}  Disciplina = {Sigla, Nome, NCred, Professor, Livro} Turma = {Sigla, Numero, NAlunos}  Matrícula = {Sigla, Numero, Aluno, Ano, Nota, Frequencia} Exercício Inserir os seguintes dados: aluna de nome Juliana, nro usp 222, nascida em 10 de abril de 1989, com cidade de origem default disciplina SCC518, Banco de Dados, com 4 créditos. matrícula da Juliana na disciplina SCC518, turma 1 Criar uma tabela para os alunos menores de idade e alimentar com os alunos menores da tabela Aluno INSERT INTO ALUNO_MENORES SELECT * FROM ALUNO WHERE IDADE < 18 USP – ICMC – GBDI

Exercício Inserir os seguintes dados: Aluno = {Nome, Nusp, Idade, DataNasc, CidadeOrigem}    Professor = {Nome, NFunc, Idade, Titulação}  Disciplina = {Sigla, Nome, NCred, Professor, Livro} Turma = {Sigla, Numero, NAlunos}  Matrícula = {Sigla, Numero, Aluno, Ano, Nota, Frequencia} Exercício Inserir os seguintes dados: aluna de nome Juliana, nro usp 222, nascida em 10 de abril de 1989, com cidade de origem default INSERT INTO Aluno(NUSP,Nome,Idade,DataNasc) VALUES(222, 'Juliana', 20, '10/04/1989'); disciplina SCC518, Banco de Dados, com 4 créditos INSERT INTO Disciplina VALUES('SC518', 'Banco de Dados', 4, 10, 'Fundamentos de Bancos de Dados'); matrícula da Juliana na disciplina SCC518, turma 1 INSERT INTO Turma VALUES('SC518',1,1); COMMIT; INSERT INTO Matricula(Sigla, Numero, Aluno, Ano) VALUES('SC518', 1, 222, 2010); Criar uma tabela para os alunos menores de idade e alimentar com os alunos menores da tabela Aluno USP – ICMC – GBDI

Aluno = {Nome, Nusp, Idade, DataNasc, CidadeOrigem}    Professor = {Nome, NFunc, Idade, Titulação}  Disciplina = {Sigla, Nome, NCred, Professor, Livro} Turma = {Sigla, Numero, NAlunos}  Matrícula = {Sigla, Numero, Aluno, Ano, Nota, Frequencia} Exercício Criar uma tabela para os alunos menores de idade e alimentar com os alunos menores da tabela Aluno CREATE TABLE Aluno_Menor( NUSP NUMERIC(7) NOT NULL, Nome VARCHAR(100) NOT NULL, Idade SMALLINT, DataNasc DATE, CidadeOrigem VARCHAR(100) DEFAULT 'Sao Carlos', CONSTRAINT aluno_menor_pk PRIMARY KEY(NUSP), CONSTRAINT aluno_menor_un UNIQUE(Nome), CONSTRAINT aluno_menor_ck CHECK(Idade > 15) ); INSERT INTO aluno_menor SELECT * FROM aluno WHERE Idade < 18; USP – ICMC – GBDI

Comandos DML UPDATE – modifica o valor de um atributo em uma ou mais tuplas da tabela UPDATE tabela SET atributo1 = <valor ou expressão>, atributo2 = <valor ou expressão>, ... WHERE <condição de localização> USP – ICMC – GBDI

Comandos DML DELETE FROM tabela1 [FROM tabela2] DELETE – remove uma ou mais tuplas da tabela DELETE FROM tabela1 [FROM tabela2] [WHERE <condição de localização>] USP – ICMC – GBDI

Exercícios Atualizar os seguintes dados: Aluno = {Nome, Nusp, Idade, DataNasc, CidadeOrigem}    Professor = {Nome, NFunc, Idade, Titulação}  Disciplina = {Sigla, Nome, NCred, Professor, Livro} Turma = {Sigla, Numero, NAlunos}  Matrícula = {Sigla, Numero, Aluno, Ano, Nota, Frequencia} Exercícios Atualizar os seguintes dados: alterar para 70% a frequência de todos os alunos com nota acima de 5.0 e frequência abaixo 70% UPDATE MATRICULA SET FrequenciaPorc = 70 WHERE Nota >= 5 AND FrequenciaPorc < 70; acrescentar um crédito para as disciplinas do departamento de Matemática(SM) UPDATE Disciplina SET NCred = NCred+1 WHERE Sigla LIKE 'SM%'; Remover os seguintes dados matrícula dos alunos da turma 1 de SC241 DELETE FROM MATRICULA WHERE Sigla = 'SC241' AND Numero = 1; disciplinas com número de créditos superior a 6 DELETE FROM MATRICULA WHERE Ncred > 6; USP – ICMC – GBDI

Comandos DML SELECT – comando de consulta retorno  tabela resultado (multiconjunto) SELECT [DISTINCT|ALL] <lista de atributos> FROM <lista de tabelas> [WHERE <condições>] [GROUP BY atributo] [HAVING <condições>] [ORDER BY atributo [ASC|DESC]] USP – ICMC – GBDI

SELECT SELECT  O QUE se deseja na tabela resultado ALL – resultado pode conter tuplas duplicadas (default) DISTINCT – resultado contém somente tuplas distintas <lista de atributos> ou * (para todos os atributos) FROM  DE ONDE retirar os dados necessários WHERE  CONDIÇÕES de consulta condições de seleção condições de junção Distinct – encarece a consulta pois requer ordenação para eliminação de repetição USP – ICMC – GBDI

SELECT Cláusula FROM com mais de uma tabela Junção (Join) WHERE  condição de junção SELECT [DISTINCT|ALL] <atributos> FROM tabela1, tabela2 WHERE tabela1.atributo1 = tabela2.atributo3 USP – ICMC – GBDI

SELECT Funções Agregadas entrada  conjunto de valores saída  valor Exemplos: AVG(atributo)  calcula a média da coluna atributo COUNT() count(*) – retorna o número de tuplas de uma consulta count(atributo) – retorna o nro de valores da coluna atributo USP – ICMC – GBDI

SELECT Funções Agregadas Exemplos MAX(atributo)  recupera o valor máximo da coluna atributo MIN(atributo)  recupera o valor mínimo da coluna atributo SUM(atributo)  obtém a soma de valores da coluna atributo ... USP – ICMC – GBDI

SELECT GROUP BY  agrupamento de tuplas para a aplicação de funções agregadas HAVING  condições aplicadas a grupos já formados por GROUP BY ORDER BY  estabelece a ordenação lógica da tabela de resultados ASC (default) DESC OBS: group by é usada para agrupar os dados para que seja aplicada alguma função agregada sobre os grupos Group by encarece consulta porque requer ordenação de tuplas. No Interbase – os atributos da tabela resultado têm que constar no group by, para que não seja pedido um atributo que tem mais de um valor para o mesmo valor de atributo de agrupamento. - No MySQL – atributo na tabela resultado pode não estar no group by, e o valor retornado é o correspondente ao primeiro registro da tabela USP – ICMC – GBDI

SELECT GROUP BY  agrupamento de tuplas para a aplicação de funções agregadas HAVING  condições aplicadas a grupos já formados por GROUP BY ORDER BY  estabelece a ordenação lógica da tabela de resultados ASC (default) DESC GROUP BY, ou agrupamento, assume a presença de valores repetidos  portanto, apesar de aceito, não faz sentido a realização de agrupamentos sobre atributos chave OBS: group by é usada para agrupar os dados para que seja aplicada alguma função agregada sobre os grupos Group by encarece consulta porque requer ordenação de tuplas. No Interbase – os atributos da tabela resultado têm que constar no group by, para que não seja pedido um atributo que tem mais de um valor para o mesmo valor de atributo de agrupamento. - No MySQL – atributo na tabela resultado pode não estar no group by, e o valor retornado é o correspondente ao primeiro registro da tabela USP – ICMC – GBDI

Exemplo: 1o Passo: junção Aluno = {Nome, NUSP} Matricula= {Sigla, Numero, Aluno, Ano, Nota} Disciplina = {Sigla, Nome} {<Zeca, 11111>, <Zico, 22222>, <Juca, 33333>, <Tuca, 44444> } {<SCC-541, 1, 11111, 2009, 3.0>, <SCC-541, 1, 11111, 2010, 7.0>, <SCC-240, 1, 11111, 2010, 5.0>, <SCC-240, 1, 22222, 2009, 4.0>} {<SCC-541, LabBD>, <SCC-240, BD>} - Selecionar os nomes dos alunos que fizeram uma mesma disciplina mais de uma vez. Listar também o nome da disciplina, o nro de vezes que cursou e a nota máxima que o aluno obteve (considerando todas as vezes que cursou). 1o Passo: junção select .... from Aluno A join Matricula M on A.NUSP = M.Aluno join Disciplina D on D.Sigla = M.Sigla SELECT NOME FROM ALUNO WHERE NUSP IN( SELECT ALUNO.NUSP --, SIGLA, COUNT(*), MAX(MATRICULA.NOTA) FROM ALUNO, MATRICULA WHERE ALUNO.NUSP = MATRICULA.ALUNO GROUP BY ALUNO.NUSP, MATRICULA.SIGLA HAVING COUNT(*) > 1 ORDER BY ALUNO.NUSP) 17

Exemplo: (continuação) 2o Passo: agrupamento e agregação select A.Nome, D.Nome, count(*), max(M.Nota) from Aluno A join Matricula M on A.NUSP = M.Aluno join Disciplina D on D.Sigla = M.Sigla group by A.Nome, D.Nome Grupo Zeca Grupo Zico sub-grupo LabBD sub-grupo BD sub-grupo BD <LabBD, 3.0> <BD, 5.0> <BD, 5.0> <LabBD, 7.0> Funções COUNT e MAX aplicadas sobre cada sub-grupo 18

{A.Nome, D.Nome, count, max} Exemplo: (continuação) 3o Passo: condição having select A.Nome, D.Nome, count(*), max(M.Nota) from Aluno A join Matricula M on A.NUSP = M.Aluno join Disciplina D on D.Sigla = M.Sigla group by A.Nome, D.Nome having count(*) > 1 Grupo Zeca Grupo Zico sub-grupo LabBD sub-grupo BD sub-grupo BD <LabBD, 3.0> Outro exemplo, assumindo que nome é chave (não se repete) SELECT L1.NOME, COUNT(L2.CODDISC),MAX(L2.NOTA) FROM lbd01_vinculo_usp L1, lbd05_matricula L2 WHERE L1.nrousp = l2.nrousp AND l2.nota BETWEEN 3 AND 6 GROUP BY L1.NOME HAVING MAX(L2.NOTA) > 5 ORDER BY L1.NOME <BD, 5.0> <BD, 5.0> <LabBD, 7.0> {A.Nome, D.Nome, count, max} {< Zeca, LabBD, 2, 7.0>} 19

Aluno = {Nome, Nusp, Idade, DataNasc, CidadeOrigem}    Professor = {Nome, NFunc, Idade, Titulação}  Disciplina = {Sigla, Nome, NCred, Professor, Livro} Turma = {Sigla, Numero, NAlunos}  Matrícula = {Sigla, Numero, Aluno, Ano, Nota, Frequencia} Exercícios Selecionar nome, nusp e datanasc de todos os alunos que são de São Paulo. Selecionar nusp dos alunos que cursam a disciplina SCC518 ou a SCC240. Selecionar nome e nusp de todos os alunos matriculados em disciplinas do SCC Selecionar nome e nusp dos alunos, nome e sigla das disciplinas, e número de alunos da turma de todos os alunos matriculados em disciplinas do SCC USP – ICMC – GBDI

Aluno = {Nome, Nusp, Idade, DataNasc, CidadeOrigem}    Professor = {Nome, NFunc, Idade, Titulação}  Disciplina = {Sigla, Nome, NCred, Professor, Livro} Turma = {Sigla, Numero, NAlunos}  Matrícula = {Sigla, Numero, Aluno, Ano, Nota, Frequencia} Exercícios Selecionar, para cada aluno, seu nome e a média das notas das disciplinas que cursou. Ordenar por nome de aluno Selecionar, para cada aluno, seu nome e a média das notas das disciplinas em que foi aprovado (nota >= 5). Ordenar por nome de aluno Selecionar os nomes dos alunos que fizeram uma mesma disciplina mais de uma vez. Listar também o nome da disciplina, o nro de vezes que cursou e a nota máxima que o aluno obteve (considerando todas as vezes que cursou). USP – ICMC – GBDI

Leitura recomendada R. Elmasri, S. Navathe: Fundamentals of Database Systems – 4th Edition Capítulo 8 A. Silberschatz, H. F. Korth, s. Sudarshan: Sistema de Banco de Dados Capítulo 4 USP – ICMC – GBDI

SELECT Aluno, Sigla FROM Matricula WHERE Sigla IN ('SC240', 'SC540'); Selecionar nome, nusp e datanasc de todos os alunos que são de São Paulo. select nome, nusp, datanasc from Aluno where CidadeOrigem = 'Sao Paulo'; 2) Selecionar os alunos (NUSP) que cursam a disciplina SCC518 ou a SCC 240; SELECT Aluno, Sigla FROM Matricula WHERE Sigla IN ('SC240', 'SC540'); 3) Selecionar nome e nusp dos alunos e sigla das disciplinas de todos os alunos matriculados em disciplinas do SCC SELECT nome, nusp, sigla FROM Aluno, Matricula WHERE Matricula.Sigla LIKE 'SC%' AND Matricula.Aluno = Aluno.NUSP; USP – ICMC – GBDI

FROM Aluno A, Matricula M, Disciplina D, Turma T 4) Selecionar ALUNO.nome e ALUNO.nusp dos alunos, DISCIPLINA.nome e DISCIPLINA.sigla das disciplinas, e TURMA.numero de todos os alunos matriculados em disciplinas SC* SELECT A.nome AS Nome_Aluno, A.nusp, D.sigla, D.nome AS Nome_Disciplina, D.numero, T.NAluno AS Turma FROM Aluno A, Matricula M, Disciplina D, Turma T WHERE T.Sigla LIKE 'SCC%‘ AND M.Aluno = A.NUSP AND M.Sigla = T.Sigla AND M.Numero = T.Numero AND T.Sigla = D.Sigla; 5) Selecionar, para cada aluno, seu nome e a média das notas das disciplinas que cursou. Ordenar por nome de aluno SELECT ALUNO.NOME, AVG(NOTA) AS MEDIA FROM ALUNO, MATRICULA WHERE ALUNO.NUSP = MATRICULA.ALUNO GROUP BY ALUNO.NOME ORDER BY ALUNO.NOME No exercício 5, é suficiente agrupar por nome, pois nome é Unique. USP – ICMC – GBDI

6) Selecionar, para cada aluno, seu nome e a média das notas das disciplinas em que foi aprovado (nota >= 5). Ordenar por nome de aluno SELECT ALUNO.NUSP, ALUNO.NOME, AVG(NOTA) AS MEDIA FROM ALUNO, MATRICULA WHERE MATRICULA.NOTA BETWEEN 5 AND 10 AND ALUNO.NUSP = MATRICULA.ALUNO GROUP BY ALUNO.NUSP, ALUNO.NOME Order by ALUNO.NOME 7) Selecionar os nomes dos alunos que fizeram uma mesma disciplina mais de uma vez. Listar também o nome da disciplina, o nro de vezes que cursou e a nota máxima que o aluno obteve (considerando todas as vezes que cursou). SELECT ALUNO.NUSP, ALUNO.NOME, MATRICULA.SIGLA, COUNT(*), MAX(MATRICULA.NOTA) FROM ALUNO, MATRICULA WHERE ALUNO.NUSP = MATRICULA.ALUNO GROUP BY ALUNO.NUSP, ALUNO.NOME, MATRICULA.SIGLA HAVING COUNT(*) > 1 USP – ICMC – GBDI