CREATE DATABASE - Amazon Redshift

Amazon Redshift ne prendra plus en charge la création de nouvelles fonctions Python définies par l’utilisateur à compter du 1er novembre 2025. Si vous souhaitez utiliser des fonctions Python définies par l’utilisateur, créez-les avant cette date. Les fonctions Python définies par l’utilisateur existantes continueront de fonctionner normalement. Pour plus d’informations, consultez le billet de blog .

CREATE DATABASE

Crée une nouvelle base de données.

Pour créer une base de données, vous devez être super-utilisateur ou disposer du privilège CREATEDB. Pour créer une base de données associée à une intégration zéro ETL, vous devez être super-utilisateur ou disposer des privilèges CREATEDB et CREATEUSER.

Vous ne pouvez pas exécuter CREATE DATABASE au sein d’un bloc de transaction (BEGIN ... END). Pour plus d’informations sur les transactions, consultez Niveaux d’isolement dans Amazon Redshift.

Syntaxe

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

Paramètres

database_name

Nom de la nouvelle base de données. Pour plus d’informations sur les noms valides, consultez Noms et identificateurs.

FROM INTEGRATION ’<integration_id>’ [ DATABASE ’<source_database>’ ]

Spécifie s’il faut créer la base de données à l’aide d’un identifiant d’intégration zéro ETL. Vous pouvez récupérer l’integration_id depuis la vue système SVV_INTEGRATION. Pour les intégrations zéro ETL Aurora PostgreSQL, vous devez également spécifier le nom source_database, qui peut également être récupéré à partir de SVV_INTEGRATION.

Pour obtenir un exemple , consultez Crée des bases de données pour recevoir les résultats des intégrations zéro ETL. Pour plus d’informations sur la création de bases de données avec des intégrations zéro ETL, consultez Création de bases de données de destination dans Amazon Redshift dans le Guide de gestion Amazon Redshift.

SET

Mot-clé facultatif.

ACCEPTINVCHARS [=] { TRUE | FALSE }

La clause ACCEPTINVCHARS indique si les tables d’intégration zéro ETL continuent à être ingérées lorsque des caractères non valides sont détectés pour le type de données VARCHAR. Lorsque des caractères non valides sont détectés, ils sont remplacés par un caractère ? par défaut.

QUERY_ALL_STATES [=] { TRUE | FALSE }

La clause QUERY_ALL_STATES indique si les tables d’intégration zéro ETL peuvent être interrogées dans tous les états (Synced, Failed, ResyncRequired et ResyncInitiated). Par défaut, une table d’intégration zéro ETL ne peut être interrogée que dans son état Synced.

REFRESH_INTERVAL <interval>

La clause REFRESH_INTERVAL définit l’intervalle de temps approximatif, en secondes, pour actualiser les données de la source zéro ETL vers la base de données cible. La valeur peut être définie entre 0 et 432 000 secondes (5 jours) pour les intégrations zéro ETL dont le type de source est Aurora MySQL, Aurora PostgreSQL ou RDS for MySQL. Pour les intégrations zéro ETL Amazon DynamoDB, la valeur peut être définie entre 900 et 432 000 secondes (15 minutes et 5 jours). L’interval par défaut est zéro (0) secondes pour les intégrations zéro ETL dont le type de source est Aurora MySQL, Aurora PostgreSQL ou RDS for MySQL. Pour les intégrations Amazon DynamoDB zéro ETL, l’interval par défaut est de 900 secondes (15 minutes).

TRUNCATECOLUMNS [=] { TRUE | FALSE }

La clause TRUNCATECOLUMNS indique si les tables d’intégration zéro ETL continuent à être ingérées lorsque les valeurs des attributs de colonne VARCHAR ou SUPER dépassent les limites. Avec TRUE, les valeurs sont tronquées pour tenir dans la colonne et les valeurs des attributs JSON débordants sont tronquées pour tenir dans la colonne SUPER.

HISTORY_MODE [=] {TRUE | FALSE}

Clause spécifiant si Amazon Redshift définira le mode historique pour toutes les nouvelles tables de la base de données spécifiée. Cette option s’applique uniquement aux bases de données créées pour une intégration zéro ETL.

