CREATE TABLE

Name

CREATE TABLE -- ����һ���±�

Synopsis

CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name (
  { column_name data_type [ DEFAULT default_expr ] [ column_constraint [, ... ] ]
    | table_constraint
    | LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] }  [, ... ]
)
[ INHERITS ( parent_table [, ... ] ) ]
[ WITH OIDS | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace ]

���� column_constraint �����ǣ�

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

�� table_constraint �����ǣ�

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

����

CREATE TABLE ���ڵ�ǰ���ݿⴴ��һ���µģ� ��ʼΪ�յı��ñ��ɷ�����������û����С�

���������ģʽ�������磬CREATE TABLE myschema.mytable ...���� ��ô������ָ��ģʽ�д����ġ��������ڵ�ǰģʽ�д�������ʱ�������һ�������ģʽ� ��˴�����ʱ���ʱ���ܸ���ģʽ���������ֱ����ͬһģʽ�����������У�����������ͼ������

CREATE TABLE ���Զ�����һ���������ͣ� ���������ʹ����Ӧ�ñ�һ�еĸ������͡� ��ˣ����ܺ�ͬģʽ�е�������������ͬ����

��ѡ��Լ���Ӿ�����Լ�������ԣ������л��߸��µ��б���������ЩԼ�����ܳɹ��������¡� Լ����һ������һ�� SQL �������Զ��ַ�ʽЭ������Э�������ڱ��϶�����Ч����ֵ���ϡ�

����Լ�������ַ�������Լ������Լ����һ����Լ������Ϊһ���ж����һ���ֶ���ġ� ����Լ��������ij���а���һ�� �����������ڶ���һ�����ϡ�ÿ����Լ��Ҳ����д�ɱ�Լ���� ���ij��Լ��ֻӰ��һ���У���ô��Լ��ֻ�Ƿ����ϵļ�෽ʽ���ѡ�

����

TEMPORARY �� TEMP

��������˴˲�������ñ���Ϊ��ʱ����ʱ���ڻỰ����ʱ�Զ�ɾ���� �����ǣ���ѡ���ڵ�ǰ����Ľ�β����������� ON COMMIT���� ����ͬ�����ñ�����ʱ������ڼ��ڱ��Ự�������Dz��ɼ��ģ� ������������ģʽ���ε��������õġ� �κ�����ʱ���ϴ���������Ҳ�����Զ�ɾ����

���ǿ���ѡ���� TEMPORARY �� TEMP ǰ����� GLOBAL ���� LOCAL�� ������ PostgreSQL û���κ����𣬿��Բ��� ������.

table_name

Ҫ�����ı�����֣�������ģʽ���Σ���

column_name

���±���Ҫ�������ֶ����֡�

data_type

���ֶε��������͡������԰�������˵�������й� PostgreSQL ֧�ֵ��������͵ĸ�����Ϣ�� ��ο� Chapter 8��

DEFAULT default_expr

DEFAULT �Ӿ���������ֵ��ֶ�һ��ȱʡ��ֵ�� ����ֵ�������κβ��������ı��ʽ��������ʹ���Ӳ�ѯ�ͶԱ����е������ֶεĽ������ã��� ȱʡ���ʽ���������ͱ�����ֶ�����ƥ�䡣

ȱʡ���ʽ���������κ�δ�������ֶ���ֵ�IJ�������� ����ֶ���û��ȱʡֵ����ôȱʡ�� NULL��

INHERITS ( parent_table [, ... ] )

��ѡ�� INHERITS �Ӿ�����һ�б�����±��Զ������б��м̳������ֶΡ�

ʹ�� INHERITS ���µ��ӱ���丸��֮�䴴��һ�����õĹ�ϵ�� �Ը���ṹ���޸�ͨ��Ҳ�ᴫ�����ӱ�ȱʡʱ��ɨ�踸���ʱ��Ҳ��ɨ���ӱ�

����ڶ���һ�������д���ͬ�����ֶΣ���ô�ͻᱨ��һ�����󣬳�����Щ�ֶε�����������ÿ�������ﶼ��ƥ��ġ� ���û�г�ͻ����ô�ظ����ֶ����±����ںϳ�һ���ֶΡ� ����±���ֶ����б��а����ͼ̳е��ֶ���ͬ���ģ���ô������������Ҳ���������һ����̳��ֶ�ƥ�䣬������Щ�ֶζ�����ںϳ�һ���� ������ͬ���ļ̳к����ֶ���������������ͬ��Լ�������еļ̳й�����Լ���Լ�������Լ�����ںϵ�һ�𣬲���ȫ��Ӧ�����±� ����±�Ϊ���ֶ���ȷ��������һ��ȱʡ��ֵ����ô��ȱʡ��ֵ�����κ����Լ̳��ֶ�������ȱʡֵ�� �����κ�Ϊ���ֶ�������ȱʡ��ֵ�ĸ�������������ͬ��ȱʡ������ͻᱨ��һ������

LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ]

LIKE �Ӿ�����һ�����±��Զ������������̳������ֶ����� ���ǵ��������ͣ��Լ��ǿ�Լ����

�� INHERITS ��ͬ���±���ԭ���ı�֮���ڴ����������֮������ȫ�޹صġ� ��Դ�������κ��޸Ķ�����ʩ�ӵ��±��У�����Ҳ��������ɨ��Դ���ʱ������±�����ݡ�

�ֶ�ȱʡ���ʽֻ���������� INCLUDING DEFAULTS ֮��Ż���������� ȱʡ���ų�ȱʡ���ʽ��������±��������ֶ�ȱʡ���ǿա�

WITH OIDS
WITHOUT OIDS

�����ѡ���Ӿ������±��е����Ƿ�Ӧ��ӵ�и������ǵ� OID �������ʶ���� �����û������ WITH OIDS Ҳû������ WITHOUT OIDS�� ��ôȱʡֵȡ�������ò��� default_with_oids�� ������±���κ��� OID �ı�̳ж�������ô������������˵�� WITHOUT OIDS�� Ҳ��ǿ�� WITH OIDS����

����������������� WITHOUT OIDS���±�Ͳ���洢 OID�����Ҳ��������е�ʱ��Ҳ���ḳ�� OID�� ͨ����Ϊ��ô����ֵ�õģ���Ϊ�������Լ��� OID ���IJ����Ƴ� 32 λ OID �������Ļؾ� һ���ü������ص�����ô�Ͳ����ټ��� OID ��Ψһ����������ʵ���Ծʹ���ۿۡ� ���⣬�� OID ��һ�������ų���������ڴ����ϴ洢ÿ�еĿռ䣬���ڴ���������ϣ�ÿ�м��� 4 �ֽڣ����Ҳ���ԸĽ����ܡ�

Ҫ��һ������֮�����ɾ�� OID��ʹ�� ALTER TABLE��

CONSTRAINT constraint_name

�л��Լ���Ŀ�ѡ���֡����û������������ϵͳ����һ�����֡�

NOT NULL

�ֶβ�������� NULL ��ֵ��

NULL

���ֶ�������� NULL ��ֵ������ȱʡ��

����Ӿ�Ĵ���ֻ��Ϊ����Щ�DZ�׼ SQL ���ݿ���ݡ� ���Dz���������Ӧ����ʹ������

UNIQUE (column constraint)
UNIQUE ( column_name [, ... ] ) (table constraint)

UNIQUE ����һ�����򣬱�ʾһ�������һ�����߶���ֶ���ϵķ���ֻ�ܰ���Ψһ����ֵ�� ���ΨһԼ������Ϊ����Լ����һ����ֻ�������˿���е�������

����ΨһԼ������;���ԣ�ϵͳ��Ϊ NULL ��ֵ�Dz���ȵġ�

ÿ��Ψһ��Լ������������һ���ֶεļ��ϣ��ü��ϱ��������ΨһԼ�������ֶμ��ϻ��߸ñ��������Լ����ͬ�� �������ֻ��ͬ����Լ��д�����Ρ���

PRIMARY KEY (column constraint)
PRIMARY KEY ( column_name [, ... ] ) (table constraint)

����Լ���������е�һ������һЩ�ֶ�ֻ�ܰ���Ψһ�����ظ����� NULL ����ֵ�� �Ӽ����Ͻ���PRIMARY KEY ֻ�� UNIQUE �� NOT NULL ����ϣ�������һ���ֶα�ʶΪ����ͬʱҲ������ģʽ��Ƶ�Ԫ���ݣ� ��Ϊ������ζ������������������ֶ������е�Ψһ��ʶ��

һ����ֻ������һ����������������Ϊ�ֶ�Լ�����DZ�Լ����

����Լ��Ӧ�ö�����ͬ�����ϵ�һ��������ΨһԼ��������IJ�ͬ���ֶμ����ϡ�

CHECK (expression)

