org.jooq
Interface Table<R extends Record>

Type Parameters:
R - The record type associated with this table
All Superinterfaces:
Adapter, AliasProvider<Table<R>>, Attachable, Comparable<NamedQueryPart>, FieldProvider, NamedQueryPart, QueryPart, SchemaProvider, Serializable, TableLike<R>, Type<R>
All Known Subinterfaces:
TableOnConditionStep, UpdatableTable<R>
All Known Implementing Classes:
CustomTable, TableImpl, UpdatableTableImpl

public interface Table<R extends Record>
extends Type<R>, AliasProvider<Table<R>>, TableLike<R>

A table to be used in queries

Author:
Lukas Eder

Method Summary
 Table<Record> crossJoin(String sql)
          CROSS JOIN a table to this table.
 Table<Record> crossJoin(String sql, Object... bindings)
          CROSS JOIN a table to this table.
 Table<Record> crossJoin(String sql, QueryPart... parts)
          CROSS JOIN a table to this table.
 Table<Record> crossJoin(TableLike<?> table)
          CROSS JOIN a table to this table.
 DivideByOnStep divideBy(Table<?> divisor)
          Create a new TABLE reference from this table, applying relational division.
 TableOnStep fullOuterJoin(String sql)
          FULL OUTER JOIN a table to this table.
 TableOnStep fullOuterJoin(String sql, Object... bindings)
          FULL OUTER JOIN a table to this table.
 TableOnStep fullOuterJoin(String sql, QueryPart... parts)
          FULL OUTER JOIN a table to this table.
 TableOnStep fullOuterJoin(TableLike<?> table)
          FULL OUTER JOIN a table to this table.
 Identity<R,? extends Number> getIdentity()
          Retrieve the table's IDENTITY information, if available.
 Class<? extends R> getRecordType()
           
 List<ForeignKey<R,?>> getReferences()
          Get the list of FOREIGN KEY's of this table
<O extends Record>
List<ForeignKey<R,O>>
getReferencesTo(Table<O> other)
          Get a list of FOREIGN KEY's of this table, referencing a specific table.
 Schema getSchema()
          Get the table schema
 TableOnStep join(String sql)
          INNER JOIN a table to this table.
 TableOnStep join(String sql, Object... bindings)
          INNER JOIN a table to this table.
 TableOnStep join(String sql, QueryPart... parts)
          INNER JOIN a table to this table.
 TableOnStep join(TableLike<?> table)
          INNER JOIN a table to this table.
 TablePartitionByStep leftOuterJoin(String sql)
          LEFT OUTER JOIN a table to this table.
 TablePartitionByStep leftOuterJoin(String sql, Object... bindings)
          LEFT OUTER JOIN a table to this table.
 TablePartitionByStep leftOuterJoin(String sql, QueryPart... parts)
          LEFT OUTER JOIN a table to this table.
 TablePartitionByStep leftOuterJoin(TableLike<?> table)
          LEFT OUTER JOIN a table to this table.
 Table<Record> naturalJoin(String sql)
          NATURAL JOIN a table to this table.
 Table<Record> naturalJoin(String sql, Object... bindings)
          NATURAL JOIN a table to this table.
 Table<Record> naturalJoin(String sql, QueryPart... parts)
          NATURAL JOIN a table to this table.
 Table<Record> naturalJoin(TableLike<?> table)
          NATURAL JOIN a table to this table.
 Table<Record> naturalLeftOuterJoin(String sql)
          NATURAL LEFT OUTER JOIN a table to this table.
 Table<Record> naturalLeftOuterJoin(String sql, Object... bindings)
          NATURAL LEFT OUTER JOIN a table to this table.
 Table<Record> naturalLeftOuterJoin(String sql, QueryPart... parts)
          NATURAL LEFT OUTER JOIN a table to this table.
 Table<Record> naturalLeftOuterJoin(TableLike<?> table)
          NATURAL LEFT OUTER JOIN a table to this table.
 Table<Record> naturalRightOuterJoin(String sql)
          NATURAL RIGHT OUTER JOIN a table to this table.
 Table<Record> naturalRightOuterJoin(String sql, Object... bindings)
          NATURAL RIGHT OUTER JOIN a table to this table.
 Table<Record> naturalRightOuterJoin(String sql, QueryPart... parts)
          NATURAL RIGHT OUTER JOIN a table to this table.
 Table<Record> naturalRightOuterJoin(TableLike<?> table)
          NATURAL RIGHT OUTER JOIN a table to this table.
 PivotForStep pivot(Collection<? extends Field<?>> aggregateFunctions)
          Create a new TABLE reference from this table, pivoting it into another form For more details, see pivot(Field...)
 PivotForStep pivot(Field<?>... aggregateFunctions)
          Create a new TABLE reference from this table, pivoting it into another form This has been observed to work with SQLDialect.ORACLE SQLDialect.SQLSERVER (not yet officially supported) Other dialects by using some means of simulation (not yet officially supported)
 TablePartitionByStep rightOuterJoin(String sql)
          RIGHT OUTER JOIN a table to this table.
 TablePartitionByStep rightOuterJoin(String sql, Object... bindings)
          RIGHT OUTER JOIN a table to this table.
 TablePartitionByStep rightOuterJoin(String sql, QueryPart... parts)
          RIGHT OUTER JOIN a table to this table.
 TablePartitionByStep rightOuterJoin(TableLike<?> table)
          RIGHT OUTER JOIN a table to this table.
 
