Catégories :

Base de données, schéma et partage DDL

CREATE SCHEMA

Crée un nouveau schéma dans la base de données actuelle.

De plus, cette commande peut être utilisée pour cloner un schéma existant, soit dans son statut actuel, soit à un moment précis dans le passé (en utilisant Time Travel). Pour plus d’informations sur le clonage d’un schéma, voir Remarques relatives au clonage.

Voir aussi :

ALTER SCHEMA , SHOW SCHEMAS

Syntaxe

CREATE [ OR REPLACE ] [ TRANSIENT ] SCHEMA [ IF NOT EXISTS ] <name>
  [ CLONE <source_schema>
        [ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ) ] ]
  [ WITH MANAGED ACCESS ]
  [ DATA_RETENTION_TIME_IN_DAYS = <num> ]
  [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
  [ COMMENT = '<string_literal>' ]

Paramètres requis

nom

Indique l’identificateur du schéma ; doit être unique pour la base de données dans laquelle le schéma est créé.

De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (p. ex. "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus de détails, voir Exigences relatives à l’identificateur.

Paramètres facultatifs

TRANSIENT

Spécifie un schéma comme transitoire. Les schémas transitoires n’ont pas de période Fail-safe et n’encourent donc pas de coûts de stockage supplémentaires une fois qu’ils quittent la période Time Travel ; cependant, cela signifie également qu’ils ne sont pas protégés par Fail-safe en cas de perte de données. Pour plus d’informations, voir Compréhension et affichage de Fail-safe.

De plus, par définition, toutes les tables créées dans un schéma transitoire sont transitoires. Pour plus d’informations sur les tables transitoires, voir CREATE TABLE.

Par défaut : Aucune valeur (le schéma est permanent)

CLONE schéma_source

Spécifie de créer un clone du schéma source spécifié. Pour plus de détails sur le clonage d’un schéma, voir CREATE <objet> … CLONE.

AT | BEFORE ( TIMESTAMP => horodatage | OFFSET => différence_temps | STATEMENT => id )

Lors du clonage d’un schéma, la clause AT | BEFORE spécifie d’utiliser la fonction Time Travel pour cloner le schéma à ou avant un point spécifique dans le passé.

WITH MANAGED ACCESS

Spécifie un schéma géré. Les schémas d’accès gérés centralisent la gestion des privilèges avec le propriétaire du schéma.

Dans les schémas classiques, le propriétaire d’un objet (c’est-à-dire le rôle disposant du privilège OWNERSHIP sur l’objet) peut octroyer des privilèges supplémentaires sur leurs objets à d’autres rôles. Dans les schémas gérés, le propriétaire du schéma gère toutes les attributions de privilèges, y compris les autorisations futures, sur les objets du schéma. Les propriétaires d’objets conservent les privilèges OWNERSHIP sur les objets ; cependant, seul le propriétaire du schéma peut gérer les attributions de privilèges sur les objets.

DATA_RETENTION_TIME_IN_DAYS = nb

Spécifie le nombre de jours pendant lesquels des actions Time Travel (CLONE et UNDROP) peuvent être effectuées sur le schéma, ainsi que le temps de conservation Time Travel par défaut de toutes les tables créées dans le schéma. Pour plus de détails, voir Comprendre et utiliser la fonction « Time Travel ».

Pour une description détaillée de ce paramètre de niveau objet, ainsi que plus d’informations sur les paramètres d’objet, voir Paramètres. Pour plus d’informations sur la durée de conservation au niveau de la table, voir CREATE TABLE et Comprendre et utiliser la fonction « Time Travel ».

Valeurs :

  • Édition Standard : 0 ou 1

  • Édition Enterprise :

    • 0 à 90 pour les schémas permanents

    • 0 ou 1 pour les schémas transitoires

Par défaut :

  • Édition Standard : 1

  • Édition Enterprise (ou supérieure) : 1 (sauf si une valeur par défaut différente a été spécifiée au niveau du compte ou de la base de données)

Note

Une valeur de 0 désactive effectivement Time Travel pour le schéma.

DEFAULT_DDL_COLLATION = 'spécification_classement'

Spécifie une spécification de classement par défaut pour toutes les tables ajoutées au schéma. La valeur par défaut peut être remplacée au niveau de la table individuelle.

Pour plus de détails sur le paramètre, voir DEFAULT_DDL_COLLATION.

COMMENT = 'litéral_chaine'

Spécifie un commentaire pour le schéma.

Par défaut : Aucune valeur

Notes sur l’utilisation

  • La création d’un schéma le définit automatiquement comme le schéma actif/courant pour la session en cours (équivalant à l’utilisation de la commande USE SCHEMA pour le schéma).

  • Si un schéma du même nom existe déjà dans la base de données, une erreur est renvoyée et le schéma n’est pas créé, sauf si le mot clé facultatif OR REPLACE est spécifié dans la commande.

    Important

    Utiliser OR REPLACE équivaut à utiliser DROP SCHEMA sur la schéma existant et créer ensuite un nouveau schéma avec le même nom ; cependant, le schéma détruit n’est pas supprimé définitivement du système. En revanche, il est conservé dans Time Travel. Ceci est important, car les schémas détruits dans Time Travel contribuent au stockage des données de votre compte. Pour plus d’informations, voir Coûts de stockage pour Time Travel et Fail-safe.

  • Dans un schéma à accès géré, le propriétaire du schéma gère les autorisations sur les objets contenus (par exemple, des tables ou des vues), mais ne dispose d’aucun autre privilège (USAGE, SELECT, DROP, etc.) sur les objets.

Exemples

Créer un schéma permanent :

CREATE SCHEMA myschema;

SHOW SCHEMAS;

+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+---------+----------------+
| created_on                    | name               | is_default | is_current | database_name | owner        | comment                                                   | options | retention_time |
|-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+---------+----------------|
| 2018-12-10 09:34:02.127 -0800 | INFORMATION_SCHEMA | N          | N          | MYDB          |              | Views describing the contents of schemas in this database |         | 1              |
| 2018-12-10 09:33:56.793 -0800 | MYSCHEMA           | N          | Y          | MYDB          | PUBLIC       |                                                           |         | 1              |
| 2018-11-26 06:08:24.263 -0800 | PUBLIC             | N          | N          | MYDB          | PUBLIC       |                                                           |         | 1              |
+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+---------+----------------+

Créer un schéma transitoire :

CREATE TRANSIENT SCHEMA tschema;

SHOW SCHEMAS;

+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+-----------+----------------+
| created_on                    | name               | is_default | is_current | database_name | owner        | comment                                                   | options   | retention_time |
|-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+-----------+----------------|
| 2018-12-10 09:34:02.127 -0800 | INFORMATION_SCHEMA | N          | N          | MYDB          |              | Views describing the contents of schemas in this database |           | 1              |
| 2018-12-10 09:33:56.793 -0800 | MYSCHEMA           | N          | Y          | MYDB          | PUBLIC       |                                                           |           | 1              |
| 2018-11-26 06:08:24.263 -0800 | PUBLIC             | N          | N          | MYDB          | PUBLIC       |                                                           |           | 1              |
| 2018-12-10 09:35:32.326 -0800 | TSCHEMA            | N          | Y          | MYDB          | PUBLIC       |                                                           | TRANSIENT | 1              |
+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+-----------+----------------+

Créer un schéma d’accès géré :

CREATE SCHEMA mschema WITH MANAGED ACCESS;

SHOW SCHEMAS;

+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+----------------+----------------+
| created_on                    | name               | is_default | is_current | database_name | owner        | comment                                                   | options        | retention_time |
|-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+----------------+----------------|
| 2018-12-10 09:34:02.127 -0800 | INFORMATION_SCHEMA | N          | N          | MYDB          |              | Views describing the contents of schemas in this database |                | 1              |
| 2018-12-10 09:36:47.738 -0800 | MSCHEMA            | N          | Y          | MYDB          | ROLE1        |                                                           | MANAGED ACCESS | 1              |
| 2018-12-10 09:33:56.793 -0800 | MYSCHEMA           | N          | Y          | MYDB          | PUBLIC       |                                                           |                | 1              |
| 2018-11-26 06:08:24.263 -0800 | PUBLIC             | N          | N          | MYDB          | PUBLIC       |                                                           |                | 1              |
| 2018-12-10 09:35:32.326 -0800 | TSCHEMA            | N          | Y          | MYDB          | PUBLIC       |                                                           | TRANSIENT      | 1              |
+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+----------------+----------------+