PostgreSQL教程(一):数据表详解

一、表的定义:

    对于任何一种关系型数据库而言,表都是数据存储的最核心、最基础的对象单元。现在就让我们从这里起步吧。
    1. 创建表:
 

复制代码 代码如下:
    CREATE TABLE products (
        product_no integer,
        name text,
        price numeric
    );
   

    2. 删除表:
 

复制代码 代码如下:
    DROP TABLE products;
 

    
    3. 创建带有缺省值的表:
 

复制代码 代码如下:
    CREATE TABLE products (
        product_no integer,
        name text,
        price numeric DEFAULT 9.99 –DEFAULT是关键字,其后的数值9.99是字段price的默认值。
    );
   
    CREATE TABLE products (
        product_no SERIAL,            –SERIAL类型的字段表示该字段为自增字段,完全等同于Oracle中的Sequence。
        name text,
        price numeric DEFAULT 9.99
    );
 

    输出为:
 

复制代码 代码如下:
    NOTICE:  CREATE TABLE will create implicit sequence “products_product_no_seq” for serial column “products.product_no”
   

    4. 约束:
    检查约束是表中最为常见的约束类型,它允许你声明在某个字段里的数值必须满足一个布尔表达式。不仅如此,我们也可以声明表级别的检查约束。
 

复制代码 代码如下:
    CREATE TABLE products (
        product_no integer,
        name text,
        –price字段的值必须大于0,否则在插入或修改该字段值是,将引发违规错误。还需要说明的是,该检查约束
        –是匿名约束,即在表定义时没有显示命名该约束,这样PostgreSQL将会根据当前的表名、字段名和约束类型,
        –为该约束自动命名,如:products_price_check。
        price numeric CHECK (price > 0)
    );
 
    CREATE TABLE products (
        product_no integer,
        name text,
        –该字段的检查约束被显示命名为positive_price。这样做好处在于今后维护该约束时,可以根据该名进行直接操作。
        price numeric CONSTRAINT positive_price CHECK (price > 0)
    );
 

    下面的约束是非空约束,即约束的字段不能插入空值,或者是将已有数据更新为空值。
 

复制代码 代码如下:
    CREATE TABLE products (
        product_no integer NOT NULL,
        name text NOT NULL,
        price numeric
    );
 

    如果一个字段中存在多个约束,在定义时可以不用考虑约束的声明顺序。
 

复制代码 代码如下:
    CREATE TABLE products (
        product_no integer NOT NULL,
        name text NOT NULL,
        price numeric NOT NULL CHECK (price > 0)
    );
 

    唯一性约束,即指定的字段不能插入重复值,或者是将某一记录的值更新为当前表中的已有值。
 

复制代码 代码如下:
    CREATE TABLE products (
        product_no integer UNIQUE,
        name text,
        price numeric
    );

    CREATE TABLE products (
        product_no integer,
        name text,
        price numeric,
        UNIQUE (product_no)
    );

原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/232762.html

(0)
上一篇 2022年1月23日
下一篇 2022年1月23日

相关推荐

发表回复

登录后才能评论