Comandos Alias, Joins, Funções e Índice Professor Esp. Diego André Sant’Ana Disciplina: Banco de Dados II professordiegosantana.wordpress.com.

Slides:



Advertisements
Apresentações semelhantes
O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Advertisements

Banco de Dados Prof. Antonio.
SQL Avançado Continuação
Prof.: Bruno Rafael de Oliveira Rodrigues
Prof.: Bruno Rafael de Oliveira Rodrigues
Elaini Simoni Angelotti
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados I 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:
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone: 9531 – 7555.
SQL Structured Query Language Juliano Brito da Justa Neves PESCD – Programa de Estágio Supervisionado de Capacitação Docente.
Maurício Edgar Stivanello
SGBD.
PostGreSQL Primeiros Passos
Introdução à Engenharia da Computação
Oficina sobre banco de dados
SCC Bancos de Dados e Suas Aplicações
Operação de União “JOIN”
SQL Structured Query Language
Linguagem de Banco de Dados - SQL
12 Horas Instrutor: Antonio Itamar Júnior
Banco de dados Profª Kelly Medeiros.
PostgreSQL.
Query Tuning Lílian Simão Oliveira.
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.
SQL Server 2012 Tipos de Dados e Tabelas
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação.
Tipos de Linguagens do Banco de Dados
Banco de Dados Aplicado ao Desenvolvimento de Software
Banco de Dados PostgreSQL.
Cursor Professor Esp. Diego André Sant’Ana
III – Oracle10g Funções que Manipulam Apontadores.
Desenvolvendo um script SQL
Rafael Lucio, Desenvolvedor Jr Padrão Informática e Assessor de TI Secretaria Municipal da Saúde;
Treinamento sobre SQL.
VIEW - VISÕES Professor Esp. Diego André Sant’Ana
Banco de dados.
Baseado no material do Professor Raul Paradeda
©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.
Banco de dados O que é MySQL Criar bando de dados
SEGUNDA FASE / S2B MIC PERNAMBUCO
Triggers (Gatilhos) Professor Esp. Diego André Sant’Ana
SCC Bancos de Dados e Suas Aplicações
Comandos SQL e Funções Professor Esp. Diego André Sant’Ana
SQLite Banco de Dados II.
Curso de Análise e Desenvolvimento de Sistemas Projeto de Banco de Dados Marcelo da Silveira Siedler.
Banco de Dados I I Comandos SQL
Linguagem SQL Prof. Juliano.
SQL Structured Query Language Linguagem de Consulta Estruturada
Fundamentos de Banco de Dados Fundamentos de Banco de Dados Prof. Gale 2º. Semestre 2008.
CASE WHEN THEN ELSE END Professor Esp. Diego André Sant’Ana Disciplina: Banco de Dados II professordiegosantana.wordpress.com.
Structured Query Language
Equipe de monitoria Aula prática 4.  Tipos  Tabela de Objetos  Herança  Métodos  Referências  Coleções  Composição de coleções  Conectividade.
Criar Tabelas Professor Esp. Diego André Sant’Ana Disciplina: Banco de Dados II.
Prof. Rebecca Arambasic AGBD LPBD Pesquisa avançada UNION / INTERSECT / EXCEPT Aula 1 / 2010.
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
1 Introdução à Manipulação de Dados SQL – Structured Query Language  Tabela = Relação  DDL – Data Definition Language  Sub-conjunto do SQL que suporta.
Conceitos básicos Professor Esp. Diego André Sant’Ana
Daniel Paulo Introdução Neste capítulo trataremos a relação entre tabelas e FILEGROUPS, bem como a alocação interna de dados.
Associações = JOIN SERVE PARA CONVERTER DADOS ENCONTRADOS EM DUAS OU MAIS TABELAS. CLÁUSULA JOIN PERMITE QUE OS DADOS DE VÁRIAS TABELAS SEJAM COMBINADOS.
Aula 09: Comando SELECT: Ligações entre tabelas e Subconsultas
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
Banco de Dados SQL (Structured Query Language) Hayslan Nicolas Colicheski Bucarth – IFRO / 2015 –
Fundamentos de Banco de Dados Prof. André Cypriano M. Costa
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva.
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.
Transcrição da apresentação:

