ALTER TABLE

Name

ALTER TABLE -- �޸ı�Ķ���

Synopsis

ALTER TABLE [ ONLY ] name [ * ]
    action [, ... ]
ALTER TABLE [ ONLY ] name [ * ]
    RENAME [ COLUMN ] column TO new_column
ALTER TABLE name
    RENAME TO new_name

���� action ������֮һ��

    ADD [ COLUMN ] column type [ column_constraint [ ... ] ]
    DROP [ COLUMN ] column [ RESTRICT | CASCADE ]
    ALTER [ COLUMN ] column TYPE type [ USING expression ]
    ALTER [ COLUMN ] column SET DEFAULT expression
    ALTER [ COLUMN ] column DROP DEFAULT
    ALTER [ COLUMN ] column { SET | DROP } NOT NULL
    ALTER [ COLUMN ] column SET STATISTICS integer
    ALTER [ COLUMN ] column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
    ADD table_constraint
    DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]
    CLUSTER ON index_name
    SET WITHOUT CLUSTER
    SET WITHOUT OIDS
    OWNER TO new_owner
    SET TABLESPACE tablespace_name
  

����

ALTER TABLE ���һ���ִ��Ķ��塣���кü�������ʽ��

ADD COLUMN

������ʽ�ú� CREATE TABLE ��һ�����﷨���������һ���µ��ֶΡ�

DROP COLUMN

������ʽ�ӱ���ɾ��һ���ֶΡ���ע�⣬������ֶ���ص������ͱ�Լ��Ҳ�ᱻ�Զ�ɾ���� ����κα�֮��Ķ�������������ֶΣ� �����˵ CASCADE�����磬����ο�����ͼ�ȵȡ�

ALTER COLUMN TYPE

�������͸ı����һ���ֶε����͡����ֶ��漰�������ͼ򵥵ı�Լ�������Զ���ת��Ϊʹ���µ��ֶ����ͣ� ���������·�������ṩ�ı��ʽ����ѡ�� USING �Ӿ�������δӾɵ��ֶ�ֵ������µ��ֶ�ֵ�� ���ʡ�ԣ���ôȱʡ��ת�����ǴӾ������������͵ĸ�ֵת��������Ӿ��������͵�������û���������߸�ֵ��ת���� ��ô�����ṩһ�� USING��

SET/DROP DEFAULT

������ʽΪһ���ֶ����û���ɾ��ȱʡֵ����ע��ȱʡֵֻӦ�������� INSERT ��� ���Dz��ᵼ���Ѿ��ڱ��е��е���ֵ���޸ġ�����Ҳ����Ϊ��ͼ����ȱʡ�� ���ʱ������������ͼ�� ON INSERT ����Ӧ��֮ǰ���� INSERT �����ȥ�ġ�

SET/DROP NOT NULL

��Щ��ʽ�޸�һ���ֶ��Ƿ���Ϊ���� NULL ֵ�����Ǿܾ� NULL ֵ�� ��������ֶ��а����ǿ�ֵ����ô��ֻ���� SET NOT NULL��

SET STATISTICS

�����ʽΪ���� ANALYZE ��������ÿ�ֶε�ͳ���ռ�Ŀ�꣨default_statistics_target���� Ŀ��ķ�Χ������ 0 �� 1000 ֮�����ã����⣬��������Ϊ -1 ���ʾ���»ָ���ʹ��ϵͳȱʡ��ͳ��Ŀ�ꡣ �й� PostgreSQL ��ѯ�滮��ʹ�õ�ͳ����Ϣ�ĸ�����Ϣ�� ��ο�Section 13.2��

SET STORAGE

������ʽΪһ���ֶ����ô洢ģʽ��������ÿ�������ֶ����������滹�DZ�����һ�������ı���Լ������Ƿ�Ҫѹ���� PLAIN �������ڶ�������ֵ������ integer�������������ģ���ѹ���ġ� MAIN ������������ѹ�������ݡ� EXTERNAL �����ⲿ���棬��ѹ�������ݣ� �� EXTENDED �����ⲿ��ѹ�����ݡ� EXTENDED �Ǵ����֧�ַ� PLAIN �洢������֮ȱʡ�� ʹ�� EXTERNAL ������ text �ֶ��ϵ����ִ��������죬 �����Ĵ����������˴洢�ռ䡣 ��ע�� SET STORAGE �������ı���ϵ��κζ����� ֻ�����ý����ı����ʱ������ʹ�õIJ��ԡ����� Section 49.2 ��ȡ������Ϣ��

ADD table_constraint

�����ʽ��������һ���µ�Լ�����õ��﷨�� CREATE TABLE һ����

DROP CONSTRAINT

�����ʽɾ��һ�����ϵ�Լ���� Ŀǰ���ڱ��ϵ�Լ����Ҫ����Ψһ�����֣���˿����ж��Լ��ƥ�����������֡� ����������Լ��������ɾ����

