📄 sql语法.c
字号:
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 + -