CREATE DATABASE - Amazon Redshift

CREATE DATABASE

Cria um novo banco de dados.

Para criar um banco de dados, é necessário ser um superusuário ou ter o privilégio CREATEDB. Para criar um banco de dados associado a uma integração ETL zero, é necessário ser um superusuário ou ter os privilégios CREATEDB e CREATEUSER.

Não é possível executar CREATE DATABASE em um bloco de transação (BEGIN ... END). Para obter mais informações sobre transações, consulte Isolamento serializável.

Sintaxe

CREATE DATABASE database_name [ { [ WITH ] [ OWNER [=] db_owner ] [ CONNECTION LIMIT { limit | UNLIMITED } ] [ COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE } ] [ ISOLATION LEVEL { SERIALIZABLE | SNAPSHOT } ] } | { [ WITH PERMISSIONS ] FROM DATASHARE datashare_name ] OF [ ACCOUNT account_id ] NAMESPACE namespace_guid } | { FROM { { ARN '<arn>' } { WITH DATA CATALOG SCHEMA '<schema>' | WITH NO DATA CATALOG SCHEMA } } | { INTEGRATION '<integration_id>' [ DATABASE '<source_database>' ] [SET {REFRESH_INTERVAL <interval>} ] } } | { IAM_ROLE {default | 'SESSION' | 'arn:aws:iam::<account-id>:role/<role-name>' } } ]

Parâmetros

database_name

Nome do novo banco de dados. Para obter mais informações sobre nomes válidos, consulte Nomes e identificadores.

WITH

Palavra-chave opcional.

OWNER

Especifica o proprietário do banco de dados.

=

Caractere opcional.

proprietário_bd

Nome de usuário do proprietário do banco de dados.

CONNECTION LIMIT { limite | UNLIMITED }

Número máximo de conexões de banco de dados que os usuários podem abrir simultaneamente. Não há aplicação de limite para superusuários. Use a palavra-chave UNLIMITED para permitir o número máximo de conexões simultâneas. Um limite no número de conexões para cada usuário também pode ser aplicável. Para obter mais informações, consulte CRIAR USUÁRIO. O valor padrão é UNLIMITED. Para visualizar as conexões atuais, consulte a exibição STV_SESSIONS do sistema.

nota

Se limites de usuário e de conexão de banco de dados forem aplicáveis, um slot de conexão não utilizado que esteja dentro de ambos os limites deve estar disponível quando um usuário tenta se conectar.

COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE }

Uma cláusula que especifica se a pesquisa ou comparação de string é CASE_SENSITIVE ou CASE_INSENSITIVE. O padrão é CASE_SENSITIVE.

ISOLATION LEVEL { SERIALIZABLE | SNAPSHOT }

Uma cláusula que especifica o nível de isolamento usado quando são executadas consultas em um banco de dados.

  • Isolamento SERIALIZABLE: fornece serialização total para transações simultâneas. Para obter mais informações, consulte Isolamento serializável.

  • Isolamento SNAPSHOT: fornece um nível de isolamento com proteção contra conflitos de atualização e exclusão. Esse é o padrão para um banco de dados criado em um cluster provisionado ou um namespace sem servidor.

Você pode ver qual modelo de simultaneidade seu banco de dados está executando da seguinte maneira:

  • Consulte a visualização do catálogo STV_DB_ISOLATION_LEVEL. Para obter mais informações, consulte STV_DB_ISOLATION_LEVEL.

    SELECT * FROM stv_db_isolation_level;
  • Consulte a visualização PG_DATABASE_INFO.

    SELECT datname, datconfig FROM pg_database_info;

    O nível de isolamento por banco de dados aparece ao lado da chave concurrency_model. Um valor de 1 denota SNAPSHOT. Um valor de 2 denota SERIALIZABLE.

Nos bancos de dados do Amazon Redshift, tanto o isolamento SERIALIZABLE quanto o SNAPSHOT são tipos de níveis de isolamento serializáveis. Ou seja, leituras contaminadas, leituras não repetíveis e leituras fantasmas são evitadas de acordo com o padrão do SQL. Isso garante que uma transação opere em um snapshot de dados da forma como ele existe quando a transação começa e que nenhuma outra transação possa alterá-lo. No entanto, o isolamento SNAPSHOT não fornece serialização total, pois ele não impede inserções de distorção de gravação e atualizações em diferentes linhas de tabela.