Comandos Alias, Joins, Funções e Índice Professor Esp. Diego André Sant’Ana Disciplina: Banco de Dados II professordiegosantana.wordpress.com

Alias(Apelido) Alias Você pode dar uma tabela ou uma coluna outro nome usando um alias. Isto pode ser uma boa coisa a se fazer se o nome da tabela ou coluna que forem muito complexo Alias de Colunas SELECT id_estado AS idest,* FROM estado Alias de Tabelas SELECT e.id_estado FROM estado AS e WHERE e.id_estado=1

JOIN(JUNÇÃO) A palavra-chave JOIN é usada em uma instrução SQL para consultar os dados de duas ou mais tabelas, com base em uma relação entre deter Tabelas em um banco de dados são, muitas vezes, relacionadas umas às outras com as teclas. Uma chave primária é uma coluna (ou uma combinação de colunas), com um valor único para cada linha. Cada chave primária valor deve ser exclusivo dentro da tabela. O objetivo é vincular os dados em conjunto, em tabelas, sem repetição de todos os dados em cada tabela.

INNER JOIN(JUNÇÃO) select * from clube.pessoa pes inner join clube.pessoa_clube pesclu on pes.id_pessoa=pesclu.id_pessoa inner join clube.clube clu on pesclu.id_clube=clu.id_clube

JOIN(JUNÇÃO) INNER JOIN: Regresso filas quando há, pelo menos, um jogo em ambas as tabelas SELECT * FROM estado est INNER JOIN cidade cid ON est.id_estado = cid.id_estado

LEFT JOIN LEFT JOIN: Retornar todas as linhas da tabela à esquerda, mesmo quando não há jogos no quadro do direito SELECT * FROM estado est LEFT JOIN cidade cid ON est.id_estado = cid.id_estado

LEFT JOIN select * from clube.pessoa pes left join clube.pessoa_clube pesclu on pes.id_pessoa=pesclu.id_pessoa left join clube.clube clu on pesclu.id_clube=clu.id_clube

RIGHT JOIN RIGHT JOIN: Retornar todas as linhas da tabela à direita, mesmo se não houver jogos no quadro da esquerda SELECT * FROM estado est RIGHT JOIN cidade cid ON est.id_estado = cid.id_estado

RIGHT JOIN select * from clube.pessoa pes right join clube.pessoa_clube pesclu on pes.id_pessoa=pesclu.id_pessoa right join clube.clube clu on pesclu.id_clube=clu.id_clube

FULL JOIN FULL JOIN: Regresso filas quando há um jogo em um dos quadros SELECT * FROM estado est FULL JOIN cidade cid ON est.id_estado = cid.id_estado

UNION O operador UNION é usado para combinar o resultado-conjunto de dois ou mais SELECT. Observe que cada SELECT declaração no âmbito da União devem ter o mesmo número de colunas. As colunas devem ter também os tipos de dados semelhantes. Além disso, as colunas em cada SELECT declaração deve ser na mesma ordem. SELECT SIGLA FROM estado est UNION ALL SELECT SIGLA FROM estado est select nome_cliente from cliente union all select nome_pessoa from clube.pessoa

CROSS JOIN CROSS JOIN – Todos os dados da tabela à esquerda de JOIN são cruzados com os dados da tabela à direita de JOIN por meio do CROSS JOIN, também conhecido como produto cartesiano. É possível cruzarmos informações de duas ou mais tabelas. select NOME_CARRO,substring(nome_carro,0,4)|| lpad(generate_series::integer||'',4,'0') from auto.carro cross join generate_series(1,1000,2)

CROSS JOIN CROSS JOIN – Todos os dados da tabela à esquerda de JOIN são cruzados com os dados da tabela à direita de JOIN por meio do CROSS JOIN, também conhecido como produto cartesiano. É possível cruzarmos informações de duas ou mais tabelas. select NOME_CARRO,substring(nome_carro,0,4)|| lpad(generate_series::integer||'',4,'0') from auto.carro cross join generate_series(1,1000,2)

