Grammaire de SQL 2 (simplifiée)

lettre_simple:

lettre_simple
         ::= lettre_simple_majuscule
           | lettre_simple_minuscule

référenciée par :


lettre_simple_majuscule:

lettre_simple_majuscule
         ::= 'lettre de "A" a "Z"'

référenciée par :


lettre_simple_minuscule:

lettre_simple_minuscule
         ::= 'lettre de "a" a "z"'

référenciée par :


chiffre:

chiffre  ::= 'chiffre de "0" a "9"'

référenciée par :


symbole_special_en_sql:

symbole_special_en_sql
         ::= espace
           | '"'
           | '%'
           | '&'
           | "'"
           | '('
           | ')'
           | '*'
           | '+'
           | ','
           | '-'
           | '.'
           | '/'
           | ':'
           | ';'
           | '<'
           | '>'
           | '='
           | '?'
           | '_'
           | '|'

référenciée par :


espace:

espace   ::= ' '

référenciée par :


element_lexical:

element_lexical
         ::= element_lexical_ordinaire
           | separateur_lexical

sans réferences


element_lexical_ordinaire:

element_lexical_ordinaire
         ::= identificateur_ordinaire
           | mot_clef
           | valeur_numerique_sans_signe
           | notation_chaine_caracteres_jeu_reference
           | notation_chaine_bits
           | notation_chaine_hexadecimale

référenciée par :


identificateur_ordinaire:

identificateur_ordinaire
         ::= contenu_identificateur

référenciée par :


contenu_identificateur:

contenu_identificateur
         ::= debut_identificateur ( '_' | suite_identificateur )+?

référenciée par :


debut_identificateur:

debut_identificateur
         ::= lettre_simple

référenciée par :


suite_identificateur:

suite_identificateur
         ::= debut_identificateur
           | chiffre

référenciée par :


mot_clef:

mot_clef ::= mot_reserve
           | mot_non_reserve

référenciée par :


mot_reserve:

mot_reserve
         ::= 'ABSOLUTE'
           | 'ACTION'
           | 'ADD'
           | 'ALL'
           | 'ALLOCATE'
           | 'ALTER'
           | 'AND'
           | 'ANY'
           | 'ARE'
           | 'AS'
           | 'ASC'
           | 'ASSERTION'
           | 'AT'
           | 'AUTHORIZATION'
           | 'AVG'
           | 'BEGIN'
           | 'BETWEEN'
           | 'BIT'
           | 'BIT_LENGTH'
           | 'BOTH'
           | 'BY'
           | 'CASCADE'
           | 'CASCADED'
           | 'CASE'
           | 'CAST'
           | 'CATALOG'
           | 'CHAR'
           | 'CHARACTER'
           | 'CHARACTER_LENGTH'
           | 'CHAR_LENGTH'
           | 'CHECK'
           | 'CLOSE'
           | 'COALESCE'
           | 'COLLATE'
           | 'COLLATION'
           | 'COLUMN'
           | 'COMMIT'
           | 'CONNECT'
           | 'CONNECTION'
           | 'CONSTRAINT'
           | 'CONSTRAINTS'
           | 'CONTINUE'
           | 'CONVERT'
           | 'CORRESPONDING'
           | 'CREATE'
           | 'CROSS'
           | 'CURRENT'
           | 'CURRENT_DATE'
           | 'CURRENT_TIME'
           | 'CURRENT_TIMESTAMP'
           | 'CURRENT_USER'
           | 'CURSOR'
           | 'DATE'
           | 'DAY'
           | 'DEALLOCATE'
           | 'DEC'
           | 'DECIMAL'
           | 'DECLARE'
           | 'DEFAULT'
           | 'DEFERRABLE'
           | 'DEFERRED'
           | 'DELETE'
           | 'DESC'
           | 'DESCRIBE'
           | 'DESCRIPTOR'
           | 'DIAGNOSTICS'
           | 'DISCONNECT'
           | 'DISTINCT'
           | 'DOMAIN'
           | 'DOUBLE'
           | 'DROP'
           | 'ELSE'
           | 'END'
           | 'END-EXEC'
           | 'ESCAPE'
           | 'EXCEPT'
           | 'EXCEPTION'
           | 'EXEC'
           | 'EXECUTE'
           | 'EXISTS'
           | 'EXTERNAL'
           | 'EXTRACT'
           | 'FALSE'
           | 'FETCH'
           | 'FIRST'
           | 'FLOAT'
           | 'FOR'
           | 'FOREIGN'
           | 'FOUND'
           | 'FROM'
           | 'FULL'
           | 'GET'
           | 'GLOBAL'
           | 'GO'
           | 'GOTO'
           | 'GRANT'
           | 'GROUP'
           | 'HAVING'
           | 'HOUR'
           | 'IDENTITY'
           | 'IMMEDIATE'
           | 'IN'
           | 'INDICATOR'
           | 'INITIALLY'
           | 'INNER'
           | 'INPUT'
           | 'INSENSITIVE'
           | 'INSERT'
           | 'INT'
           | 'INTEGER'
           | 'INTERSECT'
           | 'INTERVAL'
           | 'INTO'
           | 'IS'
           | 'ISOLATION'
           | 'JOIN'
           | 'KEY'
           | 'LANGUAGE'
           | 'LAST'
           | 'LEADING'
           | 'LEFT'
           | 'LEVEL'
           | 'LIKE'
           | 'LOCAL'
           | 'LOWER'
           | 'MATCH'
           | 'MAX'
           | 'MIN'
           | 'MINUTE'
           | 'MODULE'
           | 'MONTH'
           | 'NAMES'
           | 'NATIONAL'
           | 'NATURAL'
           | 'NCHAR'
           | 'NEXT'
           | 'NO'
           | 'NOT'
           | 'NULL'
           | 'NULLIF'
           | 'NUMERIC'
           | 'OCTET_LENGTH'
           | 'OF'
           | 'ON'
           | 'ONLY'
           | 'OPEN'
           | 'OPTION'
           | 'OR'
           | 'ORDER'
           | 'OUTER'
           | 'OUTPUT'
           | 'OVERLAPS'
           | 'PAD'
           | 'PARTIAL'
           | 'POSITION'
           | 'PRECISION'
           | 'PREPARE'
           | 'PRESERVE'
           | 'PRIMARY'
           | 'PRIOR'
           | 'PRIVILEGES'
           | 'PROCEDURE'
           | 'PUBLIC'
           | 'READ'
           | 'REAL'
           | 'REFERENCES'
           | 'RELATIVE'
           | 'RESTRICT'
           | 'REVOKE'
           | 'RIGHT'
           | 'ROLLBACK'
           | 'ROWS'
           | 'SCHEMA'
           | 'SCROLL'
           | 'SECOND'
           | 'SECTION'
           | 'SELECT'
           | 'SESSION'
           | 'SESSION_USER'
           | 'SET'
           | 'SIZE'
           | 'SMALLINT'
           | 'SOME'
           | 'SPACE'
           | 'SQL'
           | 'SQLCODE'
           | 'SQLERROR'
           | 'SQLSTATE'
           | 'SUBSTRING'
           | 'SUM'
           | 'SYSTEM_USER'
           | 'TABLE'
           | 'TEMPORARY'
           | 'THEN'
           | 'TIME'
           | 'TIMESTAMP'
           | 'TIMEZONE_HOUR'
           | 'TIMEZONE_MINUTE'
           | 'TO'
           | 'TRAILING'
           | 'TRANSACTION'
           | 'TRANSLATE'
           | 'TRANSLATION'
           | 'TRIM'
           | 'TRUE'
           | 'UNION'
           | 'UNIQUE'
           | 'UNKNOWN'
           | 'UPDATE'
           | 'UPPER'
           | 'USAGE'
           | 'USER'
           | 'USING'
           | 'VALUE'
           | 'VALUES'
           | 'VARCHAR'
           | 'VARYING'
           | 'VIEW'
           | 'WHEN'
           | 'WHENEVER'
           | 'WHERE'
           | 'WITH'
           | 'WORK'
           | 'WRITE'
           | 'YEAR'
           | 'ZONE'

référenciée par :


mot_non_reserve:

