教程 > postgresql 教程 > 阅读:105

postgresql 语法——迹忆客-ag捕鱼王app官网

默认情况下 postgresql 安装完成后,自带了一个命令行工具 sql shell(psql)。

linux 系统可以直接切换到 postgres 用户来开启命令行工具:

[root@localhost ~]$  sudo -i -u postgres

linux切换postgres启动终端

windows 系统一般在它的安装目录下:

program files → postgresql 11.3 → sql shell(psql)

mac os 我们直接搜索就可以找到:

mac 查找 psql 工具

进入命令行工具,我们可以使用 \help 来查看各个命令的语法 :

postgres-# \help 

sql 语句

一个 sql 语句通常包含了关键字、标识符(字段)、常量、特殊符号等,下面是一个简单的 sql 语句:

select id, name from jiyik
select id, name from jiyik
符号类型 关键字 标识符(字段) 关键字 标识符
描述 命令 id 和 name 字段 语句,用于设置条件规则等 表名

postgresql 命令

abort

abort 用于退出当前事务。

abort [ work | transaction ]

alter aggregate

修改一个聚集函数的定义 。

alter aggregate _name_ ( _argtype_ [ , ... ] ) rename to _new_name_
alter aggregate _name_ ( _argtype_ [ , ... ] ) owner to _new_owner_
alter aggregate _name_ ( _argtype_ [ , ... ] ) set schema _new_schema_

alter collation

修改一个排序规则定义 。

alter collation _name_ rename to _new_name_
alter collation _name_ owner to _new_owner_
alter collation _name_ set schema _new_schema_

alter conversion

修改一个编码转换的定义。

alter conversion name rename to new_name
alter conversion name owner to new_owner

alter database

修改一个数据库。

alter database name set parameter { to | = } { value | default }
alter database name reset parameter
alter database name rename to new_name
alter database name owner to new_owner

alter default privileges

定义默认的访问权限。

alter default privileges
    [ for { role | user } target_role [, ...] ]
    [ in schema schema_name [, ...] ]
    abbreviated_grant_or_revoke
where abbreviated_grant_or_revoke is one of:
grant { { select | insert | update | delete | truncate | references | trigger }
    [, ...] | all [ privileges ] }
    on tables
    to { [ group ] role_name | public } [, ...] [ with grant option ]
...

alter domain

修改一个域的定义。

alter domain name { set default expression | drop default }
alter domain name { set | drop } not null
alter domain name add domain_constraint
alter domain name drop constraint constraint_name [ restrict | cascade ]
alter domain name owner to new_owner

alter function

修改一个函数的定义。

alter function name ( [ type [, ...] ] ) rename to new_name
alter function name ( [ type [, ...] ] ) owner to new_owner

alter group

修改一个用户组。

alter group groupname add user username [, ... ]
alter group groupname drop user username [, ... ]
alter group groupname rename to new_name

alter index

修改一个索引的定义。

alter index name owner to new_owner
alter index name set tablespace indexspace_name
alter index name rename to new_name

alter language

修改一个过程语言的定义。

alter language name rename to new_name

alter operator

改变一个操作符的定义。

alter operator name ( { lefttype | none }, { righttype | none } )
owner to new_owner

alter operator class

修改一个操作符表的定义。

alter operator class name using index_method rename to new_name
alter operator class name using index_method owner to new_owner

alter schema

修改一个模式的定义。

alter schema name rename to new_name
alter schema name owner to new_owner

alter sequence

修改一个序列生成器的定义。

alter sequence name [ increment [ by ] increment ]
[ minvalue minvalue | no minvalue ]
[ maxvalue maxvalue | no maxvalue ]
[ restart [ with ] start ] [ cache cache ] [ [ no ] cycle ]

alter table

修改表的定义。

alter table [ only ] name [ * ]
action [, ... ]
alter table [ only ] name [ * ]
rename [ column ] column to new_column
alter table name
rename to new_name

