一、表的定义:
对于任何一种关系型数据库而言,表都是数据存储的最核心、最基础的对象单元。现在就让我们从这里起步吧。
1. 创建表:
复制代码 代码如下:
CREATE TABLE products (
product_no integer,
name text,
price numeric
);
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
);
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)
);
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
);
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)
);
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
);
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/tech/database/232762.html
赞 (0)