O cenário a seguir mostra atualizações de distorção de gravação usando o nível de isolamento SNAPSHOT. Uma tabela chamada Numbers contém uma coluna denominada digits que inclui os valores 0 e 1. A instrução UPDATE de cada usuário não se sobrepõe à do outro usuário. No entanto, os valores 0 e 1 são trocados. O SQL que eles executam segue essa linha do tempo com os seguintes resultados:

Tempo Ação do usuário 1 Ação do usuário 2
1 BEGIN;
2 BEGIN;
3 SELECT * FROM Numbers;
digits
------
0
1
4 SELECT * FROM Numbers;
digits
------
0
1
5 UPDATE Numbers SET digits=0 WHERE digits=1;
6 SELECT * FROM Numbers;
digits
------
0
0
7 COMMIT;
8 Update Numbers SET digits=1 WHERE digits=0;
9 SELECT * FROM Numbers;
digits
------
1
1
10 COMMIT;
11 SELECT * FROM Numbers;
digits
------
1
0
12 SELECT * FROM Numbers;
digits
------
1
0

Se o mesmo cenário for executado usando o isolamento serializável, o Amazon Redshift encerrará o usuário 2 devido a uma violação serializável e retornará um erro 1023. Para obter mais informações, consulte Como corrigir erros de isolamento serializável. Nesse caso, somente o usuário 1 pode confirmar com sucesso. Nem todas as workloads têm o requisito de isolamento serializável, caso em que o snapshot é suficiente como nível de isolamento de destino para seu banco de dados.

FROM ARN '<ARN>'

O ARN do banco de dados do AWS Glue a ser usado para criar o banco de dados.

{ DATA CATALOG SCHEMA '<esquema>' | WITH NO DATA CATALOG SCHEMA }
nota

Esse parâmetro só será aplicável se o comando CREATE DATABASE também usar o parâmetro FROM ARN.

Especifica se o banco de dados deve ser criado usando um esquema para ajudar a acessar objetos no AWS Glue Data Catalog.

FROM INTEGRATION '<integration_id>' [ DATABASE '<source_database>' ] [SET {REFRESH_INTERVAL <interval>} ]

Especifica se o banco de dados deve ser criado usando um identificador de integração ETL zero. É possível recuperar o integration_id da visualização do sistema SVV_INTEGRATION. Em integrações ETL zero do Aurora PostgreSQL, você também precisa especificar o nome source_database, que também pode ser recuperado em SVV_INTEGRATION. A cláusula SET REFRESH_INTERVAL define o intervalo de tempo aproximado, em segundos, para atualizar os dados da origem de ETL zero para o banco de dados de destino. O valor pode ser definido de 0 a 432.000 segundos (5 dias) para integrações ETL zero cujo tipo de fonte é o Aurora MySQL, o Aurora PostgreSQL ou o RDS para MySQL. Para integrações ETL zero do Amazon DynamoDB, o valor pode ser definido de 900 a 432.000 segundos (15 minutos a 5 dias). O interval padrão é zero (0) segundo para integrações ETL zero cujo tipo de origem é o Aurora MySQL, o Aurora PostgreSQL ou o RDS para MySQL. Para integrações ETL zero do Amazon DynamoDB, o interval padrão é 900 segundos (15 minutos).

Para ver um exemplo, consulte Criar bancos de dados para receber resultados de integrações ETL zero. Consulte mais informações sobre a criação de bancos de dados com integrações ETL zero em Criar bancos de dados de destino no Amazon Redshift no Guia de gerenciamento do Amazon Redshift.

IAM_ROLE { default | 'SESSION' | 'arn:aws:iam::<Conta da AWS-id>:role/<role-name>' }
nota

Esse parâmetro só será aplicável se o comando CREATE DATABASE também usar o parâmetro FROM ARN.

Se você especificar um perfil do IAM associado ao cluster ao executar o comando CREATE DATABASE, o Amazon Redshift usará as credenciais do perfil ao executar consultas no banco de dados.

Especificar a palavra-chave default significa usar o perfil do IAM que está definido como padrão e associado ao cluster.