其中 action 可以是以选项之一:

add [ column ] column_type [ column_constraint [ ... ] ]
drop [ column ] column [ restrict | cascade ]
alter [ column ] column type type [ using expression ]
alter [ column ] column set default expression
alter [ column ] column drop default
alter [ column ] column { set | drop } not null
alter [ column ] column set statistics integer
alter [ column ] column set storage { plain | external | extended | main }
add table_constraint
drop constraint constraint_name [ restrict | cascade ]
cluster on index_name
set without cluster
set without oids
owner to new_owner
set tablespace tablespace_name

alter tablespace

修改一个表空间的定义。

alter tablespace name rename to new_name
alter tablespace name owner to new_owner

alter trigger

修改改变一个触发器的定义 。

alter trigger name on table rename to new_name

alter type

修改一个类型的定义 。

alter type name owner to new_owner

alter user

修改数据库用户帐号 。

alter user name [ [ with ] option [ ... ] ]
alter user name rename to new_name
alter user name set parameter { to | = } { value | default }
alter user name reset parameter

选项可以放置的位置

[ encrypted | unencrypted ] password 'password'
| createdb | nocreatedb
| createuser | nocreateuser
| valid until 'abstime'
analyze

收集与数据库有关的统计。

analyze [ verbose ] [ table [ (column [, ...] ) ] ]

begin

开始一个事务块。

begin [ work | transaction ] [ transaction_mode [, ...] ]

transaction_mode 可以是以下选项之一:

isolation level { 
   serializable | repeatable read | read committed
   | read uncommitted
}
read write | read only

checkpoint

强制一个事务日志检查点 。

checkpoint

close

关闭游标。

close name

cluster

根据一个索引对某个表盘簇化排序。

cluster index_name on table_name
cluster table_name
cluster

comment

定义或者改变一个对象的注释。

comment on {
   table object_name |
   column table_name.column_name |
   aggregate agg_name (agg_type) |
   cast (source_type as target_type) |
   constraint constraint_name on table_name |
   conversion object_name |
   database object_name |
   domain object_name |
   function func_name (arg1_type, arg2_type, ...) |
   index object_name |
   large object large_object_oid |
   operator op (left_operand_type, right_operand_type) |
   operator class object_name using index_method |
   [ procedural ] language object_name |
   rule rule_name on table_name |
   schema object_name |
   sequence object_name |
   trigger trigger_name on table_name |
   type object_name |
   view object_name
} 
is 'text'

commit

提交当前事务。

commit [ work | transaction ]

copy

在表和文件之间拷贝数据。

