Added INSERT with example
[dbsrgits/SQL-Abstract-2.0-ish.git] / lib / SQL / Abstract / Manual / Examples.pod
index b330757..1080cc1 100644 (file)
@@ -111,6 +111,361 @@ one. The SQL used is from the MySQL dialect.
       },
   }
 
+=item SELECT * FROM foo WHERE name = 'John'
+
+  {
+      type => 'select',
+      ast_version => 0.0001,
+      select => [
+          {
+              type  => 'SelectComponent',
+              value => {
+                  type     => 'Identifier',
+                  element1 => '*',
+              },
+          },
+      ],
+      tables => {
+          type => 'TableIdentifier',
+          value => {
+              type => 'Identifier',
+              element1 => 'foo',
+          },
+      },
+      where => {
+          type => 'Operator',
+          op   => '=',
+          args => [
+              {
+                  type     => 'Identifier',
+                  element1 => 'name',
+              },
+              {
+                  type     => 'Value',
+                  subtype  => 'String',
+                  element1 => 'John',
+              },
+          ],
+      },
+  }
+
+=item SELECT COUNT(*) FROM foo WHERE name = 'John' AND ( title = 'Mr' OR abbrev = 'Dr' )
+
+  {
+      type => 'select',
+      ast_version => 0.0001,
+      select => [
+          {
+              type  => 'SelectComponent',
+              value => {
+                  type => 'Operator',
+                  op   => 'COUNT',
+                  args => [
+                      {
+                          type     => 'Identifier',
+                          element1 => '*',
+                      },
+                  ],
+              },
+          },
+      ],
+      tables => {
+          type => 'TableIdentifier',
+          value => {
+              type => 'Identifier',
+              element1 => 'foo',
+          },
+      },
+      where => {
+          type => 'Operator',
+          op   => 'AND',
+          args => [
+              {
+                  type => 'Operator',
+                  op   => '=',
+                  args => [
+                      {
+                          type     => 'Identifier',
+                          element1 => 'name',
+                      },
+                      {
+                          type     => 'Value',
+                          subtype  => 'String',
+                          element1 => 'John',
+                      },
+                  ],
+              },
+              {
+                  type => 'Operator',
+                  op   => 'OR',
+                  args => [
+                      {
+                          type => 'Operator',
+                          op   => '=',
+                          args => [
+                              {
+                                  type     => 'Identifier',
+                                  element1 => 'title',
+                              },
+                              {
+                                  type     => 'Value',
+                                  subtype  => 'String',
+                                  element1 => 'Mr',
+                              },
+                          ],
+                      },
+                      {
+                          type => 'Operator',
+                          op   => '=',
+                          args => [
+                              {
+                                  type     => 'Identifier',
+                                  element1 => 'abbrev',
+                              },
+                              {
+                                  type     => 'Value',
+                                  subtype  => 'String',
+                                  element1 => 'Dr',
+                              },
+                          ],
+                      },
+                  ],
+              },
+          ],
+      },
+  }
+=item SELECT COUNT(DISTINCT(*)) FROM foo WHERE ( name = 'John' AND title = 'Mr' ) OR abbrev = 'Dr'
+
+  {
+      type => 'select',
+      ast_version => 0.0001,
+      select => [
+        {
+              type  => 'SelectComponent',
+              value => {
+                  type => 'Operator',
+                  op   => 'COUNT',
+                  args => [
+                      {
+                          type => 'Operator',
+                          op   => 'DISTINCT',
+                          args => [
+                              {
+                                  type     => 'Identifier',
+                                  element1 => '*',
+                              },
+                          ],
+                      },
+                  ],
+              },
+          },
+      ],
+      tables => {
+          type => 'TableIdentifier',
+          value => {
+              type => 'Identifier',
+              element1 => 'foo',
+          },
+      },
+      where => {
+          type => 'Operator',
+          op   => 'OR',
+          args => [
+              {
+                  type => 'Operator',
+                  op   => 'AND',
+                  args => [
+                      {
+                          type => 'Operator',
+                          op   => '=',
+                          args => [
+                              {
+                                  type     => 'Identifier',
+                                  element1 => 'name',
+                              },
+                              {
+                                  type     => 'Value',
+                                  subtype  => 'String',
+                                  element1 => 'John',
+                              },
+                          ],
+                      },
+                      {
+                          type => 'Operator',
+                          op   => '=',
+                          args => [
+                              {
+                                  type     => 'Identifier',
+                                  element1 => 'title',
+                              },
+                              {
+                                  type     => 'Value',
+                                  subtype  => 'String',
+                                  element1 => 'Mr',
+                              },
+                          ],
+                      },
+                  ],
+              },
+              {
+                  type => 'Operator',
+                  op   => '=',
+                  args => [
+                      {
+                          type     => 'Identifier',
+                          element1 => 'abbrev',
+                      },
+                      {
+                          type     => 'Value',
+                          subtype  => 'String',
+                          element1 => 'Dr',
+                      },
+                  ],
+              },
+          ],
+      },
+  }
+
+=item * SELECT foo, bar baz FROM foo ORDER BY bar, baz DESC GROUP BY 1,3,2
+
+  {
+      type => 'select',
+      ast_version => 0.0001,
+      select => [
+          {
+              type  => 'SelectComponent',
+              value => {
+                  type => 'Identifier',
+                  element1 => 'foo',
+              },
+          },
+          {
+              type  => 'SelectComponent',
+              value => {
+                  type => 'Identifier',
+                  elements => 'bar',
+              },
+          },
+          {
+              type  => 'SelectComponent',
+              value => {
+                  type => 'Identifier',
+                  element1 => 'baz',
+              },
+          },
+      ],
+      tables => {
+          type => 'TableIdentifier',
+          value => {
+              type => 'Identifier',
+              element1 => 'foo',
+          },
+      },
+      orderby => [
+          {
+              type  => 'OrderbyComponent',
+              value => {
+                  type => 'Identifier',
+                  element1 => 'bar',
+              },
+              dir => 'ASC',
+          },
+          {
+              type  => 'OrderbyComponent',
+              value => {
+                  type => 'Identifier',
+                  element1 => 'baz',
+              },
+              dir => 'DESC',
+          },
+      ],
+      groupby => [
+          {
+              type  => 'GroupbyComponent',
+              value => {
+                  type => 'Number',
+                  value => 1,
+              },
+          },
+          {
+              type  => 'GroupbyComponent',
+              value => {
+                  type => 'Number',
+                  value => 3,
+              },
+          },
+          {
+              type  => 'GroupbyComponent',
+              value => {
+                  type => 'Number',
+                  value => 2,
+              },
+          },
+      ],
+  }
+
+=item * UPDATE foo SET col1 = 1
+
+  {
+      type => 'update',
+      ast_version => 0.0001,
+      tables => {
+          type => 'TableIdentifier',
+          value => {
+              type => 'Identifier',
+              element1 => 'foo',
+          },
+      },
+      set => [
+          {
+              type => 'SetComponent',
+              col  => {
+                  type => 'Identifier,
+                  element1 => 'col1',
+              },
+              value => {
+                  type => 'Number',
+                  value => 1,
+              },
+          },
+      ],
+  }
+
+=item * INSERT INTO foo ( col1, col2 ) VALUES ( 1, 3 )
+
+  {
+      type => 'insert',
+      ast_version => 0.0001,
+      tables => {
+          type => 'TableIdentifier',
+          value => {
+              type => 'Identifier',
+              element1 => 'foo',
+          },
+      },
+      columns => [
+          {
+              type => 'Identifier,
+              element1 => 'col1',
+          },
+          {
+              type => 'Identifier,
+              element1 => 'col2',
+          },
+      ],
+      values => [
+          {
+              type => 'Number,
+              value => '1',
+          },
+          {
+              type => 'Number,
+              value => '3',
+          },
+      ],
+  }
+
 =back
 
 =head1 AUTHORS