Use 'SESSION' se você se conectar ao cluster do Amazon Redshift usando uma identidade federada e acesse as tabelas do esquema externo criado usando esse comando. Para obter um exemplo do uso de uma identidade federada, consulte Usar uma identidade federada para gerenciar o acesso do Amazon Redshift aos recursos locais e a tabelas externas do Amazon Redshift Spectrum, que explica como configurar uma identidade federada.

Use o nome do recurso da Amazon (ARN) de uma função do IAM que seu cluster usa para autenticação e autorização. No mínimo, a função do IAM deve ter permissão para executar uma operação LIST no bucket do Amazon S3 a ser acessado e uma operação GET nos objetos do Amazon S3 que constam no bucket. Para saber mais sobre como usar IAM_ROLE ao criar um banco de dados usando o AWS Glue Data Catalog para compartilhamentos de dados, consulte Trabalhar com unidades de compartilhamento de dados gerenciadas pelo Lake Formation como consumidor.

O exemplo a seguir mostra a sintaxe da string do parâmetro IAM_ROLE para um único ARN.

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

Você pode encadear funções para que seu cluster possa assumir outra função do IAM, possivelmente pertencente a outra conta. Você pode encadear até 10 funções. Para obter mais informações, consulte Encadeamento de funções do IAM no Amazon Redshift Spectrum.

Anexe a essa função do IAM uma política de permissões do IAM semelhante à política descrita a seguir.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AccessSecret", "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": "arn:aws:secretsmanager:us-west-2:123456789012:secret:my-rds-secret-VNenFy" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword", "secretsmanager:ListSecrets" ], "Resource": "*" } ] }

Para obter as etapas para criar uma função do IAM a ser usada com consulta federada, consulte Criar um segredo e uma função do IAM para usar consultas federadas.

nota

Não inclua espaços na lista de funções encadeadas.

O seguinte mostra a sintaxe do encadeamento de três funções.

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-1-name>,arn:aws:iam::<aws-account-id>:role/<role-2-name>,arn:aws:iam::<aws-account-id>:role/<role-3-name>'

Sintaxe para usar CREATE DATABASE com um datashare

A sintaxe a seguir descreve o comando CREATE DATABASE usado para criar bancos de dados a partir de uma unidade de compartilhamento de dados para compartilhar dados na mesma conta da AWS.

CREATE DATABASE database_name [ [ WITH PERMISSIONS ] FROM DATASHARE datashare_name ] OF [ ACCOUNT account_id ] NAMESPACE namespace_guid

A sintaxe a seguir descreve o comando CREATE DATABASE usado para criar bancos de dados a partir de uma unidade de compartilhamento de dados para compartilhar dados entre contas da AWS.

CREATE DATABASE database_name [ [ WITH PERMISSIONS ] FROM DATASHARE datashare_name ] OF ACCOUNT account_id NAMESPACE namespace_guid

Parâmetros para usar CREATE DATABASE com um datashare

FROM DATASHARE

Uma palavra-chave que indica onde o datashare está localizado.

datashare_name

O nome do datashare no qual o banco de dados do consumidor é criado.

WITH PERMISSIONS

Especifica que o banco de dados criado a partir da unidade de compartilhamento de dados requer permissões no nível de objeto para ter acesso a objetos do banco de dados individuais. Sem essa cláusula, os usuários ou as funções que receberem a permissão USAGE no banco de dados terão acesso automático a todos os objetos no banco de dados.

NAMESPACE namespace_guid

Valor que especifica o namespace de produtor ao qual a unidade de compartilhamento de dados pertence.

ACCOUNT account_id

Valor que especifica a conta de produtor à qual a unidade de compartilhamento de dados pertence.

Notas de uso de CREATE DATABASE para compartilhamento de dados

Como superusuário de banco de dados, ao usar CREATE DATABASE para criar bancos de dados a partir de unidades de compartilhamento de dados da conta da AWS, especifique a opção NAMESPACE. A opção ACCOUNT é opcional. Ao usar CREATE DATABASE para criar bancos de dados de unidades de compartilhamento de dados entre contas da AWS, especifique os parâmetros ACCOUNT e NAMESPACE do produtor.