copy table_name [ ( column [, ...] ) ]
from { 'filename' | stdin }
[ with ]
[ binary ]
[ oids ]
[ delimiter [ as ] 'delimiter' ]
[ null [ as ] 'null string' ]
[ csv [ quote [ as ] 'quote' ]
[ escape [ as ] 'escape' ]
[ force not null column [, ...] ]
copy table_name [ ( column [, ...] ) ]
to { 'filename' | stdout }
[ [ with ]
[ binary ]
[ oids ]
[ delimiter [ as ] 'delimiter' ]
[ null [ as ] 'null string' ]
[ csv [ quote [ as ] 'quote' ]
[ escape [ as ] 'escape' ]
[ force quote column [, ...] ]

create aggregate

定义一个新的聚集函数。

create aggregate name (
   basetype = input_data_type,
   sfunc = sfunc,
   stype = state_data_type
   [, finalfunc = ffunc ]
   [, initcond = initial_condition ]
)

create cast

定义一个用户定义的转换。

create cast (source_type as target_type)
with function func_name (arg_types)
[ as assignment | as implicit ]
create cast (source_type as target_type)
without function
[ as assignment | as implicit ]

create constraint trigger

定义一个新的约束触发器 。

create constraint trigger name
after events on
table_name constraint attributes
for each row execute procedure func_name ( args )

create conversion

定义一个新的的编码转换。

create [default] conversion name
for source_encoding to dest_encoding from func_name

create database

创建新数据库。

create database name
[ [ with ] [ owner [=] db_owner ]
   [ template [=] template ]
   [ encoding [=] encoding ]
   [ tablespace [=] tablespace ] 
]

create domain

定义一个新域。

create domain name [as] data_type
[ default expression ]
[ constraint [ ... ] ]

constraint 可以是以下选项之一:

[ constraint constraint_name ]
{ not null | null | check (expression) }

create function

定义一个新函数。

create [ or replace ] function name ( [ [ arg_name ] arg_type [, ...] ] )
returns ret_type
{ language lang_name
   | immutable | stable | volatile
   | called on null input | returns null on null input | strict
   | [ external ] security invoker | [ external ] security definer
   | as 'definition'
   | as 'obj_file', 'link_symbol'
} ...
[ with ( attribute [, ...] ) ]

create group

定义一个新的用户组。

create group name [ [ with ] option [ ... ] ]
where option can be:
sysid gid
| user username [, ...]

create index

定义一个新索引。

create [ unique ] index name on table [ using method ]
( { column | ( expression ) } [ opclass ] [, ...] )
[ tablespace tablespace ]
[ where predicate ]

create language

定义一种新的过程语言。

create [ trusted ] [ procedural ] language name
handler call_handler [ validator val_function ]

create operator

定义一个新的操作符。

create operator name (
   procedure = func_name
   [, leftarg = left_type ] [, rightarg = right_type ]
   [, commutator = com_op ] [, negator = neg_op ]
   [, restrict = res_proc ] [, join = join_proc ]
   [, hashes ] [, merges ]
   [, sort1 = left_sort_op ] [, sort2 = right_sort_op ]
   [, ltcmp = less_than_op ] [, gtcmp = greater_than_op ]
)

create operator class

定义一个新的操作符表。

create operator class name [ default ] for type data_type
using index_method as
{ operator strategy_number operator_name [ ( op_type, op_type ) ] [ recheck ]
   | function support_number func_name ( argument_type [, ...] )
   | storage storage_type
} [, ... ]

create role

定义一个新的数据库角色。

create role _name_ [ [ with ] _option_ [ ... ] ]

选项可以是以下值:

      superuser | nosuperuser
    | createdb | nocreatedb
    | createrole | nocreaterole
...

create rule

定义一个新重写规则。

create [ or replace ] rule name as on event
to table [ where condition ]
do [ also | instead ] { nothing | command | ( command ; command ... ) }

create schema

定义一个新模式。

create schema schema_name
[ authorization username ] [ schema_element [ ... ] ]
create schema authorization username
[ schema_element [ ... ] ]

create server

定义一个新的外部服务器。。

create server _server_name_ [ type '_server_type_' ] [ version '_server_version_' ]
    foreign data wrapper _fdw_name_
    [ options ( _option_ '_value_' [, ... ] ) ]

create sequence

定义一个新序列发生器。

create [ temporary | temp ] sequence name
[ increment [ by ] increment ]
[ minvalue minvalue | no minvalue ]
[ maxvalue maxvalue | no maxvalue ]
[ start [ with ] start ] [ cache cache ] [ [ no ] cycle ]

create table

定义一个新表。

create [ [ global | local ] { 
   temporary | temp } ] table table_name ( { 
      column_name data_type [ default default_expr ] [ column_constraint [ ... ] ]
      | table_constraint
      | like parent_table [ { including | excluding } defaults ] 
   } [, ... ]
)
[ inherits ( parent_table [, ... ] ) ]
[ with oids | without oids ]
[ on commit { preserve rows | delete rows | drop } ]
[ tablespace tablespace ]

column_constraint 可以是以下选项之一:

[ constraint constraint_name ] { 
   not null |
   null |
   unique [ using index tablespace tablespace ] |
   primary key [ using index tablespace tablespace ] |
   check (expression) |
   references ref_table [ ( ref_column ) ]
   [ match full | match partial | match simple ]
   [ on delete action ] [ on update action ] 
}
[ deferrable | not deferrable ] [ initially deferred | initially immediate ]

table_constraint 可以是以下选项之一:

[ constraint constraint_name ]
{ unique ( column_name [, ... ] ) [ using index tablespace tablespace ] |
primary key ( column_name [, ... ] ) [ using index tablespace tablespace ] |
check ( expression ) |
foreign key ( column_name [, ... ] )
references ref_table [ ( ref_column [, ... ] ) ]
[ match full | match partial | match simple ]
[ on delete action ] [ on update action ] }
[ deferrable | not deferrable ] [ initially deferred | initially immediate ]

create table as

从一条查询的结果中定义一个新表。

create [ [ global | local ] { temporary | temp } ] table table_name
[ (column_name [, ...] ) ] [ [ with | without ] oids ]
as query

create tablespace

定义一个新的表空间。

create tablespace tablespace_name [ owner username ] location 'directory'

create trigger

定义一个新的触发器。

create trigger name { before | after } { event [ or ... ] }
on table [ for [ each ] { row | statement } ]
execute procedure func_name ( arguments )

create type

定义一个新的数据类型。

create type name as
( attribute_name data_type [, ... ] )
create type name (
input = input_function,
output = output_function
[, receive = receive_function ]
[, send = send_function ]
[, analyze = analyze_function ]
[, internallength = { internal_length | variable } ]
[, passedbyvalue ]
[, alignment = alignment ]
[, storage = storage ]
[, default = default ]
[, element = element ]
[, delimiter = delimiter ]
)

create user

创建一个新的数据库用户帐户。

create user name [ [ with ] option [ ... ] ]

option 可以是以下选项之一:

sysid uid
| [ encrypted | unencrypted ] password 'password'
| createdb | nocreatedb
| createuser | nocreateuser
| in group group_name [, ...]
| valid until 'abs_time'

create view

定义一个视图。

create [ or replace ] view name [ ( column_name [, ...] ) ] as query

deallocate

删除一个准备好的查询。

deallocate [ prepare ] plan_name

declare

定义一个游标。

declare name [ binary ] [ insensitive ] [ [ no ] scroll ]
cursor [ { with | without } hold ] for query
[ for { read only | update [ of column [, ...] ] } ]

delete

删除一个表中的行。

delete from [ only ] table [ where condition ]

drop aggregate

删除一个用户定义的聚集函数。

drop aggregate name ( type ) [ cascade | restrict ]

drop cast

删除一个用户定义的类型转换。

drop cast (source_type as target_type) [ cascade | restrict ]

drop conversion

删除一个用户定义的编码转换。

drop conversion name [ cascade | restrict ]

drop database

删除一个数据库。

drop database name

drop domain

删除一个用户定义的域。

drop domain name [, ...] [ cascade | restrict ]

drop function

删除一个函数。

drop function name ( [ type [, ...] ] ) [ cascade | restrict ]

drop group

删除一个用户组。

drop group name

drop index

删除一个索引。

drop index name [, ...] [ cascade | restrict ]

drop language

删除一个过程语言。

drop [ procedural ] language name [ cascade | restrict ]

drop operator

删除一个操作符。

drop operator name ( { left_type | none }, { right_type | none } )
[ cascade | restrict ]

drop operator class

删除一个操作符表。

drop operator class name using index_method [ cascade | restrict ]

drop role

删除一个数据库角色。

drop role [ if exists ] _name_ [, ...]

drop rule

删除一个重写规则。

drop rule name on relation [ cascade | restrict ]

drop schema

删除一个模式。

drop schema name [, ...] [ cascade | restrict ]

drop sequence

删除一个序列。

drop sequence name [, ...] [ cascade | restrict ]

drop table

删除一个表。

drop table name [, ...] [ cascade | restrict ]

drop tablespace

删除一个表空间。

drop tablespace tablespace_name

drop trigger

删除一个触发器定义。

drop trigger name on table [ cascade | restrict ]

drop type

删除一个用户定义数据类型。

drop type name [, ...] [ cascade | restrict ]

drop user

删除一个数据库用户帐号。

drop user name

drop view

删除一个视图。

drop view name [, ...] [ cascade | restrict ]

end

提交当前的事务。

end [ work | transaction ]

execute

执行一个准备好的查询。

execute plan_name [ (parameter [, ...] ) ]

explain

显示一个语句的执行规划。

explain [ analyze ] [ verbose ] statement

fetch

用游标从查询中抓取行。

fetch [ direction { from | in } ] cursor_name

direction 可以是以下选项之一:

next
prior
first
last
absolute count
relative count
count
all
forward
forward count
forward all
backward
backward count
backward all

grant

定义访问权限。

grant { { select | insert | update | delete | rule | references | trigger }
[,...] | all [ privileges ] }
on [ table ] table_name [, ...]
to { username | group group_name | public } [, ...] [ with grant option ]
grant { { create | temporary | temp } [,...] | all [ privileges ] }
on database db_name [, ...]
to { username | group group_name | public } [, ...] [ with grant option ]
grant { create | all [ privileges ] }
on tablespace tablespace_name [, ...]
to { username | group group_name | public } [, ...] [ with grant option ]
grant { execute | all [ privileges ] }
on function func_name ([type, ...]) [, ...]
to { username | group group_name | public } [, ...] [ with grant option ]
grant { usage | all [ privileges ] }
on language lang_name [, ...]
to { username | group group_name | public } [, ...] [ with grant option ]
grant { { create | usage } [,...] | all [ privileges ] }
on schema schema_name [, ...]
to { username | group group_name | public } [, ...] [ with grant option ]

insert

在表中创建新行,即插入数据。

insert into table [ ( column [, ...] ) ]
{ default values | values ( { expression | default } [, ...] ) | query }

listen

监听一个通知。

listen name

load

加载或重载一个共享库文件。

load 'filename'

lock

锁定一个表。

lock [ table ] name [, ...] [ in lock_mode mode ] [ nowait ]

lock_mode 可以是以下选项之一:

access share | row share | row exclusive | share update exclusive
| share | share row exclusive | exclusive | access exclusive

move

定位一个游标。

move [ direction { from | in } ] cursor_name

notify

生成一个通知。

notify name

prepare

创建一个准备好的查询。

prepare plan_name [ (data_type [, ...] ) ] as statement

reindex

重建索引。

reindex { database | table | index } name [ force ]

release savepoint

删除一个前面定义的保存点。

release [ savepoint ] savepoint_name

reset

把一个运行时参数值恢复为默认值。

reset name
reset all

revoke

删除访问权限。

revoke [ grant option for ]
{ { select | insert | update | delete | rule | references | trigger }
[,...] | all [ privileges ] }
on [ table ] table_name [, ...]
from { username | group group_name | public } [, ...]
[ cascade | restrict ]
revoke [ grant option for ]
{ { create | temporary | temp } [,...] | all [ privileges ] }
on database db_name [, ...]
from { username | group group_name | public } [, ...]
[ cascade | restrict ]
revoke [ grant option for ]
{ create | all [ privileges ] }
on tablespace tablespace_name [, ...]
from { username | group group_name | public } [, ...]
[ cascade | restrict ]
revoke [ grant option for ]
{ execute | all [ privileges ] }
on function func_name ([type, ...]) [, ...]
from { username | group group_name | public } [, ...]
[ cascade | restrict ]
revoke [ grant option for ]
{ usage | all [ privileges ] }
on language lang_name [, ...]
from { username | group group_name | public } [, ...]
[ cascade | restrict ]
revoke [ grant option for ]
{ { create | usage } [,...] | all [ privileges ] }
on schema schema_name [, ...]
from { username | group group_name | public } [, ...]
[ cascade | restrict ]

rollback

退出当前事务。

rollback [ work | transaction ]

rollback to savepoint

回滚到一个保存点。

rollback [ work | transaction ] to [ savepoint ] savepoint_name

savepoint

在当前事务里定义一个新的保存点。

savepoint savepoint_name

select

从表或视图中取出若干行。

select [ all | distinct [ on ( expression [, ...] ) ] ]
* | expression [ as output_name ] [, ...]
[ from from_item [, ...] ]
[ where condition ]
[ group by expression [, ...] ]
[ having condition [, ...] ]
[ { union | intersect | except } [ all ] select ]
[ order by expression [ asc | desc | using operator ] [, ...] ]
[ limit { count | all } ]
[ offset start ]
[ for update [ of table_name [, ...] ] ]from_item 可以是以下选项:
[ only ] table_name [ * ] [ [ as ] alias [ ( column_alias [, ...] ) ] ]
( select ) [ as ] alias [ ( column_alias [, ...] ) ]
function_name ( [ argument [, ...] ] )
[ as ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ]
function_name ( [ argument [, ...] ] ) as ( column_definition [, ...] )
from_item [ natural ] join_type from_item
[ on join_condition | using ( join_column [, ...] ) ]

select into

从一个查询的结果中定义一个新表。

select [ all | distinct [ on ( expression [, ...] ) ] ]
* | expression [ as output_name ] [, ...]
into [ temporary | temp ] [ table ] new_table
[ from from_item [, ...] ]
[ where condition ]
[ group by expression [, ...] ]
[ having condition [, ...] ]
[ { union | intersect | except } [ all ] select ]
[ order by expression [ asc | desc | using operator ] [, ...] ]
[ limit { count | all } ]
[ offset start ]
[ for update [ of table_name [, ...] ] ]

set

修改运行时参数。

set [ session | local ] name { to | = } { value | 'value' | default }
set [ session | local ] time zone { time_zone | local | default }

set constraints

设置当前事务的约束检查模式。

set constraints { all | name [, ...] } { deferred | immediate }

set session authorization

为当前会话设置会话用户标识符和当前用户标识符。

set [ session | local ] session authorization username
set [ session | local ] session authorization default
reset session authorization

set transaction

开始一个事务块。

set transaction transaction_mode [, ...]
set session characteristics as transaction transaction_mode [, ...]

transaction_mode 是以下值之一

isolation level { serializable | repeatable read | read committed
| read uncommitted }
read write | read only

show

显示运行时参数的值。

show name
show all

start transaction

开始一个事务块。

start transaction [ transaction_mode [, ...] ]

transaction_mode 可以是下面的选项之一:

isolation level { serializable | repeatable read | read committed
| read uncommitted }
read write | read only

truncate

清空一个或一组表。

truncate [ table ] name

unlisten

停止监听通知信息。

unlisten { name | * }

update

更新一个表中的行。

update [ only ] table set column = { expression | default } [, ...]
[ from from_list ]
[ where condition ]

vacuum

垃圾收集以及可选地分析一个数据库。

vacuum [ full ] [ freeze ] [ verbose ] [ table ]
vacuum [ full ] [ freeze ] [ verbose ] analyze [ table [ (column [, ...] ) ] ]

values

计算一个或一组行。

values ( _expression_ [, ...] ) [, ...]
    [ order by _sort_expression_ [ asc | desc | using _operator_ ] [, ...] ]
    [ limit { _count_ | all } ]
    [ offset _start_ [ row | rows ] ]
    [ fetch { first | next } [ _count_ ] { row | rows } only ]

查看笔记

扫码一下
查看教程更方便
网站地图