本机网站建设,zen cart 创建的网站,购物网站为什么做移动端,设计的有趣的网站PostgreSQL 是一个功能强大的开源关系型数据库管理系统 (RDBMS)#xff0c;支持标准的 SQL 语法#xff0c;并扩展了许多功能强大的操作语法.
数据类型 数值类型 数据类型描述存储大小示例值SMALLINT小范围整数#xff0c;范围#xff1a;-32,768 到 32,7672 字节-123INTE…PostgreSQL 是一个功能强大的开源关系型数据库管理系统 (RDBMS)支持标准的 SQL 语法并扩展了许多功能强大的操作语法.
数据类型 数值类型 数据类型描述存储大小示例值SMALLINT小范围整数范围-32,768 到 32,7672 字节-123INTEGER 或 INT中范围整数范围-2,147,483,648 到 2,147,483,6474 字节12345BIGINT大范围整数范围-9,223,372,036,854,775,808 到 9,223,372,036,854,775,8078 字节12345678901234NUMERIC(p, s) 或 DECIMAL(p, s)精确的数字p 是总位数s 是小数点后位数可变长1234.56REAL 或 FLOAT4单精度浮点数范围6 位小数精度4 字节1.23DOUBLE PRECISION 或 FLOAT8双精度浮点数范围15 位小数精度8 字节123.45678SERIAL自动递增整数等同于 INTEGER 自增4 字节1, 2, 3...BIGSERIAL自动递增整数等同于 BIGINT 自增8 字节1, 2, 3... 字符类型 数据类型描述存储大小示例值CHAR(n) 或 CHARACTER(n)固定长度字符串不足位数会用空格补齐n 字节abc VARCHAR(n) 或 CHARACTER VARYING(n)可变长度字符串最多 n 个字符实际长度 1 字节abcTEXT不限长度的字符串可变长Hello, world!说明1CHAR(n) 固定长度适合存储固定格式的字符串。2VARCHAR(n) 是常用的可变长度类型。3TEXT 用于存储长文本。 布尔类型 数据类型描述存储大小示例值BOOLEAN布尔值TRUE、FALSE 或 NULL1 字节TRUE 日期和时间类型 数据类型描述存储大小示例值DATE日期不包含时间4 字节2025-01-06TIME [WITHOUT TIME ZONE]时间不包含日期8 字节12:30:00TIMESTAMP [WITHOUT TIME ZONE]日期和时间8 字节2025-01-06 12:30:00TIMESTAMP WITH TIME ZONE带时区的日期和时间8 字节2025-01-06 12:30:0008INTERVAL时间间隔16 字节1 year 2 months 几何类型 数据类型描述示例值POINT平面中的一个点(1.5, 2.5)LINE无限长的直线{1, -1, 0}LSEG有限线段(1.5, 2.5), (3.5, 4.5)BOX矩形框((1, 2), (3, 4))PATH路径开或闭((1, 1), (2, 2), (3, 3))POLYGON多边形((1, 1), (2, 2), (3, 3))CIRCLE圆形(1, 1), 5 几何类型用于存储点、线、圆等几何信息 数组类型 数据类型描述示例值INTEGER[]整数数组{1, 2, 3}TEXT[]文本数组{hello, world} JSON和JSONB类型 数据类型描述示例值JSON原始 JSON 格式保留格式{key: value}JSONB二进制存储的 JSON查询更快{key: value} UUID类型 数据类型描述示例值UUID通用唯一标识符 (128 位)a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 XML类型 数据类型描述示例值XMLXML 数据notetoTove/to/note 枚举类型 枚举类型允许定义一组固定值。 CREATE TYPE mood AS ENUM (happy, sad, neutral);使用 CREATE TABLE person (name TEXT,current_mood mood
); 范围类型 数据类型描述示例值INT4RANGE整数范围[1,10)NUMRANGE数字范围[1.5,2.5)TSRANGE不带时区的时间范围[2023-01-01, 2023-12-31)TSTZRANGE带时区的时间范围[2023-01-01 00:00:0000, 2023-12-31 23:59:5900)
数据操作
创建数据库和用户
// 创建数据库
CREATE DATABASE database_name;// 删除数据库
DROP DATABASE database_name;// 创建用户
CREATE USER user_name WITH PASSWORD password;// 为用户授予权限
GRANT ALL PRIVILEGES ON DATABASE database_name TO user_name;
数据定义语言 (DDL)
// 创建表
CREATE TABLE table_name (column_name1 data_type [constraints],column_name2 data_type [constraints],...
);// 添加列
ALTER TABLE table_name ADD COLUMN column_name data_type;// 修改列
ALTER TABLE table_name ALTER COLUMN column_name TYPE new_data_type;// 删除列
ALTER TABLE table_name DROP COLUMN column_name;// 删除表
DROP TABLE table_name;数据操作语言 (DML)
基本查询
// 插入数据
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);// 查询数据
SELECT column1, column2 FROM table_name WHERE condition;SELECT * FROM table_name;// 更新数据
UPDATE table_name SET column1 value1, column2 value2 WHERE condition;// 删除数据
DELETE FROM table_name WHERE condition;扩展查询
// 分组查询
SELECT column1, COUNT(*) FROM table_name GROUP BY column1 HAVING COUNT(*) 1;// 连接查询JOIN
内连接
SELECT a.column1, b.column2
FROM table1 a
INNER JOIN table2 b
ON a.common_column b.common_column;左连接
SELECT a.column1, b.column2
FROM table1 a
LEFT JOIN table2 b
ON a.common_column b.common_column;右连接
SELECT a.column1, b.column2
FROM table1 a
RIGHT JOIN table2 b
ON a.common_column b.common_column;// 子查询
SELECT column1
FROM table_name
WHERE column2 IN (SELECT column2FROM another_tableWHERE condition
);
PostgreSQL特性
PostgreSQL提供了几种丰富的数据类型有一些特定的用法。
数组
在 PostgreSQL 中数组是一种非常强大的数据类型它可以存储一组同类型的值例如整数、文本等以下是关于数组的详细用法。
创建数组字段
CREATE TABLE users (id SERIAL PRIMARY KEY,name TEXT,favorite_numbers INTEGER[], -- 整数数组字段favorite_colors TEXT[] -- 文本数组字段
); 插入数组数据
INSERT INTO users (name, favorite_numbers, favorite_colors)
VALUES (Alice, {1, 2, 3}, {red, blue, green});
查询数组数据
// 查询 favorite_numbers 包含 2 的用户
SELECT name FROM users WHERE 2 ANY (favorite_numbers);// 查询数组是否包含所有指定值
-- 查询 favorite_numbers 包含所有值 {1, 2} 的用户
SELECT name FROM users WHERE favorite_numbers {1, 2, 4};// 查询数组是否为另一个数组的子集
-- 查询 favorite_numbers 是 {1, 2, 3} 的子集的用户
SELECT name FROM users WHERE favorite_numbers {1, 2, 3};
更新数组
// 向 Alice 的 favorite_numbers 中追加一个新值 40
UPDATE users SET favorite_numbers favorite_numbers || 40 WHERE name Alice;// 将 Alice 的 favorite_numbers 的第 1 个元素更新为 100
UPDATE users SET favorite_numbers[1] 100 WHERE name Alice;
删除数据中元素
UPDATE users SET favorite_numbers array_remove(favorite_numbers, 40) WHERE name Alice;
PostgreSQL 提供了许多用于数组操作的内置函数和操作符
操作符/函数描述示例ARRAY[...]创建数组SELECT ARRAY[1, 2, 3];ANY (array)判断值是否在数组中SELECT 2 ANY({1, 2, 3});数组包含另一个数组SELECT {1, 2, 3}::int[] {1, 2};数组是另一个数组的子集SELECT {1, 2}::int[] {1, 2, 3};array_length(array, n)获取数组的长度SELECT array_length({1, 2, 3}, 1);unnest(array)将数组展开为行SELECT unnest({1, 2, 3}::int[]);array_remove删除数组中某个值UPDATE users SET favorite_numbers array_remove(favorite_numbers, 40)
JSON和JSONB
在 PostgreSQL 中JSON 和 JSONB 是两种用于存储 JSON 数据的列类型。它们功能强大广泛用于现代应用中。
JSON 与 JSONB 的主要区别 存储方式 JSON以文本格式存储数据存储和检索时保持输入顺序。JSONB以二进制格式存储经过解析和去重处理键的顺序不保存。 性能 JSON适合读取为原始 JSON 字符串查询效率较低。JSONB支持索引查询和操作效率更高。 使用场景 JSON需要保持原始 JSON 数据格式如调试或日志记录。JSONB需要高效查询、过滤或处理 JSON 数据。
创建表
CREATE TABLE example (id SERIAL PRIMARY KEY,data JSON, -- 存储为 JSON 格式data_b JSONB -- 存储为 JSONB 格式
);
插入数据
INSERT INTO example (data, data_b) VALUES
({name: Alice, age: 25, tags: [developer, gamer]}, {name: Alice, age: 25, tags: [developer, gamer]}); 查询数据
1. 访问 JSON 数据的字段
使用 - 和 - 操作符
-提取字段为 JSON 类型。-提取字段为文本类型。
-- 提取 JSON 对象的字段
SELECT data-name AS name_json, data_b-name AS name_jsonb FROM example;-- 提取字段值为文本
SELECT data-name AS name_text, data_b-name AS name_text FROM example;
2、查询嵌套数据
-- 提取嵌套 JSON 对象中的字段值
SELECT data-tags-0 AS first_tag, data_b-tags-0 AS first_tag FROM example;3、JSONB函数和操作符
检查字段是否存 -- 检查 JSONB 中是否包含某个字段
SELECT data_b ? name AS has_name FROM example;-- 检查多个字段是否存在
SELECT data_b ? array[name, age] AS has_all
FROM example; 数组操作 -- 查询 JSONB 数组是否包含某个值
SELECT data_b-tags ? developer AS contains_tag FROM example; 删除字段 SELECT data_b - age AS without_age FROM example; 数据更新
// 更新json数据中age字段值为30
UPDATE example SET data_b jsonb_set(data_b, {age}, 30)
WHERE data_b-name Alice; 文章转载自: http://www.morning.bnqcm.cn.gov.cn.bnqcm.cn http://www.morning.gediba.com.gov.cn.gediba.com http://www.morning.nbgfz.cn.gov.cn.nbgfz.cn http://www.morning.jypqx.cn.gov.cn.jypqx.cn http://www.morning.blxlf.cn.gov.cn.blxlf.cn http://www.morning.nzfyx.cn.gov.cn.nzfyx.cn http://www.morning.qbmjf.cn.gov.cn.qbmjf.cn http://www.morning.mypxm.com.gov.cn.mypxm.com http://www.morning.kyzja.com.gov.cn.kyzja.com http://www.morning.tbnpn.cn.gov.cn.tbnpn.cn http://www.morning.lngyd.cn.gov.cn.lngyd.cn http://www.morning.jfxth.cn.gov.cn.jfxth.cn http://www.morning.yhglt.cn.gov.cn.yhglt.cn http://www.morning.qgxnw.cn.gov.cn.qgxnw.cn http://www.morning.rsnd.cn.gov.cn.rsnd.cn http://www.morning.chmkt.cn.gov.cn.chmkt.cn http://www.morning.gktds.cn.gov.cn.gktds.cn http://www.morning.ntcmrn.cn.gov.cn.ntcmrn.cn http://www.morning.tbwsl.cn.gov.cn.tbwsl.cn http://www.morning.nflpk.cn.gov.cn.nflpk.cn http://www.morning.zmqb.cn.gov.cn.zmqb.cn http://www.morning.pwggd.cn.gov.cn.pwggd.cn http://www.morning.qzzmc.cn.gov.cn.qzzmc.cn http://www.morning.qmncj.cn.gov.cn.qmncj.cn http://www.morning.wngpq.cn.gov.cn.wngpq.cn http://www.morning.jnkng.cn.gov.cn.jnkng.cn http://www.morning.gwdmj.cn.gov.cn.gwdmj.cn http://www.morning.hhmfp.cn.gov.cn.hhmfp.cn http://www.morning.ccyns.cn.gov.cn.ccyns.cn http://www.morning.fxwkl.cn.gov.cn.fxwkl.cn http://www.morning.mnqz.cn.gov.cn.mnqz.cn http://www.morning.tkzqw.cn.gov.cn.tkzqw.cn http://www.morning.yrctp.cn.gov.cn.yrctp.cn http://www.morning.lgtzd.cn.gov.cn.lgtzd.cn http://www.morning.ngqdp.cn.gov.cn.ngqdp.cn http://www.morning.sdamsm.com.gov.cn.sdamsm.com http://www.morning.rckmz.cn.gov.cn.rckmz.cn http://www.morning.ltfnl.cn.gov.cn.ltfnl.cn http://www.morning.mkczm.cn.gov.cn.mkczm.cn http://www.morning.hyryq.cn.gov.cn.hyryq.cn http://www.morning.wschl.cn.gov.cn.wschl.cn http://www.morning.fhrgk.cn.gov.cn.fhrgk.cn http://www.morning.ydrml.cn.gov.cn.ydrml.cn http://www.morning.yrrnx.cn.gov.cn.yrrnx.cn http://www.morning.bsbcp.cn.gov.cn.bsbcp.cn http://www.morning.jzdfc.cn.gov.cn.jzdfc.cn http://www.morning.rtryr.cn.gov.cn.rtryr.cn http://www.morning.pdmsj.cn.gov.cn.pdmsj.cn http://www.morning.nxpqw.cn.gov.cn.nxpqw.cn http://www.morning.mrkbz.cn.gov.cn.mrkbz.cn http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn http://www.morning.dmsxd.cn.gov.cn.dmsxd.cn http://www.morning.glxmf.cn.gov.cn.glxmf.cn http://www.morning.xcbnc.cn.gov.cn.xcbnc.cn http://www.morning.wwklf.cn.gov.cn.wwklf.cn http://www.morning.ylsxk.cn.gov.cn.ylsxk.cn http://www.morning.jfch.cn.gov.cn.jfch.cn http://www.morning.znkls.cn.gov.cn.znkls.cn http://www.morning.mpflb.cn.gov.cn.mpflb.cn http://www.morning.zgnng.cn.gov.cn.zgnng.cn http://www.morning.mfqmk.cn.gov.cn.mfqmk.cn http://www.morning.nbqwr.cn.gov.cn.nbqwr.cn http://www.morning.fhjnh.cn.gov.cn.fhjnh.cn http://www.morning.ndfwh.cn.gov.cn.ndfwh.cn http://www.morning.gbyng.cn.gov.cn.gbyng.cn http://www.morning.pshpx.cn.gov.cn.pshpx.cn http://www.morning.xdttq.cn.gov.cn.xdttq.cn http://www.morning.dnvhfh.cn.gov.cn.dnvhfh.cn http://www.morning.brps.cn.gov.cn.brps.cn http://www.morning.nzxdz.cn.gov.cn.nzxdz.cn http://www.morning.ntzfj.cn.gov.cn.ntzfj.cn http://www.morning.jqbmj.cn.gov.cn.jqbmj.cn http://www.morning.lskyz.cn.gov.cn.lskyz.cn http://www.morning.bpds.cn.gov.cn.bpds.cn http://www.morning.xqzrg.cn.gov.cn.xqzrg.cn http://www.morning.wnwjf.cn.gov.cn.wnwjf.cn http://www.morning.bpds.cn.gov.cn.bpds.cn http://www.morning.fwjfh.cn.gov.cn.fwjfh.cn http://www.morning.gmmxh.cn.gov.cn.gmmxh.cn http://www.morning.ctpfq.cn.gov.cn.ctpfq.cn