Você pode criar apenas um banco de dados de consumidor para uma unidade de compartilhamento de dados em um cluster de consumidores. Não é possível criar vários bancos de dados de consumidores referentes à mesma unidade de compartilhamento de dados.

CREATE DATABASE por meio do AWS Glue Data Catalog

Para criar um banco de dados usando um ARN do banco de dados do AWS Glue, especifique o ARN no comando CREATE DATABASE.

CREATE DATABASE sampledb FROM ARN <glue-database-arn> WITH NO DATA CATALOG SCHEMA;

Opcionalmente, você também pode fornecer um valor no parâmetro IAM_ROLE. Para obter mais informações sobre o parâmetro e os valores aceitos, consulte Parâmetros.

Veja a seguir exemplos que demonstram como criar um banco de dados com base em um ARN usando um perfil do IAM.

CREATE DATABASE sampledb FROM ARN <glue-database-arn> WITH NO DATA CATALOG SCHEMA IAM_ROLE <iam-role-arn>
CREATE DATABASE sampledb FROM ARN <glue-database-arn> WITH NO DATA CATALOG SCHEMA IAM_ROLE default;

Também é possível criar um banco de dados usando um DATA CATALOG SCHEMA.

CREATE DATABASE sampledb FROM ARN <glue-database-arn> WITH DATA CATALOG SCHEMA <sample_schema> IAM_ROLE default;

Criar bancos de dados para receber resultados de integrações ETL zero

Para criar um banco de dados usando uma identidade de integração ETL zero, especifique integration_id no comando CREATE DATABASE.

CREATE DATABASE destination_db_name FROM INTEGRATION 'integration_id';

Por exemplo, primeiro, recupere os IDs de integração de SVV_INTEGRATION:

SELECT integration_id FROM SVV_INTEGRATION;

Depois, use um dos IDs de integração recuperados para criar o banco de dados que recebe integrações ETL zero.

CREATE DATABASE sampledb FROM INTEGRATION 'a1b2c3d4-5678-90ab-cdef-EXAMPLE11111';

Quando o banco de dados de origem de integrações ETL zero for necessário, especifique, por exemplo:

CREATE DATABASE sampledb FROM INTEGRATION 'a1b2c3d4-5678-90ab-cdef-EXAMPLE11111' DATABASE 'sourcedb';

Você também pode definir um intervalo de atualização para o banco de dados. Por exemplo, para definir o intervalo de atualização como 7.200 segundos para dados de uma fonte de integração ETL zero:

CREATE DATABASE myacct_mysql FROM INTEGRATION 'a1b2c3d4-5678-90ab-cdef-EXAMPLE11111' SET REFRESH_INTERVAL 7200;

Consulte a visualização de catálogo SVV_INTEGRATION para ter informações sobre uma integração ETL zero, como integration_id, target_database, source, refresh_interval, e muito mais.

SELECT * FROM svv_integration;

Limites de CREATE DATABASE

O Amazon Redshift aplica esses limites aos bancos de dados:

  • Máximo de 60 bancos de dados definidos pelo usuário por cluster.

  • Máximo de 127 bytes para um nome de banco de dados.

  • Um nome de banco de dados não pode ser uma palavra reservada.

Agrupamento de banco de dados

O agrupamento é um conjunto de regras que define como o mecanismo de banco de dados compara e classifica os dados de tipo de caractere em SQL. O agrupamento sem distinção de maiúsculas de minúsculas é o agrupamento mais comumente usado. O Amazon Redshift usa agrupamento sem distinção de maiúsculas e minúsculas para facilitar a migração de outros sistemas de data warehouse. Com o suporte nativo de agrupamento sem distinção de maiúsculas e minúsculas, o Amazon Redshift continua a usar métodos importantes de ajuste ou otimização, como chaves de distribuição, chaves de classificação ou varredura restrita de intervalo.

A cláusula COLLATE especifica o agrupamento padrão para todas as colunas CHAR e VARCHAR no banco de dados. Se CASE_INSENSITIVE for especificado, todas as colunas CHAR ou VARCHAR usarão agrupamento sem distinção de maiúsculas e minúsculas. Para obter mais informações sobre agrupamento, consulte Sequências de colação.

