SQL Structured Query Language Juliano Brito da Justa Neves PESCD – Programa de Estágio Supervisionado de Capacitação Docente.

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
Prof.: Bruno Rafael de Oliveira Rodrigues
Prof.: Bruno Rafael de Oliveira Rodrigues
Banco de Dados Bruno Rafael de Oliveira Rodrigues.
Elaini Simoni Angelotti
Projeto e Organização de BD
Laboratório de Banco de Dados
Visões Marilde Santos.
Exercícios SQL Marilde Santos.
Maurício Edgar Stivanello
SGBD.
Introdução à Engenharia da Computação
Oficina sobre banco de dados
SCC Bancos de Dados e Suas Aplicações
SQL Structured Query Language
Linguagem de Banco de Dados - SQL
Bancos de Dados – SQL – parte 1
Banco de dados Profª Kelly Medeiros.
Equipe de monitoria Aula prática 2. Apresentação do caso de estudo Conceitual Lógico Algumas informações iniciais Consultas e exercícios Surpresa... =)
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
Laboratório de Banco de Dados SGBD Oracle 10 G
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
SQL Server 2012 Integridade de Dados
Banco de Dados PostgreSQL.
Oracle 9i: SQL e PL/SQL Bruno Celso Cunha de Freitas
SEQUENCE, PROCEDURE, FUNÇÃO, TRIGGER
Desenvolvendo um script SQL
Linguagem SQL.
Rafael Lucio, Desenvolvedor Jr Padrão Informática e Assessor de TI Secretaria Municipal da Saúde;
VIEW - VISÕES Professor Esp. Diego André Sant’Ana
Introdução a linguagem SQL
Banco de dados.
Linguagem de Definição de Dados
Baseado no material do Professor Raul Paradeda
REVISÃO Comandos SQL - DML SELECT * FROM ?.
VII- Álgebra Relacional
©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.
SQL- Structured Query Language  SQL é uma linguagem de comandos para interagir com uma BD relacional (não é case-sensitive).  A linguagem Java permite.
SCC Bancos de Dados e Suas Aplicações
Contatos Gladimir Catarino
Fundamentos de Banco de Dados Fundamentos de Banco de Dados Prof. Gale 2º. Semestre 2008.
Banco de Dados I I Comandos SQL
Linguagem SQL Prof. Juliano.
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)
1 Introdução à Manipulação de Dados SQL – Structured Query Language  Tabela = Relação  DDL – Data Definition Language  Sub-conjunto do SQL que suporta.
Daniel Paulo Introdução Neste capítulo trataremos a relação entre tabelas e FILEGROUPS, bem como a alocação interna de dados.
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
Banco de Dados SQL (Structured Query Language) Hayslan Nicolas Colicheski Bucarth – IFRO / 2015 –
Fundamentos de Banco de Dados Prof. André Cypriano M. Costa
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.
Banco de Dados para Redes– Aula 03 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

SQL Structured Query Language Juliano Brito da Justa Neves PESCD – Programa de Estágio Supervisionado de Capacitação Docente

SQL Linguagem padrão para SGBDs relacionais –Motivo pelo grande sucesso dos SGBDs relacionais Linguagem de Definição de Dados (DDL) Linguagem de Manipulação de Dados (DML)

Esquema Agrupar tabelas e outros elementos (constraints, views...) que pertencem a mesma aplicação de banco de dados CREATE SCHEMA AUTHORIZATION ;

Esquema Esquemas no Oracle –Criar várias tabelas e views e dar permissões em uma única transação. CREATE SCHEMA AUTHORIZATION [create_table, create_view, grant]+ ;

Esquema Esquemas no Oracle –O CREATE SCHEMA não cria realmente um esquema. O esquema é automaticamente criado quando um usuário é criado. Vamos utilizar um dos usuários previamente criados.

Oracle Conexão com o SGBD Oracle –Putty –SSH: falcon.comp.ufscar.br –Login: Pessoal de cada um –No prompt do linux: sqlplus Login: compX X número de 1 a 20 Senha: igual ao login