La clause HISTORY_MODE peut être définie sur TRUE ou FALSE. La valeur par défaut est FALSE. Pour plus d’informations sur HISTORY_MODE, consultez Mode historique dans le Guide de gestion Amazon Redshift.

WITH

Mot-clé facultatif.

OWNER [=] db_owner

Spécifie le nom d’utilisateur du propriétaire de base de données.

CONNECTION LIMIT { limite | UNLIMITED }

Le nombre maximum de connexions à la base de données que les utilisateurs sont autorisés à ouvrir simultanément. La limite se s’applique pas aux super-utilisateurs. Utilisez le mot-clé UNLIMITED pour autoriser le nombre maximum de connexions simultanées. Une limite sur le nombre de connexions pour chaque utilisateur peut également s’appliquer. Pour plus d'informations, consultez CREATE USER. La valeur par défaut est UNLIMITED. Pour afficher les connexions en cours, interrogez la vue système STV_SESSIONS.

Note

Si les deux limites de connexion (utilisateurs et base de données) s’appliquent, un emplacement de connexion inutilisé situé entre les deux limites doit également être disponible lorsqu’un utilisateur tente de se connecter.

COLLATE { CASE_SENSITIVE | CS | CASE_INSENSITIVE | CI }

Clause spécifiant si la recherche de chaînes ou la comparaison est sensible à la casse ou non. Elle est sensible à la casse par défaut.

COLLATE n’est pas pris en charge lorsque vous créez une base de données à partir d’une unité de partage des données.

CASE_SENSITIVE et CS sont interchangeables et donnent les mêmes résultats. De même, CASE_INSENSITIVE et CI sont interchangeables et donnent les mêmes résultats.

ISOLATION LEVEL { SNAPSHOT | SERIALIZABLE }

Clause qui spécifie le niveau d’isolation utilisé lorsque les requêtes sont exécutées sur une base de données. Pour de plus amples informations sur les niveaux d’isolation, consultez Niveaux d’isolement dans Amazon Redshift.

  • Isolation SNAPSHOT : offre un niveau d’isolation avec protection contre les conflits de mise à jour et de suppression Il s’agit de la valeur par défaut pour une base de données créée dans un cluster alloué ou un espace de noms sans serveur.

  • Isolation SERIALIZABLE : offre une mise en série complète pour les transactions simultanées.

FROM ARN ’<ARN>’

L’ARN de base de données AWS Glue à utiliser pour créer la base de données.

{ WITH DATA CATALOG SCHEMA ’<schema>’ | WITH NO DATA CATALOG SCHEMA }
Note

Ce paramètre ne s’applique que si votre commande CREATE DATABASE utilise également le paramètre FROM ARN.

Indique si la base de données doit être créée à l’aide d’un schéma pour pouvoir accéder à des objets dans le AWS Glue Data Catalog.

IAM_ROLE { default | ’SESSION’ | ’arn:aws:iam::<Compte AWS-id>:role/<role-name>’ }
Note

Ce paramètre ne s’applique que si votre commande CREATE DATABASE utilise également le paramètre FROM ARN.

Si vous spécifiez un rôle IAM qui est associé au cluster pendant l’exécution de la commande CREATE DATABASE, Amazon Redshift utilise les informations d’identification du rôle lorsque vous exécutez des requêtes sur la base de données.

Si le mot clé default est spécifié, le rôle IAM défini par défaut et qui est associé au cluster est alors utilisé.

Utilisez 'SESSION' si vous vous connectez à votre cluster Amazon Redshift à l’aide d’une identité fédérée et que vous accédez aux tables à partir du schéma externe créé à l’aide de cette commande. Pour voir un exemple d’utilisation d’une identité fédéré, consultez Utilisation d’une identité fédérée pour gérer l’accès d’Amazon Redshift aux ressources locales et aux tables externes Amazon Redshift Spectrum, qui explique comment configurer l’identité fédérée.