CHECK Լ������һ�����ɲ���������Ӿ䣬 һ�β�����߸��²�������ɹ�����������л��߱����µ��б���������������� ֵ���Ϊ�����δ֪ʱ�ɹ���������κβ�����߸��µIJ������ɼٵĽ���� ��ô�����׳�һ�����⣬���������¶�������Ӱ�����ݿ⡣ ����Ϊ�ֶ�Լ���ļ��Լ��Ӧ��ֻ���ø��ֶε���ֵ�����ڱ�Լ������ֵı��ʽ�������ö���ֶΡ�

Ŀǰ��CHECK ���ʽ���ܰ����Ӳ�ѯҲ�������ó���ǰ���ֶ�֮��ı�����

REFERENCES reftable [ ( refcolumn ) ] [ MATCH matchtype ] [ ON DELETE action ] [ ON UPDATE action ] (column constraint)
FOREIGN KEY ( column [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] [ MATCH matchtype ] [ ON DELETE action ] [ ON UPDATE action ] (table constraint)

��Щ�Ӿ�����һ�����Լ�������Լ��Ҫ���±���һ�л��߶�����ɵ���Ӧ��ֻ����ƥ�䱻���õı� �ж�Ӧ���õ��ֶ��е���ֵ�� ���ʡ�� refcolumn�� ��ʹ�� reftable �������� �������ֶα����DZ����ñ��е�Ψһ�ֶλ���������

�������ֶβ������ֵ��ʹ�ø�����ƥ�������뱻���ñ��б������е���ֵ����ƥ�䡣 ������ƥ�����ͣ�MATCH FULL�� MATCH PARTIAL���� MATCH SIMPLE����Ҳ��ȱʡƥ�����͡� MATCH FULL ��������һ�����ֶ�������ֶ�Ϊ NULL��������������ֶζ�Ϊ NULL�� MATCH SIMPLE ����ijЩ����ֶ�Ϊ NULL ��������������ֲ��� NULL��MATCH PARTIAL ��ûʵ�֡�

���⣬�����ο��ֶ��е����ݸı��ʱ����ô���Ա�����ֶ��е�����ִ��ij�ֲ����� ON DELETE �Ӿ����������ο����еı��ο��н���ɾ����ʱ��Ҫִ�еIJ����� ���ƣ�ON UPDATE �Ӿ��������ο����б��ο��ֶθ���Ϊ��ֵ��ʱ��Ҫִ�еĶ����� ������б����£������ο����ֶ�ʵ����û�б仯����ô�Ͳ������κζ����� ���� NO ACTION ���֮��IJο����������Ƴ٣���ʹ��Լ������Ϊ�����Ƴٵ�Ҳ��ˡ� ������ÿ���Ӿ�Ŀ��ܵĶ�����

NO ACTION

����һ�����󣬱���ɾ�����߸��½�����һ��Υ�����Լ���Ķ����� �����Լ���ǿ��Ƴٵģ���������������κ������У���ô��������ڼ��Լ����ʱ�����ɡ� ����ȱʡ������

RESTRICT

����һ������ɾ������½�����Υ�����Լ���Ĵ��� �� NO ACTION һ����ֻ�Ƕ��������Ƴ١�

CASCADE

ɾ���κ������˱�ɾ���е��У����߷ֱ�������е��ֶ�ֵ����Ϊ���ο��ֶε�����ֵ��

SET NULL

������������Ϊ NULL��

SET DEFAULT

�������ֶ�����Ϊ���ǵ�ȱʡֵ��

������ο��ֶξ������£���ô���Ǹ�����ֶ�����һ�����������Ǻ��ʵģ� ����������ֶ�����������ö������Ը���Ч��ִ�С�

DEFERRABLE
NOT DEFERRABLE

�������ؼ������ø�Լ���Ƿ���Ƴ١�һ�������Ƴٵ�Լ������ÿ������֮�����ϼ�顣 �����Ƴٵ�Լ���������Ƴٵ������β��ʹ�� SET CONSTRAINTS ����� ȱʡ�� NOT DEFERRABLE��Ŀǰֻ�����Լ����������Ӿ䡣��������Լ�����Ͷ��Dz����Ƴٵġ�

INITIALLY IMMEDIATE
INITIALLY DEFERRED

���Լ���ǿ��Ƴٵģ���ô����Ӿ��������Լ����ȱʡʱ�䡣 ���Լ���� INITIALLY IMMEDIATE�� ��ôÿ�����֮��ͼ�����������ȱʡ�����Լ���� INITIALLY DEFERRED����ôֻ���������β�ż������ Լ������ʱ������� SET CONSTRAINTS �����޸ġ�

ON COMMIT

���ǿ����� ON COMMIT ������ʱ����������β����Ϊ��������ѡ���ǣ�

PRESERVE ROWS

�������β�������κ��ض��Ķ���������ȱʡ��Ϊ��

DELETE ROWS

��ʱ�����������ÿ�������β����ɾ����ʵ���ϣ���ÿ���ύ��ʱ���Զ� TRUNCATE ��

DROP

�ڵ�ǰ�����Ľ�β����ʱ����ɾ����

TABLESPACE tablespace

tablespace ���±�Ҫ�������ڵı�ռ䡣 ���û����������ʹ�� default_tablespace����� default_tablespace �ǿգ���ô��ʹ�����ݿ��ȱʡ��ռ䡣

USING INDEX TABLESPACE tablespace

����Ӿ�����ѡ����һ�� UNIQUE ���� PRIMARY KEY Լ����ص����Դ���ʱ���ڵı�ռ䡣 ���û���ṩ����Ӿ䣬����������ڸñ��ͬһ����ռ��д�����

ע��

���Dz���������Ӧ����ʹ�� OID����������£����õ�ѡ����ʹ��һ�� SERIAL �����������з���������������� ���һ��Ӧ��ʹ���� OID ��ʶ���е��ض��У���ô���ǽ����ڸñ�� oid �ֶ��ϴ���һ��ΨһԼ������ȷ���ñ�� OID ��ʹ�ڼ������ص�֮��Ҳ��Ψһ�ġ��������Ҫһ���������ݿⷶΧ��Ψһ��ʶ�� ��ô��Ҫ������� OID �ǿ��Ψһ�ģ�������� tableoid ���� OID �������ʵ�����Ŀ�ġ�

��ʾ: ����Щû�������ı����Dz�����ʹ�� WITHOUT OIDS�� ��Ϊ�����û�� OID ��û��Ψһ���ݼ��֣���ô�ͺ��ѱ�ʶ�ض����С�

PostgreSQL �Զ�Ϊÿ��ΨһԼ��������Լ������һ��������ȷ��Ψһ�ԡ� ��ˣ����Dz���Ϊ�����ֶ���ȷ�Ĵ��������� ������ CREATE INDEX ��ȡ������Ϣ����

ΨһԼ����������Ŀǰ��ʵ�����Dz��ܼ̳еġ� ����������Ѽ̳к�ΨһԼ�������һ��ᵼ���޷���ת��

һ�����ܳ��� 1600 ���ֶΡ���ʵ���ϣ�ʵ�ʵ����Ʊ�������ͣ� ��Ϊ����Զ�泤�����ơ���

����

������ films �� distributors��

CREATE TABLE films (
    code        char(5) CONSTRAINT firstkey PRIMARY KEY,
    title       varchar(40) NOT NULL,
    did         integer NOT NULL,
    date_prod   date,
    kind        varchar(10),
    len         interval hour to minute
);

CREATE TABLE distributors (
     did    integer PRIMARY KEY DEFAULT nextval('serial'),
     name   varchar(40) NOT NULL CHECK (name <> '')
);

����һ������ 2 ά����ı�

CREATE TABLE array_int (
    vector  INT[][]
);

Ϊ�� films ����һ��Ψһ��Լ���� Ψһ��Լ�������ڱ��һ�������ֶ��϶��壺

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)
);

