从零学习 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 数据库的主要内容,如果未能解决你的问题,请参考以下文章