PostgreSQL特殊语法

本文详细介绍了PostgreSQL中一些不同于标准SQL的特殊语法,包括Limit、Like/ILIKE、获取最新插入ID、自增、DELETE、UPDATE、导入导出、表继承、数组、hstore、JSON数据类型以及psql命令行的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文整理了一些PostgreSQL相对于标准SQL或者MySQL的一些特殊语法。

Limit

PG:

limit n
limit n offset m

MySQL:

limit n 
limit m,n

Like/ILIKE:

提供的一个扩展ILIKE:同LIKE,只是不区分大小写。
符号表示:

LIKE: ~~

ILIKE: ~~*

NOT LIKE: !~~*

NOT ILIKE: !~~*

获取最新插入的id:

INSERT INTO link (url, NAME, last_update)
VALUES('http://www.postgresql.org','PostgreSQL',DEFAULT)
RETURNING id;

insert into weibo.weibo_may(content) values('test') returning id;

也可以插入之后返回整条数据:

insert into weibo.weibo_may(content) values('test') returning *;

自增:

创建表的时候使用SERIAL数据类型。

CREATE TABLE weibo.weibo_may
(
  id serial NOT NULL,
  content text,
  CONSTRAINT idx_pk_id PRIMARY KEY (id)
  DEFERRABLE INITIALLY IMMEDIATE
)
WITH (
  OIDS=FALSE
);
ALTER TABLE weibo.weibo_may
  OWNER TO postgres;

注意这个类型只能create的时候使用,已经存在的表无法修改字段为SERIAL类型。(不同于mysql的auto increment)

参考: http://stackoverflow.com/questions/787722/postgresql-autoincrement

DELETE:

DELETE USING:使用另一张表的数据作为删除条件:

delete  from a
using b
where a.id=b.id

删除后返回:使用delete returning

delete from weibo.weibo_may
where id=1
returing *;

更新:

update from: 使用一张表的数据更新另一张表

update a
set name=b.name
from<
### PostgreSQL 和 MySQL 语法区别 #### 数据类型定义差异 在数据类型的定义方面,MySQL 使用 `TINYINT`、`MEDIUMINT` 和 `INT` 来表示不同范围的整数值[^2]。而 PostgreSQL 则采用 `SMALLINT`、`INTEGER` 及 `BIGINT` 表达相似的概念。 #### 几何和空间数据支持 PostgreSQL 提供了丰富的几何数据类型支持,包括但不限于点(`point`)、直线(`line`)、线段(`lseg`)、路径(`path`)、多边形(`polygon`)以及圆形(`circle`)等特殊的数据结构[^5]。这使得 PostgreSQL 对地理信息系统(GIS)应用有着更好的适配能力。相比之下,MySQL 虽然也具备一定的空间扩展功能,但在内置的支持程度上不如前者全面。 #### SQL命令行工具连接方式 对于通过命令行客户端连接到各自的服务端实例而言,两者之间存在着明显的差别。例如,在启动 psql 命令行程序并指定要访问的具体数据库时,会涉及到特定于 PostgreSQL 的参数设置方法[^4]: ```bash psql -U 用户名 -d 数据库名称 ``` 而在 MySQL 中,则通常使用如下形式来建立相应的链接: ```bash mysql -u 用户名 -p -D 数据库名称 ``` #### SQL语句兼容性 除了上述提到的不同之处外,ORDER BY、GROUP BY、HAVING、AND/OR逻辑运算符、LIKE模式匹配操作符、IN/NOT IN子查询表达式的用法在这两个系统间保持高度一致[^3]。这意味着大部分标准SQL查询可以不经修改地在这两种环境中运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值