PostGres Intersect Command

PostGres Intersect Command
O recurso PostGresql Intersects combina os valores resultantes de duas ou mais instruções selecionadas. Esta opção é usada para buscar as entidades comuns em duas ou mais tabelas. Então um único valor resultante é obtido. É obtido um conjunto de linhas presentes em ambas as tabelas. Esse recurso é muito útil para buscar todos os registros comuns em uma única consulta usando mais.

Sintaxe

Selecione Column_Name1, column_name2 da tabela1
Intersect
Selecione Column_name1, column_name2 da tabela2

Esta é uma sintaxe básica do recurso de interseção. Isso pode ser alterado adicionando um asterisco para todos os dados, não especificando os nomes das colunas. O comando funciona de uma maneira que as instruções selecionadas funcionarão e buscarão o registro e, em seguida, o recurso Intersect escolherá os dados comuns e removerá o incomum.

Trabalho do recurso Intersect no PostgreSQL

  • Esse recurso é usado apenas quando temos dados comuns ou dados duplicados em ambas as colunas especificadas.
  • Ajuda a lidar com mais de uma tabela buscando as mesmas entidades das mesas.

Para implementar o comando intersect, precisamos criar três tabelas aqui. Podemos usar qualquer tabela, por exemplo, mas para entender o conceito de interseção, precisamos herdar alguns atributos e criar uma junta. O primeiro conterá todas as informações sobre o aluno. Enquanto a segunda e a terceira tabelas conterão uma parte das informações adicionadas no primeiro. Então, vamos criar a primeira tabela chamada estudante.

>> Crie aluno da tabela (
Chave primária serial student_id,
Student_name Varchar (255) não nulo
);

A tabela contém duas colunas, ID do aluno e o nome do aluno. Agora, criaremos ainda mais duas tabelas nomeadas e práticas. Ambas as tabelas são originárias do aluno da mesa dos pais. Portanto, para conectá -los, ambas as tabelas conterão a chave primária da tabela de estudantes como uma restrição de chave estrangeira para criar uma articulação entre todas as tabelas. Ambas as tabelas abaixo mencionadas têm um atributo próprio e um atributo como uma chave primária exportada da tabela de estudantes.

Crie o assunto da tabela (
Student_id int Primary Key,
junção_date data não nula,
Chave estrangeira (Student_id) Referências estudante (Student_id)
);
Criar tabela prática (
Student_id int Primary Key,
junção_date data não nula,
Chave estrangeira (Student_id) Referências estudante (Student_id)
);

Após a criação de todas as tabelas, usaremos uma declaração de inserção para inserir dados. Cada tabela receberá dados após a execução do comando.

>> Inserir em Student (Student_name) valores ('Thomas'), ('Bay Hikel'), ('Jason Sily'), ('Robert Hunt'), ('Arjit Suba'), ('Micky Angel'), ('Shweta Singh'), ('Tom Ridle'), ('Sabana'), ('Timmy Honad');

Você pode ver que os dados são inseridos apenas na coluna Nome; A coluna de identificação é preenchida automaticamente como o número de série. E os valores na coluna de identificação do assunto e tabelas práticas serão preenchidas da tabela de assunto. Mas a inserção no assunto e a tabela prática será de tal maneira que alguns IDs em ambas as tabelas devem ser semelhantes a lidar com a situação que aplicamos.

Da mesma forma, o assunto e as tabelas práticas são inseridas por dados.

Inserir nos valores do sujeito (1, '2000-02-01'), (2, '2001-06-01'), (5, '2002-01-01'), (7, '2005-06-01' );
>> Inserir em valores práticos (9, '2000-01-01'), (2, '2002-06-01'), (5, '2006-06-01'), (10, '2005-06- 01 ');

Tabela de assunto:

Tabela prática:

Agora, usaremos uma instrução SELECT para ver os dados inseridos na tabela de estudantes.