CLUSTER

������ʽΪ������ CLUSTER ѡ��ѡ��ȱʡ��������ʵ���ϲ������¶Ա��ء�

SET WITHOUT CLUSTER

������ʽ�ӱ���ɾ������ʹ�õ� CLUSTER ������ ������Ӱ�콫����Щû�����������Ľ��ز�����

SET WITHOUT OIDS

������ʽ�ӱ���ɾ�� oid ϵͳ�ֶΡ� ���� DROP COLUMN oid RESTRICT ��ȫ��ͬ�� ֻ��������������Ѿ�û�� oid �ֶ��ˣ���ô�����ᱨ�����

��ע�⣬������ij�� ALTER TABLE �ı��ֿ�����ɾ���� OID ֮���ٰ����ǻָ�������

RENAME

RENAME ��ʽ�ı�һ��������֣�������һ��������һ�����У�����һ����ͼ�������DZ���һ�������ֶε����֡� ���Դ洢������û���κ�Ӱ�졣

OWNER

�����ʽ�ı�����������л�����ͼ��������Ϊָ�������ߡ�

SET TABLESPACE

������ʽ�ѱ�ı�ռ��޸�Ϊָ���ı�ռ䲢�Ұ������ص������ļ��ƶ����µı�ռ�ȥ�� ����ڱ������������򲻻��ƶ����������ǿ���ͨ������� SET TABLESPACE �����ƶ������� CREATE TABLESPACE��

RENAME

RENAME ��ʽ�ı�һ��������һ�����������У�������ͼ�������֣� �����DZ��ж����ֶε����֡����ǶԴ洢������û��Ӱ�졣

���� RENAME ֮�����ж���������������һ������޸ĵ��б���ͬʱʩ�á� ���磬���ǿ�����һ�����������Ӽ����ֶκ�/���޸ļ����ֶε����͡� ���ڴ����ô���ر����ã���Ϊֻ��Ҫ�Ըñ���һ�δ���

Ҫʹ�� ALTER TABLE�������ӵ�иñ� ���� ALTER TABLE OWNER ֮�⣬��ֻ���ɳ����û�ִ�С�

����

table

��ͼ���ĵ��ִ��������ģʽ���Σ������ơ� ��������� ONLY����ֻ���ĸñ� ���û������ ONLY����ñ������к��������У��������¡� ���ǿ����ڱ����ֺ��渽��һ�� * ��ʾ�������ɨ�裬������Ŀǰ�İ汾�����ȱʡ��Ϊ�� ����7.1֮ǰ�İ汾��ONLY ��ȱʡ����Ϊ����ȱʡ����ͨ���ı�����ѡ�� sql_inheritance ���ı䡣

column

�ִ���µ��ֶ����ơ�

new_column

�ִ��ֶε������ơ�

new_name

��������ơ�

type

���ֶε����ͣ������ִ��ֶε������͡�

table_constraint

����µ�Լ�����塣

constraint_name

Ҫɾ��������Լ�������֡�

index_name

Ҫ���Ϊ���صı�������������֡�

CASCADE

�Զ�ɾ�������ڱ������ֶλ���Լ���Ķ��󣨱��磬���ø��ֶε���ͼ����

RESTRICT

����ֶλ���Լ�������κ������Ķ�����ܾ�ɾ�����ֶΡ� ����ȱʡ��Ϊ��

new_owner

�ñ���������ߵ��û�����

tablespace_name

�����Ҫ�ƶ����ı�ռ����֡�

ע��

COLUMN �ؼ����Ƕ���ģ�����ʡ�ԡ�

����� ADD COLUMN ����һ���ֶΣ���ô���б��������ж���ʼ��Ϊ���ֶε�ȱʡֵ �����û������ DEFAULT �Ӿ䣬��ô���� NULL����

��һ���ǿ�ȱʡ����һ���ֶλ����Ǹı�һ���ֶε��������ͻ�Ҫ�����������д�� ���ڴ����˵������������ܻỨ�ܳ�ʱ�䣻����������ʱ��Ҫ�����Ĵ��̿ռ䡣

����һ�� CHECK ���� NOT NULL Լ��Ҫ��ɨ��ñ��Ա�֤���е��и���Լ��Ҫ��

�ṩ��һ�� ALTER TABLE ������������޸ĵ���Ҫԭ����ԭ����Ҫ�ĶԱ�Ķ��ɨ�����д������ϳ�һ���غϡ�

DROP COLUMN ������������ϰ��ֶ�ɾ���� ��ֻ�Ǽ򵥵ذ������Ϊ SQL �����в��ɼ��ġ����Ըñ�IJ���͸��½��ڸ��ֶδ洢һ�� NULL�� ��ˣ�ɾ��һ���ֶ��Ǻܿ�ģ���������������������ı��ڴ����ϵĴ�С����Ϊ��ɾ���˵��ֶ�ռ�ݵĿռ仹û�л��ա� ��Щ�ռ佫�������е��еĸ��¶��õ����ա�

