• 【PostgreSQL-9.6.3】约束


    PostgreSQL中的约束有以下五种:主键约束、外键约束、非空约束、唯一性约束、默认约束。下面分别对这五种约束作说明。

    一、主键约束(PrimaryKey Constraint

    主键约束要求主键列中的数据非空且唯一,也就是说主键约束其实已经含有非空、唯一性两种约束。主键能够唯一标识数据表中的一

    行记录,可以配合外键来定义不

    同表之间的关系,并提高查询速度。主键分为两种类型:单字段主键和多字段联合主键。

    1.单字段主键

    主键由一个字段组成,SQL语句中可以有两种定义格式:

     

    (1)在定义列的同时定义主键

    column_name type primary key

    如创建表test,定义id列为主键:

    createtable test (

    id int primary key,

    first_name varchar2(10),

    job varchar2(15)

    );

     

    (2)在定义完所有列后定义主键,即表级别定义主键

    [constraintconstraint_name] primary key (column_name)

    如创建表test,定义id列为主键:

    createtable test (

    id int,

    first_name varchar2(10),

    job varchar2(15),

    primarykey (id)

    );

     

    2.多字段联合主键

    主键由多个字段组合而成,SQL格式如下:

    primarykey [column1,column2,column3…]

    如创建表test,定义id,first_name列为主键:

    createtable test (

    id int,

    first_name varchar2(10),

    job varchar2(15),

    primarykey (id,first_name)

    );

     

    二、外键约束(ForeignKey Constraint

    外键用来连接两张表,可以是一列或者多列,同一张表中可以有一个或者多个外键。外键可以为空值,但只要不为空,它的值就是主

    表里面的主键。主键所在的表称

    为主表,或者父表;外键所在的表称为从表,或者子表。外键的创建语句格式为:

    [constraint<外键名>]foreign key column1 [column2,column3…]

    references<主表名>主键列1[主键列2,主键列3…]

    如创建表test1,定义id1列为外键,参照test2表的主键列id2

    createtable test (

    id1 int,

    first_name varchar2(10),

    job varchar2(15),

    constraintfk_test2_id2 foreign key (id1) references test2 (id2)

    );

     

    三、非空约束(NotNull Constraint

    非空约束,顾名思义指字段的值不能为空,当向定义了非空约束的列插入空值时,数据库会报错。非空约束的定于语句为:

    column_name type not null

    如定义test表的id列为非空:

    createtable test (

    id int not null,

    first_name varchar2(10),

    job varchar2(15)

    );

     

    四、唯一性约束(UniqueConstraint

    唯一性约束要求所在列的值不能重复,并且最多出现一个空值。唯一性约束可以指定一列或者多列的唯一性。

    1.定义列的同时定义唯一性约束

    column_name type unique

    如创建表test,定义id列为唯一:

    createtable test (

    id int unique,

    first_name varchar2(10),

    job varchar2(15)

    );

     

    2.在定义完所有列以后指定唯一约束

    [constraint<constraint_name>] unique (column_name)

    如创建表test,定义id列为唯一:

    createtable test (

    id int ,

    first_name varchar2(10),

    job varchar2(15)

    constraintU_id unique (id)

    );

     

    五、默认约束(DefaultConstraint

    默认约束,即为指定列定义默认值,当向表中插入一条记录,即使被定义列没有被赋值,数据库也会给这个列赋予一个之前定义的默

    认值。

    column_name type default default_value

    如创建表test,定义列id的默认值为00

    如创建表test,定义id列为唯一:

    createtable test (

    id int default 00,

    first_name varchar2(10),

    job varchar2(15)

    );

  • 相关阅读:
    内存对齐
    C++中构造函数
    计算机视觉领域的大牛主页
    各种银行卡的收费情况
    常识
    毕业生必须知道
    计算机视觉领域资料
    人际关系
    生活常识
    可使用在项目的web gantt甘特图有哪些?
  • 原文地址:https://www.cnblogs.com/NextAction/p/7366617.html
Copyright © 2020-2023  润新知