⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sql语法.c

📁 语言的语法,格式严紧,对于处理yacc,lex有帮助!
💻 C
📖 第 1 页 / 共 4 页
字号:
X        ; 

X 

X/* 

XQuery Langauge 

X*/ 

X 

Xselect: 

X        select_expr order_clause into_clause 

X        ; 

X 

Xselect_expr: 

X          select_statement 

X        | select_expr UNION any select_statement 

X        | select_expr MINUS select_statement 

X        | select_expr DIVIDEBY select_statement 

X        | select_expr INTERSECT select_statement 

X        | '(' select_expr ')' 

X        ; 

X 

Xorder_clause: 

X        | ORDER BY norder_list 

X        ; 

X 

Xinto_clause: 

X        | INTO filename 

X        ; 

X 

Xselect_statement: 

X        { puttok(T_TLEND); } 

X          select_clause 

X                FROM from_item_list 

X                select_options 

X        { puttok(T_QLEND); } 

X        ; 

X 

Xorder_list: 

X          path orderdir %prec PORDER 

X        | order_list ',' path orderdir 

X        ; 

X 

Xnorder_list: 

X/* 

X          INTEGER orderdir %prec PORDER 

X*/ 

X          expr orderdir %prec PORDER 

X/* 

X        | path orderdir %prec PORDER 

X*/ 

X        | norder_list ',' norder_list 

X        ; 

X 

Xselect_clause: 

X          SELECT unique sellist 

X        | SELECT unique '*' 

X        ; 

X 

Xfrom_item_list: 

X          from_item 

X        | from_item_list ',' from_item_list 

X        ; 

X 

Xfrom_item: 

X          rec_alias 

X        | OUTER rec_alias 

X        | OUTER '(' from_item_list ')' 

X        ; 

X 

Xselect_options: 

X        | WHERE predicate /* Set where flag */ 

X        | WHERE predicate group_clause 

X        | group_clause 

X        ; 

X 

Xgroup_clause: 

X          GROUP BY path_list 

X        | GROUP BY path_list HAVING predicate /* Set having flag */ 

X        ; 

X 

Xunique: 

X        | ALL 

X        | DISTINCT 

X        | UNIQUE 

X        ; 

X 

Xsellist: 

X          selelement {puttok(T_RESDOM);} 

X        | sellist ',' selelement {puttok(T_RESDOM);} 

X        ; 

X 

Xselelement: 

X          record ALLFIELDS 

X        | expr 

X        | expr STRING 

X        ; 

X 

Xpredicate: 

X          condition 

X        | condition AND predicate 

X        | condition OR predicate 

X        | NOT predicate %prec PNOT 

X        | '(' predicate ')' 

X        | IF predicate THEN predicate else_pred 

X        ; 

X 

Xelse_pred: 

X        |ELSE predicate 

X        ; 

X 

Xcondition: 

X           expr 

X        |  expr not IN in_sel_expr /* singler flag */ 

X        | '[' path_list ']'  not IN in_sel_expr 

X        |  expr IS not NULLN 

X        |  expr IS not DEFAULT 

X        |  expr not BETWEEN expr AND expr 

X        |  expr not LIKE const  /* Like flag */ 

X        | EXISTS '(' select_statement ')' 

X        ; 

X 

Xnot: 

X        |NOT 

X        ; 

X 

Xany: 

X        |ALL 

X        |ANY 

X        ; 

X 

Xin_sel_expr: 

X          '(' select_statement ')' 

X        | const_recs 

X        ; 

X 

Xcond_sel_expr: 

X          expr 

X        | '(' select_statement ')' 

X   {if (sqy_flag) yyerror ("Illegal subquery"); else sqy_flag = 1;} 

X        ; 

X 

Xconst_recs: 

X          '(' const_list ')' 

X        | '[' const_rec_list ']' 

X        ; 

X 

Xconst_rec_list: 

X          '(' const_list ')' 

X        | const_rec_list ',' '(' const_list ')' 

X        ; 

X 

Xpath_list: 

X          path 

X        | path_list ',' path 

X        ; 

X 

Xfield_list: 

X          field 

X        | field_list ',' field 

X        ; 

X/* 

Xpath is a field or record path. 

Xnode.database.record  -- for records 

Xnode.database.record.field  -- for fields 

X*/ 

Xpath: 

X        path_e_list {puttok(T_VAR);putvar(path_name);*path_name='\0';} 

X        | path_e_list '[' element_name ']' 

X        ; 

X 

Xpath_e_list: 

X        path_element 

X        | path_element  {strcat(path_name,".");} '.' path_e_list 

X        ; 

X 

Xelement_name:/* element_name flag */ 

X         norder_list 

X        ; 

X 

Xorderdir: 

X        | DESC 

X        | ASC 

X        ; 

X 

Xconst_list: 

X          const 

X        | const_list ',' const 

X        ; 

X 

Xexpr: 

X          expr '`' s_control    /* Semantic control */ 

X        | '-' expr %prec UMINUS {puttok(T_NEG);}/* negate */ 