Utilisez l’Amazon Resource Name (ARN) d’un rôle IAM que votre cluster utilise pour l’authentification et l’autorisation. Au minimum, le rôle IAM doit être autorisé à exécuter une opération LIST sur le compartiment Amazon S3 devant être accessible et une opération GET sur les objets Amazon S3 contenus dans le compartiment. Pour en savoir plus sur l’utilisation de IAM_ROLE au moment de créer en utilisant le AWS Glue Data Catalog pour des unités de partage des données, consultez Utilisation d’unités de partage des données gérées par Lake Formation en tant que consommateur.

Le code suivant montre la syntaxe de la chaîne de paramètre IAM_ROLE pour un seul ARN.

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

Vous pouvez créer des chaînes de rôles pour permettre à votre cluster d’endosser un autre rôle IAM, y compris un rôle appartenant à un autre compte. Les chaînes ainsi créées peuvent inclure jusqu’à 10 rôles. Pour plus d'informations, consultez Créer des rôles IAM dans Amazon Redshift Spectrum.

Attachez à ce rôle IAM une politique d’autorisations IAM similaire à la suivante.

JSON
{ "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": "*" } ] }

Pour connaître les étapes à suivre afin de créer un rôle IAM à utiliser avec une requête fédérée, consultez Création d’un secret et d’un rôle IAM pour utiliser des requêtes fédérées.

Note

N’incluez pas d’espaces dans la liste des rôles chaînés.

L’exemple suivant montre la syntaxe d’une chaîne de trois rôles.

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>'

Syntaxe pour l’utilisation de CREATE DATABASE avec une unité de partage des données

La syntaxe suivante décrit la commande CREATE DATABASE utilisée pour créer des bases de données à partir d’une unité de partage des données afin de partager des données avec le même compte AWS.

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

La syntaxe suivante décrit la commande CREATE DATABASE utilisée pour créer des bases de données à partir d’une unité de partage des données afin de partager des données entre les comptes AWS.

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

Paramètres pour l’utilisation de CREATE DATABASE avec une unité de partage des données

FROM DATASHARE

Mot-clé indiquant où se situe l’unité de partage des données externe.

datashare_name

Nom de la base de données sur laquelle la base de données consommateur est créée.

WITH PERMISSIONS

Spécifie que la base de données créée à partir de l’unité de partage des données nécessite des autorisations de niveau objet pour accéder à des objets de base de données individuels. Sans cette clause, les utilisateurs ou les rôles disposant de l’autorisation USAGE sur la base de données auront automatiquement accès à tous les objets de celle-ci.

NAMESPACE namespace_guid

Valeur spécifiant l’espace de noms du producteur compte auquel l’unité de partage des données appartient.

ACCOUNT account_id

Valeur spécifiant le compte du producteur auquel l’unité de partage des données appartient.

Notes d’utilisation de la commande CREATE DATABASE pour le partage de données

En tant que super-utilisateur de base de données, lorsque vous utilisez la commande CREATE DATABASE pour créer des bases de données à partir d’unités de partage des données au sein du compte AWS, spécifiez l’option NAMESPACE. L’option ACCOUNT est facultative. Lorsque vous utilisez CREATE DATABASE pour créer des bases de données provenant d’unités de partage des données sur des comptes AWS, spécifiez les options ACCOUNT et NAMESPACE du producteur.

Vous ne pouvez créer qu’une seule base de données grand public pour une unité de partage des données sur un cluster consommateur. Vous ne pouvez pas créer plusieurs bases de données grand public faisant référence à la même unité de partage des données.

CREATE DATABASE depuis AWS Glue Data Catalog

Pour créer une base de données en utilisant un ARN de base de données AWS Glue, spécifiez l’ARN dans votre commande CREATE DATABASE.

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

Vous pouvez aussi éventuellement fournir une valeur dans le paramètre IAM_ROLE. Pour en savoir plus sur le paramètre et les valeurs acceptées, consultez Paramètres.

Les exemples suivants montrent comment créer une base de données à partir d’un ARN en utilisant un rôle 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;

Vous pouvez également créer une base de données en utilisant un DATA CATALOG SCHEMA.

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

