AgileApps Support Wiki Pre Release

Difference between revisions of "SQL Syntax"

From AgileApps Support Wiki
imported>Aeric
imported>Aeric
Line 13: Line 13:
::[ DISTINCT ]
::[ DISTINCT ]
::[(]  [[#column_expr|column_expr]] [ , [[#column_expr|column_expr]] ... ]  [)]
::[(]  [[#column_expr|column_expr]] [ , [[#column_expr|column_expr]] ... ]  [)]
::FROM [[#table_reference|table_reference]]
::FROM [[#table_references|table_references]]
:::[ WHERE [[#where_condition|where_condition]] ]
:::[ WHERE [[#where_clause|where_clause]] ]
:::[ GROUP BY ''column_name'' [ASC | DESC]  [ , ''column_name'' [ASC | DESC] ... ]
:::[ GROUP BY ''col_name'' [ASC | DESC]  [ , ''col_name'' [ASC | DESC] ... ]
::::[WITH ROLLUP]
::::[WITH ROLLUP]
::::[HAVING [[#where_condition|where_condition]]]
::::[HAVING [[#where_condition|where_condition]]]
:::]
:::]
:::[ ORDER BY ''column_name'' [ASC | DESC]  [ , ''column_name'' [ASC | DESC] ... ]
:::[ ORDER BY ''col_name'' [ASC | DESC]  [ , ''col_name'' [ASC | DESC] ... ]
:::[ LIMIT {''maximum_rows'' | ''offset, maximum_rows''} ]  
:::[ LIMIT {''maximum_rows'' | ''offset, maximum_rows''} ]  
</div>
</div>
{{TBD|
 
:* No expr or position in our GROUP BY. Column_name only.
:* No expr or position in our ORDER BY. Column_name only.
}}
where:
where:
:;DISTINCT:Eliminates duplicate rows from the result set.
:;DISTINCT:Eliminates duplicate rows from the result set.
Line 42: Line 39:
===column_expr===
===column_expr===
<div style="font-family:monospace; font-size:larger">
<div style="font-family:monospace; font-size:larger">
: * &nbsp;|&nbsp; ''table_alias''.* &nbsp;|&nbsp; ''column_name'' [ [AS] ''column_alias'' ] &nbsp;|&nbsp; [[#expr|expr]] [AS] ''column_alias''  
: * &nbsp;|&nbsp; ''table_alias''.* &nbsp;|&nbsp; ''col_name'' [ [AS] ''col_alias'' ] &nbsp;|&nbsp; [[#expr|expr]] [AS] ''col_alias''  
</div>
</div>
where:
where:
:;''column_alias'':  
:;''col_alias'':  
:: Used for the column name in the result set in the [[SQL Browser]], or for the tag name in the REST [[REST API:execSQL Resource|execSQL]] resource.
:: Used for the column name in the result set in the [[SQL Browser]], or for the tag name in the REST [[REST API:execSQL Resource|execSQL]] resource.
:: Required when an expression is specified.  
:: Required when an expression is specified.  
Line 53: Line 50:
:::: <tt>FROM Customer_Contacts ORDER BY full_name;</tt>
:::: <tt>FROM Customer_Contacts ORDER BY full_name;</tt>


===table_reference===
===table_references===
<div style="font-family:monospace; font-size:larger">
<div style="font-family:monospace; font-size:larger">
:...
:...
Line 60: Line 57:
:;xxx:...
:;xxx:...


===where_condition===
===where_clause===
An [[#expr|expression]] that evaluates to true or false for a row. When true, the row is selected.
An [[#expr|expression]] that evaluates to true or false for a row. When true, the row is selected.
The expression has the form:
The expression has the form:

Revision as of 18:43, 17 November 2011

Here is the syntax for the SQL SELECT statement that the SQL parser recognizes.

Considerations
  • SQL syntax is case insensitive.
  • Field and table names are case sensitive
Legend
  • [ x ] - Optional (one or none)
  • [, x ... ] - Optional additional values, in a comma-separated list
  • x | y - Choose one. Curly braces are added when needed: { x | y } ...
  • CAPITALIZED - SQL Keyword (case insensitive)
  • italicized - Value you supply. (Table names and column names are case-sensitive)

SELECT Statement

In a select statement, you designate one more columns separated by commas (or "*" for all columns), plus a table or join to get the data from, and additional options:

SELECT
[ DISTINCT ]
[(]  column_expr [ , column_expr ... ]  [)]
FROM table_references
[ WHERE where_clause ]
[ GROUP BY col_name [ASC | DESC]  [ , col_name [ASC | DESC] ... ]
[WITH ROLLUP]
[HAVING where_condition]
]
[ ORDER BY col_name [ASC | DESC]  [ , col_name [ASC | DESC] ... ]
[ LIMIT {maximum_rows | offset, maximum_rows} ]

where:

DISTINCT
Eliminates duplicate rows from the result set.
For example: DISTINCT(customer_name, address)
(Parentheses are optional, but must be matched if present.)
HAVING
Is only allowed as part of GROUP BY, for performance reasons. (WHERE is vastly more efficient.)
ASC
Ascending (the default).
DESC
Descending.
maximum_rows
Maximum number of rows to return.
offset
The row to start from. Offset for the first row is zero (0).

Learn more:: MySQL Select Statement syntax

column_expr

*  |  table_alias.*  |  col_name [ [AS] col_alias ]  |  expr [AS] col_alias

where:

col_alias
Used for the column name in the result set in the SQL Browser, or for the tag name in the REST execSQL resource.
Required when an expression is specified.
Can be used as a field name in a group_by_clause or order_by_clause.
For example:
SELECT CONCAT(last_name,', ',first_name) AS full_name
FROM Customer_Contacts ORDER BY full_name;

table_references

...

where:

xxx
...

where_clause

An expression that evaluates to true or false for a row. When true, the row is selected. The expression has the form:

...

where:

xxx
...

expr

  SQL Function
| 'string literal'
| ( expr }
| [+|-] expr
Our expression / MySQL simpleExpression:
| expr + expr
| expr - expr
| expr * expr
| expr / expr
MySQL expression:
| expr OR expr
| expr AND expr
Our BNF:
| expr IS [NOT] NULL
| expr =