Relational Expressions

     <relation exp>
         ::=   <with exp> | <nonwith exp>

     <with exp>
         ::=   WITH ( <name intro commalist> ) : <relation exp>

     <name intro>
         ::=   <relvar name> := <relation exp>

     <nonwith exp>
         ::=   <image exp> | <relation op> | ( <relation op> )
     <image exp>
         ::=   !!<nonwith exp> | ( <image exp> )

     <relation op>
         ::=   <relation selector> | <monadic op> | <dyadic op> | <n-adic op>

     <relation selector>
         ::=   RELATION [ <heading> ] { <tuple exp commalist> }
             | TABLE_DUM | TABLE_DEE

     <heading>
         ::=   { <attribute commalist> }

     <attribute>
         ::=   <attribute name> <type name>

     <monadic op>
         ::=   <relvar name> | <rename> | <where> | <project>
             | <extend> | <group> | <ungroup> | <tclose>

     <rename>
         ::=   <relation exp> RENAME { <renaming commalist> }

     <renaming>
         ::=   <attribute name> AS <attribute name>

     <where>
         ::=   <relation exp> WHERE <bool exp>

     <project>
         ::=   <relation exp> { [ ALL BUT ] <attribute name commalist> }

     <extend>
         ::=   EXTEND <relation exp> : { <attribute assign commalist> }

     <attribute assign>
         ::=   <attribute name> := <exp>

Note: An alternative form of <attribute assign>, syntactically identical to a <relation assign> except that the pertinent <attribute name> appears in place of the target <relvar name> in that <relation assign>, is also supported if the attribute in question is relation valued.

     <group>
         ::=   <relation exp> GROUP
                        ( { [ ALL BUT ] <attribute name commalist> }
                                                     AS <attribute name> )

     <ungroup>
         ::=    <relation exp> UNGROUP ( <attribute name> )

     <tclose>
         ::=    TCLOSE ( <relation exp> )

     <dyadic op>
         ::=   <relation exp> <dyadic op name> <relation exp>

     <dyadic op name>
         ::=   UNION | D_UNION | XUNION | INTERSECT | MINUS | I_MINUS
             | JOIN | TIMES | MATCHING | NOT MATCHING

     <n-adic op>
         ::=   <n-adic op name> [ <heading> ] { <relation exp commalist> }

     <n-adic op name>
         ::=   UNION | D_UNION | XUNION | INTERSECT | JOIN | TIMES

     <relation comp>
         ::=   <relation exp> <relation comp op> <relation exp>

     <relation comp op>
         ::=   = | ≠ | ⊆ | ⊂ | ⊇ | ⊃

Assignments

     <relation assignment>
         ::=   [ WITH ( <name intro commalist> ) : ]
                              <relation assign commalist> ;
     <relation assign>
         ::=   <relvar name> := <relation exp>
             | <insert> | <d_insert>| <delete> | <i_delete>| <update>

     <insert>
         ::=   INSERT <relvar name> <relation exp>

     <d_insert>
         ::=   D_INSERT <relvar name> <relation exp>

     <delete>
         ::=   DELETE <relvar name> <relation exp>
             | DELETE <relvar name> [ WHERE <bool exp> ]

     <i_delete>
         ::=   I_DELETE <relvar name> <relation exp>

     <update>
         ::=   UPDATE <relvar name> [ WHERE <bool exp> ] :
                                    { <attribute assign commalist> }
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.16.50.60