Os dados inseridos ou ingeridos em colunas que não diferenciam maiúsculas e minúsculas manterão suas letras originais. Mas todas as operações de string baseadas em comparação, incluindo classificação e agrupamento, são insensíveis a maiúsculas e minúsculas. Operações de correspondência de padrões, como predicados LIKE, semelhantes a, e funções de expressão regular também são insensíveis a maiúsculas e minúsculas.

As seguintes operações SQL suportam semântica de agrupamento aplicável:

  • Operadores de comparação: =, <>, <, <=, >, >=.

  • Operador: LIKE

  • Cláusula ORDER BY

  • Cláusulas GROUP BY

  • Funções agregadas que usam comparação de strings, como MIN, MAX e LISTAGG

  • Funções da janela, como cláusulas PARTITION BY e cláusulas ORDER BY

  • Funções escalares greatest() e least(), STRPOS(), REGEXP_COUNT(), REGEXP_REPLACE(), REGEXP_INSTR(), REGEXP_SUBSTR()

  • Cláusula distinta

  • UNION, INTERSECT e EXCEPT

  • IN LIST

Para consultas externas, incluindo consultas federadas do Amazon Redshift Spectrum e do Aurora PostgreSQL, o agrupamento da coluna VARCHAR ou CHAR é o mesmo que o agrupamento em nível de banco de dados atual.

O seguinte exemplo consulta uma tabela do Amazon Redshift Spectrum:

SELECT ci_varchar FROM spectrum.test_collation WHERE ci_varchar = 'AMAZON'; ci_varchar ---------- amazon Amazon AMAZON AmaZon (4 rows)

Para obter informações sobre como criar tabelas usando o agrupamento de banco de dados, consulte CRIAR TABELA.

Para obter mais informações sobre funções COLLATE, consulte Função COLLATE.

Limitações do agrupamento de banco de dados

Veja as seguintes limitações ao trabalhar com agrupamento de banco de dados no Amazon Redshift:

  • Todas as tabelas ou exibições do sistema, incluindo tabelas de catálogo PG e tabelas de sistema do Amazon Redshift, diferenciam maiúsculas de minúsculas.

  • Quando o banco de dados do consumidor e o banco de dados do produtor têm agrupamentos de nível de banco de dados diferentes, o Amazon Redshift não oferece suporte a consultas entre bancos de dados e entre clusters.

  • O Amazon Redshift não oferece suporte a agrupamento sem distinção de maiúsculas e minúsculas na consulta somente nó líder.

    O seguinte exemplo mostra uma consulta sem distinção entre maiúsculas e minúsculas e o erro que o Amazon Redshift envia:

    SELECT collate(usename, 'case_insensitive') FROM pg_user; ERROR: Case insensitive collation is not supported in leader node only query.
  • O Amazon Redshift não oferece suporte à interação entre colunas que diferenciam maiúsculas e minúsculas, como operações de comparação, função, junção ou conjunto.

    Os exemplos a seguir mostram erros quando colunas com e sem diferenciação de maiúsculas e minúsculas interagem:

    CREATE TABLE test (ci_col varchar(10) COLLATE case_insensitive, cs_col varchar(10) COLLATE case_sensitive, cint int, cbigint bigint);
    SELECT ci_col = cs_col FROM test; ERROR: Query with different collations is not supported yet.
    SELECT concat(ci_col, cs_col) FROM test; ERROR: Query with different collations is not supported yet.
    SELECT ci_col FROM test UNION SELECT cs_col FROM test; ERROR: Query with different collations is not supported yet.
    SELECT * FROM test a, test b WHERE a.ci_col = b.cs_col; ERROR: Query with different collations is not supported yet.
    Select Coalesce(ci_col, cs_col) from test; ERROR: Query with different collations is not supported yet.
    Select case when cint > 0 then ci_col else cs_col end from test; ERROR: Query with different collations is not supported yet.
  • O Amazon Redshift não oferece suporte a agrupamento para o tipo de dados SUPER. Não há suporte para a criação de colunas SUPER em bancos de dados que não diferenciam maiúsculas de minúsculas e as interações entre colunas SUPER e que não diferenciam maiúsculas de minúsculas.

    O exemplo a seguir cria uma tabela com o SUPER como o tipo de dados no banco de dados que não diferencia maiúsculas e minúsculas:

    CREATE TABLE super_table (a super); ERROR: SUPER column is not supported in case insensitive database.

    O exemplo a seguir consulta dados com uma string que não diferencia maiúsculas de minúsculas comparando com os dados SUPER:

    CREATE TABLE test_super_collation (s super, c varchar(10) COLLATE case_insensitive, i int);
    SELECT s = c FROM test_super_collation; ERROR: Coercing from case insensitive string to SUPER is not supported.