Função LPAD Completa a esquerda com o caracter que desejar ate a quantidade informada lpad(valor, qtd caracter, caracter a ser colocado) lpad(valor||’’,4,'0')

Função RPAD Completa a direita com o caráter que desejar ate a quantidade informada rpad(valor, qtd caracter, caracter a ser colocado) rpad(valor||’’,4,'0')

CRIAR A TABELA CARRO CREATE TABLE auto.carro ( id_carro bigserial NOT NULL, nome_carro character varying(100), placa character varying(7) NOT NULL, CONSTRAINT carro_pkey PRIMARY KEY (id_carro) )]

INSERT DA TABELA CARRO INSERT INTO auto.carro(nome_carro, placa) VALUES ('FUSCA', 'HTT'||lpad(random()||'',4,'0')); INSERT INTO auto.carro(nome_carro, placa) VALUES ('UNO', 'HTT'||lpad(random()||'',4,'0')); INSERT INTO auto.carro(nome_carro, placa) VALUES ('SENTRA', 'HTT'||lpad(random()||'',4,'0')); INSERT INTO auto.carro(nome_carro, placa) VALUES ('CIVIC', 'HTT'||lpad(random()||'',4,'0')); INSERT INTO auto.carro(nome_carro, placa) VALUES ('PALIO', 'HTT'||lpad(random()||'',4,'0')); INSERT INTO auto.carro(nome_carro, placa) VALUES ('FUSCA', 'HTT'||lpad(random()||'',4,'0')); INSERT INTO auto.carro(nome_carro, placa) VALUES ('CITY', 'HTT'||lpad(random()||'',4,'0')); INSERT INTO auto.carro(nome_carro, placa) VALUES ('S10', 'HTT'||lpad(random()||'',4,'0')); INSERT INTO auto.carro(nome_carro, placa) VALUES ('RANGER', 'HTT'||lpad(random()||'',4,'0')); INSERT INTO auto.carro(nome_carro, placa) VALUES ('SILVERADO', 'HTT'||lpad(random()||'',4,'0')); INSERT INTO auto.carro(nome_carro, placa) VALUES ('SANDERO', 'HTT'||lpad(random()||'',4,'0')); INSERT INTO auto.carro(nome_carro, placa) VALUES ('CLIO', 'HTT'||lpad(random()||'',4,'0')); INSERT INTO auto.carro(nome_carro, placa) VALUES ('MERIVA', 'HTT'||lpad(random()||'',4,'0'));

INSERT DA TABELA CARRO --COMO FAZER UPDATE UTILIZANDO O RAMDOM E LPAD update auto.carro set placa='HTT'||lpad(random()::integer||'',4,'0') --SELECT BASICO SELECT * FROM AUTO.CARRO --SELECT COM CROSS JOIN select NOME_CARRO,substring(nome_carro,0,4)|| lpad(generate_series::integer||'',4,'0') from auto.carro cross join generate_series(1,1000,2)

INSERT CRUZADO UTILIZANDO A TABELA CARRO INSERT INTO CARRO (NOME_CARRO,PLACA) ( select NOME_CARRO, substring(nome_carro,0,4)|| lpad(generate_series::integer||'',4,'0') from auto.carro cross join generate_series(1,1000,2) )