mot_non_reserve
         ::= 'ADA'
           | 'C'
           | 'CATALOG_NAME'
           | 'CHARACTER_SET_CATALOG'
           | 'CHARACTER_SET_NAME'
           | 'CHARACTER_SET_SCHEMA'
           | 'CLASS_ORIGIN'
           | 'COBOL'
           | 'COLLATION_CATALOG'
           | 'COLLATION_NAME'
           | 'COLLATION_SCHEMA'
           | 'COLUMN_NAME'
           | 'COMMAND_FUNCTION'
           | 'COMMITTED'
           | 'CONDITION_NUMBER'
           | 'CONNECTION_NAME'
           | 'CONSTRAINT_CATALOG'
           | 'CONSTRAINT_NAME'
           | 'CONSTRAINT_SCHEMA'
           | 'CURSOR_NAME'
           | 'DATA'
           | 'DATETIME_INTERVAL_CODE'
           | 'DATETIME_INTERVAL_PRECISION'
           | 'DYNAMIC_FUNCTION'
           | 'FORTRAN'
           | 'LENGTH'
           | 'MESSAGE_LENGTH'
           | 'MESSAGE_OCTET_LENGTH'
           | 'MESSAGE_TEXT'
           | 'MORE'
           | 'MUMPS'
           | 'NAME'
           | 'NULLABLE'
           | 'NUMBER'
           | 'PASCAL'
           | 'PLI'
           | 'REPEATABLE'
           | 'RETURNED_LENGTH'
           | 'RETURNED_OCTET_LENGTH'
           | 'RETURNED_SQLSTATE'
           | 'ROW_COUNT'
           | 'SCALE'
           | 'SCHEMA_NAME'
           | 'SERIALIZABLE'
           | 'SERVER_NAME'
           | 'SUBCLASS_ORIGIN'
           | 'TABLE_NAME'
           | 'TYPE'
           | 'UNCOMMITTED'
           | 'UNNAMED'

référenciée par :


valeur_numerique_sans_signe:

valeur_numerique_sans_signe
         ::= valeur_numerique_exacte
           | valeur_numerique_approchee

référenciée par :


valeur_numerique_exacte:

valeur_numerique_exacte
         ::= entier_sans_signe ( '.' entier_sans_signe? )?
           | '.' entier_sans_signe

référenciée par :


entier_sans_signe:

entier_sans_signe
         ::= chiffre+

référenciée par :


valeur_numerique_approchee:

valeur_numerique_approchee
         ::= mantisse 'E' exposant

référenciée par :


mantisse:

mantisse ::= valeur_numerique_exacte

référenciée par :


exposant:

exposant ::= entier_avec_signe

référenciée par :


entier_avec_signe:

entier_avec_signe
         ::= signe? entier_sans_signe

référenciée par :


signe:

signe    ::= '+'
           | '-'

référenciée par :


notation_chaine_caracteres_jeu_reference:

notation_chaine_caracteres_jeu_reference
         ::= 'N' "'" symbole_dans_chaine+? "'" ( separateur+ "'" symbole_dans_chaine+? "'" )+?

référenciée par :


symbole_dans_chaine:

symbole_dans_chaine
         ::= symbole_pas_apostrophe
           | notation_apostrophe_interne

référenciée par :


symbole_pas_apostrophe:

symbole_pas_apostrophe
         ::= "tout symbole sauf l'apostrophe ' "

référenciée par :


notation_apostrophe_interne:

notation_apostrophe_interne
         ::= "'" "'"

référenciée par :


separateur:

separateur
         ::= ( commentaire | espace | retour_a_la_ligne )+

référenciée par :


commentaire:

commentaire
         ::= marque_commentaire symbole_texte_commentaire+? retour_a_la_ligne

référenciée par :


marque_commentaire:

marque_commentaire
         ::= '-' '-' '-'+?

référenciée par :


symbole_texte_commentaire:

symbole_texte_commentaire
         ::= symbole_pas_apostrophe
           | "'"

référenciée par :


notation_chaine_bits:

notation_chaine_bits
         ::= 'B' "'" bit+? "'" ( separateur+ "'" bit+? "'" )+?

référenciée par :


bit:

bit      ::= '0'
           | '1'

référenciée par :


notation_chaine_hexadecimale:

notation_chaine_hexadecimale
         ::= 'X' "'" chiffre_hexadecimal+? "'" ( separateur+ "'" chiffre_hexadecimal+? "'" )+?

référenciée par :


chiffre_hexadecimal:

chiffre_hexadecimal
         ::= chiffre
           | lettre_hexadecimale

référenciée par :


lettre_hexadecimale:

lettre_hexadecimale
         ::= 'lettre de "A" a "F" ou de "a" a "f" '

référenciée par :


separateur_lexical:

separateur_lexical
         ::= notation_chaine_caracteres
           | notation_date
           | notation_heure
           | notation_horodate
           | identificateur_delimite
           | symbole_special_en_sql
           | '<>'
           | '>='
           | '<='
           | '||'
           | '..'
           | '['
           | ']'

référenciée par :


notation_chaine_caracteres:

notation_chaine_caracteres
         ::= ( prefixe_alphabet indication_alphabet )? "'" symbole_dans_chaine+? "'" ( separateur+ "'" symbole_dans_chaine+? "'" )+?

référenciée par :


prefixe_alphabet:

prefixe_alphabet
         ::= '_'

référenciée par :


indication_alphabet:

indication_alphabet
         ::= nom_alphabet_normalise
           | nom_alphabet_reference
           | nom_alphabet_defini_par_utilisateur
           | nom_alphabet_normalise_variante
           | nom_alphabet_reference_variante

référenciée par :


nom_alphabet_normalise:

nom_alphabet_normalise
         ::= nom_alphabet

référenciée par :


nom_alphabet:

nom_alphabet
         ::= ( nom_schema '.' )? identificateur_du_langage_sql

référenciée par :


nom_schema:

nom_schema
         ::= ( nom_catalogue '.' )? nom_simple_schema

référenciée par :


nom_catalogue:

nom_catalogue
         ::= identificateur

référenciée par :


identificateur:

identificateur
         ::= ( prefixe_alphabet indication_alphabet )? identificateur_sans_prefixe

référenciée par :


identificateur_sans_prefixe:

identificateur_sans_prefixe
         ::= identificateur_ordinaire
           | identificateur_delimite

référenciée par :


identificateur_delimite:

identificateur_delimite
         ::= '"' contenu_identificateur_delimite '"'

référenciée par :


contenu_identificateur_delimite:

contenu_identificateur_delimite
         ::= symbole_identificateur_delimite+

référenciée par :


symbole_identificateur_delimite:

symbole_identificateur_delimite
         ::= symbole_pas_guillemet
           | notation_guillemet_interne

référenciée par :


symbole_pas_guillemet:

symbole_pas_guillemet
         ::= 'tout symbole autre que le " '

référenciée par :


notation_guillemet_interne:

notation_guillemet_interne
         ::= '"' '"'

référenciée par :


nom_simple_schema:

nom_simple_schema
         ::= identificateur

référenciée par :


identificateur_du_langage_sql:

identificateur_du_langage_sql
         ::= debut_identificateur_du_langage_sql ( '_' | suite_identificateur_du_langage_sql )+?

référenciée par :


debut_identificateur_du_langage_sql:

debut_identificateur_du_langage_sql
         ::= lettre_simple

référenciée par :


suite_identificateur_du_langage_sql:

suite_identificateur_du_langage_sql
         ::= lettre_simple
           | chiffre

référenciée par :


nom_alphabet_reference:

nom_alphabet_reference
         ::= nom_alphabet

référenciée par :


nom_alphabet_defini_par_utilisateur:

nom_alphabet_defini_par_utilisateur
         ::= nom_alphabet

référenciée par :


nom_alphabet_normalise_variante:

nom_alphabet_normalise_variante
         ::= nom_alphabet

référenciée par :


nom_alphabet_reference_variante:

nom_alphabet_reference_variante
         ::= nom_alphabet

référenciée par :


notation_date:

notation_date
         ::= "'" une_date "'"

référenciée par :


une_date:

une_date ::= annee '-' mois '-' jour

référenciée par :


annee:

annee    ::= element_date_heure

référenciée par :


element_date_heure:

element_date_heure
         ::= entier_sans_signe

référenciée par :


mois:

mois     ::= element_date_heure

référenciée par :


jour:

jour     ::= element_date_heure

référenciée par :


notation_heure:

notation_heure
         ::= "'" une_heure fuseau_horaire? "'"

référenciée par :


une_heure:

une_heure
         ::= heure ':' minutes ':' secondes

référenciée par :