����һ�������Լ����

CREATE TABLE distributors (
    did     integer CHECK (did > 100),
    name    varchar(40)
);

����һ������Լ����

CREATE TABLE distributors (
    did     integer,
    name    varchar(40)
    CONSTRAINT con1 CHECK (did > 100 AND name <> '')
);

Ϊ�� films ����һ��������Լ���� ������Լ�����Զ����ڱ��ϵ�һ�������ֶΡ�

CREATE TABLE films (
    code        char(5),
    title       varchar(40),
    did         integer,
    date_prod   date,
    kind        varchar(10),
    len         interval hour to minute,
    CONSTRAINT code_title PRIMARY KEY(code,title)
);

Ϊ�� distributors ����һ������Լ���� �������������ǵ�Ч�ģ���һ������ʹ���˱�Լ���﷨�� �ڶ���ʹ������Լ���﷨��

CREATE TABLE distributors (
    did     integer,
    name    varchar(40),
    PRIMARY KEY(did)
);

CREATE TABLE distributors (
    did     integer PRIMARY KEY,
    name    varchar(40)
);

����������Ӹ��ֶ� name ������һ���ı�����ȱʡֵ�� ���ҽ��ֶ� did ��ȱʡֵ����Ϊͨ��ѡ�����ж������һ��ֵ���ɡ� modtime ��ȱʡֵ���Ǹ��в����ʱ���ʱ�䡣

