A. 如何学习Postgresql SQL语法
我们可以利用psql命令来查询sql语法。
切换到PostgreSql用户下,
[sql] view plain
<span style="font-size:18px;">[doctor@localhost ~]$ su - postgres
密码:
su: 鉴定故障
[doctor@localhost ~]$ su - postgres
密码:
-bash-4.3$ bash
bash-4.3$ psql
psql (9.4.2)
输入 "help" 来获取帮助信息.
postgres=#
postgres=# help
您正在使用psql, 这是一种用于访问PostgreSQL的命令行界面
键入: \right 显示发行条款
\h 显示 SQL 命令的说明
\? 显示 pgsql 命令的说明
\g 或者以分号(;)结尾以执行查询
\q 退出
postgres=#
</span>
\h 命令就是我们用来学习sql语法的命令。
[sql] view plain
<span style="font-size:18px;">postgres=# \h
可用的说明:
ABORT DEALLOCATE
ALTER AGGREGATE DECLARE
ALTER COLLATION DELETE
ALTER CONVERSION DISCARD
ALTER DATABASE DO
ALTER DEFAULT PRIVILEGES DROP AGGREGATE
ALTER DOMAIN DROP CAST
ALTER EVENT TRIGGER DROP COLLATION
ALTER EXTENSION DROP CONVERSION
ALTER FOREIGN DATA WRAPPER DROP DATABASE
ALTER FOREIGN TABLE DROP DOMAIN
ALTER FUNCTION DROP EVENT TRIGGER
ALTER GROUP DROP EXTENSION
ALTER INDEX DROP FOREIGN DATA WRAPPER
ALTER LANGUAGE DROP FOREIGN TABLE
ALTER LARGE OBJECT DROP FUNCTION
ALTER MATERIALIZED VIEW DROP GROUP
ALTER OPERATOR DROP INDEX
ALTER OPERATOR CLASS DROP LANGUAGE
ALTER OPERATOR FAMILY DROP MATERIALIZED VIEW
ALTER ROLE DROP OPERATOR
ALTER RULE DROP OPERATOR CLASS
postgres=# \h select
命令: SELECT
描述: 从资料表或视观表读取资料
语法:
[ WITH [ RECURSIVE ] with查询语句(with_query) [, ...] ]
SELECT [ ALL | DISTINCT [ ON ( 表达式 [, ...] ) ] ]
[ * | 表达式 [ [ AS ] 输出名称 ] [, ...] ]
[ FROM from列表中项 [, ...] ]
[ WHERE 条件 ]
[ GROUP BY 表达式 [, ...] ]
[ HAVING 条件 [, ...] ]
[ WINDOW 窗口名称 AS ( 窗口定义 ) [, ...] ]
[ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] 查询 ]
[ ORDER BY 表达式 [ ASC | DESC | USING 运算子 ] [ NULLS { FIRST | LAST } ] [
, ...] ]
[ LIMIT { 查询所用返回记录的最大数量 | ALL } ]
[ OFFSET 起始值 [ ROW | ROWS ] ]
[ FETCH { FIRST | NEXT } [ 查询所用返回记录的最大数量 ] { ROW | ROWS } ONLY
]
[ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF 表名 [, ...] ] [ N
OWAIT ] [...] ]
from 列表中的项可以是下列内容之一
[ ONLY ] 表名 [ * ] [ [ AS ] 化名 [ ( 列的化名 [, ...] ) ] ]
[ LATERAL ] ( 查询 ) [ AS ] 化名 [ ( 列的化名 [, ...] ) ]
WITH查询语句名称(with_query_name) [ [ AS ] 化名 [ ( 列的化名 [, ...] ) ] ]
[ LATERAL ] 函数名称 ( [ 参数 [, ...] ] )
[ WITH ORDINALITY ] [ [ AS ] 化名 [ ( 列的化名 [, ...] ) ] ]
[ LATERAL ] 函数名称 ( [ 参数 [, ...] ] ) [ AS ] 化名 ( 列定义 [, ...] )
[ LATERAL ] 函数名称 ( [ 参数 [, ...] ] ) AS ( 列定义 [, ...] )
[ LATERAL ] ROWS FROM( 函数名称 ( [ 参数 [, ...] ] ) [ AS ( 列定义 [, ...] )
] [, ...] )
[ WITH ORDINALITY ] [ [ AS ] 化名 [ ( 列的化名 [, ...] ) ] ]
from列表中项 [ NATURAL ] 连接操作的类型 from列表中项 [ ON 用连接操作的条件 |
USING ( 用于连接操作的列 [, ...] ) ]
with查询语句是:
WITH查询语句名称(with_query_name) [ ( 列名称 [, ...] ) ] AS ( 查询 | 值 | in
sert | update | delete )
TABLE [ ONLY ] 表名 [ * ]
postgres=# </span>
看这命令对于学习sql语法很有用。
B. postgresql 可以导出标准的sql语句么
postgresql 可以导出标准的sql语句,下边的步骤详细讲述了从Postgres数据库中导出数据的方法:
(1)将PostgreSQL数据库的psql工具所在的路径添加到系统的环境变量中;
(2)运行cmd,在窗口中输入psql,会有提示输入口令的信息,按ctrl+c终止该命令;
(3)建立与服务器的链接,具体格式:psql -h 服务器IP地址 -U 数据库连接用户名 -d 数据库名称 -p 端口号;(比如:psql -h 192.168.9.202 -U postgres -d luoyang -p 5432),链接成功的话会出现:“数据库名称=#”格式的提示(luoyang=#);
(4)修改数据库中导出数据的编码格式为gbk,指令:\encoding gbk;(输入\encoding可以查看数据库的编码格式,gbk编码方式保证导出的中文汉字不为乱码)
(5)导出数据表中的数据为csv格式文件,指令:\ 表名 to 路径 with csv(比如:\ tbl_user_info to 'C:/user.csv' with csv,成功后在C盘根目录下就会有相应的csv文件
C. 求postgreSQL 的数据库的表数据,导入导出的sql语句,谢谢!
Postgresql数据的导入和导出,以及命令介绍
如何导出PostgreSQL数据库中的数据:
pg_mp -U postgres -f mp.sql mydatabase
具体某个表
pg_mp -U postgres -t mytable -f mp.sql mydatabase
导入数据时首先创建数据库再用psql导入:
createdb newdatabase
psql -d newdatabase -U postgres -f mp.sql
把数据按照自己所想的方式导出,强大的命令:
echo " students to? stdout DELIMITER '|'"|psql school|head
(students为表名,school为库名,各个字段以|分隔)
echo ' (select * from students order by age limit 10) to stdout;' | psql school
D. postgresql怎样导出sql 文件
导出整个数据库
pg_mp -h localhost -U postgres(用户名) 数据库名(缺省时同用户名) >/data/m.sql
导出某个表
pg_mp -h localhost -U postgres(用户名) 数据库名(缺省时同用户名) -t table(表名) >/data/m.sql
E. pgsql数据库怎么执行sql语句
PostgreSQL的PL/pgSQL语言是支持动态SQL语句的(说execute immediate的是ECPG所支持的)。但是,要记得重要的一点: 是在PL/pgSQL语言中支持。而PL/pgSQL语言一个块结构的语言,它以begin ... end为块的开始与结束标识。
F. postgresql如何执行sql文件
原理:
使用"c:\program
files\postgresql\9.0\bin\psql.exe"来建立到postgresql数据库的连接后执行sql语句。
(建立数据库连接的方法,可以参考c:\program
files\postgresql\9.0\scripts\runpsql.bat文件。)
一,执行sql语句
set
db_name=temp
"c:\program
files\postgresql\9.0\bin\psql.exe"
-h
localhost
-u
postgres
-d
%db_name%
-p
5432
-w
-c
"select
*
from
table1;"
二,执行sql脚本文件
在sql语句比较复杂时,可以先把sql语句保存到文件中,然后用psql.exe执行该文件。
@rem
move
to
the
current
file's
directory
%~d0
cd
%~dp0
@rem
excute
a
sql
script
file
to
create
database
"c:\program
files\postgresql\9.0\bin\psql.exe"
-h
localhost
-u
postgres
-d
postgres
-p
5432
-w
-f
resource/db/createdb.sql
如果有多个sql脚本文件(如:a.sql,
b.sql,
c.sql),可以新建一个sql脚本文件(index.sql)来调用这多个脚本文件,这样在bat中只需要一个命令语句,而不需要多次复制相似的命令。新建index.sql文件的内容可以是:
\i
resource/db/createdb.sql
\i
resource/db/createsp.sql
\i
resource/db/insertdata.sql
备注:
在cmd窗口中输入
"c:\program
files\postgresql\9.0\bin\psql.exe"
-?
可以查找psql的相关命令。
建立了数据库连接后,可以用help命令,或者\?
查找sql命令。
G. postgresql怎么优化sql
postgresql(8.2)的配置文件中有一个参数log_min_ration_statement,意思是只log执行时间大于设定值的语句,如果设为0,表示log所有语句;如果设为-1,表示不log任何语句。
看起来,这个配置选项对性能的调整是很有用的,比如可以设置:
log_min_ration_statement = 1000
则只log执行时间大于1s的语句,重点优化这些sql语句就好了。
然而,奇怪的,这个选项不太容易生效!经过反复试验,原来需要如下配置:
#debug_print_parse = off
#debug_print_rewritten = off
#debug_print_plan = off
#debug_pretty_print = off
log_connections = off
#log_disconnections = off
log_ration = off
log_line_prefix = '%t [%p]: [%l-1] ' # Special values:
# %u = user name
# %d = database name
# %r = remote host and port
# %h = remote host
# %p = PID
# %t = timestamp (no milliseconds)
# %m = timestamp with milliseconds
# %i = command tag
# %c = session id
# %l = session line number
# %s = session start timestamp
# %x = transaction id
# %q = stop here in non-session
# processes
# %% = '%'
# e.g. '<%u%%%d> '
log_statement = 'none' # none, mod, ddl, all
#log_statement = 'all' # none, mod, ddl, all
#log_hostname = off
注意看上面的其中两个选项的设置:
log_ration = off
log_statement = 'none'
H. PostgreSQL 动态SQL语句怎么写
PostgreSQL的PL/pgSQL语言是支持动态SQL语句的(说execute immediate的是ECPG所支持的)。但是,要记得重要的一点: 是在PL/pgSQL语言中支持。而PL/pgSQL语言一个块结构的语言,它以begin ... end为块的开始与结束标识。这也就是说,要执行动态SQL语句,就必须放到begin ... end块中,而不要想实现一个单独的动态SQL语句。在SQL Server中,倒是可以轻松的实现,我们可以直接执行一个这样的动态SQL:
executesp_executesqlN'select1asval'
而在PostgreSQL中,就不要有此想法了。当然,SQL Server的这种动态SQL语句的执行方法也有其局限与不便的地方。
在PL/pgSQL中,执行动态SQL的格式如下(摘录自说明文档):
EXECUTEcommand-string[INTO[STRICT]target][USINGexpression[,...]];
其中,
command-string就是要执行的动态SQL语句(一定要记住:这里是SQL语句,不是PL/pgSQL语句,像raise notice就不能使用);
INTO子句是把SQL查询到的值赋给INTO指定的变量;
USING子句是前面的command-string中替代变量($1, $2, ...)的赋值;
示例:
do$$
declare
v_c1integer;
v_c2integer;
begin
execute'selectcount(*)asc1,count(*)asc2from()swhereidx>$1'
intov_c1,v_c2
using10;
raisenotice'%,%',v_c1,v_c2;
I. 怎么把sql文件导入postgresql数据库
1、打开PgAdminIII ,连接服务器。选择要执行该文件的数据库。
2、看到上面栏目有sql字样的图标,点击。
3、打开后,点击导入文件。执行即可。