X        | expr '+' expr {puttok(T_ADD);}/* add */ 

X        | expr '-' expr {puttok(T_SUB);}/* subtract */ 

X        | expr '*' expr {puttok(T_MUL);}/* multiply */ 

X        | expr '/' expr {puttok(T_DIV);}/* divide */ 

X        | expr '%' expr {puttok(T_MOD);}/* modulus */ 

X        | expr PWR expr {puttok(T_ADD);}/* power */ 

X        | expr '?' else_part 

X        | '~' expr      /* ones compliment */ 

X        | expr RIGHTSHIFT expr /* bit shift right */ 

X        | expr LEFTSHIFT expr /* bit shift left */ 

X        | expr '^' expr /* exclusive or */ 

X        | expr '|' expr /* or */ 

X        | expr '&' expr /* and */ 

X        | expr E_OR expr        /* or */ 

X        | expr E_AND expr       /* and */ 

X        | expr NLT cond_sel_expr {puttok(T_NLT);} 

X        | expr NGT cond_sel_expr {puttok(T_NGT);} 

X        | expr LT any cond_sel_expr {puttok(T_LT);} 

X        | expr GT any cond_sel_expr {puttok(T_GT);} 

X        | expr EQ any cond_sel_expr {puttok(T_EQ);} 

X        | expr GE cond_sel_expr {puttok(T_GE);} 

X        | expr LE cond_sel_expr {puttok(T_LE);} 

X        | expr NE any cond_sel_expr {puttok(T_NE);} 

X        | '(' expr ')'  /* parenthesis */ 

X        | const 

X        | path 

X        | function 

X        ; 

X 

Xelse_part: 

X        expr ':' expr %prec TCOL 

X        ; 

X 

Xconst: 

X          INTEGER {puttok(T_INT4); putint(yytext);} 

X        | REAL {puttok(T_FLT8); putreal(yytext);} 

X        | STRING {puttok(T_CHAR); putstr(yytext);} 

X        | DEFAULT 

X        | NULLN 

X        | PARM 

X        ; 

X 

Xfunction: 

X          fname '(' '*' ')' 

X        | fname '(' expr_list ')' 

X        | fname '(' UNIQUE path ')' 

X        ; 

X 

Xexpr_list: 

X          expr 

X        | expr_list ',' expr 

X        ; 

X 

X/* 

XData Definition Language 

X*/ 

Xcreate: 

X          CREATE cluster TABLE path tfd_list with_clause 

X        | CREATE VIEW view_name vfd AS select_statement with_clause 

X        | CREATE FRAGMENT view_name vfd AS select_statement with_clause 

X        | CREATE SNAPSHOT view_name vfd AS select_statement with_clause 

X        | CREATE SYNONYM syn_name FOR path 

X        | CREATE unique cluster INDEX index_name 

X                ON path '(' order_list ')' with_clause 

X        | CREATE DATABASE dbname TYPE dbtype ON hname with_clause 

X        | CREATE DOMAIN domain_name_list IS domain_types 

X                defaults domain_restrict 

X        | CREATE TYPE type_name IS 

X        | CREATE CONSTRAINT constr_name trigger_list CHECK predicate 

else_clause 

X        ; 

X 

Xalter: 

X          ALTER TABLE path alter_list with_clause 

X        | ALTER TABLE path path with_clause 

X        ; 

X 

Xdrop: 

X          DROP INDEX index_name 

X        | DROP object_type path 

X        ; 

X 

Xcomment: 

X          COMMENT ON path 

X        | COMMENT ON path IS comment_str 

X        ; 

X 

Xinfo: 

X          INFO 

X        ; 

X 

Xcomment_str: 

X          STRING 

X        | STRING ',' STRING 

X        ; 

X 

Xtrigger_list: 

X        trigger 

X        | trigger_list ',' trigger 

X        ; 

X 

Xtrigger: 

X          AT event 

X        | AFTER event OF path FROM path 

X        | BEFORE event OF path FROM path 

X        ; 

X 

Xevent: 

X          COMMIT 

X        | DELETE 

X        | INSERT 

X        | UPDATE 

X        ; 

X 

Xelse_clause: 

X        | ELSE statement 

X        ; 

X 

Xindex_name:     path; 

X 

Xcluster: 

X        | IDENTIFIER 

X        /* 

X        |CLUSTERED |NONCLUSTERED 

X        */ 

X        ; 

X 

Xview_name: 

X          record 

X        | user '.' record 

X        ; 

X 

Xwith_clause: 

X        |WITH option_list 

X        ; 

X 

Xoption_list: 

X          option 

X        | option ',' option_list 

X        ; 

X 

Xoption: 

X        IDENTIFIER 

X        | IDENTIFIER IDENTIFIER 

X        | IDENTIFIER EQ const 

X/* 

Xreconfigure| check option |logfile = "file_name" 

X*/ 

X        ; 

X 

Xtfd_list: 

X          primary_key 

X          foreign_keys 

X          field_dis 

X        ; 

X 

Xfield_dis: 

X          '(' tfd_fields ')' 

X        ; 

