La notation BNF (Backus-Naur Form) est très répandue dans la description des éléments d'un langage ou d'une technologie.

La syntaxe des expressions utilisant la notation BNF, comprend un symbolisme particulier, mettant en exergue les particularités syntaxiques d'un mot-clé d'un langage de programmation.

SymbôleDescription
::=met en relation son opérande de gauche avec une description de sa syntaxe.
" "indique que la chaîne de caractères entre les guillemets doubles, ne sont pas interprétés grammaticalement.
[ ]signifie que tous les éléments entre les crochets, sont optionnels.
|indique une opération logique OU entre les opérandes de droite et de gauche.
{ }signifie que les éléments entre les accolades sont susceptibles d'apparaître de une à plusieurs fois.
( )modifie la priorité des éléments au sein des parenthèses.
...indique que l'expression précédente peut se répéter plusieurs fois..
Exemples
CREATE TABLE [schema.]table 
column_list [column_list ]...  
[AS subquery] ;

column_list::= 
"("
  column datatype [DEFAULT expr]
[column_constraint] [column_constraint]...
   [table_constraint] 
     [, column datatype [DEFAULT expr]
[column_constraint] [column_constraint]...
     [table_constraint]]...
")"

CREATE [OR REPLACE] TRIGGER [schema.] trigger 
{ BEFORE | AFTER }
{ DELETE | INSERT | UPDATE [OF column [, column]...] } 
[OR { DELETE | INSERT | UPDATE [OF col_list [, col_list]...] }]... 
ON { [schema .] table
FOR EACH ROW proc_name ["("arg_list")"] ["("arg_list")"]...  
;