Crée des bases de données pour recevoir les résultats des intégrations zéro ETL

Pour créer une base de données utilisant une identité d’intégration zéro ETL, spécifiez l’integration_id dans votre commande CREATE DATABASE.

CREATE DATABASE destination_db_name FROM INTEGRATION 'integration_id';

Par exemple, récupérez d’abord les identifiants d’intégration dans SVV_INTEGRATION ;

SELECT integration_id FROM SVV_INTEGRATION;

Utilisez ensuite l’un des identifiants d’intégration récupérés pour créer la base de données qui reçoit les intégrations zéro ETL.

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

Lorsque la base de données source des intégrations zéro ETL est requise, spécifiez par exemple.

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

Vous pouvez également définir un intervalle d’actualisation pour la base de données. Par exemple, pour définir l’intervalle d’actualisation à 7 200 secondes pour les données provenant d’une source d’intégration zéro ETL :

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

Interrogez la vue du catalogue SVV_INTEGRATION pour obtenir des informations sur une intégration zéro ETL, telles que integration_id, target_database, source, refresh_interval, etc.

SELECT * FROM svv_integration;

L’exemple suivant crée une base de données à partir d’une intégration avec le mode historique activé.

CREATE DATABASE sample_integration_db FROM INTEGRATION 'a1b2c3d4-5678-90ab-cdef-EXAMPLE11111' SET HISTORY_MODE = true;

Limites de CREATE DATABASE

Amazon Redshift applique ces limites pour les bases de données :

  • Maximum de 60 bases de données définies par l’utilisateur par cluster.

  • Maximum de 127 octets pour un nom de base de données.

  • Un nom de base de données ne peut pas être un mot réservé.

Classement de base de données

Le classement est un ensemble de règles qui définit la façon dont le moteur de base de données compare et trie les données de type caractère dans SQL. Le classement insensible à la casse est le classement le plus utilisé. Amazon Redshift utilise un classement insensible à la casse pour faciliter la migration à partir d’autres systèmes d’entrepôts des données. Grâce à la prise en charge native du classement insensible à la casse, Amazon Redshift continue d’utiliser des méthodes de réglage ou d’optimisation importantes, telles que les clés de distribution, les clés de tri ou l’analyse à plage restreinte.

La clause COLLATE spécifie le classement par défaut de toutes les colonnes CHAR et VARCHAR de la base de données. Si CASE_INSENSITIVE est spécifié, toutes les colonnes CHAR ou VARCHAR utilisent un classement insensible à la casse. Pour obtenir des informations sur le classement, consultez Séquences de classement.

Les données insérées ou intégrées dans des colonnes insensibles à la casse conserveront leur casse d’origine. Cependant, toutes les opérations de chaîne basées sur la comparaison, y compris le tri et le regroupement, sont insensibles à la casse. Les opérations de correspondance de modèles telles que les prédicats LIKE, similaire à et les fonctions d’expression régulière sont également insensibles à la casse.

Les opérations SQL suivantes prennent en charge la sémantique de classement applicable :

  • Opérateurs de comparaison : =, <>, <, <=, >, >=.

  • Opérateur LIKE

  • Clauses ORDER BY

  • Clauses GROUP BY

  • Fonctions d’agrégation qui utilisent la comparaison de chaînes, telles que MIN, MAX et LISTAGG

  • Fonctions de fenêtrage, telles que les clauses PARTITION BY et ORDER BY

  • Fonctions scalaires greatest() et least (), STRPOS(), REGEXP_COUNT (), REGEXP_REPLACE(), REGEXP_INSTR(), REGEXP_SUBSTR()

  • Clause Distinct

  • UNION, INTERSECT et EXCEPT

  • IN LIST

Pour les requêtes externes, y compris les requêtes fédérées Amazon Redshift Spectrum et Aurora PostgreSQL, le classement de la colonne VARCHAR ou CHAR est le même que le classement actuel au niveau de la base de données.

L’exemple suivant interroge une table Amazon Redshift Spectrum :

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

Pour obtenir des informations sur la création de tables à l'aide du classement de bases de données, consultez CREATE TABLE.