CREATE TABLE distributors (
    name      varchar(40) DEFAULT 'Luso Films',
    did       integer DEFAULT nextval('distributors_serial'),
    modtime   timestamp DEFAULT current_timestamp
);

�ڱ� distributors �϶������� NOT NULL ��Լ��������֮һ��ȷ���������֣�

CREATE TABLE distributors (
    did     integer CONSTRAINT no_null NOT NULL,
    name    varchar(40) NOT NULL
);

Ϊ name �ֶζ���һ��ΨһԼ����

CREATE TABLE distributors (
    did     integer,
    name    varchar(40) UNIQUE
);

����ĺ�����������Ϊһ����Լ��������һ���ģ�

CREATE TABLE distributors (
    did     integer,
    name    varchar(40),
    UNIQUE(name)
);

�ڱ�ռ� diskvol1 �ﴴ���� cinemas��

CREATE TABLE cinemas (
        id serial,
        name text,
        location text
) TABLESPACE diskvol1;

������

CREATE TABLE ��ѭ SQL-92 �� SQL:1999 ��һ���Ӽ���һЩ��������������г���

��ʱ��

���� CREATE TEMPORARY TABLE ���﷨�� SQL ��׼�����ƣ� ����Ч���Dz�ͬ�ġ��ڱ�׼���ʱ��ֻ�Ƕ���һ�β����Զ����ڣ��ӿ����ݿ�ʼ�����κ���Ҫ���ǵĻỰ�С� PostgreSQL Ҫ��ÿ���ỰΪ����ʹ�õ�ÿ����ʱ���������Լ��� CREATE TEMPORARY TABLE ��� ����������ͬ�ĻỰ����ͬ����ʱ���������ڲ�ͬ��Ŀ�ģ�����׼��ʵ�ַ������һ����ʱ������Լ��Ϊ������ͬ�ı�ṹ��

��׼�������ʱ�����Ϊ���㷺�غ����ˡ�PostgreSQL ���ⷽ���ϵ���Ϊ������������� SQL ���ݿ�

��׼����ȫ�ֺ;ֲ�����ʱ��֮��������� PostgreSQL �ﲻ���ڣ���Ϊ��������ȡ����ģ��ĸ���� PostgreSQL û�����������ڼ��ݿ��ǣ� PostgreSQL ��������ʱ�������е� GLOBAL �� LOCAL �ؼ��֣� ��������û�����á�

��ʱ��� ON COMMIT �Ӿ�Ҳ������ SQL ��׼�� ������Щ������������� ON COMMIT �Ӿ䣬SQL ����ȱʡ����Ϊ�� ON COMMIT DELETE ROWS�� ���� PostgreSQL ���ȱʡ��Ϊ�� ON COMMIT PRESERVE ROWS�� �� SQL �ﲻ���� ON COMMIT DROP��

�ֶμ��Լ��

SQL ��׼˵ CHECK �ֶ�Լ��ֻ����������ʩ�õ��ֶΣ� ֻ�� CHECK ��Լ���������ö���ֶΡ�PostgreSQL ����ǿ��������ƣ������ֶκͱ�Լ��������ͬ�Ķ�����

NULL "Լ��"

NULL "Լ��"��ʵ���ϲ���Լ������ PostgreSQL �� SQL ��׼����չ�� ��������Ϊ�˺�����һЩ���ݿ�ϵͳ���ݣ��Լ�Ϊ�˺� NOT NULL Լ���Գƣ��� ��Ϊ�����κ��ֶε�ȱʡ���������ij���ֻ���������ѡ�

�̳�

ͨ�� INHERITS �Ӿ�Ķ��ؼ̳��� PostgreSQL ���Ե���չ�� SQL:1999���������� SQL-92��ʹ�ò�ͬ���﷨�����嶨���˵��̳С� SQL:1999 ���ļ̳л�û���� PostgreSQL ��ʵ�֡�

���� ID

PostgreSQL �� OID �ĸ���DZ�׼��

���б�

PostgreSQL ������û���ֶεı� �����磬CREATE TABLE foo();�������Ƕ� SQL ��׼����չ�� ��׼������������ֶα����ֶα���ûʲô�ã����ǽ�ֹ���ǻ�� ALTER TABLE DROP COLUMN��������ֵ���������ԣ����ʱ����ӱ�׼�����ƿ�����������

��ռ�

PostgreSQL �ı�ռ����DZ�׼�Ķ����� ��� TABLESPACE �� USING INDEX TABLESPACE ������չ��

�ּ�

ALTER TABLE, DROP TABLE, CREATE TABLESPACE