sql-parser-0.1.0.0: Simple SQL Parser

CopyrightJean Carlo Giambastiani Lopes 2017
LicenseMIT
Stabilityexperimental
Safe HaskellSafe
LanguageHaskell2010

Language.Sql.AST

Description

A SQL parser implementation of the minimum required for a ODBC driver.

EBNF:

character = ? any character ?;

letter = lower-case-letter | upper-case-letter;

lower-case-letter = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' 
                  | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' 
                  | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' ;

upper-case-letter = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' 
                  | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T'
                  | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z' ;

digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' ;

Synopsis

Documentation

data DataType Source #

EBNF:

data-type = 'char', '(', unsigned-integer, ')'
          | 'varchar', '(', unsigned-integer, ')'
          ;    

data Not Source #

EBNF:

not = 'not';

Constructors

Not 

data Drop Source #

EBNF:

drop-table-statement = 'DROP', 'TABLE', base-table-name;

Constructors

Drop BaseTableName 

data Select Source #

EBNF:

select-statement = 'SELECT', [ distinct ], select-list,
                   'FROM' table-reference-list,
                   ['WHERE' search-condition],
                   [order-by-clause];

data Delete Source #

EBNF:

delete-statement-searched = 'DELETE', 'FROM', table-name
                          , [ 'WHERE', search-condition ];

type ColumnIdList = NonEmpty ColumnIdentifier Source #

Type alias for: EBNF:

column-identifier, { ',', column-identifier }

type InsertValueList = NonEmpty InsertValue Source #

Type alias for: EBNF:

insert-value, { ',', insert-value }

data Insert Source #

EBNF:

insert-statement = 'INSERT', 'INTO', table-name
                 , [ '(', column-identifier, { ',', column-identifier } , ')' ],
                 , 'VALUES', '(', insert-value, { ',', insert-value } ')'

type UpdateColumnList = NonEmpty UpdateColumn Source #

EBNF:

update-column-list = update-column, { ',', update-column };

data Update Source #

EBNF:

update-statement-searched = 'UPDATE', table-name
                          , 'SET', update-column-list
                          , [ 'WHERE', search-condition ]
                          ;

data Statement Source #

EBNF:

statement = create-table-statement
          | delete-statement-searched
          | drop-table-statement
          | insert-statement
          | select-statement
          | update-statement-searched
          ;