Pour obtenir des informations sur la fonction COLLATE, consultez Fonction COLLATE.

Limites de classement de bases de données

Les limitations suivantes concernent l’utilisation du classement de base de données dans Amazon Redshift :

  • Toutes les tables ou vues système, y compris les tables catalogue PG et les tables système Amazon Redshift, sont sensibles à la casse.

  • Lorsque la base de données consommateur et la base de données producteur ont des classements différents au niveau de la base de données, Amazon Redshift ne prend pas en charge les requêtes inter-bases de données et inter-clusters.

  • Amazon Redshift ne prend pas en charge le classement insensible à la casse dans les requêtes au nœud principal uniquement.

    L’exemple suivant montre une requête insensible à la casse non prise en charge et l’erreur envoyée par qu’Amazon Redshift :

    SELECT collate(usename, 'case_insensitive') FROM pg_user; ERROR: Case insensitive collation is not supported in leader node only query.
  • Amazon Redshift ne prend pas en charge l’interaction entre les colonnes sensibles à la casse et non sensibles à la casse, telles que les opérations de comparaison, de fonction, de jointure ou d’ensembles.

    Les exemples suivants montrent des erreurs lorsque des colonnes sensibles à la casse et insensibles à la casse interagissent :

    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.

Pour que ces requêtes fonctionnent, utilisez la fonction COLLATE afin de convertir le classement d’une colonne et la faire correspondre à l’autre. Pour plus d'informations, consultez Fonction COLLATE.

Exemples

Création d’une base de données

L’exemple suivant crée une base de données nommée TICKIT et attribue la propriété à l’utilisateur DWUSER.

create database tickit with owner dwuser;

Interrogez la table de catalogue PG_DATABASE_INFO afin d’afficher les détails relatifs aux bases de données.

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

L’exemple suivant crée une base de données nommée sampledb avec niveau d’isolation SNAPSHOT.

CREATE DATABASE sampledb ISOLATION LEVEL SNAPSHOT;

L’exemple suivant crée la base de données sales_db à partir de l’unité de partage des données salesshare.

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

Exemple de classement de bases de données

Création d’une base de données sensible à la casse

L’exemple suivant crée la base de données sampledb, crée la table T1 et insère des données dans la table T1.

create database sampledb collate case_insensitive;

Connectez-vous à la nouvelle base de données que vous venez de créer à l’aide de votre client SQL. Lorsque vous utilisez l’éditeur de requêtes Amazon Redshift, choisissez sampledb dans Éditeur. Lorsque vous utilisez RSQL, utilisez une commande similaire à celle-ci.

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

Ensuite, la requête trouve des résultats avec John.

SELECT * FROM T1 WHERE col1 = 'John'; col1 ------ john JOHN (2 row)
Classement par sensibilité à la casse

L’exemple suivant montre le classement par sensibilité à la casse avec la table T1. Le classement de Bob et bob ou John et john est non déterministe, car ils sont égaux dans la colonne insensible à la casse.

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

De même, l’exemple suivant montre un classement par sensibilité à la casse avec la clause GROUP BY. Bob et bob sont égaux et appartiennent au même groupe. Lequel des deux apparaît dans le résultat est non déterministe.

SELECT col1, count(*) FROM T1 GROUP BY 1; col1 | count -----+------ Mary | 1 bob | 2 JOHN | 2 (3 rows)
Interrogation avec une fonction de fenêtrage sur des colonnes insensibles à la casse

L’exemple suivant interroge une fonction de fenêtrage sur une colonne insensible à la casse.

SELECT col1, rank() over (ORDER BY col1) FROM T1; col1 | rank -----+------ bob | 1 Bob | 1 john | 3 JOHN | 3 Mary | 5 (5 rows)
Interrogation avec le mot-clé DISTINCT

L’exemple suivant interroge la table T1 avec le mot-clé DISTINCT.

SELECT DISTINCT col1 FROM T1; col1 ------ bob Mary john (3 rows)
Interrogation avec la clause UNION

L’exemple suivant illustre les résultats de la clause UNION des tables T1 et T2.

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