【数据库】PostgreSQL数据库入门(二)

1. 模式

模式在PostgreSQL中,类似于目录。同一数据库,不同模式下,可以存放相同名称的数据表。模式下,通常可以存放不同的数据对象,如表、视图、函数、存储过程、触发器、索引等。默认情况下会使用系统创建的public作为数据表的schema。

postgres=# \dn
  List of schemas
  Name  |  Owner   
--------+----------
 public | postgres
(1 row)

通常我们可以使用create关键字直接创建模式,通过[schema_name].table_name来指定需要将数据表创建在哪个模式下。

create schema myschema;
create table myschema.tb_user (
			id serial primary key);

模式在删除时使用drop关键字,需要确保模式中不存在任何数据库对象,否则需要使用cascade进行级联删除。

2. Exclusion约束

PostgreSQL也提供了许多约束,如主键、唯一、不为空等等。Exclusion是一种排他约束。

  1. 要获得扩展支持,首先我们需要安装PostgreSQL的另一组件,需要根据PostgreSQL的版本进行选择。执行yum -y install postgresql12-contrib.x86_64即可。
  2. 为数据库创建扩展。
postgres=# create extension btree_gist;
CREATE EXTENSION
  1. 创建exclusion约束。
postgres=# create table public.tb_employee (
postgres(# id serial primary key,
postgres(# name text,
postgres(# age integer,
postgres(# exclude using gist (name with =, age with <>)
postgres(# );
CREATE TABLE
  1. name相同,age不相同则不允许插入
postgres=# insert into tb_employee(name, age) values('Zhangsan', 12);
INSERT 0 1
postgres=# insert into tb_employee(name, age) values('Zhangsan', 13);
ERROR:  conflicting key value violates exclusion constraint "tb_employee_name_age_excl"
DETAIL:  Key (name, age)=(Zhangsan, 13) conflicts with existing key (name, age)=(Zhangsan, 12).
postgres=# insert into tb_employee(name, age) values('Lisi', 12);
INSERT 0 1

3.存储过程(procedure)

PostgreSQL官方支持PL/pgSQL、PL/Tcl、PL/Perl和PL/Python等过程语言,同时还支持第三方提供的过程语言,如PL/Java、PL/PHP、PL/Py、PL/R、PL/Ruby、PL/Scheme、PL/sh。

4. Json和Jsonb数据类型用法

  1. 创建数据表

    在这里插入图片描述
  2. 插入json格式数据

    在这里插入图片描述
  3. 查询contact字段的值

    在这里插入图片描述
  4. 添加或减少contact字段的键值

    在这里插入图片描述
  5. 按属性值进行查找

    在这里插入图片描述
  6. 按匹配进行查找

    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值