create_table man page on IRIX

Man page or keyword search:  
man Server   31559 pages
apropos Keyword Search (all sections)
Output format
IRIX logo
[printable version]



     CREATE TABLE(lSQL - Language Statements (2002-11-2CREATE TABLE(l)

     NAME
	  CREATE TABLE - define a new table

     SYNOPSIS
	  CREATE [ [ LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name (
	      { column_name data_type [ DEFAULT default_expr ] [ column_constraint [, ... ] ]
	      | table_constraint }  [, ... ]
	  )
	  [ INHERITS ( parent_table [, ... ] ) ]
	  [ WITH OIDS | WITHOUT OIDS ]

	  where column_constraint is:

	  [ CONSTRAINT constraint_name ]
	  { NOT NULL | NULL | UNIQUE | PRIMARY KEY |
	    CHECK (expression) |
	    REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL ]
	      [ ON DELETE action ] [ ON UPDATE action ] }
	  [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

	  and table_constraint is:

	  [ CONSTRAINT constraint_name ]
	  { UNIQUE ( column_name [, ... ] ) |
	    PRIMARY KEY ( column_name [, ... ] ) |
	    CHECK ( expression ) |
	    FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
	      [ MATCH FULL | MATCH PARTIAL ] [ ON DELETE action ] [ ON UPDATE action ] }
	  [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

     DESCRIPTION
	  CREATE TABLE will create a new, initially empty table in the
	  current database. The table will be owned by the user
	  issuing the command.

	  If a schema name is given (for example, CREATE TABLE
	  myschema.mytable ...) then the table is created in the
	  specified schema. Otherwise it is created in the current
	  schema (the one at the front of the search path; see
	  CURRENT_SCHEMA()).  TEMP tables exist in a special schema,
	  so a schema name may not be given when creating a TEMP
	  table.  The table name must be distinct from the name of any
	  other table, sequence, index, or view in the same schema.

	  CREATE TABLE also automatically creates a data type that
	  represents the tuple type (structure type) corresponding to
	  one row of the table. Therefore, tables cannot have the same
	  name as any existing data type in the same schema.

	  A table cannot have more than 1600 columns. (In practice,
	  the effective limit is lower because of tuple-length

     Page 1					     (printed 3/24/03)

     CREATE TABLE(lSQL - Language Statements (2002-11-2CREATE TABLE(l)

	  constraints).

	  The optional constraint clauses specify constraints (or
	  tests) that new or updated rows must satisfy for an insert
	  or update operation to succeed. A constraint is a named
	  rule: an SQL object which helps define valid sets of values
	  by putting limits on the results of insert, update, or
	  delete operations performed on a table.

	  There are two ways to define constraints: table constraints
	  and column constraints. A column constraint is defined as
	  part of a column definition. A table constraint definition
	  is not tied to a particular column, and it can encompass
	  more than one column.	 Every column constraint can also be
	  written as a table constraint; a column constraint is only a
	  notational convenience if the constraint only affects one
	  column.

     PARAMETERS
	  [LOCAL] TEMPORARY or [LOCAL] TEMP
	       If specified, the table is created as a temporary
	       table.  Temporary tables are automatically dropped at
	       the end of a session. Existing permanent tables with
	       the same name are not visible to the current session
	       while the temporary table exists, unless they are
	       referenced with schema-qualified names.	Any indexes
	       created on a temporary table are automatically
	       temporary as well.

	       The LOCAL word is optional. But see under Compatibility
	       [create_table(l)].

	  table_name
	       The name (optionally schema-qualified) of the table to
	       be created.

	  column_name
	       The name of a column to be created in the new table.

	  data_type
	       The data type of the column. This may include array
	       specifiers.  Refer to the User's Guide for further
	       information about data types and arrays.

	  DEFAULT
	       The DEFAULT clause assigns a default data value for the
	       column whose column definition it appears within. The
	       value is any variable-free expression (subselects and
	       cross-references to other columns in the current table
	       are not allowed). The data type of the default
	       expression must match the data type of the column.

     Page 2					     (printed 3/24/03)

     CREATE TABLE(lSQL - Language Statements (2002-11-2CREATE TABLE(l)

	       The default expression will be used in any insert
	       operation that does not specify a value for the column.
	       If there is no default for a column, then the default
	       is NULL.

	  INHERITS ( parent_table [, ... ] )
	       The optional INHERITS clause specifies a list of tables
	       from which the new table automatically inherits all
	       columns. If the same column name exists in more than
	       one parent table, an error is reported unless the data
	       types of the columns match in each of the parent
	       tables. If there is no conflict, then the duplicate
	       columns are merged to form a single column in the new
	       table. If the column name list of the new table
	       contains a column that is also inherited, the data type
	       must likewise match the inherited column(s), and the
	       column definitions are merged into one. However,
	       inherited and new column declarations of the same name
	       need not specify identical constraints: all constraints
	       provided from any declaration are merged together and
	       all are applied to the new table. If the new table
	       explicitly specifies a default value for the column,
	       this default overrides any defaults from inherited
	       declarations of the column. Otherwise, any parents that
	       specify default values for the column must all specify
	       the same default, or an error will be reported.

	  WITH OIDS or WITHOUT OIDS
	       This optional clause specifies whether rows of the new
	       table should have OIDs (object identifiers) assigned to
	       them. The default is to have OIDs. (If the new table
	       inherits from any tables that have OIDs, then WITH OIDS
	       is forced even if the command says WITHOUT OIDS.)

	       Specifying WITHOUT OIDS allows the user to suppress
	       generation of OIDs for rows of a table. This may be
	       worthwhile for large tables, since it will reduce OID
	       consumption and thereby postpone wraparound of the 32-
	       bit OID counter. Once the counter wraps around,
	       uniqueness of OIDs can no longer be assumed, which
	       considerably reduces their usefulness.

	  CONSTRAINT constraint_name
	       An optional name for a column or table constraint. If
	       not specified, the system generates a name.

	  NOT NULL
	       The column is not allowed to contain NULL values.

	  NULL The column is allowed to contain NULL values. This is
	       the default.

     Page 3					     (printed 3/24/03)

     CREATE TABLE(lSQL - Language Statements (2002-11-2CREATE TABLE(l)

	       This clause is only available for compatibility with
	       non-standard SQL databases. Its use is discouraged in
	       new applications.

	  UNIQUE (column constraint)

	  UNIQUE ( column_name [, ... ] ) (table constraint)
	       The UNIQUE constraint specifies a rule that a group of
	       one or more distinct columns of a table may contain
	       only unique values. The behavior of the unique table
	       constraint is the same as that for column constraints,
	       with the additional capability to span multiple
	       columns.

	       For the purpose of a unique constraint, NULL values are
	       not considered equal.

	       Each unique table constraint must name a set of columns
	       that is different from the set of columns named by any
	       other unique or primary key constraint defined for the
	       table. (Otherwise it would just be the same constraint
	       listed twice.)

	  PRIMARY KEY (column constraint)

	  PRIMARY KEY ( column_name [, ... ] ) (table constraint)
	       The primary key constraint specifies that a column or
	       columns of a table may contain only unique (non-
	       duplicate), non-NULL values.  Technically, PRIMARY KEY
	       is merely a combination of UNIQUE and NOT NULL, but
	       identifying a set of columns as primary key also
	       provides meta-data about the design of the schema, as a
	       primary key implies that other tables may rely on this
	       set of columns as a unique identifier for rows.

	       Only one primary key can be specified for a table,
	       whether as a column constraint or a table constraint.

	       The primary key constraint should name a set of columns
	       that is different from other sets of columns named by
	       any unique constraint defined for the same table.

	  CHECK (expression)
	       CHECK clauses specify integrity constraints or tests
	       which new or updated rows must satisfy for an insert or
	       update operation to succeed. Each constraint must be an
	       expression producing a Boolean result. A condition
	       appearing within a column definition should reference
	       that column's value only, while a condition appearing
	       as a table constraint may reference multiple columns.

	       Currently, CHECK expressions cannot contain subselects

     Page 4					     (printed 3/24/03)

     CREATE TABLE(lSQL - Language Statements (2002-11-2CREATE TABLE(l)

	       nor refer to variables other than columns of the
	       current row.

     DELETE action ] [ ON UPDATE action ] (column constraint)
	  REFERENCES reftable [ ( refcolumn ) ] [ MATCH matchtype ] [ ON

	  FOREIGN KEY ( column [, ... ] )
	       The REFERENCES column constraint specifies that a group
	       of one or more columns of the new table must only
	       contain values which match against values in the
	       referenced column(s) refcolumn of the referenced table
	       reftable. If refcolumn is omitted, the primary key of
	       the reftable is used. The referenced columns must be
	       the columns of a unique or primary key constraint in
	       the referenced table.

	       A value added to these columns is matched against the
	       values of the referenced table and referenced columns
	       using the given match type. There are three match
	       types: MATCH FULL, MATCH PARTIAL, and a default match
	       type if none is specified. MATCH FULL will not allow
	       one column of a multicolumn foreign key to be NULL
	       unless all foreign key columns are NULL. The default
	       match type allows some foreign key columns to be NULL
	       while other parts of the foreign key are not NULL.
	       MATCH PARTIAL is not yet implemented.

	       In addition, when the data in the referenced columns is
	       changed, certain actions are performed on the data in
	       this table's columns. The ON DELETE clause specifies
	       the action to do when a referenced row in the
	       referenced table is being deleted. Likewise, the ON
	       UPDATE clause specifies the action to perform when a
	       referenced column in the referenced table is being
	       updated to a new value. If the row is updated, but the
	       referenced column is not actually changed, no action is
	       done. There are the following possible actions for each
	       clause:

	       NO ACTION
		    Produce an error indicating that the deletion or
		    update would create a foreign key constraint
		    violation. This is the default action.

	       RESTRICT
		    Same as NO ACTION.

	       CASCADE
		    Delete any rows referencing the deleted row, or
		    update the value of the referencing column to the
		    new value of the referenced column, respectively.

     Page 5					     (printed 3/24/03)

     CREATE TABLE(lSQL - Language Statements (2002-11-2CREATE TABLE(l)

	       SET NULL
		    Set the referencing column values to NULL.

	       SET DEFAULT
		    Set the referencing column values to their default
		    value.

	  If primary key column is updated frequently, it may be wise
	  to add an index to the REFERENCES column so that NO ACTION
	  and CASCADE actions associated with the REFERENCES column
	  can be more efficiently performed.

	  DEFERRABLE or NOT DEFERRABLE
	       This controls whether the constraint can be deferred. A
	       constraint that is not deferrable will be checked
	       immediately after every command. Checking of
	       constraints that are deferrable may be postponed until
	       the end of the transaction (using the SET CONSTRAINTS
	       [set_constraints(l)] command).  NOT DEFERRABLE is the
	       default. Only foreign key constraints currently accept
	       this clause. All other constraint types are not
	       deferrable.

	  INITIALLY IMMEDIATE or INITIALLY DEFERRED
	       If a constraint is deferrable, this clause specifies
	       the default time to check the constraint. If the
	       constraint is INITIALLY IMMEDIATE, it is checked after
	       each statement. This is the default. If the constraint
	       is INITIALLY DEFERRED, it is checked only at the end of
	       the transaction. The constraint check time can be
	       altered with the SET CONSTRAINTS [set_constraints(l)]
	       command.

     DIAGNOSTICS
	  CREATE TABLE

	  Message returned if table is successfully created.

	  ERROR

	  Message returned if table creation failed. This is usually
	  accompanied by some descriptive text, such as:  ERROR:
	  Relation 'table' already exists, which occurs at run time if
	  the table specified already exists in the database.

     NOTES
	  o Whenever an application makes use of OIDs to identify
	    specific rows of a table, it is recommended to create a
	    unique constraint on the oid column of that table, to
	    ensure that OIDs in the table will indeed uniquely
	    identify rows even after counter wraparound. Avoid
	    assuming that OIDs are unique across tables; if you need a

     Page 6					     (printed 3/24/03)

     CREATE TABLE(lSQL - Language Statements (2002-11-2CREATE TABLE(l)

	    database-wide unique identifier, use the combination of
	    tableoid and row OID for the purpose. (It is likely that
	    future PostgreSQL releases will use a separate OID counter
	    for each table, so that it will be necessary, not
	    optional, to include tableoid to have a unique identifier
	    database-wide.)

	    Tip: The use of WITHOUT OIDS is not recommended for tables
	    with no primary key, since without either an OID or a
	    unique data key, it is difficult to identify specific
	    rows.

	  o PostgreSQL automatically creates an index for each unique
	    constraint and primary key constraint to enforce the
	    uniqueness. Thus, it is not necessary to create an
	    explicit index for primary key columns. (See CREATE INDEX
	    [create_index(l)] for more information.)

	  o The SQL92 standard says that CHECK column constraints may
	    only refer to the column they apply to; only CHECK table
	    constraints may refer to multiple columns. PostgreSQL does
	    not enforce this restriction; it treats column and table
	    check constraints alike.

	  o Unique constraints and primary keys are not inherited in
	    the current implementation. This makes the combination of
	    inheritance and unique constraints rather dysfunctional.

     EXAMPLES
	  Create table films and table distributors:

	  CREATE TABLE films (
	      code	  CHARACTER(5) CONSTRAINT firstkey PRIMARY KEY,
	      title	  CHARACTER VARYING(40) NOT NULL,
	      did	  DECIMAL(3) NOT NULL,
	      date_prod	  DATE,
	      kind	  CHAR(10),
	      len	  INTERVAL HOUR TO MINUTE
	  );

	  CREATE TABLE distributors (
	       did    DECIMAL(3) PRIMARY KEY DEFAULT NEXTVAL('serial'),
	       name   VARCHAR(40) NOT NULL CHECK (name <> '')
	  );

	  Create a table with a 2-dimensional array:

	  CREATE TABLE array (
	      vector  INT[][]

     Page 7					     (printed 3/24/03)

     CREATE TABLE(lSQL - Language Statements (2002-11-2CREATE TABLE(l)

	  );

	  Define a unique table constraint for the table films. Unique
	  table constraints can be defined on one or more columns of
	  the table:

	  CREATE TABLE films (
	      code	  CHAR(5),
	      title	  VARCHAR(40),
	      did	  DECIMAL(3),
	      date_prod	  DATE,
	      kind	  VARCHAR(10),
	      len	  INTERVAL HOUR TO MINUTE,
	      CONSTRAINT production UNIQUE(date_prod)
	  );

	  Define a check column constraint:

	  CREATE TABLE distributors (
	      did     DECIMAL(3) CHECK (did > 100),
	      name    VARCHAR(40)
	  );

	  Define a check table constraint:

	  CREATE TABLE distributors (
	      did     DECIMAL(3),
	      name    VARCHAR(40)
	      CONSTRAINT con1 CHECK (did > 100 AND name <> '')
	  );

	  Define a primary key table constraint for the table films.
	  Primary key table constraints can be defined on one or more
	  columns of the table.

	  CREATE TABLE films (
	      code	  CHAR(5),
	      title	  VARCHAR(40),
	      did	  DECIMAL(3),
	      date_prod	  DATE,
	      kind	  VARCHAR(10),
	      len	  INTERVAL HOUR TO MINUTE,
	      CONSTRAINT code_title PRIMARY KEY(code,title)
	  );

	  Define a primary key constraint for table distributors. The
	  following two examples are equivalent, the first using the

     Page 8					     (printed 3/24/03)

     CREATE TABLE(lSQL - Language Statements (2002-11-2CREATE TABLE(l)

	  table constraint syntax, the second the column constraint
	  notation.

	  CREATE TABLE distributors (
	      did     DECIMAL(3),
	      name    CHAR VARYING(40),
	      PRIMARY KEY(did)
	  );

	  CREATE TABLE distributors (
	      did     DECIMAL(3) PRIMARY KEY,
	      name    VARCHAR(40)
	  );

	  This assigns a literal constant default value for the column
	  name, and arranges for the default value of column did to be
	  generated by selecting the next value of a sequence object.
	  The default value of modtime will be the time at which the
	  row is inserted.

	  CREATE TABLE distributors (
	      name	VARCHAR(40) DEFAULT 'luso films',
	      did	INTEGER DEFAULT NEXTVAL('distributors_serial'),
	      modtime	TIMESTAMP DEFAULT CURRENT_TIMESTAMP
	  );

	  Define two NOT NULL column constraints on the table
	  distributors, one of which is explicitly given a name:

	  CREATE TABLE distributors (
	      did     DECIMAL(3) CONSTRAINT no_null NOT NULL,
	      name    VARCHAR(40) NOT NULL
	  );

	  Define a unique constraint for the name column:

	  CREATE TABLE distributors (
	      did     DECIMAL(3),
	      name    VARCHAR(40) UNIQUE
	  );

	  The above is equivalent to the following specified as a
	  table constraint:

	  CREATE TABLE distributors (
	      did     DECIMAL(3),
	      name    VARCHAR(40),
	      UNIQUE(name)

     Page 9					     (printed 3/24/03)

     CREATE TABLE(lSQL - Language Statements (2002-11-2CREATE TABLE(l)

	  );

     COMPATIBILITY
	  The CREATE TABLE conforms to SQL92 Intermediate and to a
	  subset of SQL99, with exceptions listed below and in the
	  descriptions above.

	TEMPORARY TABLES
	  In addition to the local temporary table, SQL92 also defines
	  a CREATE GLOBAL TEMPORARY TABLE statement.  Global temporary
	  tables are also visible to other sessions.

	  For temporary tables, there is an optional ON COMMIT clause:

	  CREATE { GLOBAL | LOCAL } TEMPORARY TABLE table ( ... ) [ ON COMMIT { DELETE | PRESERVE } ROWS ]

	  The ON COMMIT clause specifies whether or not the temporary
	  table should be emptied of rows whenever COMMIT is executed.
	  If the ON COMMIT clause is omitted, SQL92 specifies that the
	  default is ON COMMIT DELETE ROWS. However, the behavior of
	  PostgreSQL is always like ON COMMIT PRESERVE ROWS.

	NULL ``CONSTRAINT''
	  The NULL ``constraint'' (actually a non-constraint) is a
	  PostgreSQL extension to SQL92 that is included for
	  compatibility with some other RDBMS (and for symmetry with
	  the NOT NULL constraint). Since it is the default for any
	  column, its presence is simply noise.

	ASSERTIONS
	  An assertion is a special type of integrity constraint and
	  shares the same namespace as other constraints. However, an
	  assertion is not necessarily dependent on one particular
	  table as constraints are, so SQL92 provides the CREATE
	  ASSERTION statement as an alternate method for defining a
	  constraint:

	  CREATE ASSERTION name CHECK ( condition )

	  PostgreSQL does not implement assertions at present.

	INHERITANCE
	  Multiple inheritance via the INHERITS clause is a PostgreSQL
	  language extension. SQL99 (but not SQL92) defines single
	  inheritance using a different syntax and different
	  semantics. SQL99-style inheritance is not yet supported by
	  PostgreSQL.

	OBJECT IDS
	  The PostgreSQL concept of OIDs is not standard.

     Page 10					     (printed 3/24/03)

     CREATE TABLE(lSQL - Language Statements (2002-11-2CREATE TABLE(l)

     SEE ALSO
	  ALTER TABLE [alter_table(l)], DROP TABLE [drop_table(l)]

     Page 11					     (printed 3/24/03)

[top]

List of man pages available for IRIX

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net