heure:

heure    ::= element_date_heure

référenciée par :


minutes:

minutes  ::= element_date_heure

référenciée par :


secondes:

secondes ::= nombre_entier_secondes ( '.' fraction_secondes? )?

référenciée par :


nombre_entier_secondes:

nombre_entier_secondes
         ::= entier_sans_signe

référenciée par :


fraction_secondes:

fraction_secondes
         ::= entier_sans_signe

référenciée par :


fuseau_horaire:

fuseau_horaire
         ::= signe heure ':' minutes
           | 'LOCAL'
           | 'TIME ZONE' element_expression_duree

référenciée par :


notation_horodate:

notation_horodate
         ::= "'" une_date espace une_heure fuseau_horaire? "'"

référenciée par :


notation_duree:

notation_duree
         ::= "'" ( duree_an_mois | duree_jour_heure ) "'"

référenciée par :


duree_an_mois:

duree_an_mois
         ::= annee
           | ( annee '-' )? mois

référenciée par :


duree_jour_heure:

duree_jour_heure
         ::= duree_jour
           | duree_heure

référenciée par :


duree_jour:

duree_jour
         ::= jour ( espace heure ( ':' minutes ( ':' secondes )? )? )?

référenciée par :


duree_heure:

duree_heure
         ::= heure ( ':' minutes ( ':' secondes )? )?
           | minutes ( ':' secondes )?
           | secondes

référenciée par :


identificateur_qualifie:

identificateur_qualifie
         ::= identificateur

référenciée par :


liste_elements_table:

liste_elements_table
         ::= '(' element_table ( ',' element_table )+? ')'

référenciée par :


element_table:

element_table
         ::= definition_colonne
           | definition_contrainte_table

référenciée par :


definition_colonne:

definition_colonne
         ::= nom_colonne ( type_donnee | nom_domaine ) valeur_par_defaut? definition_contrainte_colonne+? indication_interclassement?

référenciée par :


nom_colonne:

nom_colonne
         ::= identificateur

référenciée par :


type_donnee:

type_donnee
         ::= type_chaine_caracteres ( 'CHARACTER SET' indication_alphabet )?
           | type_chaine_caracteres_jeu_reference
           | type_suite_bits
           | type_numerique
           | type_temporel
           | type_duree

référenciée par :


type_chaine_caracteres:

type_chaine_caracteres
         ::= 'CHARACTER' ( '(' taille ')' )?
           | 'CHAR' ( '(' taille ')' )?
           | 'CHARACTER VARYING' ( '(' taille ')' )?
           | 'CHAR VARYING' ( '(' taille ')' )?
           | 'VARCHAR' ( '(' taille ')' )?

référenciée par :


taille:

taille   ::= entier_sans_signe

référenciée par :


type_chaine_caracteres_jeu_reference:

type_chaine_caracteres_jeu_reference
         ::= 'NATIONAL CHARACTER' ( '(' taille ')' )?
           | 'NATIONAL CHAR' ( '(' taille ')' )?
           | 'NCHAR' ( '(' taille ')' )?
           | 'NATIONAL CHARACTER VARYING' ( '(' taille ')' )?
           | 'NATIONAL CHAR VARYING' ( '(' taille ')' )?
           | 'NCHAR VARYING' ( '(' taille ')' )?

référenciée par :


type_suite_bits:

type_suite_bits
         ::= 'BIT' ( '(' taille ')' )?
           | 'BIT VARYING' ( '(' taille ')' )?

référenciée par :


type_numerique:

type_numerique
         ::= type_numerique_exact
           | type_numerique_approche

référenciée par :


type_numerique_exact:

type_numerique_exact
         ::= 'NUMERIC' ( '(' precision ( ',' decimales )? ')' )?
           | 'DECIMAL' ( '(' precision ( ',' decimales )? ')' )?
           | 'DEC' ( '(' precision ( ',' decimales )? ')' )?
           | 'INTEGER'
           | 'INT'
           | 'SMALLINT'

référenciée par :


precision:

precision
         ::= entier_sans_signe

référenciée par :


decimales:

decimales
         ::= entier_sans_signe

référenciée par :


type_numerique_approche:

type_numerique_approche
         ::= 'FLOAT' ( '(' precision ')' )?
           | 'REAL'
           | 'DOUBLE PRECISION'

référenciée par :


type_temporel:

type_temporel
         ::= 'DATE'
           | 'TIME' ( '(' precision_horaire ')' )? 'WITH TIME ZONE'?
           | 'TIMESTAMP' ( '(' precision_horodate ')' )? 'WITH TIME ZONE'?

référenciée par :


precision_horaire:

precision_horaire
         ::= precision_seconde

référenciée par :


precision_seconde:

precision_seconde
         ::= entier_sans_signe

référenciée par :


precision_horodate:

precision_horodate
         ::= precision_seconde

référenciée par :


type_duree:

type_duree
         ::= 'INTERVAL' specification_duree

référenciée par :


specification_duree:

specification_duree
         ::= unite_majeure_duree 'TO' unite_mineure_duree
           | duree_simple_unite

référenciée par :


unite_majeure_duree:

unite_majeure_duree
         ::= unite_duree_sauf_seconde ( '(' precision_unite_principale_duree ')' )?

référenciée par :


unite_duree_sauf_seconde:

unite_duree_sauf_seconde
         ::= 'YEAR'
           | 'MONTH'
           | 'DAY'
           | 'HOUR'
           | 'MINUTE'

référenciée par :


precision_unite_principale_duree:

precision_unite_principale_duree
         ::= entier_sans_signe

référenciée par :


unite_mineure_duree:

unite_mineure_duree
         ::= unite_duree_sauf_seconde
           | 'SECOND' ( '(' precision_fraction_secondes ')' )?

référenciée par :


precision_fraction_secondes:

precision_fraction_secondes
         ::= entier_sans_signe

référenciée par :


duree_simple_unite:

duree_simple_unite
         ::= unite_duree_sauf_seconde ( '(' precision_unite_principale_duree ')' )?
           | 'SECOND' ( '(' precision_unite_principale_duree ( ',' '(' precision_fraction_secondes )? ')' )?

référenciée par :


nom_domaine:

nom_domaine
         ::= nom_qualifie

référenciée par :


nom_qualifie:

nom_qualifie
         ::= ( nom_schema '.' )? identificateur_qualifie

référenciée par :


valeur_par_defaut:

valeur_par_defaut
         ::= 'DEFAULT' option_valeur_par_defaut

référenciée par :


option_valeur_par_defaut:

option_valeur_par_defaut
         ::= valeur
           | fonction_temporelle
           | 'USER'
           | 'CURRENT_USER'
           | 'SESSION_USER'
           | 'SYSTEM_USER'
           | 'NULL'

référenciée par :


valeur:

valeur   ::= valeur_numerique
           | valeur_autre_que_numerique

référenciée par :


valeur_numerique:

valeur_numerique
         ::= signe? valeur_numerique_sans_signe

référenciée par :


valeur_autre_que_numerique:

valeur_autre_que_numerique
         ::= notation_chaine_caracteres
           | notation_chaine_caracteres_jeu_reference
           | notation_chaine_bits
           | notation_chaine_hexadecimale
           | valeur_temporelle
           | valeur_duree

référenciée par :


valeur_temporelle:

valeur_temporelle
         ::= valeur_date
           | valeur_heure
           | valeur_horodate

référenciée par :


valeur_date:

valeur_date
         ::= 'DATE' notation_date

référenciée par :


valeur_heure:

valeur_heure
         ::= 'TIME' notation_heure

référenciée par :


valeur_horodate:

valeur_horodate
         ::= 'TIMESTAMP' notation_horodate

référenciée par :


valeur_duree:

valeur_duree
         ::= 'INTERVAL' signe? notation_duree specification_duree

référenciée par :


fonction_temporelle:

fonction_temporelle
         ::= fonction_date_courante
           | fonction_heure_courante
           | fonction_horodate_courante

référenciée par :


fonction_date_courante:

fonction_date_courante
         ::= 'CURRENT_DATE'

référenciée par :


fonction_heure_courante:

fonction_heure_courante
         ::= 'CURRENT_TIME' ( '(' precision_horaire ')' )?

référenciée par :


fonction_horodate_courante:

fonction_horodate_courante
         ::= 'CURRENT_TIMESTAMP' ( '(' precision_horodate ')' )?

référenciée par :