X 

Xprimary_key: 

X        | PRIMARY '(' primary_keys ')' 

X        ; 

X 

Xprimary_keys: 

X          field 

X        | primary_keys ',' field 

X        ; 

X 

Xforeign_keys: 

X        | foreign_keys foreign_key 

X        ; 

X 

Xforeign_key: 

X          FOREIGN '(' f_key IDENTIFIES path 

X                  nulls 

X                  DELETE OF path effect 

X                  UPDATE OF path effect')' 

X        ; 

X 

X/* 

Xf_keys: 

X          f_key 

X        | f_keys ',' f_key 

X        ; 

X*/ 

X 

Xnulls: 

X          NULLS ALLOWED 

X        | NULLS NOT ALLOWED 

X        ; 

X 

Xtfd_fields: 

X          tfd 

X        | tfd_fields ',' tfd 

X        ; 

X 

Xtfd: 

X          field o_domain_name 

X        | field '(' field_list ')' o_domain_name 

X        ; 

X 

Xo_domain_name: 

X        |domain_name 

X        ; 

X 

Xtype_name: 

X        IDENTIFIER 

X        /* 

XBase types: 

X        boolean(bit)| 

X        char|short_integer|long_integer| 

X        byte|short_word|long_word| 

X        float|double|extended|bcd|bcdflt 

Xpredefine extentions: 

X        char|byte[1-2,000,000,000] 

X        [short|long]_[integer|word][1-2,000,000,000] 

X        float|double|extended[1-2,000,000,000] 

X        bcd|bcdflt[1-2,000,000,000] 

X        date_[] 

X        money 

X        time_[m,ap,sm,sap,micro] 

X        */ 

X        ; 

X 

Xdomain_name_list: 

X        domain_name 

X        | domain_name_list ',' domain_name 

X        ; 

X 

Xdomain_types: 

X        domain_type 

X        | '(' domain_type_list ')' 

X        ; 

X 

Xdefaults: 

X        | DEFAULT 

X        ; 

X 

Xdomain_restrict: 

X          where_clause 

X        | select_statement 

X        ; 

X 

Xdomain_type_list: 

X        | domain_type_list ',' domain_type 

X        ; 

X 

Xdomain_type: 

X          type_name 

X        | type_name '(' i_list ')' 

X        ; 

X 

Xi_list: 

X        INTEGER 

X        | i_list ',' INTEGER 

X        ; 

X 

Xvfd: 

X        | '(' vfd_list ')' 

X        ; 

X 

Xvfd_list: 

X          field 

X        | vfd_list ',' field 

X        ; 

X 

Xalter_list: 

X        alteration 

X        | alter_list ',' alteration 

X        ; 

X 

Xalteration: 

X          ADD '(' a_tfd_fields ')' 

X        | DROP vfd 

X        | MODIFY '(' m_tfd_fields ')' 

X        ; 

X 

Xa_tfd_fields: 

X          tfd before 

X        | a_tfd_fields ',' tfd before 

X        ; 

X 

Xm_tfd_fields: 

X          field tfd 

X        | m_tfd_fields ',' field tfd 

X        ; 

X 

Xbefore: 

X        | BEFORE field 

X        ; 

X 

Xeffect: 

X        IDENTIFIER 

X/* 

X        CASCADES | RESTRICTED | NULLIFIES 

X*/ 

X        ; 

X/* 

X*/ 

Xobject_type: 

X        DATABASE| DOMAIN| PROGRAM| SYNONYM| TYPE| TABLE| VIEW 

X        ; 

X/* 

XSecurity 

X*/ 

X 

Xgrant: 

X          GRANT privileges gr_on TO users at_option between_option 

X                on_option where_option wgo 

X        ; 

X 

Xat_option: 

X        |AT terminal_list 

X        ; 

X 

Xbetween_option: 

X        |BETWEEN time1 AND time2 

X        ; 

X 

Xon_option: 

X        |ON day1 AND day2 

X        ; 

X 

Xwhere_option: 

X        |WHERE predicate 

X        ; 

X 

Xwgo: 

X        | WITH GRANT OPTION 

X        ; 

X 

Xterminal_list: 

X          tty 

X        | tty ',' terminal_list 

X        ; 

X 

Xrevoke: 

X        REVOKE privileges gr_on FROM users 

X        ; 

X 

Xprivileges: 

X        | privileg 

X        | privileges ',' privileg 

X        ; 

X 

Xprivileg: 

X          priv_name 

X        | priv_name '(' field_list ')' 

X        ; 

X 

Xgr_on: 

X        | ON object_type objects 

X        ; 

X 

Xusers: 

X        user 

X        | users ',' user 

X        ; 

X 

Xobjects: 

X          IDENTIFIER 

X        | objects ',' IDENTIFIER 

X        ; 

X 

X/* 

XTransaction Management 

X*/ 

X 

Xlock: 

X          LOCK TABLE path IN mode MODE 

X        ; 

X 

Xbegin: 

X          BBEGIN work 

X        ; 

X 

Xcommit: 

X          COMMIT work 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -