首页 > IT职业 > > PostgreSQL语法
默认情况下PostgreSQL安装完成后,自带了一个命令行工具SQL Shell(psql)。
Linux系统可以直接切换到postgres用户来开启命令行工具:
#sudo -i -u postgres
Windows系统一般在它的安装目录下:
程序文件→PostgreSQL 11.3→SQL Shell(psql)
Mac OS我们直接搜索就可以了找到:

进入命令行工具,我们可以使用\ help来查看各个命令的语法:
postgres-#\ help <命令名>
例如,我们查看下select语句的语法:
postgres =#\ help选择
命令:SELECT
描述:从表或视图中检索行
句法:
[WITH [RECURSIVE] with_query [,...]]
选择[全部| DISTINCT [ON(expression [,...])]]
[* | 表达式[[AS] output_name] [,...]]
[FROM from_item [,...]]
[条件]
[GROUP BY grouping_element [,...]]
[具有条件[,...]]
[WINDOW window_name AS(window_definition)[,...]]
[{UNION | 交集| 除} [全部| DISTINCT]选择]
[ORDER BY表达式[ASC | DESC | 使用运算符] [NULL {FIRST | 最后}] [,...]]
[LIMIT {计数| 全部}]
[偏移量开始[行| [行]
[FETCH {FIRST | NEXT} [count] {ROW | ROWS}仅]
[FOR {更新| 没有关键更新| 分享| KEY SHARE} [OF table_name [,...]] [NOWAIT | 跳过锁定] [...]
from_item可以是以下选项之一:
[仅] table_name [*] [[AS]别名[(column_alias [,...])]]一个SQL语句通常包含了关键字,标识符(段落),常量,特殊符号等,下面是一个简单的SQL语句:
SELECT ID,名称为runoob
| 选择 | 身份证,姓名 | 从 | 鲁诺卜 | |
|---|---|---|---|---|
| 符号类型 | 关键字 | 指标(指标) | 关键字 | 识别符 |
| 描述 | 命令 | id和名称前缀 | 语句,用于设置条件规则等 | 表名 |
ABORT为退出当前事务。
中止[工作| 交易]
修改一个聚集函数的定义。
ALTER AGGREGATE _name_(_argtype_ [,...])重命名为_new_name_ ALTER AGGREGATE _name_(_argtype_ [,...])所有者对_new_owner_ ALTER AGGREGATE _name_(_argtype_ [,...])SET SCHEMA _new_schema_
修改一个排序规则定义。
ALTER COLLATION _name_ RENAME TO _new_name_ ALTER COLLATION _name_ OWNER至_new_owner_ ALTER COLLATION _name_ SET SCHEMA _new_schema_
修改一个编码转换的定义。
ALTER CONVERSION名称RENAME TO new_name ALTER CONVERSION名称OWNER TO new_owner
修改一个数据库。
ALTER DATABASE名称SET参数{TO | =} {值| 默认}
ALTER DATABASE名称RESET参数
ALTER DATABASE名称RENAME TO new_name
ALTER DATABASE名称OWNER TO new_owner
定义默认的访问权限。
更改默认权限
[FOR {角色| 用户} target_role [,...]]
[IN SCHEMA schema_name [,...]]
abbreviated_grant_or_revoke
其中abbreviated_grant_or_revoke是以下之一:
授予{{选择| 插入| 更新| 删除 截断 参考| 触发}
[,...] | 全部[特权]}
在桌子上
TO {[GROUP] role_name | 公用} [,...] [带有GRANT OPTION]
...修改一个域的定义。
ALTER DOMAIN名称{SET DEFAULT表达式| 预设预设}
ALTER DOMAIN名称{SET | DROP} NOT NULL
ALTER DOMAIN名称添加domain_constraint
ALTER DOMAIN名称DROP CONSTRAINT约束名称[RESTRICT | 级联]
ALTER DOMAIN名称OWNER TO new_owner
修改一个函数的定义。
ALTER FUNCTION名称([type [,...]])重命名为new_name ALTER FUNCTION名称([type [,...]])OWNER TO new_owner
修改一个用户组。
ALTER GROUP组名添加用户用户名[,...] ALTER GROUP组名DROP USER用户名[,...] ALTER GROUP组名RENAME TO new_name
修改一个索引的定义。
ALTER INDEX名称OWNER TO new_owner ALTER INDEX名称SET TABLESPACE indexspace_name ALTER INDEX名称RENAME TO new_name
修改一个过程语言的定义。
更改语言名称RENAME TO new_name
改变一个操作符的定义。
ALTER OPERATOR名称({lefttype | NONE},{righttype | NONE})
所有者到新所有者
修改一个操作符表的定义。
ALTER OPERATOR CLASS名称使用index_method RENAME TO new_name 使用index_method OWNER TO new_owner的ALTER OPERATOR CLASS名称
修改一个模式的定义。
ALTER SCHEMA名称RENAME TO new_name ALTER SCHEMA名称OWNER TO new_owner
修改一个序列生成器的定义。
ALTER SEQUENCE名称[INCREMENT [BY]增量] [MINVALUE minvalue | 没有最低价值] [MAXVALUE maxvalue | 没有最大值] [重新启动[带]开始] [缓存缓存] [[否循环]
修改表的定义。
更改表[仅]名称[*] 动作[,...] 更改表[仅]名称[*] 重命名[COLUMN]列到new_column ALTER TABLE名称 重命名为new_name
其中动作可以以选项之一:
添加[列] column_type [column_constraint [...]]
DROP [COLUMN]列[RESTRICT | 级联]
ALTER [COLUMN]列TYPE类型[使用表达式]
ALTER [COLUMN]列SET DEFAULT表达式
ALTER [COLUMN]列DROP DEFAULT
ALTER [COLUMN]列{SET | DROP} NOT NULL
ALTER [COLUMN]列SET STATISTICS整数
ALTER [COLUMN]列SET STORAGE {普通| 外部| 扩展| 主要}
添加table_constraint
DROP CONSTRAINT约束名称[RESTRICT | 级联]
集群ON index_name
设置无集群
不加油的设置
所有者到新所有者
SET TABLESPACE tablespace_name
修改一个表空间的定义。
ALTER TABLESPACE名称RENAME TO new_name ALTER TABLESPACE名称OWNER TO new_owner
修改改变一个主轴的定义。
ALTER TRIGGER名称ON表RENAME TO new_name
修改一个类型的定义。
ALTER TYPE名称OWNER TO new_owner
修改数据库用户帐号。
更改用户名[[WITH]选项[...]]
更改用户名RENAME TO new_name
更改用户名SET参数{TO | =} {值| 默认}
ALTER USER name RESET参数
其中选项可以是-
[加密| 未加密]密码“密码” | CREATEDB | 未制作 | CREATEUSER | NOCREATEUSER | 有效直到“抽象”
收集与数据库有关的统计。
分析[详细] [表[(列[,...])]]
开始一个事务块。
开始[工作| 交易] [transaction_mode [,...]]
transaction_mode可以是以下选项之一:
隔离度{
可序列化| 可重复阅读 读已提交
| 读未提交
}
读写| 只读
强制性事务日志检查点。
检查点
关闭游标。
关闭名称
根据一个索引对某个表盘簇化排序。
集群index_name ON table_name 集群表名 簇
定义或者改变一个对象的注释。
给某事物发表意见 {
表格object_name |
COLUMN table_name.column_name |
汇总agg_name(agg_type)|
CAST(source_type AS target_type)|
CONSTRAINT约束名称ON表名称|
CONVERSION object_name |
数据库对象名|
DOMAIN object_name |
功能func_name(arg1_type,arg2_type,...)|
INDEX object_name |
大对象large_object_oid |
运算符op(left_operand_type,right_operand_type)|
运算符类object_name使用index_method |
[PROCEDURAL]语言object_name |
RULE rule_name ON table_name |
SCHEMA object_name |
序列object_name |
TRIGGER trigger_name ON table_name |
TYPE object_name |
查看object_name
}
是“文字”
提交当前事务。
提交[工作| 交易]
在表和文件之间拷贝数据。
COPY table_name [(列[,...])]
FROM {'文件名'| STDIN}
[和]
[BINARY]
[OIDS]
[DELIMITER [AS]'delimiter']
[NULL [AS]'null string']
[CSV [QUOTE [AS]'quote']
[ESCAPE [AS]“转义”]
[FORCE NOT NULL列[,...]]
COPY table_name [(列[,...])]
TO {'文件名'| 标准输出}
[[和]
[BINARY]
[OIDS]
[DELIMITER [AS]'delimiter']
[NULL [AS]'null string']
[CSV [QUOTE [AS]'quote']
[ESCAPE [AS]“转义”]
[强制报价栏[,...]]
定义一个新的聚集函数。
创建聚集名称( BASETYPE = input_data_type, SFUNC = sfunc, STYPE = state_data_type [,FINALFUNC = ffunc] [,INITCOND = initial_condition] )
定义一个用户定义的转换。
创建CAST(source_type AS target_type) 带功能func_name(arg_types) [分配| 隐含的] 创建CAST(source_type AS target_type) 没有功能 [分配| 隐含的]
定义一个新的约束变量。
创建约束触发名称 事件发生后 table_name约束属性 对于每个行执行程序func_name(args)
定义一个新的的编码转换。
创建[默认]转化名称 从func_name的FOR source_encoding到dest_encoding
创建新数据库。
创建数据库名称 [[WITH] [所有者[=] db_owner] [模板[=]模板] [编码[=]编码] [TABLESPACE [=]表空间] ]
定义一个新域。
创建域名[AS] data_type [默认表达式] [约束[...]]
约束可以是以下选项之一:
[CONSTRAINT约束名称]
{NOT NULL | NULL | 检查(表达式)}
定义一个新函数。
创建[或替换]功能名称([[[arg_name] arg_type [,...]])
返回ret_type
{LANGUAGE lang_name
| 不可改变的 稳定 挥发性
| 调用NULL输入| 在NULL输入上返回NULL | 严格
| [外部]安全调用者| [外部]安全定义
| AS“定义”
| AS'obj_file','link_symbol'
} ...
[WITH(属性[,...])]
定义一个新的用户组。
创建组名[[WITH]选项[...]] 选项可以是: SYSID GID | USER用户名[,...]
定义一个新索引。
在表上创建[UNIQUE] INDEX名称[使用方法]
({列|(表达式)} [opclass] [,...])
[TABLESPACE表空间]
[WHERE谓词]
定义一种新的过程语言。
创建[可信任] [程序]语言名称 处理程序call_handler [VALIDATOR val_function]
定义一个新的操作符。
创建操作员名称( 程序= func_name [,LEFTARG = left_type] [,RIGHTARG = right_type] [,COMMUTATOR = com_op] [,NEGATOR = neg_op] [,RESTRICT = res_proc] [,JOIN = join_proc] [,哈希] [,合并] [,SORT1 = left_sort_op] [,SORT2 = right_sort_op] [,LTCMP = less_than_op] [,GTCMP = Greater_than_op] )
定义一个新的操作符表。
为类型data_type创建操作符类别名称[默认]
使用index_method AS
{运算符strategy_number运算符名称[(op_type,op_type)] [RECHECK]
| 功能support_number func_name(arguments_type [,...])
| 储存storage_type
} [,...]
定义一个新的数据库角色。
创建角色_名称_ [[与] _选项_ [...]]
其中_option_可以是:
超级用户| 超级用户
| CREATEDB | 未制作
| 甲骨文| 没食子儿
...定义一个新重写规则。
创建[或替换]规则名称为ON事件
到表[状况]
做[还| INSTEAD] {无| 命令 (命令;命令...)}
定义一个新模式。
创建模式架构名称 [授权用户名] [schema_element [...]] 创建模式授权用户名 [schema_element [...]]
定义一个新的外部服务器。。
创建服务器_server_name_ [TYPE'_server_type_'] [VERSION'_server_version_']
外国数据包装器_fdw_name_
[选项(_option_'_value_'[,...])]定义一个新序列发生器。
创建[临时| TEMP]序列名称 [INCREMENT [BY]增量] [MINVALUE minvalue | 没有最低价值] [MAXVALUE maxvalue | 没有最大值] [START [WITH] start] [CACHE缓存] [[NO]周期]
定义一个新表。
创建[[全球| 当地] {
临时| TEMP}] TABLE table_name({
column_name数据类型[默认default_expr] [column_constraint [...]]
| table_constraint
| 像parent_table [{包含| 不包括}
} [,...]
)
[INHERITS(parent_table [,...])]
[带OIDS | 没有糖[]
[提交{保留行| 删除行| 删除}]
[TABLESPACE表空间]
column_constraint可以是以下选项之一:
[CONSTRAINT约束名称] {
非空|
NULL |
唯一[使用索引表空间表空间] |
主键[使用INDEX TABLESPACE表空间] |
检查(表达式)|
参考ref_table [(ref_column)]
[完全匹配| 匹配部分| 简单配对]
[ON DELETE操作] [ON UPDATE操作]
}
[优惠| 不可延迟[最初延迟| 最初]
table_constraint可以是以下选项之一:
[CONSTRAINT约束名称]
{UNIQUE(column_name [,...])[使用INDEX TABLESPACE表空间] |
主键(column_name [,...])[使用索引表空间表空间] |
CHECK(表达式)|
外键(column_name [,...])
参考ref_table [(ref_column [,...])]
[完全匹配| 匹配部分| 简单配对]
[ON DELETE操作] [ON UPDATE操作]}
[优惠| 不可延迟[最初延迟| 最初]
从一条查询的结果中定义一个新表。
创建[[全球| 本地] {临时| TEMP}] TABLE table_name
[(column_name [,...])] [[与| 没有]
AS查询
定义一个新的表空间。
CREATE TABLESPACE tablespace_name [OWNER用户名] LOCATION'目录'
定义一个新的应变。
创建触发器名称{ 之后} {事件[OR ...]}
在桌子上[FOR [每个] {ROW | 声明}]
执行程序func_name(arguments)
定义一个新的数据类型。
创建类型名称AS
(attribute_name data_type [,...])
创建类型名称(
输入=输入功能,
输出= output_function
[,RECEIVE = receive_function]
[,SEND = send_function]
[,ANALYZE = analytics_function]
[,INTERNALLENGTH = {internal_length | 变量}]
[,PASSEDBYVALUE]
[,ALIGNMENT =对齐]
[,存储=储存]
[,DEFAULT =默认值]
[,ELEMENT =元素]
[,DELIMITER =定界符]
)
创建一个新的数据库用户帐户。
创建用户名[[WITH]选项[...]]
选项可以是以下选项之一:
SYSID uid | [加密| 未加密]密码“密码” | CREATEDB | 未制作 | CREATEUSER | NOCREATEUSER | IN GROUP group_name [,...] | 有效直到“ abs_time”
定义一个视图。
创建[或替换]视图名称[(column_name [,...])] AS查询
删除一个准备好的查询。
取消分配[PREPARE] plan_name
定义一个游标。
十进制名称[BINARY] [INSENSITIVE] [[NO] SCROLL]
光标[{与| 不用}保持]查询
[只供{阅读| UPDATE [OF列[,...]]}]
删除一个表中的行。
从[ONLY]表中删除[WHERE条件]
删除一个用户定义的聚集函数。
DROP AGGREGATE名称(类型)[级联| 限制 ]
删除一个用户定义的类型转换。
DROP CAST(源类型AS目标类型)[CASCADE | 限制 ]
删除一个用户定义的编码转换。
DROP CONVERSION名称[级联| 限制 ]
删除一个数据库。
DROP DATABASE名称
删除一个用户定义的域。
DROP DOMAIN名称[,...] [级联| 限制 ]
删除一个函数。
DROP FUNCTION名称([类型[,...]])[级联| 限制 ]
删除一个用户组。
DROP GROUP名称
删除一个索引。
DROP INDEX名称[,...] [级联| 限制 ]
删除一个过程语言。
DROP [过程]语言名称[CASCADE | 限制 ]
删除一个操作符。
DROP OPERATOR name({left_type | NONE},{right_type | NONE})
[级联| 限制 ]
删除一个操作符表。
DROP OPERATOR CLASS名称使用index_method [CASCADE | 限制 ]
删除一个数据库角色。
删除角色[如果存在] _名称_ [,...]
删除一个重写规则。
DROP RULE名称ON关系[CASCADE | 限制 ]
删除一个模式。
SCHEMA的名称[,...] [级联| 限制 ]
删除一个序列。
DROP SEQUENCE名称[,...] [级联| 限制 ]
删除一个表。
DROP TABLE名称[,...] [级联| 限制 ]
删除一个表空间。
DROP TABLESPACE tablespace_name
删除一个索引定义。
DROP TRIGGER名称ON表格[CASCADE | 限制 ]
删除一个用户定义数据类型。
DROP TYPE名称[,...] [级联| 限制 ]
删除一个数据库用户帐号。
删除用户名
删除一个视图。
DROP VIEW名称[,...] [级联| 限制 ]
提交当前的事务。
结束[工作| 交易]
执行一个准备好的查询。
执行plan_name [(参数[,...])]
显示一个语句的执行规划。
解释[分析] [详细]语句
用游标从查询中抓取行。
抓取[方向{从| IN}] cursor_name
方向可以是以下选项之一:
下一个 先验 第一 持续 绝对计数 相对计数 计数 所有 向前 前进计数 全部转发 向后 倒数 向后全部
定义访问权限。
授予{{选择| 插入| 更新| 删除 规则| 参考| 触发}
[,...] | 全部[特权]}
开启[TABLE] table_name [,...]
TO {用户名| GROUP group_name | 公用} [,...] [带有GRANT OPTION]
授予{{创建| 临时| TEMP} [,...] | 全部[特权]}
在数据库db_name [,...]
TO {用户名| GROUP group_name | 公用} [,...] [带有GRANT OPTION]
赠予{创建| 全部[特权]}
在TABLESPACE tablespace_name [,...]
TO {用户名| GROUP group_name | 公用} [,...] [带有GRANT OPTION]
授予{执行| 全部[特权]}
ON FUNCTION func_name([type,...])[,...]
TO {用户名| GROUP group_name | 公用} [,...] [带有GRANT OPTION]
赠予{用法| 全部[特权]}
ON LANGUAGE lang_name [,...]
TO {用户名| GROUP group_name | 公用} [,...] [带有GRANT OPTION]
授予{{创建| 使用方法} [,...] | 全部[特权]}
SCHEMA schema_name [,...]
TO {用户名| GROUP group_name | 公用} [,...] [带有GRANT OPTION]
在表中创造新行,即插入数据。
INSERT INTO表[(列[,...])]
{默认值| 值({表达式|默认} [,...])| 查询}
监听一个通知。
听名字
加载或重载一个共享库文件。
加载“文件名”
锁定一个表。
LOCK [TABLE]名称[,...] [IN lock_mode模式] [NOWAIT]
lock_mode可以是以下选项之一:
访问共享| 行共享| 排他性| 独家共享更新 | 分享| 独家行| 独家| 独家访问
定位一个游标。
移动[方向{从| IN}] cursor_name
生成一个通知。
通知名称
创建一个准备好的查询。
PREPARE plan_name [(data_type [,...])] AS语句
重建索引。
REINDEX {数据库| 表格| 索引}名称[强制]
删除一个前面定义的保存点。
释放[SAVEPOINT] savepoint_name
把一个运行时参数值恢复为预设值。
重置名称 重置所有
删除访问权限。
撤消[允许的选项]
{{选择| 插入| 更新| 删除 规则| 参考| 触发}
[,...] | 全部[特权]}
开启[TABLE] table_name [,...]
FROM {用户名| GROUP group_name | 上市 } [, ...]
[级联| 限制 ]
撤消[允许的选项]
{{创建| 临时| TEMP} [,...] | 全部[特权]}
在数据库db_name [,...]
FROM {用户名| GROUP group_name | 上市 } [, ...]
[级联| 限制 ]
撤消[允许的选项]
{创建| 全部[特权]}
在TABLESPACE tablespace_name [,...]
FROM {用户名| GROUP group_name | 上市 } [, ...]
[级联| 限制 ]
撤消[允许的选项]
{执行| 全部[特权]}
ON FUNCTION func_name([type,...])[,...]
FROM {用户名| GROUP group_name | 上市 } [, ...]
[级联| 限制 ]
撤消[允许的选项]
{用法| 全部[特权]}
ON LANGUAGE lang_name [,...]
FROM {用户名| GROUP group_name | 上市 } [, ...]
[级联| 限制 ]
撤消[允许的选项]
{{创建| 使用方法} [,...] | 全部[特权]}
SCHEMA schema_name [,...]
FROM {用户名| GROUP group_name | 上市 } [, ...]
[级联| 限制 ]
退出当前事务。
回滚[工作| 交易]
回滚到一个保存点。
回滚[工作| 交易]到[保存点] savepoint_name
在当前事务里定义一个新的保存点。
SAVEPOINT savepoint_name
从表或视图中取出若干行。
选择[全部| DISTINCT [ON(expression [,...])]]
* | 表达式[AS output_name] [,...]
[FROM from_item [,...]]
[条件]
[GROUP BY表达式[,...]]
[具有条件[,...]]
[{UNION | 交集| 除} [全部]选择]
[ORDER BY表达式[ASC | DESC | 使用运算符] [,...]]
[LIMIT {计数| 全部}]
[偏移开始]
[FOR UPDATE [OF table_name [,...]]]
from_item可以是以下选项:
[仅] table_name [*] [[AS]别名[(column_alias [,...])]] (选择)[AS]别名[(column_alias [,...])] function_name([参数[,...]]) [AS]别名[(column_alias [,...] | column_definition [,...])] function_name([参数[,...]])AS(column_definition [,...]) from_item [NATURAL] join_type from_item [ON join_condition | 使用(join_column [,...])]
从一个查询的结果中定义一个新表。
选择[全部| DISTINCT [ON(expression [,...])]]
* | 表达式[AS output_name] [,...]
进入[临时| TEMP] [TABLE] new_table
[FROM from_item [,...]]
[条件]
[GROUP BY表达式[,...]]
[具有条件[,...]]
[{UNION | 交集| 除} [全部]选择]
[ORDER BY表达式[ASC | DESC | 使用运算符] [,...]]
[LIMIT {计数| 全部}]
[偏移开始]
[FOR UPDATE [OF table_name [,...]]]
修改运行时参数。
设置[会议| 本地名称] {TO | =} {值| '值'| 默认}
设置[会议| 本地]时区{time_zone | 当地| 默认}
设置当前事务的约束检查模式。
设置约束{全部| 名称[,...]} {延迟| 立即}
为当前会话设置会话用户标识符和当前用户标识符。
设置[会议| 本地]会话授权用户名 设置[会议| 本地]会话授权默认 重置会话授权
开始一个事务块。
SET TRANSACTION transaction_mode [,...] 将会话特征设置为事务transaction_mode [,...]
其中transaction_mode是-
隔离级别{可简化| 可重复阅读 读已提交
| 阅读未提交的内容}
读写| 只读
显示运行时参数的值。
显示名称 显示所有
开始一个事务块。
开始交易[transaction_mode [,...]]
transaction_mode可以是下面的选项之一:
隔离级别{可简化| 可重复阅读 读已提交
| 阅读未提交的内容}
读写| 只读
清空一个或一组表。
TRUNCATE [TABLE]名称
停止监听通知信息。
取消收听{名称| *}
更新一个表中的行。
UPDATE [ONLY]表SET列= {表达式| 默认} [,...]
[FROM from_list]
[条件]
垃圾收集以及任选地分析一个数据库。
真空[满] [冻结] [详细] [表] 真空[完整] [冻结] [详细]分析[表[(列[,...])]]
计算一个或一组行。
VALUES(_expression_ [,...])[,...]
[ORDER BY _sort_expression_ [ASC | DESC | 使用_operator_] [,...]]
[LIMIT {_count_ | 全部}]
[OFFSET _start_ [ROW | [行]
[FETCH {FIRST | NEXT} [_count_] {ROW | ROWS}仅]更多内容可以参考手册中的SQL语法:http : //www.runoob.com/manual/PostgreSQL/sql-syntax.html。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3167921/ ,如需转载,请注明出处,否则将追究法律责任。