Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Expressão de tabela comum no MySQL


Common Table Expressions (CTE) permitem que você escreva facilmente consultas SQL complexas no MySQL. Neste artigo, veremos o que é Common Table Expression no MySQL e como escrever CTEs no MySQL.



O que é expressão de tabela comum


Expressão de Tabela Comum é um conjunto de resultados nomeado cujo escopo é limitado à consulta SQL na qual é definido e usado. É semelhante a uma tabela derivada, mas não é armazenada como um objeto e pode ser auto-referenciada, ao contrário das tabelas derivadas. Como resultado, o CTE oferece melhor desempenho do que tabelas derivadas no MySQL.

Bônus de leitura:Como calcular a margem no MySQL



Expressão de tabela comum no MySQL


Aqui está a sintaxe da expressão de tabela comum no MySQL.
WITH cte_name (column_list) AS (     
      query 
)  
SELECT * FROM cte_name;

Na consulta acima, você precisa especificar o nome do CTE, a consulta SQL cujo resultado deve ser referenciado usando o nome do CTE. Observe que o número de colunas em column_list devem ser iguais aos da sua consulta .

Vejamos um exemplo de expressão de tabela comum (CTE).

Bônus de leitura:Como obter o produto mais vendido usando SQL Query

Digamos que você tenha vendas(id, order_date, amount) tabela.
mysql> create table sales(id int, order_date date, amount int);

mysql> insert into sales(id, order_date, amount)
      values(1, '2021-01-01', 200),
      (2, '2021-01-02', 250),
      (3, '2021-01-03', 220),
      (4, '2021-01-04', 230),
      (5, '2021-01-05', 210),
      (6, '2021-01-06', 100),
      (7, '2021-01-07', 120),
      (8, '2021-01-08', 150),
      (9, '2021-01-09', 180),
      (10, '2021-01-10', 200);

 mysql> select * from sales;
 +------+------------+--------+
 | id   | order_date | amount |
 +------+------------+--------+
 |    1 | 2021-01-01 |    200 |
 |    2 | 2021-01-02 |    250 |
 |    3 | 2021-01-03 |    220 |
 |    4 | 2021-01-04 |    230 |
 |    5 | 2021-01-05 |    210 |
 |    6 | 2021-01-06 |    100 |
 |    7 | 2021-01-07 |    120 |
 |    8 | 2021-01-08 |    150 |
 |    9 | 2021-01-09 |    180 |
 |   10 | 2021-01-10 |    200 |
 +------+------------+--------+

Aqui está um CTE para selecionar apenas registros de vendas que tenham valor>200.
with test_cte as (
     select id,order_date,amount from sales
     where amount>200
 ) select * from test_cte; 

 +------+------------+--------+
 | id   | order_date | amount |
 +------+------------+--------+
 |    1 | 2021-01-01 |    200 |
 |    2 | 2021-01-02 |    250 |
 |    3 | 2021-01-03 |    220 |
 |    4 | 2021-01-04 |    230 |
 |    5 | 2021-01-05 |    210 |
 |   10 | 2021-01-10 |    200 |
 +------+------------+--------+

No CTE acima, especificamos a consulta SELECT para filtrar linhas com valor>200 dentro da cláusula WITH.

Bônus de leitura:Como usar a instrução CASE no MySQL

Observe que você pode usar CTE com instruções SELECT, UPDATE, INSERT e DELETE. Aqui estão as sintaxes para o mesmo.
WITH … SELECT …
WITH … UPDATE …
WITH … DELETE …

Além disso, você pode usar um CTE como uma subconsulta, conforme mostrado abaixo
SELECT … WHERE id IN (WITH … SELECT …);
SELECT * FROM (WITH … SELECT …) AS temporary_table;

Se você usar o resultado de uma instrução SELECT como entrada para instruções CREATE/INSERT/REPLACE, também poderá usar a cláusula WITH nela. Aqui estão alguns exemplos,
CREATE TABLE … WITH … SELECT …
CREATE VIEW … WITH … SELECT …
INSERT … WITH … SELECT …
REPLACE … WITH … SELECT …
DECLARE CURSOR … WITH … SELECT …
EXPLAIN … WITH … SELECT …

Leitura de bônus:Obtenha várias contagens com diferentes condições no MySQL



Expressão de tabela comum no Ubiq


A ferramenta de relatórios Ubiq é compatível com consultas SELECT baseadas em CTE e facilita a visualização de resultados SQL de diferentes maneiras. Ele também permite que você crie painéis e gráficos a partir dos resultados da consulta do MySQL. Aqui está a consulta CTE acima no Ubiq.

Na verdade, depois de executar a consulta, você pode simplesmente clicar em um tipo de visualização para plotar o resultado em um gráfico.

Precisa de uma ferramenta de relatório para MySQL? O Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!