definition_contrainte_colonne:

definition_contrainte_colonne
         ::= attribution_nom_contrainte? contrainte_colonne mode_application_contrainte?

référenciée par :


attribution_nom_contrainte:

attribution_nom_contrainte
         ::= 'CONSTRAINT' nom_contrainte

référenciée par :


nom_contrainte:

nom_contrainte
         ::= nom_qualifie

référenciée par :


contrainte_colonne:

contrainte_colonne
         ::= 'NOT NULL'
           | contrainte_valeur_unique
           | definition_reference
           | definition_contrainte_validation

référenciée par :


contrainte_valeur_unique:

contrainte_valeur_unique
         ::= 'UNIQUE'
           | 'PRIMARY KEY'

référenciée par :


definition_reference:

definition_reference
         ::= 'REFERENCES' table_colonnes_reference ( 'MATCH' type_correspondance )? action_declenchee_reference?

référenciée par :


table_colonnes_reference:

table_colonnes_reference
         ::= nom_table ( '(' liste_colonnes_reference ')' )?

référenciée par :


nom_table:

nom_table
         ::= nom_qualifie

référenciée par :


liste_colonnes_reference:

liste_colonnes_reference
         ::= liste_nom_colonnes

référenciée par :


liste_nom_colonnes:

liste_nom_colonnes
         ::= nom_colonne ( ',' nom_colonne )+?

référenciée par :


type_correspondance:

type_correspondance
         ::= 'FULL'
           | 'PARTIAL'

référenciée par :


action_declenchee_reference:

action_declenchee_reference
         ::= action_mise_a_jour_reference action_suppression_reference?
           | action_suppression_reference action_mise_a_jour_reference?

référenciée par :


action_mise_a_jour_reference:

action_mise_a_jour_reference
         ::= 'ON UPDATE' action_propagee_reference

référenciée par :


action_propagee_reference:

action_propagee_reference
         ::= 'CASCADE'
           | 'SET NULL'
           | 'SET DEFAULT'
           | 'NO ACTION'

référenciée par :


action_suppression_reference:

action_suppression_reference
         ::= 'ON DELETE' action_propagee_reference

référenciée par :


definition_contrainte_validation:

definition_contrainte_validation
         ::= 'CHECK' '(' condition_recherche ')'

référenciée par :


condition_recherche:

condition_recherche
         ::= terme_logique
           | condition_recherche 'OR' terme_logique

référenciée par :


terme_logique:

terme_logique
         ::= facteur_logique
           | terme_logique 'AND' facteur_logique

référenciée par :


facteur_logique:

facteur_logique
         ::= 'NOT'? test_logique

référenciée par :


test_logique:

test_logique
         ::= element_logique ( 'IS' 'NOT'? valeur_verite )?

référenciée par :


element_logique:

element_logique
         ::= predicat
           | '(' condition_recherche ')'

référenciée par :


predicat:

predicat ::= predicat_comparaison
           | predicat_intervalle
           | predicat_dans_liste
           | predicat_motif
           | predicat_absence
           | predicat_comparaison_groupee
           | predicat_resultat
           | predicat_resultat_unique
           | predicat_correspondance
           | predicat_recouvrement

référenciée par :


predicat_comparaison:

predicat_comparaison
         ::= valeur_ligne operateur_comparaison valeur_ligne

référenciée par :


valeur_ligne:

valeur_ligne
         ::= element_valeur_ligne
           | '(' liste_elements_valeur_ligne ')'
           | sous_recherche_a_resultat_ligne

référenciée par :


liste_elements_valeur_ligne:

liste_elements_valeur_ligne
         ::= element_valeur_ligne ( ',' element_valeur_ligne )+?

référenciée par :


sous_recherche_a_resultat_ligne:

sous_recherche_a_resultat_ligne
         ::= sous_recherche

référenciée par :


element_valeur_ligne:

element_valeur_ligne
         ::= expression
           | 'NULL'
           | 'DEFAULT'

référenciée par :


expression:

expression
         ::= element_numerique_expression
           | element_chaine_caracteres_expression
           | element_temporel_expression
           | element_expression_duree

référenciée par :


element_numerique_expression:

element_numerique_expression
         ::= terme_numerique
           | element_numerique_expression '+' terme_numerique
           | element_numerique_expression '-' terme_numerique

référenciée par :


terme_numerique:

terme_numerique
         ::= facteur_numerique
           | terme_numerique '*' facteur_numerique
           | terme_numerique '/' facteur_numerique

référenciée par :


facteur_numerique:

facteur_numerique
         ::= signe? element_numerique

référenciée par :


element_numerique:

element_numerique
         ::= element_expression
           | fonction_numerique

référenciée par :


element_expression:

element_expression
         ::= specification_valeur_sans_signe
           | reference_colonne
           | calcul_agregation
           | sous_recherche_a_resultat_simple
           | expression_choix
           | '(' expression ')'
           | transtypage

référenciée par :


specification_valeur_sans_signe:

specification_valeur_sans_signe
         ::= valeur_sans_signe
           | specification_valeur_generale

référenciée par :


valeur_sans_signe:

valeur_sans_signe
         ::= valeur_numerique_sans_signe
           | valeur_autre_que_numerique

référenciée par :


specification_valeur_generale:

specification_valeur_generale
         ::= specification_parametre
           | specification_variable
           | 'USER'
           | 'CURRENT_USER'
           | 'SESSION_USER'
           | 'SYSTEM_USER'
           | 'VALUE'

référenciée par :


specification_parametre:

specification_parametre
         ::= nom_parametre parametre_indicateur?

référenciée par :


nom_parametre:

nom_parametre
         ::= ':' identificateur

référenciée par :


specification_variable:

specification_variable
         ::= nom_variable variable_indicatrice?

référenciée par :


parametre_indicateur:

parametre_indicateur
         ::= INDICATOR? nom_parametre

référenciée par :


variable_indicatrice:

variable_indicatrice
         ::= INDICATOR? variable_introduite

référenciée par :


variable_introduite:

variable_introduite
         ::= ':' identificateur_autre_langage

référenciée par :


reference_colonne:

reference_colonne
         ::= ( contextualisation '.' )? nom_colonne

référenciée par :


contextualisation:

contextualisation
         ::= nom_table
           | surnom

référenciée par :


surnom:

surnom   ::= identificateur

référenciée par :


calcul_agregation:

calcul_agregation
         ::= 'COUNT' '(' '*' ')'
           | fonction_calcul_agregation

référenciée par :


fonction_calcul_agregation:

fonction_calcul_agregation
         ::= nom_fonction_calcul_agregation '(' distinction_valeurs? expression ')'

référenciée par :


nom_fonction_calcul_agregation:

nom_fonction_calcul_agregation
         ::= 'AVG'
           | 'MAX'
           | 'MIN'
           | 'SUM'
           | 'COUNT'

référenciée par :


distinction_valeurs:

distinction_valeurs
         ::= 'DISTINCT'
           | 'ALL'

référenciée par :


sous_recherche_a_resultat_simple:

sous_recherche_a_resultat_simple
         ::= sous_recherche

référenciée par :


sous_recherche:

sous_recherche
         ::= '(' expression_recherche ')'

référenciée par :


expression_recherche:

expression_recherche
         ::= expression_recherche_sans_jointure
           | jointure

référenciée par :


expression_recherche_sans_jointure:

expression_recherche_sans_jointure
         ::= terme_recherche_sans_jointure
           | expression_recherche 'UNION' 'ALL'? restriction_selon_noms? terme_recherche
           | expression_recherche 'EXCEPT' 'ALL'? restriction_selon_noms? terme_recherche

référenciée par :


terme_recherche_sans_jointure:

terme_recherche_sans_jointure
         ::= element_recherche_sans_jointure
           | terme_recherche 'INTERSECT' 'ALL'? restriction_selon_noms? element_recherche

référenciée par :


element_recherche_sans_jointure:

element_recherche_sans_jointure
         ::= simple_table
           | '(' expression_recherche_sans_jointure ')'

référenciée par :


simple_table:

simple_table
         ::= specification_recherche
           | indication_valeurs_table
           | table_explicite

référenciée par :


specification_recherche:

specification_recherche
         ::= 'SELECT' distinction_valeurs? specification_resultats_recherche specification_donnees_recherche

référenciée par :


specification_resultats_recherche:

specification_resultats_recherche
         ::= '*'
           | element_liste_recherche ( ',' element_liste_recherche )+?

