从零学习 postgresql 数据库

Posted yang_z_1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零学习 postgresql 数据库相关的知识,希望对你有一定的参考价值。

从零学习 postgresql 数据库

一 创建数据库

1.1创建数据库cs

CREATE DATABASE "cs";

1.2 创建所有者是postgres的数据库cs

CREATE DATABASE "1.2"
WITH
  OWNER = "postgres"
;

1.3 创建采用UTF8格式的数据库

CREATE DATABASE "cs"
WITH
  ENCODING = 'UTF8'
;

1.4 表空间是 pg_default 的数据库

CREATE DATABASE "cs"
WITH
  ENCODING = 'UTF8'
  TABLESPACE = "pg_default"
;

1.5给 数据库家注释

COMMENT ON DATABASE "cs" IS '测试用数据库';

上面合起来:

CREATE DATABASE "cs"
WITH
  OWNER = "postgres"
  ENCODING = 'UTF8'
  TABLESPACE = "pg_default"
 
;

COMMENT ON DATABASE "cs" IS '测试用数据库';

二 创建模式 ms

2.1 创建模式ms

CREATE SCHEMA "ms";

2.2 增加所属角色

CREATE SCHEMA "ms" AUTHORIZATION "postgres";

2.3 注释

COMMENT ON SCHEMA "ms" IS '我就是无聊';

三 创建表

3.1 创建普通表

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( 一个或多个列 )
);

实例:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

创建外部表

1.安装扩展
create extension postgres_fdw;

2.创建外部服务器
create server [外部服务器名称] foregin data wrapper postgres_fdw options(host ‘部署ip’,port ‘端口号’ , dbname ‘数据库名称’);

3.定义用户映射
create user mapping for [实际外部表属于的数据库用户名] server [外部服务器名称] options(user ‘数据库用户名’, password ‘数据库密码’;

4.直接创建外部表
create foreign table [表名] (
id character varing(36),
name character varing(64)
)
server [外部服务器名称]
options(schema_name ‘表空间名称’,table_name ‘被映射数据表’);
5. 直接插入模式下的所有表
创建一个模式

插入外部服务器下的所有表
import FOREIGN SCHEMA 旧的模式名 from server 外部服务器名称 into 新的模式名 ;

所有的视图都会变成表

-- 创建字典表
CREATE TABLE "cs"."tb_cs_dict" (
  "id" varchar(36) COLLATE "pg_catalog"."default" NOT NULL,
  "parent_id" varchar(36) COLLATE "pg_catalog"."default",
  "dict_group" varchar(30) COLLATE "pg_catalog"."default",
  "name" varchar(20) COLLATE "pg_catalog"."default" NOT NULL,
  "category" varchar(50) COLLATE "pg_catalog"."default" NOT NULL,
  "dict_value" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
  "sort" int4 NOT NULL DEFAULT 1,
  "description" varchar(50) COLLATE "pg_catalog"."default",
  "deleted" char(1) COLLATE "pg_catalog"."default" NOT NULL DEFAULT 0,
  "create_by" varchar(36) COLLATE "pg_catalog"."default" NOT NULL DEFAULT 'cstem'::character varying,
  "create_time" timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "update_by" varchar(36) COLLATE "pg_catalog"."default" NOT NULL DEFAULT 'cstem'::character varying,
  "update_time" timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  CONSTRAINT "tb_cs_dict_pkey" PRIMARY KEY ("id")
)
;

ALTER TABLE "public"."tb_cs_dict" 
  OWNER TO "postgres";

COMMENT ON COLUMN "public"."tb_cs_dict"."id" IS 'ID';

COMMENT ON COLUMN "public"."tb_cs_dict"."parent_id" IS '父级ID';

COMMENT ON COLUMN "public"."tb_cs_dict"."dict_group" IS '分组';

COMMENT ON COLUMN "public"."tb_cs_dict"."name" IS '名称';

COMMENT ON COLUMN "public"."tb_cs_dict"."category" IS '分类';

COMMENT ON COLUMN "public"."tb_cs_dict"."dict_value" IS '字典值';

COMMENT ON COLUMN "public"."tb_cs_dict"."sort" IS '顺序';

COMMENT ON COLUMN "public"."tb_cs_dict"."description" IS '描述';

COMMENT ON COLUMN "public"."tb_cs_dict"."deleted" IS '是否已删除';

COMMENT ON COLUMN "public"."tb_cs_dict"."create_by" IS '创建人';

COMMENT ON COLUMN "public"."tb_cs_dict"."create_time" IS '创建时间';

COMMENT ON COLUMN "public"."tb_cs_dict"."update_by" IS '更新人';

COMMENT ON COLUMN "public"."tb_cs_dict"."update_time" IS '更新时间';

COMMENT ON TABLE "public"."tb_cs_dict" IS '字典表';

四 创建表空间

create tablespace “表空间名” location ‘路径’;

create tablespace "TestDbs2" location '\\tmp\\pg';

创建角色

1创建角色

CREATE ROLE "cc"

2创建可以登录的角色

CREATE ROLE "cc" LOGIN PASSWORD 'sssss';
CREATE ROLE "角色名" LOGIN PASSWORD '密码';

CREATE ROLE "cc" SUPERUSER LOGIN PASSWORD 'sssss';
-- 超级用户

GRANT Connect, Create, Temporary ON DATABASE "数据名" TO "cc";
-- 赋权数据库
GRANT Create, Usage ON SCHEMA "模式名" TO "cc";
-- 赋权模式

以上是关于从零学习 postgresql 数据库的主要内容,如果未能解决你的问题,请参考以下文章

从零开始配置vim(27)——代码片段

从零开始配置vim(27)——代码片段

从零开始配置vim(27)——代码片段

PostgreSQL 是不是支持表(片段)的透明压缩?

《从零开始学Swift》学习笔记(Day1)——我的第一行Swift代码

学习《从零开始学Python网络爬虫》PDF+源代码+《精通Scrapy网络爬虫》PDF