Para fazer essas consultas funcionarem, use a função COLLATE para converter o agrupamento de uma coluna para corresponder à outra. Para obter mais informações, consulte Função COLLATE.

Exemplos

Criação de um banco de dados

O exemplo a seguir criar um banco de dados denominado TICKIT e de propriedade do usuário DWUSER.

create database tickit with owner dwuser;

Consulte a tabela de catálogo PG_DATABASE_INFO para exibir detalhes sobre bancos de dados.

select datname, datdba, datconnlimit from pg_database_info where datdba > 1; datname | datdba | datconnlimit -------------+--------+------------- admin | 100 | UNLIMITED reports | 100 | 100 tickit | 100 | 100

O exemplo a seguir cria um banco de dados chamado sampledb com o nível de isolamento SNAPSHOT.

CREATE DATABASE sampledb ISOLATION LEVEL SNAPSHOT;

O exemplo a seguir cria o banco de dados sales_db a partir da unidade de compartilhamento de dados saleshare.

CREATE DATABASE sales_db FROM DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';

Exemplos de agrupamento de banco de dados

Criação de um banco de dados que não diferencia maiúsculas de minúsculas

O exemplo a seguir cria o banco de dados sampledb, a tabela T1 e insere dados na tabela T1.

create database sampledb collate case_insensitive;

Conecte-se ao novo banco de dados que você acabou de criar usando o cliente SQL. Ao usar o Editor de Consultas do Amazon Redshift v2, escolha o sampledb no Editor. Ao usar o RSQL, use um comando semelhante ao seguinte.

\connect sampledb;
CREATE TABLE T1 ( col1 Varchar(20) distkey sortkey );
INSERT INTO T1 VALUES ('bob'), ('john'), ('Mary'), ('JOHN'), ('Bob');

Em seguida, a consulta encontra resultados com John.

SELECT * FROM T1 WHERE col1 = 'John'; col1 ------ john JOHN (2 row)
Ordenar por distinção de maiúsculas de minúsculas

O exemplo a seguir mostra a ordenação sem distinção de maiúsculas e minúsculas com a tabela T1. A ordenação de Bianca e bianca ou Jorge e jorge não é determinística porque os nomes são iguais em colunas que não diferenciam maiúsculas de minúsculas.

SELECT * FROM T1 ORDER BY 1; col1 ------ bob Bob JOHN john Mary (5 rows)

Da mesma forma, o exemplo a seguir mostra a ordem sem distinção entre maiúsculas e minúsculas com a cláusula GROUP BY. Bob e bob são iguais e pertencem ao mesmo grupo. Não é determinístico qual aparece no resultado.

SELECT col1, count(*) FROM T1 GROUP BY 1; col1 | count -----+------ Mary | 1 bob | 2 JOHN | 2 (3 rows)
Consultar com uma função da janela em colunas que não diferenciam maiúsculas e minúsculas

O exemplo a seguir consulta uma função da janela em uma coluna que não diferencia maiúsculas e minúsculas.

SELECT col1, rank() over (ORDER BY col1) FROM T1; col1 | rank -----+------ bob | 1 Bob | 1 john | 3 JOHN | 3 Mary | 5 (5 rows)
Consultar com a palavra-chave DISTINCT

O exemplo a seguir cria a tabela T1 com a palavra-chave DISTINCT.

SELECT DISTINCT col1 FROM T1; col1 ------ bob Mary john (3 rows)
Consultar com a cláusula UNION

O exemplo a seguir mostra os resultados da UNION das tabelas T1 e T2.

CREATE TABLE T2 AS SELECT * FROM T1;
SELECT col1 FROM T1 UNION SELECT col1 FROM T2; col1 ------ john bob Mary (3 rows)