référenciée par :


element_liste_recherche:

element_liste_recherche
         ::= colonne_recherche
           | contextualisation '.' '*'

référenciée par :


colonne_recherche:

colonne_recherche
         ::= expression definition_surnom_colonne?

référenciée par :


definition_surnom_colonne:

definition_surnom_colonne
         ::= 'AS'? nom_colonne

référenciée par :


specification_donnees_recherche:

specification_donnees_recherche
         ::= specification_tables_recherche specification_condition_recherche? specification_regroupement? specification_filtrage?

référenciée par :


specification_tables_recherche:

specification_tables_recherche
         ::= 'FROM' reference_table ( ',' reference_table )+?

référenciée par :


reference_table:

reference_table
         ::= nom_table definition_surnom?
           | table_derivee definition_surnom
           | jointure

référenciée par :


definition_surnom:

definition_surnom
         ::= 'AS'? surnom ( '(' liste_colonnes_derivees ')' )?

référenciée par :


liste_colonnes_derivees:

liste_colonnes_derivees
         ::= liste_nom_colonnes

référenciée par :


table_derivee:

table_derivee
         ::= table_sous_requete

référenciée par :


table_sous_requete:

table_sous_requete
         ::= sous_recherche

référenciée par :


jointure:

jointure ::= jointure_croisee
           | jointure_specifique
           | '(' jointure ')'

référenciée par :


jointure_croisee:

jointure_croisee
         ::= reference_table 'CROSS JOIN' reference_table

référenciée par :


jointure_specifique:

jointure_specifique
         ::= reference_table 'NATURAL'? type_jointure_specifique? 'JOIN' reference_table critere_jointure?

référenciée par :


type_jointure_specifique:

type_jointure_specifique
         ::= 'INNER'
           | type_jointure_externe 'OUTER'?
           | 'UNION'

référenciée par :


type_jointure_externe:

type_jointure_externe
         ::= 'LEFT'
           | 'RIGHT'
           | 'FULL'

référenciée par :


critere_jointure:

critere_jointure
         ::= condition_jointure
           | specification_colonnes_jointure_naturelle

référenciée par :


condition_jointure:

condition_jointure
         ::= 'ON' condition_recherche

référenciée par :


specification_colonnes_jointure_naturelle:

specification_colonnes_jointure_naturelle
         ::= 'USING' '(' liste_nom_colonnes ')'

référenciée par :


specification_condition_recherche:

specification_condition_recherche
         ::= 'WHERE' condition_recherche

référenciée par :


specification_regroupement:

specification_regroupement
         ::= 'GROUP BY' liste_references_colonne_groupe

référenciée par :


liste_references_colonne_groupe:

liste_references_colonne_groupe
         ::= reference_colonne_groupe ( ',' reference_colonne_groupe )+?

référenciée par :


reference_colonne_groupe:

reference_colonne_groupe
         ::= reference_colonne indication_interclassement?

référenciée par :


indication_interclassement:

indication_interclassement
         ::= 'COLLATE' nom_interclassement

référenciée par :


nom_interclassement:

nom_interclassement
         ::= nom_qualifie

référenciée par :


specification_filtrage:

specification_filtrage
         ::= 'HAVING' condition_recherche

référenciée par :


indication_valeurs_table:

indication_valeurs_table
         ::= 'VALUES' liste_valeurs_table

référenciée par :


liste_valeurs_table:

liste_valeurs_table
         ::= valeur_ligne ( ',' valeur_ligne )+?

référenciée par :


table_explicite:

table_explicite
         ::= 'TABLE' nom_table

référenciée par :


terme_recherche:

terme_recherche
         ::= terme_recherche_sans_jointure
           | jointure

référenciée par :


restriction_selon_noms:

restriction_selon_noms
         ::= 'CORRESPONDING' ( 'BY' '(' liste_nom_colonnes ')' )?

référenciée par :


element_recherche:

element_recherche
         ::= element_recherche_sans_jointure
           | jointure

référenciée par :


expression_choix:

expression_choix
         ::= choix_abrege
           | specification_choix

référenciée par :


choix_abrege:

choix_abrege
         ::= 'NULLIF' '(' expression ',' expression ')'
           | 'COALESCE' '(' expression ( ',' expression )+ ')'

référenciée par :


specification_choix:

specification_choix
         ::= choix_simple
           | choix_avec_recherche

référenciée par :


choix_simple:

choix_simple
         ::= 'CASE' operande_choix condition_choix+ alternative_choix? 'END'

référenciée par :


operande_choix:

operande_choix
         ::= expression

référenciée par :


condition_choix:

condition_choix
         ::= 'WHEN' expression 'THEN' resultat_choix

référenciée par :


resultat_choix:

resultat_choix
         ::= expression
           | 'NULL'

référenciée par :


alternative_choix:

alternative_choix
         ::= 'ELSE' resultat_choix

référenciée par :


choix_avec_recherche:

choix_avec_recherche
         ::= 'CASE' condition_choix_avec_recherche+ alternative_choix? 'END'

référenciée par :


condition_choix_avec_recherche:

condition_choix_avec_recherche
         ::= 'WHEN' condition_recherche 'THEN' resultat_choix

référenciée par :


transtypage:

transtypage
         ::= 'CAST' '(' operande_transtypage 'AS' cible_transtypage ')'

référenciée par :


operande_transtypage:

operande_transtypage
         ::= expression
           | 'NULL'

référenciée par :


cible_transtypage:

cible_transtypage
         ::= nom_domaine
           | type_donnee

référenciée par :


fonction_numerique:

fonction_numerique
         ::= expression_position
           | expression_extraction
           | expression_longueur

référenciée par :


expression_position:

expression_position
         ::= 'POSITION' '(' expression_texte 'IN' expression_texte ')'

référenciée par :


expression_texte:

expression_texte
         ::= concatenation_texte
           | facteur_texte

référenciée par :


concatenation_texte:

concatenation_texte
         ::= expression_texte '||' facteur_texte

référenciée par :


facteur_texte:

facteur_texte
         ::= element_texte indication_interclassement?

référenciée par :


element_texte:

element_texte
         ::= element_expression
           | fonction_texte

référenciée par :


fonction_texte:

fonction_texte
         ::= fonction_caracteres
           | fonction_bits

référenciée par :


fonction_caracteres:

fonction_caracteres
         ::= fonction_sous_chaine
           | changement_casse
           | reformatage_caracteres
           | conversion_caracteres
           | nettoyage_bouts

référenciée par :


fonction_sous_chaine:

fonction_sous_chaine
         ::= 'SUBSTRING' '(' expression_texte 'FROM' position_debut ( 'FOR' taille_chaine )? ')'

référenciée par :


position_debut:

position_debut
         ::= element_numerique_expression

référenciée par :


taille_chaine:

taille_chaine
         ::= element_numerique_expression

référenciée par :


changement_casse:

changement_casse
         ::= ( 'UPPER' | 'LOWER' ) '(' expression_texte ')'

référenciée par :


reformatage_caracteres:

reformatage_caracteres
         ::= 'CONVERT' '(' expression_texte 'USING' nom_variante_format ')'

référenciée par :


nom_variante_format:

nom_variante_format
         ::= nom_qualifie

référenciée par :


conversion_caracteres:

conversion_caracteres
         ::= 'TRANSLATE' '(' expression_texte 'USING' nom_conversion ')'

référenciée par :


nom_conversion:

nom_conversion
         ::= nom_qualifie

référenciée par :


nettoyage_bouts:

nettoyage_bouts
         ::= 'TRIM' '(' operande_nettoyage ')'

référenciée par :


operande_nettoyage:

operande_nettoyage
         ::= ( mode_nettoyage? caractere_elimine? 'FROM' )? chaine_a_nettoyer

référenciée par :


mode_nettoyage:

mode_nettoyage
         ::= 'LEADING'
           | 'TRAILING'
           | 'BOTH'

référenciée par :


caractere_elimine:

caractere_elimine
         ::= expression_texte

référenciée par :


chaine_a_nettoyer:

chaine_a_nettoyer
         ::= expression_texte

référenciée par :


fonction_bits:

fonction_bits
         ::= fonction_sous_chaine_bits

référenciée par :


fonction_sous_chaine_bits:

fonction_sous_chaine_bits
         ::= 'SUBSTRING' '(' expression_bits 'FROM' position_debut ( 'FOR' taille_chaine )? ')'