Methods inherited from interface org.jooq.NamedQueryPart
getName
 
Methods inherited from interface org.jooq.QueryPart
attach
 
Methods inherited from interface org.jooq.Adapter
internalAPI
 
Methods inherited from interface java.lang.Comparable
compareTo
 
Methods inherited from interface org.jooq.FieldProvider
getField, getField, getField, getFields, getIndex
 
Methods inherited from interface org.jooq.AliasProvider
as
 
Methods inherited from interface org.jooq.TableLike
asTable, asTable
 

Method Detail

getSchema

Schema getSchema()
Get the table schema

Specified by:
getSchema in interface SchemaProvider
Returns:
The contained schema

getRecordType

Class<? extends R> getRecordType()
Specified by:
getRecordType in interface Type<R extends Record>
Returns:
The record type produced by this table

getIdentity

Identity<R,? extends Number> getIdentity()
Retrieve the table's IDENTITY information, if available.

With SQL:2003, the concept of IDENTITY columns was introduced in most RDBMS. These are special kinds of columns that have auto-increment functionality when INSERT statements are performed.

An IDENTITY column is usually part of the PRIMARY KEY or of a UNIQUE KEY in the table, although in some RDBMS, this is not required. There can only be at most one IDENTITY column.

Note: Unfortunately, this is not supported in the Oracle dialect, where identities simulated by triggers cannot be formally detected.

Returns:
The table's IDENTITY information, or null, if no such information is available.

getReferences

List<ForeignKey<R,?>> getReferences()
Get the list of FOREIGN KEY's of this table

Returns:
This table's FOREIGN KEY's. This is never null.

getReferencesTo

<O extends Record> List<ForeignKey<R,O>> getReferencesTo(Table<O> other)
Get a list of FOREIGN KEY's of this table, referencing a specific table.

Type Parameters:
O - The other table's record type
Parameters:
other - The other table of the foreign key relationship
Returns:
This table's FOREIGN KEY's towards an other table. This is never null.

pivot

PivotForStep pivot(Field<?>... aggregateFunctions)
Create a new TABLE reference from this table, pivoting it into another form

This has been observed to work with

Parameters:
aggregateFunctions - The aggregate functions used for pivoting.
Returns:
A DSL object to create the PIVOT expression

pivot

PivotForStep pivot(Collection<? extends Field<?>> aggregateFunctions)
Create a new TABLE reference from this table, pivoting it into another form

For more details, see pivot(Field...)

Parameters:
aggregateFunctions - The aggregate functions used for pivoting.
Returns:
A DSL object to create the PIVOT expression
See Also:
pivot(Field...)

divideBy

DivideByOnStep divideBy(Table<?> divisor)
Create a new TABLE reference from this table, applying relational division.

Relational division is the inverse of a cross join operation. The following is an approximate definition of a relational division:

 Assume the following cross join / cartesian product
 C = A × B

 Then it can be said that
 A = C ÷ B
 B = C ÷ A
 

With jOOQ, you can simplify using relational divisions by using the following syntax:

 C.divideBy(B).on(C.ID.equal(B.C_ID)).returning(C.TEXT)
 

The above roughly translates to

 SELECT DISTINCT C.TEXT FROM C "c1"
 WHERE NOT EXISTS (
   SELECT 1 FROM B
   WHERE NOT EXISTS (
     SELECT 1 FROM C "c2"
     WHERE "c2".TEXT = "c1".TEXT
     AND "c2".ID = B.C_ID
   )
 )
 

Or in plain text: Find those TEXT values in C whose ID's correspond to all ID's in B. Note that from the above SQL statement, it is immediately clear that proper indexing is of the essence. Be sure to have indexes on all columns referenced from the on(...) and returning(...) clauses.

For more information about relational division and some nice, real-life examples, see

This has been observed to work with all dialects


join

TableOnStep join(TableLike<?> table)
INNER JOIN a table to this table.


join

TableOnStep join(String sql)
INNER JOIN a table to this table.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String)

join

TableOnStep join(String sql,
                 Object... bindings)
INNER JOIN a table to this table.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String, Object...)

join

TableOnStep join(String sql,
                 QueryPart... parts)
INNER JOIN a table to this table.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory#table(String, QueryPart...)

leftOuterJoin

TablePartitionByStep leftOuterJoin(TableLike<?> table)
LEFT OUTER JOIN a table to this table.


leftOuterJoin

TablePartitionByStep leftOuterJoin(String sql)
LEFT OUTER JOIN a table to this table.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String)

leftOuterJoin

TablePartitionByStep leftOuterJoin(String sql,
                                   Object... bindings)
LEFT OUTER JOIN a table to this table.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String, Object...)

leftOuterJoin

TablePartitionByStep leftOuterJoin(String sql,
                                   QueryPart... parts)
