Available in versions: Dev (3.20) | Latest (3.19) | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11 | 3.10
This documentation is for the unreleased development version of jOOQ. Click on the above version links to get this documentation for a supported version of jOOQ.
SQL Statements (DDL)
Applies to ✅ Open Source Edition ✅ Express Edition ✅ Professional Edition ✅ Enterprise Edition
The Data Definition Language (DDL) is used to CREATE, ALTER, and DROP various object types in the database catalog. jOOQ supports an increasing number of these operations natively, and also adds synthetic operation support for convenience.
While many DDL statements are supported natively, and have a 1:1 correspondence to the jOOQ API's representation, dialects differ in many subtle ways when it comes to DDL statement support. These differences may include:
- Different keywords to mean the same thing. For example, the keywords
ALTER
,CHANGE
, orMODIFY
may be used when altering columns or other attributes in a table. - Different statements instead of subclauses. For example, some dialects may choose to support
RENAME [object type] .. TO ..
statements instead of making the rename operation a subclause ofALTER [object type] .. RENAME TO ..
- Some syntax may not be supported, or not be supported consistently, such as the various
IF EXISTS
andIF NOT EXISTS
clauses. Emulations are possible using the dialect's procedural language
Because of these many differences, the jOOQ manual will not list each individual native SQL representation of each jOOQ API call. Also, some optional clauses may exist, such as the IF EXISTS
or OR REPLACE
clauses, which can easily be discovered from the API. The manual will omit documenting these clauses in every example.
Commercial support for emulations
A lot of DDL queries come with syntax that requires emulation using anonymous blocks. While basic anonymous blocks are supported in the jOOQ Open Source Edition as well, more sophisticated blocks and other procedural logic is a commercial only feature.
Table of contents
- 3.6.1.
- The ALTER statement
- 3.6.1.1.
- ALTER DATABASE
- 3.6.1.1.1.
- ALTER DATABASE .. RENAME
- 3.6.1.1.2.
- ALTER DATABASE IF EXISTS
- 3.6.1.2.
- ALTER DOMAIN
- 3.6.1.2.1.
- ALTER DOMAIN .. RENAME
- 3.6.1.2.2.
- ALTER DOMAIN .. SET DEFAULT
- 3.6.1.2.3.
- ALTER DOMAIN .. DROP DEFAULT
- 3.6.1.2.4.
- ALTER DOMAIN .. SET NOT NULL
- 3.6.1.2.5.
- ALTER DOMAIN .. DROP NOT NULL
- 3.6.1.2.6.
- ALTER DOMAIN .. ADD CONSTRAINT
- 3.6.1.2.7.
- ALTER DOMAIN .. RENAME CONSTRAINT
- 3.6.1.2.8.
- ALTER DOMAIN .. RENAME CONSTRAINT IF EXISTS
- 3.6.1.2.9.
- ALTER DOMAIN .. DROP CONSTRAINT
- 3.6.1.2.10.
- ALTER DOMAIN .. DROP CONSTRAINT IF EXISTS
- 3.6.1.2.11.
- ALTER DOMAIN IF EXISTS
- 3.6.1.3.
- ALTER INDEX
- 3.6.1.3.1.
- ALTER INDEX .. RENAME
- 3.6.1.3.2.
- ALTER INDEX IF EXISTS
- 3.6.1.4.
- ALTER SCHEMA
- 3.6.1.4.1.
- ALTER SCHEMA .. RENAME
- 3.6.1.4.2.
- ALTER SCHEMA IF EXISTS
- 3.6.1.5.
- ALTER SEQUENCE
- 3.6.1.5.1.
- ALTER SEQUENCE .. RENAME
- 3.6.1.5.2.
- ALTER SEQUENCE .. CACHE
- 3.6.1.5.3.
- ALTER SEQUENCE .. CYCLE
- 3.6.1.5.4.
- ALTER SEQUENCE .. MINVALUE
- 3.6.1.5.5.
- ALTER SEQUENCE .. t reaches its MAXVALUE
- 3.6.1.5.6.
- ALTER SEQUENCE .. INCREMENT BY
- 3.6.1.5.7.
- ALTER SEQUENCE .. START WITH
- 3.6.1.5.8.
- ALTER SEQUENCE .. RESTART
- 3.6.1.5.9.
- ALTER SEQUENCE IF EXISTS
- 3.6.1.6.
- ALTER TABLE
- 3.6.1.6.1.
- ALTER TABLE .. ADD COLUMN
- 3.6.1.6.2.
- ALTER TABLE .. ADD COLUMN .. FIRST, BEFORE, AFTER
- 3.6.1.6.3.
- ALTER TABLE .. ADD COLUMNS
- 3.6.1.6.4.
- ALTER TABLE .. ADD COLUMN IF NOT EXISTS
- 3.6.1.6.5.
- ALTER TABLE .. ADD PRIMARY KEY
- 3.6.1.6.6.
- ALTER TABLE .. ADD UNIQUE
- 3.6.1.6.7.
- ALTER TABLE .. ADD FOREIGN KEY
- 3.6.1.6.8.
- ALTER TABLE .. ADD CHECK
- 3.6.1.6.9.
- ALTER TABLE .. RENAME
- 3.6.1.6.10.
- ALTER TABLE .. COMMENT
- 3.6.1.6.11.
- ALTER TABLE .. ALTER COLUMN .. SET DEFAULT
- 3.6.1.6.12.
- ALTER TABLE .. ALTER COLUMN .. DROP DEFAULT
- 3.6.1.6.13.
- ALTER TABLE .. ALTER COLUMN .. SET NOT NULL
- 3.6.1.6.14.
- ALTER TABLE .. ALTER COLUMN .. DROP NOT NULL
- 3.6.1.6.15.
- ALTER TABLE .. ALTER COLUMN .. SET TYPE
- 3.6.1.6.16.
- ALTER TABLE .. ALTER CONSTRAINT .. ENFORCED
- 3.6.1.6.17.
- ALTER TABLE .. ALTER CONSTRAINT .. NOT ENFORCED
- 3.6.1.6.18.
- ALTER TABLE .. RENAME COLUMN
- 3.6.1.6.19.
- ALTER TABLE .. RENAME CONSTRAINT
- 3.6.1.6.20.
- ALTER TABLE .. RENAME INDEX
- 3.6.1.6.21.
- ALTER TABLE .. DROP COLUMN
- 3.6.1.6.22.
- ALTER TABLE .. DROP COLUMN RESTRICT
- 3.6.1.6.23.
- ALTER TABLE .. DROP COLUMN CASCADE
- 3.6.1.6.24.
- ALTER TABLE .. DROP COLUMNS
- 3.6.1.6.25.
- ALTER TABLE .. ADD COLUMN IF NOT EXISTS
- 3.6.1.6.26.
- ALTER TABLE .. DROP CONSTRAINT
- 3.6.1.6.27.
- ALTER TABLE .. DROP PRIMARY KEY
- 3.6.1.6.28.
- ALTER TABLE .. DROP UNIQUE
- 3.6.1.6.29.
- ALTER TABLE .. DROP FOREIGN KEY
- 3.6.1.6.30.
- ALTER TABLE .. DROP CONSTRAINT IF EXISTS
- 3.6.1.6.31.
- ALTER TABLE IF EXISTS
- 3.6.1.7.
- ALTER TYPE
- 3.6.1.7.1.
- ALTER TYPE .. RENAME
- 3.6.1.7.2.
- ALTER TYPE .. for enum alterations
- 3.6.1.7.3.
- ALTER TYPE IF EXISTS
- 3.6.1.8.
- ALTER VIEW
- 3.6.1.8.1.
- ALTER VIEW .. AS
- 3.6.1.8.2.
- ALTER VIEW .. COMMENT
- 3.6.1.8.3.
- ALTER VIEW .. RENAME
- 3.6.1.8.4.
- ALTER VIEW IF EXISTS
- 3.6.2.
- The COMMENT statement
- 3.6.2.1.
- COMMENT ON TABLE
- 3.6.2.2.
- COMMENT ON VIEW
- 3.6.2.3.
- COMMENT ON MATERIALIZED VIEW
- 3.6.2.4.
- COMMENT ON COLUMN
- 3.6.3.
- The CREATE statement
- 3.6.3.1.
- CREATE DATABASE
- 3.6.3.2.
- CREATE DOMAIN
- 3.6.3.3.
- CREATE FUNCTION
- 3.6.3.3.1.
- Scalar functions
- 3.6.3.3.2.
- CREATE OR REPLACE FUNCTION
- 3.6.3.3.3.
- SQL data access characteristics
- 3.6.3.3.4.
- DETERMINISTIC characteristic
- 3.6.3.3.5.
- ON NULL INPUT characteristic
- 3.6.3.4.
- CREATE INDEX
- 3.6.3.5.
- CREATE PROCEDURE
- 3.6.3.5.1.
- CREATE OR REPLACE PROCEDURE
- 3.6.3.5.2.
- SQL data access characteristics
- 3.6.3.6.
- CREATE SCHEMA
- 3.6.3.7.
- CREATE SEQUENCE
- 3.6.3.7.1.
- CREATE SEQUENCE IF NOT EXISTS
- 3.6.3.7.2.
- CREATE SEQUENCE .. AS (new)
- 3.6.3.7.3.
- CREATE SEQUENCE .. CACHE
- 3.6.3.7.4.
- CREATE SEQUENCE .. CYCLE
- 3.6.3.7.5.
- CREATE SEQUENCE .. MINVALUE
- 3.6.3.7.6.
- CREATE SEQUENCE .. MAXVALUE
- 3.6.3.7.7.
- CREATE SEQUENCE .. INCREMENT BY
- 3.6.3.7.8.
- CREATE SEQUENCE .. START WITH
- 3.6.3.8.
- CREATE SYNONYM (new)
- 3.6.3.8.1.
- CREATE OR REPLACE SYNONYM (new)
- 3.6.3.9.
- CREATE TABLE
- 3.6.3.9.1.
- Columns
- 3.6.3.9.2.
- Nullability
- 3.6.3.9.3.
- Defaults
- 3.6.3.9.4.
- Identities
- 3.6.3.9.5.
- Computed columns
- 3.6.3.9.6.
- Primary key
- 3.6.3.9.7.
- Unique constraints
- 3.6.3.9.8.
- Foreign keys
- 3.6.3.9.9.
- Check constraints
- 3.6.3.9.10.
- From a SELECT
- 3.6.3.9.11.
- Temporary tables
- 3.6.3.10.
- CREATE TRIGGER
- 3.6.3.10.1.
- Events
- 3.6.3.10.2.
- REFERENCING clause
- 3.6.3.10.3.
- STATEMENT vs ROW triggers
- 3.6.3.10.4.
- WHEN clause
- 3.6.3.11.
- CREATE TYPE .. AS ENUM
- 3.6.3.12.
- CREATE TYPE .. AS OBJECT
- 3.6.3.13.
- CREATE VIEW
- 3.6.3.13.1.
- CREATE OR REPLACE VIEW
- 3.6.3.13.2.
- WITH CHECK OPTION
- 3.6.3.13.3.
- WITH READ ONLY
- 3.6.3.13.4.
- MATERIALIZED
- 3.6.4.
- The DROP statement
- 3.6.4.1.
- DROP DATABASE
- 3.6.4.1.1.
- DROP DATABASE IF EXISTS
- 3.6.4.2.
- DROP DOMAIN
- 3.6.4.2.1.
- DROP DOMAIN IF EXISTS
- 3.6.4.3.
- DROP FUNCTION
- 3.6.4.3.1.
- DROP FUNCTION IF EXISTS
- 3.6.4.4.
- DROP INDEX
- 3.6.4.4.1.
- DROP INDEX IF EXISTS
- 3.6.4.5.
- DROP PROCEDURE
- 3.6.4.5.1.
- DROP PROCEDURE IF EXISTS
- 3.6.4.6.
- DROP SCHEMA
- 3.6.4.6.1.
- DROP SCHEMA IF EXISTS
- 3.6.4.7.
- DROP SEQUENCE
- 3.6.4.7.1.
- DROP SEQUENCE IF EXISTS
- 3.6.4.8.
- DROP SYNONYM (new)
- 3.6.4.8.1.
- DROP SYNONYM IF EXISTS (new)
- 3.6.4.9.
- DROP TABLE
- 3.6.4.9.1.
- DROP TABLE IF EXISTS
- 3.6.4.10.
- DROP TRIGGER
- 3.6.4.10.1.
- DROP TRIGGER IF EXISTS
- 3.6.4.11.
- DROP TYPE
- 3.6.4.11.1.
- DROP TYPE IF EXISTS
- 3.6.4.12.
- DROP VIEW
- 3.6.4.12.1.
- DROP VIEW IF EXISTS
- 3.6.4.12.2.
- DROP MATERIALIZED VIEW
- 3.6.5.
- The GRANT statement
- 3.6.6.
- The REVOKE statement
- 3.6.7.
- The SET statement
- 3.6.7.1.
- SET CATALOG
- 3.6.7.2.
- SET SCHEMA
- 3.6.8.
- The TRUNCATE statement
- 3.6.9.
- Generating DDL from objects
previous : next |
Feedback
Do you have any feedback about this page? We'd love to hear it!