PostgreSQL 网络地址类型
在 PostgreSQL 中,网络地址类型主要用于存储和处理网络相关的数据。其中,最常见的网络地址类型是 inet 和 cidr。1. inet(IP地址): 用于存储 IPv4 或 IPv6 地址。 -- 例如,表示IPv4地址 192.168.0.1 inet '192.168.0.1' -- 表示IPv6地址 inet '::1'2. cidr(CIDR块): 用于存储一个 IP 地址范围。 -- 例如,表示一个 IPv4 CIDR 块 cidr '192.168.0.0/24' -- 表示一个 IPv6 CIDR 块 cidr '2001:db8::/32'这两个类型都支持在查询中进行各种网络相关的操作,例如判断某个 IP 是否属于某个 CIDR 块、计算两个 IP 之间的距离等。例如,可以使用 inet 类型来存储和查询主机的 IP 地址,或者使用 cidr 类型来表示和查询网络的子网划分情况。在 PostgreSQL 中,可以使用如下的 SQL 来创建包含网络地址的表:CREAT...
PostgreSQL 几何类型
PostgreSQL 中有几何类型,用于表示和处理空间数据。主要的几何类型包括:1. 点(Point): 表示二维平面中的一个点。可以通过坐标(X,Y)来定义。 -- 例如,表示坐标为 (1, 2) 的点 POINT(1, 2)2. 线(LineString): 表示一条折线或曲线。由多个点连接而成。 -- 例如,表示由 (1, 2) 和 (3, 4) 两点组成的线 LINESTRING(1, 2, 3, 4)3. 多边形(Polygon): 表示一个封闭的多边形区域。由多个点组成,首尾相连形成封闭图形。 -- 例如,表示一个三角形,顶点分别为 (1, 2), (3, 4), (5, 6) POLYGON((1, 2, 3, 4, 5, 6, 1, 2))4. 多点(MultiPoint): 表示多个点的集合。 -- 例如,表示包含两个点 (1, 2) 和 (3, 4) 的集合 MULTIPOINT((1, 2), (3, 4))5. 多线(MultiLineString): 表示多条线的集合。 -- 例如,表示由两条线组成的集合 MULTILI...
PostgreSQL 枚举类型
在 PostgreSQL 中,枚举类型是用户定义的标签集合,用于存储有限的可能取值之一。通过使用枚举类型,可以确保某一列的值仅为预定义的一组合法取值之一。以下是使用枚举类型的基本示例:1. 定义枚举类型: CREATE TYPE mood AS ENUM ('happy', 'sad', 'angry'); 在这个例子中,创建了一个名为 mood 的枚举类型,它包含了三个可能的取值:'happy'、'sad' 和 'angry'。2. 使用枚举类型: CREATE TABLE example ( person_name text, person_mood mood ); 在这个例子中,创建了一个表 example,其中包含两列:person_name 存储人名,而 person_mood 存储枚举类型 mood 的值。3. 插入数据: INSERT INTO example (person_name, person_mood) VALUES...
PostgreSQL 布尔类型
在 PostgreSQL 中,布尔类型(boolean)用于存储逻辑真值,即布尔值。布尔类型只有两个可能的值:TRUE 或 FALSE。以下是使用布尔类型的基本示例:CREATE TABLE example ( is_active boolean);在这个例子中,is_active 列将存储布尔值,表示某个实体是否处于活动状态。示例插入:INSERT INTO example (is_active)VALUES (TRUE);INSERT INTO example (is_active)VALUES (FALSE);在查询中,你可以使用布尔表达式进行条件过滤:SELECT * FROM example WHERE is_active = TRUE;或者简写为:SELECT * FROM example WHERE is_active;这两个查询都将返回 is_active 列为 TRUE 的行。布尔类型常用于表示逻辑条件,例如开关状态、启用/禁用等。
PostgreSQL 日期/时间类型
在 PostgreSQL 中,有几种日期和时间类型用于存储时间相关的信息。以下是一些常见的日期和时间类型:1. date: - 用于存储日期信息。 - 格式为 'YYYY-MM-DD'。 CREATE TABLE example ( date_col date ); 示例插入: INSERT INTO example (date_col) VALUES ('2023-01-15');2. time: - 用于存储时间信息。 - 格式为 'HH:MI:SS'。 CREATE TABLE example ( time_col time ); 示例插入: INSERT INTO example (time_col) VALUES ('12:30:45');3. timestamp: - 用于存储日期和时间信息。 - 格式为 'YYYY-MM-DD HH:MI:SS'。 CREATE TABLE example ( ...
PostgreSQL 二进制数据类型
在 PostgreSQL 中,二进制数据类型用于存储二进制数据,例如图像、音频、视频文件等。以下是 PostgreSQL 中常见的二进制数据类型:1. bytea: - bytea 类型用于存储变长的二进制数据。 - 它可以存储任意字节的序列。 CREATE TABLE example ( binary_data bytea ); 示例插入: INSERT INTO example (binary_data) VALUES (E'\\x0123456789ABCDEF'); -- 使用十六进制表示的二进制数据2. bit(n) 和 bit varying(n): - bit(n) 类型用于存储固定长度的位串。 - bit varying(n) 类型用于存储可变长度的位串。 CREATE TABLE example ( bit_data bit(8), varying_bit_data bit varying(16) ); 示例插入: INSERT INTO example (bit_...
PostgreSQL 字符类型
在 PostgreSQL 中,有几种常见的字符类型用于存储文本数据。以下是一些常见的字符类型:1. character(n) 或 char(n): - 固定长度的字符类型,最多占用 n 个字符的存储空间。 CREATE TABLE example ( char_col character(10) );2. character varying(n) 或 varchar(n): - 可变长度的字符类型,最多占用 n 个字符的存储空间。 CREATE TABLE example ( varchar_col character varying(255) );3. text: - 可变长度的文本类型,用于存储任意长度的文本。 CREATE TABLE example ( text_col text );这些字符类型可以存储包含字母、数字、符号等多种字符的文本数据。选择使用哪种类型通常取决于你的数据的特性和存储需求。在插入或更新数据时,可以直接使用字符串表示法:INSERT INTO example (char_col, va...
PostgreSQL 货币类型
在 PostgreSQL 中,money 类型用于存储货币金额。money 类型支持存储货币值,并在内部以固定精度存储。以下是关于 money 类型的一些基本信息:1. 创建表时使用 money 类型: CREATE TABLE example ( money_col money ); 这将创建一个包含 money_col 列的表,用于存储货币值。2. 插入和更新 money 类型的数据: INSERT INTO example (money_col) VALUES ('$100.50'); UPDATE example SET money_col = '$500.75' WHERE condition; 你可以使用字符串形式的货币值插入或更新 money 类型的列。3. money 类型的运算: money 类型支持基本的算术运算,例如加法、减法等。例如: SELECT money_col + '$50.25' AS total_amount FROM example; 这将返回每行 ...
PostgreSQL 数字类型
在 PostgreSQL 中,数字类型用于存储数字数据。以下是一些常见的数字类型:1. 整数类型: - smallint:小整数,占用 2 字节,范围为 -32768 到 32767。 - integer:整数,占用 4 字节,范围为 -2147483648 到 2147483647。 - bigint:大整数,占用 8 字节,范围为 -9223372036854775808 到 9223372036854775807。 例如: CREATE TABLE example ( smallint_col smallint, integer_col integer, bigint_col bigint );2. 小数和浮点类型: - numeric(precision, scale):可变精度的小数,用于存储精确的数值。 - real:单精度浮点数,占用 4 字节。 - double precision:双精度浮点数,占用 8 字节。 例如: CREATE TABLE example ( numeri...
PostgreSQL 数据类型
PostgreSQL 支持丰富的数据类型,包括内置的标准 SQL 数据类型以及一些额外的扩展类型。以下是一些常见的 PostgreSQL 数据类型:1. 整数类型: - smallint:小整数,占用 2 字节。 - integer:整数,占用 4 字节。 - bigint:大整数,占用 8 字节。 CREATE TABLE example ( smallint_col smallint, integer_col integer, bigint_col bigint );2. 小数和浮点类型: - numeric(precision, scale):可变精度的小数,用于存储精确的数值。 - real:单精度浮点数,占用 4 字节。 - double precision:双精度浮点数,占用 8 字节。 CREATE TABLE example ( numeric_col numeric(10, 2), real_col real, double_col double precisi...
PostgreSQL WITH查询(公共表表达式)
在 PostgreSQL 中,WITH 子句用于创建一个临时的命名查询,通常被称为公共表表达式(Common Table Expression,CTE)。CTE 允许你在查询中定义一个或多个临时表,然后在查询的主体中引用这些表。以下是 WITH 子句的基本用法:WITH cte_name (列1, 列2, 列3, ...) AS ( SELECT 值1, 值2, 值3, ... FROM 表1 WHERE 条件)SELECT *FROM cte_nameWHERE 其他条件;在这个语句中: cte_name 是公共表表达式的名称。 (列1, 列2, 列3, ...) 是公共表表达式的列名列表。 SELECT 值1, 值2, 值3, ... FROM 表1 WHERE 条件 是定义 CTE 的查询。 最后的 SELECT * FROM cte_name WHERE 其他条件 是使用 CTE 的查询。举例来说,假设你想要在一个查询中计算每个部门的平均工资并找出高于平均工资的员工,可以使用 WITH 子句:WITH department_avg_salary AS ( SELECT ...
PostgreSQL VALUES列表
在 PostgreSQL 中,VALUES 子句用于在 INSERT 语句中一次性插入多个值。它允许你插入一个值列表或多个值列表,每个值列表对应一个要插入的行。以下是 VALUES 子句的基本用法:INSERT INTO 表名 (列1, 列2, 列3, ...)VALUES (值1_1, 值1_2, 值1_3, ...), (值2_1, 值2_2, 值2_3, ...), ...;在这个语句中: 表名 是你要插入数据的表的名称。 (列1, 列2, 列3, ...) 是要插入的列名列表。 VALUES 子句后面的括号内包含一个或多个值列表,每个值列表对应一行要插入的数据。举例来说,如果你有一个名为 employees 的表,包含 id、name 和 salary 列,想要插入两个新的员工记录,可以这样写:INSERT INTO employees (name, salary)VALUES ('John Doe', 50000), ('Jane Smith', 60000);这将在 employees 表中插入两行数据,分别对应两个新的员工记录。V...
PostgreSQL LIMIT和OFFSET
在 PostgreSQL 中,LIMIT 和 OFFSET 是用于限制和分页查询结果的两个关键字。1. LIMIT: LIMIT 用于限制查询结果返回的行数。语法如下: SELECT 列1, 列2, ... FROM 表名 LIMIT 行数; 例如,如果你想返回 employees 表中的前 10 行数据,可以这样写: SELECT * FROM employees LIMIT 10;2. OFFSET: OFFSET 用于指定查询结果的偏移量,即从结果集的起始位置开始跳过多少行。语法如下: SELECT 列1, 列2, ... FROM 表名 OFFSET 偏移量; 例如,如果你想返回 employees 表中的第 11 行到第 20 行的数据,可以这样写: SELECT * FROM employees LIMIT 10 OFFSET 10; 这将跳过前 10 行,然后返回接下来的 10 行。3. LIMIT 和 OFFSET 的组合: 通常,LIMIT 和 OFFSET 会结合使用,以实现分页的效果。例如,要...
PostgreSQL 行排序
在 PostgreSQL 中,你可以使用 ORDER BY 子句对查询结果进行排序。ORDER BY 子句用于按照指定的列对结果进行升序(ASC)或降序(DESC)排序。以下是一个基本的 ORDER BY 子句的示例:SELECT 列1, 列2, ...FROM 表名ORDER BY 列1 [ASC|DESC], 列2 [ASC|DESC], ...;在这个语句中: 列1, 列2, ... 是你要检索的列。 表名 是你要检索数据的表的名称。 ORDER BY 子句用于指定排序的列,并可以选择升序(ASC,默认)或降序(DESC)排序。例如,如果你有一个名为 employees 的表,包含 name、salary 和 hire_date 列,想要按照薪水降序和入职日期升序排序,可以这样写:SELECT name, salary, hire_dateFROM employeesORDER BY salary DESC, hire_date ASC;这将返回按照薪水降序和入职日期升序排序的结果集。如果你想按照多个列进行排序,只需在 ORDER BY 子句中列出这些列,并指定它们的排序顺序。排...
PostgreSQL 组合查询
在 PostgreSQL 中,组合查询是指将多个查询结果合并为一个结果集的操作。常见的组合查询操作包括使用 UNION、INTERSECT 和 EXCEPT 运算符。以下是这些运算符的基本用法:1. UNION 运算符: UNION 用于合并两个或多个查询的结果,并去除重复的行。 SELECT 列1 FROM 表1 UNION SELECT 列1 FROM 表2; 例如: SELECT name FROM employees UNION SELECT name FROM contractors;2. INTERSECT 运算符: INTERSECT 用于返回两个查询的交集,即两个查询结果中都存在的行。 SELECT 列1 FROM 表1 INTERSECT SELECT 列1 FROM 表2; 例如: SELECT name FROM employees INTERSECT SELECT name FROM contractors;3. EXCEPT 运算符: EXCEPT 用于返回存在于第一个查询结果中但不存在于第二...
PostgreSQL 选择列表
在 PostgreSQL 中,选择列表是 SELECT 语句中用于指定你想要检索的列的部分。选择列表出现在 SELECT 关键字之后,后面紧跟着列名、表达式或者聚合函数等。以下是一个基本的 SELECT 语句的结构,其中的选择列表用于指定要检索的列:SELECT 列1, 列2, 列3, ...FROM 表名WHERE 条件;在这个语句中: 列1, 列2, 列3, ... 是你想要检索的列名。 表名 是你要检索数据的表的名称。 WHERE 条件 是可选的,用于指定筛选条件,过滤出符合条件的行。举个例子,假设有一个名为 employees 的表,包含 id、name 和 salary 列,要检索所有员工的姓名和薪水,可以这样写:SELECT name, salaryFROM employees;这将返回所有员工的姓名和薪水列的数据。你也可以使用 * 通配符表示检索所有列:SELECT *FROM employees;这将返回所有列的数据。但在实际使用中,最好指定你真正需要的列,以提高查询性能并降低数据传输开销。
PostgreSQL 表表达式
在 PostgreSQL 中,表达式是由一个或多个列、常量、运算符和函数组成的计算式。表达式可以用于检索数据、过滤数据、计算新的列等各种操作。以下是一些关于表达式的常见用法:1. 基本表达式: 可以是列、常量或它们的组合。例如: SELECT column1, column2 + 10, 'Constant' FROM table_name;2. 算术表达式: 使用标准的算术运算符进行计算: SELECT column1, column2 * 1.5, column3 / 2 FROM table_name;3. 字符串连接: 使用 || 运算符进行字符串连接: SELECT first_name || ' ' || last_name AS full_name FROM employees;4. 条件表达式: 使用 CASE 表达式进行条件判断: SELECT column1, CASE WHEN column2 > 10 THEN 'High' ELSE 'Low' END AS status F...
PostgreSQL 查询
在 PostgreSQL 中,你可以使用 SELECT 语句来执行查询。以下是一些基本的 SELECT 语句的示例:1. 查询所有列: SELECT * FROM 表名; 这将返回表中所有列的数据。2. 查询特定列: SELECT 列1, 列2 FROM 表名; 这将返回表中指定列的数据。3. 带条件的查询: SELECT * FROM 表名 WHERE 列 = 值; 这将返回表中满足指定条件的行。4. 查询排序结果: SELECT * FROM 表名 ORDER BY 列 ASC|DESC; 这将返回按指定列升序(ASC)或降序(DESC)排列的结果。5. 使用聚合函数: SELECT COUNT(*), AVG(列) FROM 表名 WHERE 条件; 这将返回符合条件的行数和指定列的平均值。6. 连接表查询: SELECT 表1.列, 表2.列 FROM 表1 JOIN 表2 ON 表1.关联列 = 表2.关联列; 这将返回两个表连接后的结果,通过关联列连接。这只是一些基本的查询示例,实际中你可能会需要更复杂的...
PostgreSQL 从修改的行中返回数据
在 PostgreSQL 中,你可以使用 RETURNING 子句来从修改的行中返回数据。这在执行 INSERT, UPDATE, 或 DELETE 语句时特别有用。以下是一个示例:-- 更新并返回更新后的数据UPDATE 表名SET 列1 = 值1, 列2 = 值2, ...WHERE 条件RETURNING *;-- 删除并返回删除的数据DELETE FROM 表名WHERE 条件RETURNING *;在这里,RETURNING * 表示返回所有列的数据。你也可以指定要返回的特定列,例如:UPDATE 表名SET 列1 = 值1, 列2 = 值2, ...WHERE 条件RETURNING 列1, 列2;或者对于删除:DELETE FROM 表名WHERE 条件RETURNING 列1, 列2;这将返回符合条件的行中指定的列的数据。请注意,RETURNING 子句只在支持的 PostgreSQL 版本中可用,所以请确保你的 PostgreSQL 版本支持这个功能。
PostgreSQL 删除数据
在 PostgreSQL 中,要删除数据,你可以使用 DELETE 语句。以下是一个基本的示例:DELETE FROM 表名WHERE 条件;其中: 表名 是你要删除数据的表的名称。 WHERE 条件 是可选的,用于指定删除的行。如果省略 WHERE 子句,将删除表中的所有行。举个例子,假设有一个名为 employees 的表,包含 id、name 和 salary 列,现在要删除 id 为 1 的员工,可以这样写:DELETE FROM employeesWHERE id = 1;同样地,WHERE 子句是可选的,但请注意在实际使用中要慎重使用不带 WHERE 子句的 DELETE 语句,以免意外删除整个表中的数据。