référenciée par :


expression_bits:

expression_bits
         ::= concatenation_bits
           | facteur_bits

référenciée par :


concatenation_bits:

concatenation_bits
         ::= expression_bits '||' facteur_bits

référenciée par :


facteur_bits:

facteur_bits
         ::= element_bits

référenciée par :


element_bits:

element_bits
         ::= element_expression
           | fonction_texte

référenciée par :


expression_extraction:

expression_extraction
         ::= 'EXTRACT' '(' champ_extraction 'FROM' source_extraction ')'

référenciée par :


champ_extraction:

champ_extraction
         ::= champ_temporel
           | champ_fuseau_horaire

référenciée par :


champ_temporel:

champ_temporel
         ::= unite_duree_sauf_seconde
           | 'SECOND'

référenciée par :


champ_fuseau_horaire:

champ_fuseau_horaire
         ::= 'TIMEZONE_HOUR'
           | 'TIMEZONE_MINUTE'

référenciée par :


source_extraction:

source_extraction
         ::= element_temporel_expression
           | element_expression_duree

référenciée par :


element_temporel_expression:

element_temporel_expression
         ::= terme_temporel
           | element_expression_duree '+' terme_temporel
           | element_temporel_expression '+' terme_duree
           | element_temporel_expression '-' terme_duree

référenciée par :


terme_duree:

terme_duree
         ::= facteur_duree
           | terme_duree_2 '*' facteur_numerique
           | terme_duree_2 '/' facteur_numerique
           | terme_numerique '*' facteur_duree

référenciée par :


facteur_duree:

facteur_duree
         ::= signe? element_duree

référenciée par :


element_duree:

element_duree
         ::= element_expression specification_duree?

référenciée par :


terme_duree_2:

terme_duree_2
         ::= terme_duree

référenciée par :


element_expression_duree:

element_expression_duree
         ::= terme_duree
           | expression_duree_1 '+' interval_term_1
           | expression_duree_1 '-' interval_term_1
           | '(' element_temporel_expression '-' terme_temporel ')' specification_duree

référenciée par :


expression_duree_1:

expression_duree_1
         ::= element_expression_duree

référenciée par :


interval_term_1:

interval_term_1
         ::= terme_duree

référenciée par :


terme_temporel:

terme_temporel
         ::= facteur_temporel

référenciée par :


facteur_temporel:

facteur_temporel
         ::= element_temporel indication_fuseau_horaire?

référenciée par :


element_temporel:

element_temporel
         ::= element_expression
           | fonction_temporelle

référenciée par :


indication_fuseau_horaire:

indication_fuseau_horaire
         ::= 'AT' fuseau_horaire

référenciée par :


expression_longueur:

expression_longueur
         ::= expression_longueur_texte
           | expression_longueur_octet
           | expression_longueur_bit

référenciée par :


expression_longueur_texte:

expression_longueur_texte
         ::= ( 'CHAR_LENGTH' | 'CHARACTER_LENGTH' ) '(' element_chaine_caracteres_expression ')'

référenciée par :


element_chaine_caracteres_expression:

element_chaine_caracteres_expression
         ::= expression_texte
           | expression_bits

référenciée par :


expression_longueur_octet:

expression_longueur_octet
         ::= 'OCTET_LENGTH' '(' element_chaine_caracteres_expression ')'

référenciée par :


expression_longueur_bit:

expression_longueur_bit
         ::= 'BIT_LENGTH' '(' element_chaine_caracteres_expression ')'

référenciée par :


operateur_comparaison:

operateur_comparaison
         ::= '='
           | '<>'
           | '<'
           | '>'
           | '<='
           | '>='

référenciée par :


predicat_intervalle:

predicat_intervalle
         ::= valeur_ligne 'NOT'? 'BETWEEN' valeur_ligne 'AND' valeur_ligne

référenciée par :


predicat_dans_liste:

predicat_dans_liste
         ::= valeur_ligne 'NOT'? 'IN' liste_valeurs

référenciée par :


liste_valeurs:

liste_valeurs
         ::= table_sous_requete
           | '(' notation_liste_valeurs ')'

référenciée par :


notation_liste_valeurs:

notation_liste_valeurs
         ::= expression ( ',' expression )+

référenciée par :


predicat_motif:

predicat_motif
         ::= expression_texte 'NOT'? 'LIKE' motif ( 'ESCAPE' symbole_annulation_joker )?

référenciée par :


motif:

motif    ::= expression_texte

référenciée par :


symbole_annulation_joker:

symbole_annulation_joker
         ::= expression_texte

référenciée par :


predicat_absence:

predicat_absence
         ::= valeur_ligne 'IS' 'NOT'? 'NULL'

référenciée par :


predicat_comparaison_groupee:

predicat_comparaison_groupee
         ::= valeur_ligne operateur_comparaison mode_comparaison_groupee table_sous_requete

référenciée par :


mode_comparaison_groupee:

mode_comparaison_groupee
         ::= 'ALL'
           | 'SOME'
           | 'ANY'

référenciée par :


predicat_resultat:

predicat_resultat
         ::= 'EXISTS' table_sous_requete

référenciée par :


predicat_resultat_unique:

predicat_resultat_unique
         ::= 'UNIQUE' table_sous_requete

référenciée par :


predicat_correspondance:

predicat_correspondance
         ::= valeur_ligne 'MATCH' 'UNIQUE'? ( 'PARTIAL' | 'FULL' )? table_sous_requete

référenciée par :


predicat_recouvrement:

predicat_recouvrement
         ::= valeur_ligne_1 'OVERLAPS' valeur_ligne_2

référenciée par :


valeur_ligne_1:

valeur_ligne_1
         ::= valeur_ligne

référenciée par :


valeur_ligne_2:

valeur_ligne_2
         ::= valeur_ligne

référenciée par :


valeur_verite:

valeur_verite
         ::= 'TRUE'
           | 'FALSE'
           | 'UNKNOWN'

référenciée par :


mode_application_contrainte:

mode_application_contrainte
         ::= application_contrainte_transaction ( 'NOT'? 'DEFERRABLE' )?
           | 'NOT'? 'DEFERRABLE' application_contrainte_transaction?

référenciée par :


application_contrainte_transaction:

application_contrainte_transaction
         ::= 'INITIALLY DEFERRED'
           | 'INITIALLY IMMEDIATE'

référenciée par :


definition_contrainte_table:

definition_contrainte_table
         ::= attribution_nom_contrainte? contrainte_table application_contrainte_transaction?

référenciée par :


contrainte_table:

contrainte_table
         ::= definition_contrainte_valeur_unique
           | definition_contrainte_referentielle
           | definition_contrainte_validation

référenciée par :


definition_contrainte_valeur_unique:

definition_contrainte_valeur_unique
         ::= contrainte_valeur_unique '(' liste_nom_colonnes ')'

référenciée par :


definition_contrainte_referentielle:

definition_contrainte_referentielle
         ::= 'FOREIGN KEY' '(' colonnes_clef_etrangere ')' definition_reference

référenciée par :


colonnes_clef_etrangere:

colonnes_clef_etrangere
         ::= liste_colonnes_reference

référenciée par :


instruction_schema_sql:

instruction_schema_sql
         ::= instruction_definition_schema_sql
           | instruction_manipulation_schema_sql

référenciée par :


instruction_definition_schema_sql:

instruction_definition_schema_sql
         ::= definition_schema
           | definition_table
           | definition_vue
           | definition_domaine
           | definition_alphabet
           | definition_interclassement
           | definition_conversion
           | definition_assertion
           | instruction_attribution_privileges

référenciée par :


definition_schema:

definition_schema
         ::= 'CREATE SCHEMA' specification_schema indication_alphabet_schema? element_schema+?

référenciée par :


specification_schema:

specification_schema
         ::= nom_schema
           | 'AUTHORIZATION' proprietaire_schema
           | nom_schema 'AUTHORIZATION' proprietaire_schema

référenciée par :


proprietaire_schema:

proprietaire_schema
         ::= identite_utilisateur

référenciée par :


indication_alphabet_schema:

indication_alphabet_schema
         ::= 'DEFAULT CHARACTER SET' indication_alphabet

référenciée par :


element_schema:

element_schema
         ::= definition_domaine
           | definition_table
           | definition_vue
           | instruction_attribution_privileges
           | definition_assertion
           | definition_alphabet
           | definition_interclassement
           | definition_conversion