LEFT OUTER JOIN a table to this table.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory#table(String, QueryPart...)

rightOuterJoin

TablePartitionByStep rightOuterJoin(TableLike<?> table)
RIGHT OUTER JOIN a table to this table.

This is only possible where the underlying RDBMS supports it


rightOuterJoin

TablePartitionByStep rightOuterJoin(String sql)
RIGHT OUTER JOIN a table to this table.

This is only possible where the underlying RDBMS supports it

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String)

rightOuterJoin

TablePartitionByStep rightOuterJoin(String sql,
                                    Object... bindings)
RIGHT OUTER JOIN a table to this table.

This is only possible where the underlying RDBMS supports it

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String, Object...)

rightOuterJoin

TablePartitionByStep rightOuterJoin(String sql,
                                    QueryPart... parts)
RIGHT OUTER JOIN a table to this table.

This is only possible where the underlying RDBMS supports it

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory#table(String, QueryPart...)

fullOuterJoin

TableOnStep fullOuterJoin(TableLike<?> table)
FULL OUTER JOIN a table to this table.

This is only possible where the underlying RDBMS supports it


fullOuterJoin

TableOnStep fullOuterJoin(String sql)
FULL OUTER JOIN a table to this table.

This is only possible where the underlying RDBMS supports it

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String)

fullOuterJoin

TableOnStep fullOuterJoin(String sql,
                          Object... bindings)
FULL OUTER JOIN a table to this table.

This is only possible where the underlying RDBMS supports it

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String, Object...)

fullOuterJoin

TableOnStep fullOuterJoin(String sql,
                          QueryPart... parts)
FULL OUTER JOIN a table to this table.

This is only possible where the underlying RDBMS supports it

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory#table(String, QueryPart...)

crossJoin

Table<Record> crossJoin(TableLike<?> table)
CROSS JOIN a table to this table.

If this syntax is unavailable, it is simulated with a regular INNER JOIN. The following two constructs are equivalent:

 A cross join B
 A join B on 1 = 1
 


crossJoin

Table<Record> crossJoin(String sql)
CROSS JOIN a table to this table.

If this syntax is unavailable, it is simulated with a regular INNER JOIN. The following two constructs are equivalent:

 A cross join B
 A join B on 1 = 1
 

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String)

crossJoin

Table<Record> crossJoin(String sql,
                        Object... bindings)
CROSS JOIN a table to this table.

If this syntax is unavailable, it is simulated with a regular INNER JOIN. The following two constructs are equivalent:

 A cross join B
 A join B on 1 = 1
 

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String, Object...)

crossJoin

Table<Record> crossJoin(String sql,
                        QueryPart... parts)
CROSS JOIN a table to this table.

If this syntax is unavailable, it is simulated with a regular INNER JOIN. The following two constructs are equivalent:

 A cross join B
 A join B on 1 = 1
 

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory#table(String, QueryPart...)

naturalJoin

Table<Record> naturalJoin(TableLike<?> table)
NATURAL JOIN a table to this table.

If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.


naturalJoin

Table<Record> naturalJoin(String sql)
NATURAL JOIN a table to this table.

If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String)

naturalJoin

Table<Record> naturalJoin(String sql,
                          Object... bindings)
NATURAL JOIN a table to this table.

If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String, Object...)

naturalJoin

Table<Record> naturalJoin(String sql,
                          QueryPart... parts)
NATURAL JOIN a table to this table.

If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory#table(String, QueryPart...)

naturalLeftOuterJoin

Table<Record> naturalLeftOuterJoin(TableLike<?> table)
NATURAL LEFT OUTER JOIN a table to this table.

If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.


naturalLeftOuterJoin

Table<Record> naturalLeftOuterJoin(String sql)
NATURAL LEFT OUTER JOIN a table to this table.

If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String)

naturalLeftOuterJoin

Table<Record> naturalLeftOuterJoin(String sql,
                                   Object... bindings)
NATURAL LEFT OUTER JOIN a table to this table.

If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String, Object...)

naturalLeftOuterJoin

Table<Record> naturalLeftOuterJoin(String sql,
                                   QueryPart... parts)
NATURAL LEFT OUTER JOIN a table to this table.

If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory#table(String, QueryPart...)

naturalRightOuterJoin

Table<Record> naturalRightOuterJoin(TableLike<?> table)
NATURAL RIGHT OUTER JOIN a table to this table.

If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.


naturalRightOuterJoin

Table<Record> naturalRightOuterJoin(String sql)
NATURAL RIGHT OUTER JOIN a table to this table.

If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String)

naturalRightOuterJoin

Table<Record> naturalRightOuterJoin(String sql,
                                    Object... bindings)
NATURAL RIGHT OUTER JOIN a table to this table.

If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory.table(String, Object...)

naturalRightOuterJoin

Table<Record> naturalRightOuterJoin(String sql,
                                    QueryPart... parts)
NATURAL RIGHT OUTER JOIN a table to this table.

If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.

NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

See Also:
Factory#table(String, QueryPart...)


Copyright © 2012. All Rights Reserved.