Estudo de Caso EQUIPE (#Codigo_Equipe,Nome_Equipe,Cidade,Estado) JOGADOR (#Codigo_Jogador,Nome_Jogador,Posição_Jog,#Codigo_Equipe) PARTIDA (#Codigo_Partida,Cidade,Estado,Nome_Juiz,Data) JOGA (#Codigo_Jogador,#Codigo_Partida,Numero_Gols)

Tabelas CREATE TABLE [esquema.]tabela ( coluna1 tipo_dado [DEFAULT expr] [constraint_coluna],... colunaN tipo_dado [DEFAULT expr] [constraint_coluna], [constraint_tabela] );

Tipos de Dados Integer, Float, Real... Char (n) Varchar2 (n) Clob Long Blob Raw e Long Raw Number (p,e) Date Timestamp Interval Year (p) to month Interval Day (dp) to second (sp)

Constraints Grupo 1 –NOT NULL –Unique Grupo 2 –Check –Primary key –Foreign key CONSTRAINT nome tipo expr constraint cod Primary Key constraint fcod Foreign Key references tabela(coluna) constraint chk Check (uf in (SP, MG))

Exemplo EQUIPE (#Codigo_Equipe,Nome_Equipe,Cidade,Estado) CREATE TABLE equipe ( codigo_equipe INTEGER constraint equipe_pk Primary Key, nome_equipe Varchar2(20) NOT NULL, cidade Varchar2(10), estado Varchar2(10) );

Exemplo JOGADOR (#Codigo_Jogador,Nome_Jogador,Posição_Jog,#Codigo_Equipe) Codigo_jogador INTEGER Nome_jogador Varchar2(20) Posicao_jog Varchar2(15) Codigo_Time INTEGER

Exemplo JOGADOR (#Codigo_Jogador,Nome_Jogador,Posição_Jog,Codigo_equipe) CREATE TABLE jogador ( codigo_jogador INTEGER constraint jogador_pk Primary Key, nome_jogador Varchar2(20) NOT NULL, posicao_jog Varchar2(15), codigo_equipe INTEGER, constraint jogador_fk Foreign Key (codigo_equipe) references equipe(codigo_equipe) );

Exemplo PARTIDA (#Codigo_Partida,Cidade,Estado,Nome_Juiz,Data) Codigo_partida INTEGER cidade Varchar2(10) estado Varchar2(10) nome_juiz Varchar2(20) data date

Exemplo PARTIDA (#Codigo_Partida,Cidade,Estado,Nome_Juiz,Data) CREATE TABLE partida ( codigo_partida INTEGER constraint partida_pk Primary Key, cidade Varchar2(10) NOT NULL, estado Varchar2(10), nome_juiz Varchar2(20) NOT NULL, data Date );

Mais Constraints! ON DELETE –SET NULL –CASCADE –SET DEFAULT ON UPDATE –SET NULL –CASCADE –SET DEFAULT

Exemplo JOGA (#Codigo_Jogador,#Codigo_Partida,Numero _Gols) codigo_jogador Integer Se apagar jogador, apaga. codigo_partida Integer Se apagar partida, apaga. numero_gols Integer

Exemplo JOGA (#Codigo_Jogador,#Codigo_Partida,Numero_Gols) CREATE TABLE joga ( codigo_jogador integer, constraint joga1_fk foreign key (codigo_jogador) references jogador(codigo_jogador) on delete cascade, codigo_partida integer, constraint joga2_fk foreign key (codigo_partida) references partida(codigo_partida) on delete cascade, numero_gols integer );

Alteração de tabelas Criar, alterar ou eliminar colunas Renomear a tabela Criar ou eliminar constraints Habilitar ou desabilitar constraints

Alteração de Tabelas ALTER TABLE [esquema.]tabela [add coluna tipo_dado [DEFAULT expr] [constraint_coluna] ] [modify coluna tipo_dado [DEFAULT expr] [constraint_coluna] ] [add constraint_coluna/constraint_tabela] [drop constraint_coluna/constraint_tabela [cascade]] [enable constraint_coluna/constraint_tabela] [disable constraint_coluna/constraint_tabela] ;

Exemplo Alterar a tabela joga para que o valor default de Numero_gols seja 0; ALTER TABLE joga MODIFY numero_gols INTEGER DEFAULT 0; Adicionar uma Primary Key em joga ALTER TABLE joga ADD constraint joga_pk Primary Key (codigo_jogador, codigo_partida);

Apagando Tabelas DROP TABLE [esquema.]tabela [CASDADE CONSTRAINTS]; CASCADE CONSTRAINTS elimina todas as restrições presentes em outras tabelas que façam referência à tabela que está sendo eliminada.

Índices Criar CREATE [UNIQUE] INDEX índice ON tabela (coluna [ASC | DESC]); UNIQUE Índice não aceita valores repetidos. É criado um índice UNIQUE sempre que uma Primary Key é criada. Apagando o índice DROP INDEX índice;

Exemplo select index_name from user_indexes; CREATE UNIQUE INDEX my_index ON partida (nome_juiz); select index_name from user_indexes;

Linguagem de manipulação de dados Inserindo dados INSERT INTO [esquema.]tabela (coluna1, coluna2,... colunaN) VALUES (valor1, valor2... valorN);

Inserindo dados Se for inserir na mesma ordem da definição da tabela: INSERT INTO [esquema.]tabela VALUES (valor1,... valorN); Inserção em determinados campos INSERT INTO [esquema.]tabela (colunaX, colunaY) VALUES (valorX, valorY);

Exemplo Criar o time Saravá Saci Soccer INSERT INTO equipe (codigo_equipe,nome_equipe,cida de,estado) VALUES (1,SSS,São Carlos, São Paulo); Opção INSERT INTO equipe VALUES (1, SSS, São Carlos, São Paulo);

Exemplo Inserir time Tiradentes, de Brasília, DF INSERT INTO equipe VALUES (2,Tiradentes,Brasilia,DF); Inserir time Enc97FC INSERT INTO equipe (codigo_equipe, nome_equipe) VALUES (3,Enc97FC);

Inserindo dados Cuidados com as restrições (constraints)! INSERT INTO JOGADOR VALUES (1,Juliano,goleiro,4); INSERT INTO equipe (codigo_equipe, nome_equipe) VALUES (4, Selecao); INSERT INTO JOGADOR VALUES (1,Juliano,goleiro,4);

Atualizando dados UPDATE tabela SET coluna = valor [, coluna = valor...] [WHERE condição]; Exemplo: Juliano mudou para atacante! UPDATE jogador SET posicao_jog = atacante where codigo_jogador = 1;

Apagando dados DELETE [FROM] tabela [WHERE condição]; Exemplo: Apagar Enc97FC DELETE FROM equipe WHERE codigo_equipe = 3;

Apagando dados Cuidados com as restrições (constraints)! DELETE FROM equipe WHERE codigo_equipe = 4; FALHA! DELETE jogador; DELETE FROM equipe WHERE codigo_equipe = 4; OK!

Consultando dados: SELECT Até o final da aula! Álgebra relacional Endereço do script Execução do script sql.txt

Selecionando dados Forma básica: SELECT FROM WHERE

Selecionando dados SELECT [DISTINCT] {*, colunas [AS alias], expressões, funções..} FROM {tabelas [AS alias]} [WHERE condição] [GROUP BY colunas] [HAVING condição] [ORDER BY colunas [ASC | DESC]];

Álgebra Relacional π (*) jogador SELECT DISTINCT * FROM jogador; σ (posicao_jog = atacante) jogador SELECT * FROM jogador WHERE posicao_jog = Atacante;

Álgebra Relacional π nome_jogador (σ (posicao_jog = Atacante) Jogador) SELECT DISTINCT nome_jogador FROM jogador where posicao_jog = Atacante; ρ Nome (π nome_jogador (σ (posicao_jog = Atacante) Jogador)) SELECT DISTINCT nome_jogador AS Nome FROM jogador where posicao_jog = Atacante;

União R1 π nome_jogador (σ (posicao_jog = Atacante) Jogador) R2 π nome_jogador (σ (codigo_equipe = 2) Jogador) Resultado R1 U R2 SELECT DISTINCT nome_jogador FROM jogador WHERE posicao_jog = Atacante UNION SELECT DISTINCT nome_jogador FROM jogador WHERE codigo_equipe = 2;

Interseção R1 π nome_jogador (σ (posicao_jog = Atacante) Jogador) R2 π nome_jogador (σ (codigo_equipe = 2) Jogador) Resultado R1 R2 SELECT DISTINCT nome_jogador FROM jogador WHERE posicao_jog = Atacante INTERSECT SELECT DISTINCT nome_jogador FROM jogador WHERE codigo_equipe = 2;

Subtração R1 π nome_jogador (σ (posicao_jog = Atacante) Jogador) R2 π nome_jogador (σ (codigo_equipe = 2) Jogador) Resultado R1 – R2 SELECT DISTINCT nome_jogador FROM jogador WHERE posicao_jog = Atacante MINUS SELECT DISTINCT nome_jogador FROM jogador WHERE codigo_equipe = 2;

Produto Cartesiano R1 π nome_jogador (π (*) Jogador) R2 π nome_equipe (π (*) Equipe) Resultado R1 × R2 SELECT DISTINCT nome_jogador, nome_equipe FROM jogador, equipe;

Join (Equijoin) R1 π (*) Jogador R2 π (*) Equipe Resultado R1 |x| equipe.codigo_equipe = jogador.codigo_equipe R2 SELECT * FROM jogador, equipe WHERE equipe.codigo_equipe = jogador.codigo_equipe;

Theta Join R1 π (*) Jogador R2 π (*) Equipe Resultado R1 |x| equipe.codigo_equipe > jogador.codigo_equipe R2 SELECT * FROM jogador, equipe WHERE equipe.codigo_equipe > jogador.codigo_jogador;

Natural Join R1 π nome_jogador, codigo_equipe (π (*) Jogador) R2 π nome_equipe, codigo_equipe (π (*) Equipe) Resultado π nome_jogador,nome_equipe ( R1 * codigo_equipe R2) SELECT DISTINCT nome_jogador, nome_equipe, codigo_equipe FROM jogador, equipe WHERE equipe.codigo_equipe = jogador.codigo_equipe;

Outer Join ]x| R1 π nome_jogador, codigo_equipe (π (*) Jogador) R2 π nome_equipe, codigo_equipe (π (*) Equipe) Resultado π nome_jogador,nome_equipe ( R1 ]x| equipe.codigo_equipe = jogador.codigo_equipe R2) SELECT nome_jogador, nome_equipe FROM jogador, equipe WHERE equipe.codigo_equipe (+) = jogador.codigo_jogador;

Divisão Todos os jogadores que fizeram gol em partidas onde Fabio Simplicio fez gol Fabio σ nome_jogador = Fabio Simplicio (Jogador) F_Par π codigo_partida (Joga |x| joga.codigo_jogador = Fabio.codigo_jogador Fabio) Jog_Par π codigo_jogador,codigo_partida (Joga) Result Jog_Par F_Par

Divisão SELECT * FROM jogador WHERE nome_jogador = Fabio Simplicio; SELECT DISTINCT codigo_partida FROM joga WHERE codigo_jogador = 51; SELECT DISTINCT codigo_jogador, codigo_partida FROM joga; SELECT DISTINCT codigo_jogador FROM joga WHERE (codigo_partida = 1 OR codigo_partida = 5) AND (codigo_jogador != 51);

Outras consultas Cobrimos todos os operadores da álgebra relacional. Veremos agora outros tipos de consultas comuns em SGBDs relacionais.

Consultas úteis Várias condições SELECT nome_jogador FROM Jogador WHERE posicao_jog = Goleiro AND codigo_equipe != 2; SELECT nome_jogador FROM Jogador WHERE posicao_jog = Goleiro OR posicao_jog = Atacante;

Consultas úteis DISTINCT SELECT DISTINCT posicao_jog FROM jogador; LIKE SELECT nome_jogador FROM jogador WHERE nome_jogador LIKE %Luis%;

Consultas úteis Operadores Matemáticos SELECT codigo_partida, numero_gols * 10 FROM joga; BETWEEN SELECT codigo_jogador, nome_jogador FROM jogador WHERE codigo_jogador BETWEEN 10 AND 20;

Consultas úteis IN SELECT nome_jogador FROM jogador WHERE codigo_jogador IN (SELECT codigo_jogador FROM joga WHERE numero_gols = 2); ALL SELECT codigo_jogador FROM joga WHERE numero_gols > ALL (SELECT numero_gols FROM joga WHERE codigo_partida = 2);

Consultas úteis EXISTS SELECT nome_jogador FROM jogador WHERE EXISTS (SELECT * FROM joga WHERE jogador.codigo_jogador = joga.codigo_jogador); NOT SELECT nome_jogador FROM jogador WHERE NOT EXISTS (SELECT * FROM joga WHERE jogador.codigo_jogador = joga.codigo_jogador);

Consultas úteis SUM, MAX, MIN, AVG SELECT SUM(numero_gols), MAX(numero_gols), MIN(numero_gols), AVG(numero_gols) FROM joga; COUNT SELECT COUNT(*)FROM jogador WHERE codigo_equipe = 1;

Consultas úteis GROUP BY SELECT COUNT(*), codigo_equipe FROM jogador GROUP BY codigo_equipe; HAVING SELECT COUNT(*), codigo_equipe FROM jogador GROUP BY codigo_equipe HAVING COUNT(*) > 30;

Consultas úteis IS [NOT] NULL SELECT * FROM partida WHERE nome_juiz IS NULL; SELECT * FROM partida WHERE nome_juiz IS NOT NULL;

Exercícios (desafios) Selecione os nomes das equipes que fizeram gols nos jogos apitados por Silvia π nome_equipe (σ (nome_juiz = Silvia) ( (((Partida |x| partida.codigo_partida joga.codigo_partida Joga) |x| codigo_jogador = jogador.codigo_jogador Jogador) |x| codigo_equipe = equipe.codigo_equipe Equipe) )

Exercícios (desafios) Selecione os nomes das equipes que fizeram gols nos jogos apitados por Silvia SELECT DISTINCT nome_equipe FROM equipe e, jogador j, partida p, joga WHERE p.nome_juiz ='Silvia' AND p.codigo_partida = joga.codigo_partida AND joga.codigo_jogador = j.codigo_jogador AND j.codigo_equipe = e.codigo_equipe;

Exercícios (desafios) Selecione os nomes das equipes que fizeram gols nos jogos apitados por Silvia NOME_EQUIPE Sao Paulo

Exercícios (desafios) Daqueles jogadores que marcaram gols, selecione o nome daqueles que não marcaram gols em Santos SELECT DISTINCT nome_jogador FROM jogador j, joga WHERE joga.codigo_jogador = j.codigo_jogador AND j.codigo_jogador NOT IN (SELECT codigo_jogador FROM joga, partida p WHERE p.cidade = Santos AND joga.codigo_partida = p.codigo_partida);

Exercícios (desafios) Daqueles jogadores que marcaram gols, selecione o nome daqueles que não marcaram gols em Santos NOME_JOGADOR Anderson Carlos Alberto Diego Fabio Simplicio Leandro Amaral Nenem William 7 linhas selecionadas.

Exercícios (desafios) Quantos gols cada equipe já fez? SELECT nome_equipe, SUM(numero_gols) FROM equipe e, joga, jogador j WHERE e.codigo_equipe = j.codigo_equipe AND j.codigo_jogador = joga.codigo_jogador GROUP BY nome_equipe;

Exercícios (desafios) Quantos gols cada equipe já fez? NOME_EQUIPE SUM(NUMERO_GOLS) Corinthians 2 Santos 6 Sao Paulo 7

Exercícios (desafios) Quem são, para que time jogam, os jogadores que fizeram gols em mais de um jogo? SELECT nome_jogador, nome_equipe FROM jogador j, equipe e WHERE j.codigo_equipe = e.codigo_equipe AND (SELECT COUNT(*) FROM joga WHERE j.codigo_jogador = joga.codigo_jogador) > 1;

Exercícios (desafios) Quem são, para que time jogam, os jogadores que fizeram gols em mais de um jogo? NOME_JOGADOR NOME_EQUIPE Fabio Simplicio Sao Paulo Luis Fabiano Sao Paulo