>> selecione * do aluno;

Exemplo 1

Este exemplo mostrará o registro daqueles alunos que se juntaram às disciplinas e práticas da tabela de estudantes. Isso será feito usando uma declaração intersect aplicada no assunto e na tabela prática. Este comando funcionará de tal maneira que considerará os IDs dos alunos no assunto e na aula prática. Aqueles IDs comuns em ambas as tabelas serão buscados separadamente.

>> Selecione Student_ID do assunto Classect Select Student_id de Practical;

Isso buscará duas linhas, pois apenas dois alunos se matricularam em ambos os assuntos e práticos. Ambos os IDs têm datas de união separadas, é por isso que não buscamos essa coluna.

Agora considere um cenário em que queremos buscar o registro da coluna ID e da coluna junção_date de uma tabela que cruza os dados na coluna ID da tabela prática e adivinhe o que acontecerá?

>> Selecione Student_id, Join_date do assunto Classect Select Student_id de Practical;

Um erro ocorrerá porque, para que o recurso intersect seja aplicado, devemos ter mencionado o mesmo número de colunas em ambas as tabelas. Caso contrário, a consulta não funcionará.

Então, para superar esse erro, agora levaremos as duas colunas para as duas tabelas se aplicarem ao cruzamento, mas infelizmente não há uma única linha que corresponda ao junção_date. Se qualquer data de união nas duas tabelas for a mesma, o valor resultante deve ter duas colunas com uma linha comum de ambas as tabelas afetadas.

>> Selecione Student_id, Join_date do assunto Classect Select student_id, junção_date FROM PRÁTICO;

Exemplo 2

Este exemplo inclui o mesmo comando intersect, mas agora alguns recursos adicionais são adicionados no comando que é a cláusula Ordem by. Este recurso é usado para organizar o resultado buscado. Mas, como mencionamos 'desc' com esta cláusula, o resultado é organizado em ordem decrescente.

>> Selecione Student_Id do assunto Classect Select Student_id da Ordem Prática por Student_id Desc;

A partir da saída, você pode ver que os valores foram organizados pela primeira vez em ordem ascendente, mas a DESC os converteu reversamente.

Exemplo 3

Neste exemplo, aplicaremos o comando intersect na coluna Student_id do assunto e da tabela de estudantes. Então, aqueles IDs que entramos apenas na tabela de assunto serão buscados.

>> Selecione Student_Id do assunto Classect Select Student_id do aluno;

Exemplo 4

Se você aplicar um recurso intersect na mesma tabela que você selecionou, ele buscará todos os registros da tabela, assim como o valor resultante obtido na instrução SELECT. Você pode ver que aplicamos o comando intersect na tabela prática sem especificar a coluna, então todos os dados junto com a data de junção são buscados.

>> Selecione * da interseção prática Selecionar * da prática;

Postgres intersect comando via pgadmin

Agora, verificaremos o comando intersect no painel pgadmin, como o PSQL. Depois de abrir a interface, vá para as tabelas no banco de dados do Postgres e opções de sequência. Continue expandindo até obter a opção Tabelas agora selecione o aluno da tabela e prossiga para a ferramenta de consulta para usar um comando.

>> Selecione Student_ID em Intersect Pratics Select Student_id do aluno;

Alteramos a consulta acima, na qual o recurso intersect é aplicado na tabela prática e no aluno.

Depois de aplicar a consulta, execute -a selecionando a opção. Você verá que todos os IDs comuns são buscados a partir das duas tabelas especificadas no comando.

Conclusão

O artigo 'PostGres Intersect Command' descreve o funcionamento deste operador no sistema de banco de dados PostGresql. Alguns exemplos elementares são usados ​​aqui para descrever seu trabalho em detalhes. Cada dados comuns podem ser buscados facilmente usando esse recurso intersect nos comandos para evitar qualquer redundância e acoplamento de dados em um banco de dados.