référenciée par :


definition_domaine:

definition_domaine
         ::= 'CREATE DOMAIN' nom_domaine 'AS'? type_donnee valeur_par_defaut? contrainte_domaine? indication_interclassement?

référenciée par :


contrainte_domaine:

contrainte_domaine
         ::= attribution_nom_contrainte? definition_contrainte_validation mode_application_contrainte?

référenciée par :


definition_table:

definition_table
         ::= 'CREATE' ( ( 'GLOBAL' | 'LOCAL' ) 'TEMPORARY' )? 'TABLE' nom_table liste_elements_table ( 'ON COMMIT' ( 'DELETE' | 'PRESERVE' ) 'ROWS' )?

référenciée par :


definition_vue:

definition_vue
         ::= 'CREATE VIEW' nom_table ( '(' liste_colonnes_vue ')' )? 'AS' expression_recherche ( 'WITH' niveau_validation? 'CHECK OPTION' )?

référenciée par :


liste_colonnes_vue:

liste_colonnes_vue
         ::= liste_nom_colonnes

référenciée par :


niveau_validation:

niveau_validation
         ::= 'CASCADED'
           | 'LOCAL'

référenciée par :


instruction_attribution_privileges:

instruction_attribution_privileges
         ::= 'GRANT' privileges 'ON' nom_element 'TO' attributaire ( ',' attributaire )+? 'WITH GRANT OPTION'?

référenciée par :


privileges:

privileges
         ::= 'ALL PRIVILEGES'
           | liste_privileges

référenciée par :


liste_privileges:

liste_privileges
         ::= privilege_elementaire ( ',' privilege_elementaire )+?

référenciée par :


privilege_elementaire:

privilege_elementaire
         ::= 'SELECT'
           | 'DELETE'
           | 'INSERT' ( '(' liste_nom_colonnes ')' )?
           | 'UPDATE' ( '(' liste_nom_colonnes ')' )?
           | 'REFERENCES' ( '(' liste_nom_colonnes ')' )?
           | 'USAGE'

référenciée par :


nom_element:

nom_element
         ::= 'TABLE'? nom_table
           | 'DOMAIN' nom_domaine
           | 'COLLATION' nom_interclassement
           | 'CHARACTER SET' nom_alphabet
           | 'TRANSLATION' nom_conversion

référenciée par :


attributaire:

attributaire
         ::= 'PUBLIC'
           | identite_utilisateur

référenciée par :


definition_assertion:

definition_assertion
         ::= 'CREATE ASSERTION' nom_contrainte validation_assertion mode_application_contrainte?

référenciée par :


validation_assertion:

validation_assertion
         ::= 'CHECK' '(' condition_recherche ')'

référenciée par :


definition_alphabet:

definition_alphabet
         ::= 'CREATE CHARACTER SET' nom_alphabet 'AS'? character_set_source ( indication_interclassement | limited_collation_definition )?

référenciée par :


character_set_source:

character_set_source
         ::= 'GET' existing_nom_alphabet

référenciée par :


existing_nom_alphabet:

existing_nom_alphabet
         ::= nom_alphabet_normalise
           | nom_alphabet_reference
           | schema_nom_alphabet

référenciée par :


schema_nom_alphabet:

schema_nom_alphabet
         ::= nom_alphabet

référenciée par :


limited_collation_definition:

limited_collation_definition
         ::= 'COLLATION FROM' collation_source

référenciée par :


collation_source:

collation_source
         ::= collating_sequence_definition
           | translation_collation

référenciée par :


collating_sequence_definition:

collating_sequence_definition
         ::= external_collation
           | schema_collation_name
           | 'DESC' '(' nom_interclassement ')'
           | 'DEFAULT'

référenciée par :


external_collation:

external_collation
         ::= 'EXTERNAL' '(' "'" external_collation_name "'" ')'

référenciée par :


external_collation_name:

external_collation_name
         ::= standard_collation_name
           | implementation-defined_collation_name

référenciée par :


standard_collation_name:

standard_collation_name
         ::= nom_interclassement

référenciée par :


implementation-defined_collation_name:

implementation-defined_collation_name
         ::= nom_interclassement

référenciée par :


schema_collation_name:

schema_collation_name
         ::= nom_interclassement

référenciée par :


translation_collation:

translation_collation
         ::= 'TRANSLATION' nom_conversion ( 'THEN COLLATION' nom_interclassement )?

référenciée par :


definition_interclassement:

definition_interclassement
         ::= 'CREATE COLLATION' nom_interclassement 'FOR' indication_alphabet 'FROM' collation_source pad_attribute?

référenciée par :


pad_attribute:

pad_attribute
         ::= 'NO PAD'
           | 'PAD SPACE'

référenciée par :


definition_conversion:

definition_conversion
         ::= 'CREATE TRANSLATION' nom_conversion 'FOR' indication_alphabet_initial 'TO' indication_alphabet_final 'FROM' source_conversion

référenciée par :


indication_alphabet_initial:

indication_alphabet_initial
         ::= indication_alphabet

référenciée par :


indication_alphabet_final:

indication_alphabet_final
         ::= indication_alphabet

référenciée par :


source_conversion:

source_conversion
         ::= specification_conversion

référenciée par :


specification_conversion:

specification_conversion
         ::= conversion_externe
           | 'IDENTITY'
           | nom_conversion_schema

référenciée par :


conversion_externe:

conversion_externe
         ::= 'EXTERNAL' '(' "'" nom_conversion_externe "'" ')'

référenciée par :


nom_conversion_externe:

nom_conversion_externe
         ::= nom_conversion_normalise
           | nom_conversion_implementation

référenciée par :


nom_conversion_normalise:

nom_conversion_normalise
         ::= nom_conversion

référenciée par :


nom_conversion_implementation:

nom_conversion_implementation
         ::= nom_conversion

référenciée par :


nom_conversion_schema:

nom_conversion_schema
         ::= nom_conversion

référenciée par :


instruction_manipulation_schema_sql:

instruction_manipulation_schema_sql
         ::= instruction_suppression_schema
           | instruction_retouche_table
           | instruction_suppression_table
           | instruction_suppression_vue
           | instruction_modification_domaine
           | instruction_suppression_domaine
           | instruction_suppression_alphabet
           | instruction_suppression_interclassement
           | instruction_suppression_conversion
           | instruction_suppression_assertion
           | instruction_annulation_privileges

référenciée par :


instruction_suppression_schema:

instruction_suppression_schema
         ::= 'DROP SCHEMA' nom_schema mode_suppression

référenciée par :


mode_suppression:

mode_suppression
         ::= 'CASCADE'
           | 'RESTRICT'

référenciée par :


instruction_retouche_table:

instruction_retouche_table
         ::= 'ALTER TABLE' nom_table action_retouche_table

référenciée par :


action_retouche_table:

action_retouche_table
         ::= ajout_colonne
           | retouche_colonne
           | suppression_colonne
           | ajout_contrainte_table
           | suppression_contrainte_table

référenciée par :


ajout_colonne:

ajout_colonne
         ::= 'ADD' 'COLUMN'? definition_colonne

référenciée par :


retouche_colonne:

retouche_colonne
         ::= 'ALTER' 'COLUMN'? nom_colonne action_retouche_colonne

référenciée par :


action_retouche_colonne:

action_retouche_colonne
         ::= fixation_valeur_par_defaut_colonne
           | suppression_valeur_par_defaut_colonne

référenciée par :


fixation_valeur_par_defaut_colonne:

fixation_valeur_par_defaut_colonne
         ::= 'SET' valeur_par_defaut

référenciée par :


suppression_valeur_par_defaut_colonne:

suppression_valeur_par_defaut_colonne
         ::= 'DROP DEFAULT'

référenciée par :


suppression_colonne:

suppression_colonne
         ::= 'DROP' 'COLUMN'? nom_colonne mode_suppression

référenciée par :


ajout_contrainte_table:

ajout_contrainte_table
         ::= 'ADD' definition_contrainte_table

référenciée par :


suppression_contrainte_table:

suppression_contrainte_table
         ::= 'DROP CONSTRAINT' nom_contrainte mode_suppression

référenciée par :


instruction_suppression_table:

instruction_suppression_table
         ::= 'DROP TABLE' nom_table mode_suppression

référenciée par :


instruction_suppression_vue:

instruction_suppression_vue
         ::= 'DROP VIEW' nom_table mode_suppression

