O que é CTE em PostgreSQL?

O que é CTE em PostgreSQL?

CTE em PostgreSQL significa expressão de tabela comum. É uma maneira de manter temporariamente os resultados de uma consulta PostGresql. Às vezes, escrevemos consultas extremamente complexas que são muito difíceis de interpretar. Nesses casos, o uso do CTE faz com que nossas consultas pareçam mais simples e mais legíveis. Com a ajuda deste artigo, pretendemos ensinar o uso do CTE no PostgreSQL no Windows 10.

Exemplo: Usando CTE no PostgreSQL:

Usaremos o CTE no PostgreSQL no Windows 10 no exemplo a seguir:

Etapa 1: criação de tabelas PostGresql:

Primeiro de tudo, criaremos duas tabelas PostgreSQL para usar o CTE posteriormente para extrair os resultados desejados dessas tabelas. Nesta ilustração, desejamos trabalhar com uma relação entre médicos e pacientes. Portanto, criaremos uma tabela chamada "Doutor" e a outra chamada "paciente".

Para criar a tabela "Doctor", executaremos a seguinte consulta PostGresql:

# Criar Table Doctor (DOC_ID Chave primária serial, doc_name varchar (255) não nula);

Esta consulta criará a tabela "Doctor" com dois atributos, eu.e. Doc_id e doc_name. Você também pode ver todo o processo de criação de tabela da imagem mostrada abaixo:

Agora, para criar a tabela "paciente", executaremos a seguinte consulta PostGresql:

# Crie paciente de tabela (PAT_ID Chave primária serial, PAT_NAME VARCHAR (255) NÃO NULL, PAT_TEMP IN NOT NULL, DOC_ID IN NÃO NULL);

Esta consulta criará a tabela "paciente" com quatro atributos, eu.e. PAT_ID, PAT_NAME, PAT_TEMPERATURA (isso representa a temperatura corporal do paciente) e doc_id (este é o mesmo doc_id que declaramos na tabela "Doctor". Aqui, ele está sendo usado como uma chave estrangeira para especificar quais médicos tratavam cada paciente). Você também pode ver todo o processo de criação de tabela da imagem mostrada abaixo:

Etapa 2: Registros de inserção nas tabelas PostgreSQL:

Depois de criar essas tabelas, precisamos inserir uma quantidade suficiente de registros nelas para usar esses registros para demonstrar o uso de CTE no PostgreSQL posteriormente em. Para inserir registros na tabela "Doctor", executaremos a seguinte consulta PostGresql:

# Inserir nos valores médicos (1, 'Sarah'), (2, 'Affan'), (3, 'Irtiza'), (4, 'Hina'), (5, 'Naila');

Esta consulta simplesmente inserirá os registros de cinco médicos diferentes na tabela "Doctor", como mostrado na imagem abaixo:

Agora, para inserir registros na tabela "paciente", executaremos a seguinte consulta PostGresql:

# Inserir nos valores dos pacientes (1, 'Saba', 99, 1), (2, 'Sidra', 100, 1), (3, 'Hamza', 100, 2), (4, 'Aslam', 98, 2), (5, 'Fizza', 101, 3), (6, 'iqra', 102, 3), (7, 'sadia', 100, 4), (8, 'Sobia', 99, 4) , (9, 'Salman', 100, 5), (10, 'Jawad', 103, 5);

Esta consulta inserirá os registros de 10 pacientes diferentes na tabela "paciente", como mostrado na imagem abaixo:

Observação: Você pode estar se perguntando por que mantivemos o número de registros da tabela "paciente" mais do que o "médico" um. Bem, um único médico pode atender a vários pacientes de cada vez. No entanto, isso é apenas para demonstração. Você pode manter o número de registros dessas duas tabelas iguais, se desejar.

Etapa 3: Veja os registros recém -inseridos nas tabelas PostgreSQL:

Antes de prosseguir, veremos rapidamente os registros inseridos em nossas duas tabelas PostGresql. Para a tabela "Doctor", executaremos a seguinte consulta PostGresql:

# Selecione * do médico;

Você pode ver todos os registros da tabela "Doctor" da imagem mostrada abaixo:

Agora, para a tabela "paciente", executaremos a seguinte consulta PostGresql:

# Selecione * do paciente;

Você pode ver todos os registros da tabela "paciente" da imagem mostrada abaixo:

Etapa 4: Use CTE para exibir todos os registros de uma tabela PostgreSQL:

Esta etapa demonstrará um uso relativamente simples de CTE no PostgreSQL. Queremos armazenar todos os registros de uma de nossas tabelas em uma expressão de tabela comum e simplesmente exibi -la no console. A consulta que vamos executar para esse fim é citada abaixo:

# Com cte_patient como (selecione PAT_ID, PAT_NAME, PAT_TEMP, DOC_ID FROM PACIENTE) SELECT * FROM CTE_PATIENT;

Agora, explicaremos a você toda essa consulta enquanto discutimos todos os seus componentes. O nome da expressão da tabela comum é sempre precedido pela palavra -chave "com" e prosseguido pela palavra -chave "as como". Isso significa que o nome do nosso CTE neste caso em particular é "CTE_PATIEN". Após a palavra -chave "AS", especificamos toda a consulta cujos resultados desejamos ser armazenados em nossa expressão de tabela comum. Neste exemplo, simplesmente queremos escolher todos os registros que compreendem todos os atributos da tabela "paciente" e depois armazená -los em nosso CTE. Depois disso, usamos a declaração "Selecionar" para exibir o conteúdo deste CTE em nosso console. Esta consulta retirará todos os dez registros da nossa tabela "paciente", armazenará temporariamente em CTE_PACIENT e exibirá o conteúdo de CTE_PACIENT no console, como mostrado na imagem abaixo:

Etapa 5: use o CTE com a cláusula "Where" no PostgreSQL:

Agora, passaremos para um uso relativamente complexo de CTE no PostgreSQL, eu.e. Usaremos o CTE com a cláusula "onde" em PostgreSQL. Neste exemplo modificado, pretendemos verificar a temperatura de todos os pacientes e depois exibir os nomes e IDs apenas dos pacientes que estão com febre. A consulta que servirá a esse propósito é a seguinte:

# Com cte_patient como (selecione PAT_ID, PAT_NAME, (caso quando PAT_TEMP 100 THEN 'FEBRO') Temperatura do paciente) Selecione PAT_ID, PAT_NAME, temperatura do CTE_PACIENT WHERE Temperatura = 'Febre' Ordem por PAT_NAME;

Nesta consulta, usamos a declaração "caso" sobre a variável de temperatura. A principal condição para esta afirmação é que, se a temperatura do paciente for menor ou igual a 100, ela será considerada normal, enquanto que, se for mais de 100, o paciente terá febre. Depois disso, simplesmente usamos a declaração "Selecionar" para exibir o PAT_ID, PAT_NAME e a temperatura de todos os pacientes da nossa expressão de mesa comum que têm febre. Além disso, também encomendamos nossos resultados em ordem alfabética de acordo com o nome do paciente, como mostrado na imagem abaixo:

Da mesma maneira, se você deseja exibir os nomes e IDs de todos os pacientes no console cuja temperatura corporal é normal, precisa modificar ligeiramente a consulta acima mencionada da seguinte maneira:

# Com cte_patient como (selecione PAT_ID, PAT_NAME, (caso quando PAT_TEMP 100 THEN 'FEBRO') Temperatura do paciente) Selecione PAT_ID, PAT_NAME, temperatura do CTE_PACIENT WHERE Temperatura = Ordem 'Normal' por PAT_NAME;

Todos os pacientes da nossa tabela "paciente" cuja temperatura corporal é normal são mostrados na imagem abaixo:

Conclusão:

Este guia falou sobre o uso do CTE no PostgreSQL no Windows 10. Para elaborar esse uso, criamos um exemplo simples e depois introduzimos alguma complexidade para que os leitores possam entender melhor como o CTE trabalha com as tabelas PostgreSQL. Depois de passar por este exemplo abrangente, você poderá aprender a sintaxe básica dos CTEs no PostgreSQL junto com alguns outros detalhes técnicos e, posteriormente, você poderá usar os CTEs de maneira eficaz para fazer com que suas consultas pareçam mais simples e legíveis.