ALTER TYPE Ҫ����д�������������ʱ����һ���ŵ㣬 ��Ϊ��д�Ĺ����������κα��е�û�õĿռ䡣���磬Ҫ�����̻��ձ�һ���Ѿ�ɾ�����ֶ�ռ�ݵĿռ䣬 ���ķ�����

ALTER TABLE table ALTER COLUMN anycol TYPE anytype;

���� anycol ���κ��ڱ��л����ڵ��ֶΣ��� anytype �Ǻ͸��ֶε�ԭ����һ�������͡� �����Ľ�����ڱ���û���κοɼ�������ı仯�������������ǿ����д��������ɾ���˲���ʹ�õ����ݡ�

ALTER TYPE �� USING ѡ��ʵ���Ͽ��������漰���о�ֵ���κα��ʽ�� Ҳ����˵�����������ó������ڱ�ת�����ֶ�֮���������ֶΡ����������ǾͿ����� ALTER TYPE �﷨���dz��ձ��Ե�ת������Ϊ�������ԣ�USING ���ʽ��û��ʩ���ڸ��ֶε�ȱʡֵ������еĻ����� ������ܲ���ȱʡ���ʽҪ��ij������ʽ�� �����ζ������Ӿ����͵����������û���������߸�ֵת���Ļ��� ��ô��ʹ���� USING �Ӿ������£� ALTER TYPE Ҳ�����޷���ȱʡֵת�����µ����͡� ����������£�����Ӧ���� DROP DEFAULT ��ɾ��ȱʡ�� ִ�� ALTER TYPE��Ȼ��ʹ�� SET DEFAULT ����һ�����ʵ���ȱʡ�� ���ƵĿ���Ҳ�������漰���ֶε�������Լ����

��������κκ������ô������ں��������ͬ�����޸ĵĻ��� �Ͳ������ڸ��������ӣ������������޸�һ���ֶε����ͣ�Ҳ����˵�� ALTER TABLE ONLY�����ܾ��������ͱ�֤�˺���������к͸���ƥ����ֶΡ�

һ���ݹ�DROP COLUMN ������ֻ���ں���������κ����������м̳и��ֶβ��Ҵ���û�ж���������ֶε�ʱ�����ɾ��һ���������ֶΡ� һ���ǵݹ��DROP COLUMN��Ҳ���ǣ�ALTER TABLE ONLY ... DROP COLUMN����������ɾ���κκ���ֶΣ� ���ǰ����DZ��Ϊ��������ģ������Ǽ̳еġ�

���������ϵͳ��ṹ���κβ��֡�

��ο� CREATE TABLE ���ֻ�ȡ������Ч������������ Chapter 5 ���и����йؼ̳е���Ϣ��

����

���������һ�� varchar �У�

ALTER TABLE distributors ADD COLUMN address varchar(30);

�ӱ���ɾ��һ���ֶΣ�

ALTER TABLE distributors DROP COLUMN address RESTRICT;

��һ���������޸����������ֶε����ͣ�

ALTER TABLE distributors
    ALTER COLUMN address TYPE varchar(80),
    ALTER COLUMN name TYPE varchar(100);

ʹ��һ�� USING �Ӿ䣬 ��һ������ UNIX ʱ����� integer �ֶ�ת���� timestamp with time zone��

ALTER TABLE foo
    ALTER COLUMN foo_timestamp TYPE timestamp with time zone
    USING
        timestamp with time zone 'epoch' + foo_timestamp * interval '1 second';

���ִ��ֶθ�����

ALTER TABLE distributors RENAME COLUMN address TO city;

�����ִ������֡�

ALTER TABLE distributors RENAME TO suppliers;

��һ���ֶ�����һ���ǿ�Լ����

ALTER TABLE distributors ALTER COLUMN street SET NOT NULL;

��һ���ֶ���ɾ��һ���ǿ�Լ����

ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL;

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

ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);

ɾ��һ��������������ӱ�ļ��Լ����

ALTER TABLE distributors DROP CONSTRAINT zipchk;

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

ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses(address) MATCH FULL;

��������һ�������ֶΣ�ΨһԼ����

ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode);

��һ��������һ���Զ�����������Լ����Ҫע�����һ����ֻ����һ��������

ALTER TABLE distributors ADD PRIMARY KEY (dist_id);

�ѱ��ƶ�������һ����ռ䣺

ALTER TABLE distributors SET TABLESPACE fasttablespace;

������

ADD��DROP���� SET DEFAULT ��ʽ�� SQL ��׼���ݡ� ������ʽ�� PostgreSQL �� SQL ��׼����չ�� ���У���һ�� ALTER TABLE ��������������һ������Ҳ����չ��

ALTER TABLE DROP COLUMN ��������ɾ�����е�Ψһ��һ���ֶΣ� ����һ�����ֶεı����Ƕ� SQL ����չ�������������ֶα