référenciée par :


instruction_annulation_privileges:

instruction_annulation_privileges
         ::= 'REVOKE' 'GRANT OPTION FOR'? privileges 'ON' nom_element 'FROM' attributaire ( ',' attributaire )+? mode_suppression

référenciée par :


instruction_modification_domaine:

instruction_modification_domaine
         ::= 'ALTER DOMAIN' nom_domaine modification_domaine

référenciée par :


modification_domaine:

modification_domaine
         ::= fixation_valeur_par_defaut_domaine
           | suppression_valeur_par_defaut_domaine
           | ajout_contrainte_domaine
           | suppression_contrainte_domaine

référenciée par :


fixation_valeur_par_defaut_domaine:

fixation_valeur_par_defaut_domaine
         ::= 'SET' valeur_par_defaut

référenciée par :


suppression_valeur_par_defaut_domaine:

suppression_valeur_par_defaut_domaine
         ::= 'DROP DEFAULT'

référenciée par :


ajout_contrainte_domaine:

ajout_contrainte_domaine
         ::= 'ADD' contrainte_domaine

référenciée par :


suppression_contrainte_domaine:

suppression_contrainte_domaine
         ::= 'DROP CONSTRAINT' nom_contrainte

référenciée par :


instruction_suppression_domaine:

instruction_suppression_domaine
         ::= 'DROP DOMAIN' nom_domaine mode_suppression

référenciée par :


instruction_suppression_alphabet:

instruction_suppression_alphabet
         ::= 'DROP CHARACTER SET' nom_alphabet

référenciée par :


instruction_suppression_interclassement:

instruction_suppression_interclassement
         ::= 'DROP COLLATION' nom_interclassement

référenciée par :


instruction_suppression_conversion:

instruction_suppression_conversion
         ::= 'DROP TRANSLATION' nom_conversion

référenciée par :


instruction_suppression_assertion:

instruction_suppression_assertion
         ::= 'DROP ASSERTION' nom_contrainte

référenciée par :


instruction_directe_sql:

instruction_directe_sql
         ::= instruction_directe_donnee_sql
           | instruction_schema_sql
           | instruction_transaction_sql

sans réferences


instruction_directe_donnee_sql:

instruction_directe_donnee_sql
         ::= instruction_suppression_donnee
           | instruction_interrogation_directe_a_lignes_multiples
           | instruction_ajout_donnee
           | instruction_mise_a_jour_donnee

référenciée par :


instruction_donnee_sql:

instruction_donnee_sql
         ::= instruction_ouverture_curseur
           | instruction_lecture_curseur
           | instruction_fermeture_curseur
           | instruction_recherche_ligne_unique
           | instruction_modification_donnee_sql

référenciée par :


instruction_modification_donnee_sql:

instruction_modification_donnee_sql
         ::= instruction_suppression_donnee
           | instruction_ajout_donnee
           | instruction_mise_a_jour_donnee
           | instruction_mise_a_jour_selon_curseur
           | instruction_suppression_selon_curseur

référenciée par :


instruction_recherche_ligne_unique:

instruction_recherche_ligne_unique
         ::= 'SELECT' distinction_valeurs? specification_resultats_recherche 'INTO' liste_destination_lecture table_expression

référenciée par :


instruction_interrogation_directe_a_lignes_multiples:

instruction_interrogation_directe_a_lignes_multiples
         ::= expression_recherche clause_tri?

référenciée par :


clause_tri:

clause_tri
         ::= 'ORDER BY' liste_criteres_tri

référenciée par :


liste_criteres_tri:

liste_criteres_tri
         ::= critere_tri ( ',' critere_tri )*

référenciée par :


critere_tri:

critere_tri
         ::= resultat_recherche indication_interclassement? type_classement?

référenciée par :


resultat_recherche:

resultat_recherche
         ::= nom_colonne
           | entier_sans_signe

référenciée par :


type_classement:

type_classement
         ::= 'ASC'
           | 'DESC'

référenciée par :


instruction_suppression_donnee:

instruction_suppression_donnee
         ::= 'DELETE FROM' nom_table ( 'WHERE' condition_recherche )?

référenciée par :


instruction_ajout_donnee:

instruction_ajout_donnee
         ::= 'INSERT INTO' nom_table donnees_insertion

référenciée par :


donnees_insertion:

donnees_insertion
         ::= ( '(' liste_nom_colonnes ')' )? expression_recherche
           | 'DEFAULT VALUES'

référenciée par :


instruction_mise_a_jour_donnee:

instruction_mise_a_jour_donnee
         ::= 'UPDATE' nom_table 'SET' liste_mises_a_jour ( 'WHERE' condition_recherche )?

référenciée par :


liste_mises_a_jour:

liste_mises_a_jour
         ::= mise_a_jour_colonne ( ',' mise_a_jour_colonne )*

référenciée par :


mise_a_jour_colonne:

mise_a_jour_colonne
         ::= nom_colonne '=' element_valeur_ligne

référenciée par :


instruction_ouverture_curseur:

instruction_ouverture_curseur
         ::= 'OPEN' nom_curseur

référenciée par :


instruction_lecture_curseur:

instruction_lecture_curseur
         ::= 'FETCH' ( sens_lecture? 'FROM' )? nom_curseur 'INTO' liste_destination_lecture

référenciée par :


sens_lecture:

sens_lecture
         ::= 'NEXT'
           | 'PRIOR'
           | 'FIRST'
           | 'LAST'
           | ( 'ABSOLUTE' | 'RELATIVE' ) indication_valeur_simple

référenciée par :


indication_valeur_simple:

indication_valeur_simple
         ::= nom_parametre
           | variable_introduite
           | valeur

référenciée par :


liste_destination_lecture:

liste_destination_lecture
         ::= destination_lecture ( ',' destination_lecture )+?

référenciée par :


destination_lecture:

destination_lecture
         ::= specification_parametre
           | specification_variable

référenciée par :


instruction_fermeture_curseur:

instruction_fermeture_curseur
         ::= 'CLOSE' nom_curseur

référenciée par :


instruction_suppression_selon_curseur:

instruction_suppression_selon_curseur
         ::= 'DELETE FROM' nom_table 'WHERE CURRENT OF' nom_curseur

référenciée par :


instruction_mise_a_jour_selon_curseur:

instruction_mise_a_jour_selon_curseur
         ::= 'UPDATE' nom_table 'SET' liste_mises_a_jour 'WHERE CURRENT OF' nom_curseur

référenciée par :


instruction_transaction_sql:

instruction_transaction_sql
         ::= set_transaction_statement
           | set_constraints_mode_statement
           | commit_statement
           | rollback_statement

référenciée par :


set_transaction_statement:

set_transaction_statement
         ::= 'SET TRANSACTION' transaction_mode ( ',' transaction_mode )*

référenciée par :


transaction_mode:

transaction_mode
         ::= isolation_level
           | transaction_access_mode
           | diagnostics_size

référenciée par :


isolation_level:

isolation_level
         ::= 'ISOLATION LEVEL' level_of_isolation

référenciée par :


level_of_isolation:

level_of_isolation
         ::= 'READ UNCOMMITTED'
           | 'READ COMMITTED'
           | 'REPEATABLE READ'
           | 'SERIALIZABLE'

référenciée par :


transaction_access_mode:

transaction_access_mode
         ::= 'READ ONLY'
           | 'READ WRITE'

référenciée par :


diagnostics_size:

diagnostics_size
         ::= 'DIAGNOSTICS SIZE' number_of_conditions

référenciée par :


number_of_conditions:

number_of_conditions
         ::= indication_valeur_simple

référenciée par :


set_constraints_mode_statement:

set_constraints_mode_statement
         ::= 'SET CONSTRAINTS' constraint_name_list ( 'DEFERRED' | 'IMMEDIATE' )

référenciée par :


constraint_name_list:

constraint_name_list
         ::= 'ALL'
           | constraint_name ( ',' constraint_name )*

référenciée par :


commit_statement:

commit_statement
         ::= 'COMMIT' 'WORK'?

référenciée par :


rollback_statement:

rollback_statement
         ::= 'ROLLBACK' 'WORK'?

référenciée par :


instruction_procedure_sql:

instruction_procedure_sql
         ::= instruction_schema_sql
           | instruction_donnee_sql
           | instruction_transaction_sql

sans réferences



  Michel Cartereau - 29 X 2013 - Page produite avec Railroad Diagram Generator