INDEXAR UM CAMPO CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ name ] ON table [ USING method ] ( { column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [,...] ) [ WITH ( storage_parameter = value [,... ] ) ] [ TABLESPACE tablespace ] [ WHERE predicate ]

INDEXAR UM CAMPO CREATE INDEX ON AUTO.CARRO ((lower(NOME_CARRO))); CREATE UNIQUE INDEX PLACA_IDX ON AUTO.CARRO (PLACA); DROP INDEX PLACA_IDX

INDEXAR UM CAMPO CREATE INDEX idx_carro ON AUTO.CARRO (NOME_CARRO, PLACA); CREATE INDEX ON AUTO.CARRO ((lower(NOME_CARRO))); CREATE UNIQUE INDEX PLACA_IDX ON AUTO.CARRO (PLACA); DROP INDEX PLACA_IDX

Tipos de Índices O PostgreSQL suporta atualmente quatro tipos de índices: B-tree (árvore B), R-tree (árvore R), Hash e GiST. B-tree -> é o tipo padrão (assume quando não indicamos). São índices que podem tratar consultas de igualdade e de faixa, em dados que podem ser classificados. Indicado para consultas com os operadores: =, >. Também pode ser utilizado com LIKE, ILIKE, ~ e ~*. R-tree -> tipo mais adequado a dados espaciais. Adequado para consultas com os operadores:, ~=, &&. Hash ->indicados para consultas com comparações de igualdade simples. É desencorajado seu uso. Em seu lugar recomenda-se o B- tree. GiST ->

CRIAR UM ESQUEMA IFMS CREATE SCHEMA ifms;

CRIAR UMA TABELA CREATE TABLE ifms.aluno( ID_ALUNO SERIAL, NOME_ALUNO CHARACTER VARYING(250), MAE CHARACTER VARYING(250), PAI CHARACTER VARYING(250), DATA_NASCIMENTO DATE, DESCRICAO TEXT, FOTO BYTEA )

CARREGAR UMA TABELA CARREGUE A TABELA COM 15 DADOS, DEPOIS CRIE UM SCRIPT PARA GERAR DADOS ATE MAIS OU MENOS MIL REGISTROS.

INSERTS INSERT INTO ifms.aluno(nome_aluno, mae, pai, data_nascimento, descricao, foto) VALUES ('DIEGO','ELIANA','JOSE', ' '::DATE,'TRABALHA NO IFMS',NULL),('JOAO','ANA','JOAQUIM', ' '::DATE,'TRABALHA NO IFMS',NULL),('PEDRO','JESSICA','MOISES', ' '::DATE,'TRABALHA NO IFMS',NULL),('MARIA','JOAQUINA','JOAO', ' '::DATE,'TRABALHA NO IFMS',NULL),('MARILIA','JOSEFINA','PEDRO', ' '::DATE,'TRABALHA NO IFMS',NULL),('GABRIEL','RENATA','PAULO', ' '::DATE,'TRABALHA NO IFMS',NULL),('CLAUDEMIR','ANA','LUIZ', ' '::DATE,'TRABALHA NO IFMS',NULL),('RODRIGO','JOSEFINA','CLAUDEMIR', ' '::DATE,'TRABALHA NO IFMS',NULL),('ANGELICA','MARCIA','MARIA', ' '::DATE,'TRABALHA NO IFMS',NULL),('LUCAS','JOSEFINA','JESUS', ' '::DATE,'TRABALHA NO IFMS',NULL),('NATHALIA','JOSEFINA','DELMIR', ' '::DATE,'TRABALHA NO IFMS',NULL),('IVANALDO','CASSIMA','RONIVAN', ' '::DATE,'TRABALHA NO IFMS',NULL),('CRISTIANA','BEATRIZ','VITOR', ' '::DATE,'TRABALHA NO IFMS',NULL);

GENERATE SERIES select * from generate_series(1,4,1) SELECT nome_aluno, mae, pai, data_nascimento+generate_series, descricao from ifms.aluno cross join generate_series(1,2000,1)

INSERT INSERT INTO ifms.aluno (nome_aluno, mae, pai, data_nascimento, descricao ) ( SELECT nome_aluno, mae, pai, data_nascimento+generate_series, descricao from ifms.aluno cross join generate_series(1,2000,1) )

FAÇA TESTES COM AS PESQUISAS CARREGUE A TABELA COM 15 DADOS, DEPOIS CRIE UM SCRIPT PARA GERAR DADOS ATE MAIS OU MENOS MIL REGISTROS.

REFERÊNCIAS nctions-matching.html ados/561_utilizando-o-postgres-dicas-de- comandos-sql-e-essenciais-para-a- manipulacao-de-dados