在本文中,我们将详细介绍postgresqlupdatefrom的各个方面,同时,我们也将为您带来关于centos7下源码编译安装php支持PostgreSQLpostgresql手册postgres
在本文中,我们将详细介绍postgresql update from的各个方面,同时,我们也将为您带来关于centos 7下源码编译安装php支持PostgreSQL postgresql手册 postgresql官网下载 postgresql视频教、get year from a postgresql DATE、PostgreSQL - update语句怎么关联多个表、PostgreSQL 13 配置参数update_process_title的有用知识。
本文目录一览:- postgresql update from
- centos 7下源码编译安装php支持PostgreSQL postgresql手册 postgresql官网下载 postgresql视频教
- get year from a postgresql DATE
- PostgreSQL - update语句怎么关联多个表
- PostgreSQL 13 配置参数update_process_title
postgresql update from
1,update from 关联表的更新
update table a set name=b.name from table B b where a.id=b.id;
update test set info=tmp.info from (values (1,''new1''),(2,''new2''),(6,''new6'')) as tmp (id,info) where test.id=tmp.id;
2 update from
update TABLEA a
set update_time=now,
name=case when b.name is not null then d.name else a.name end,
age=case when b.age is not null then d.age else a.age end
from TABELEB b where a.id=b.id;
3.实际应用举例:
update dp1.m_task mt set update_date=now() , is_delegated=case when d.is_delegated is not null then d.is_delegated else mt.is_delegated end , priority=case when d.priority is not null then d.priority else mt.priority end , status=case when d.status is not null then d.status else mt.status end, task_group_id=case when d.task_group_id is not null then d.task_group_id else mt.task_group_id end , task_name=case when d.task_name is not null then d.task_name else mt.task_name end , team_id=case when d.team_id is not null then d.team_id else mt.team_id end
from (
select 100 as client_id,
is_delegated::integer,priority::integer,status::smallint,task_code::character varying,task_group_id::integer,task_name::character varying,team_id::integer
from (
select rowindex,is_delegated,priority,status,task_code,task_group_id,task_name,team_id
from ext.crosstab (
''
select rowindex,column_name,column_value
from field_fixed_detail_table a
'',
''
select column_name from fixed_column_table
''
)
as ct ( rowindex integer,is_delegated varchar,priority varchar,status varchar,task_code varchar,task_group_id varchar,task_integrate_code varchar,task_name varchar,team_id varchar)
) as fixed
) as d
where mt.task_code=d.task_code;
centos 7下源码编译安装php支持PostgreSQL postgresql手册 postgresql官网下载 postgresql视频教
1. 下载源码
$ mkdir /usr/downloads $ wget -c http://cn2.php.net/distributions/php-5.6.20.tar.gz $ tar -xvf php-5.6.20.tar.gz $ mv php-5.6.20 /usr/local/src $ cd !$ & cd php-5.6.20
2. 阅读安装指导
$ ls -also $ less README $ less INSTALL
3. 安装依赖包
$ yum install apr apr-util apr-devel apr-util-devel prce lynx
4. 安装httpd
$ wget -c http://apache.fayea.com//httpd/httpd-2.4.20.tar.gz $ tar -xvf httpd-2.4.20.tar.gz $ cd httpd-2.4.20 $ ./configure \ --prefix=/usr/local/programs/apache2 \ --enable-rewrite \ --enable-so \ --enable-headers \ --enable-expires \ --with-mpm=worker \ --enable-modules=most \ --enable-deflate \ --enable-module=shared $ make $ make install $ cd /usr/local/programs/apache2 $ cp bin/apachectl /etc/init.d/httpd ## 复制启动脚本 $ /etc/init.d/httpd start ## 启动apache服务器,访问http://localhost/ $ egrep -v ''^[ ]*#|^$'' /usr/local/apache2/conf/httpd.conf | nl ## 查看apache服务器的配置 ## 将apache加入系统服务 vi /etc/rc.d/rc.local ``` /usr/local/programs/apache2/bin/apachectl start ``` $ cat /etc/rc.local
4. 安装postgresql
立即学习“PHP免费学习笔记(深入)”;
$ yum install readline-devel ## 安装readline依赖 $ cd /usr/downloads $ wget -c https://ftp.postgresql.org/pub/source/v9.5.0/postgresql-9.5.0.tar.bz2 $ tar -xvf postgresql-9.5.0.tar.bz2 $ cd postgresql-9.5.0 $ ./configure --prefix=/usr/local/programs/postgresql $ make $ su $ make install $ /sbin/ldconfig /usr/local/programs/postgresql/lib ## 刷新下共享动态库 $ cd /usr/local/programs/postgresql $ bin/psql --version ## 检查运行情况 ## 开始对postgresql的配置 $ vi /etc/profile.d/postgresql.sh ## 增加环境变量,不推荐直接在/etc/profile中添加,系统更新升级时会需要merge ``` PATH=/usr/local/programs/postgresql:$PATH export PATH ``` $ source /etc/profile ## 更新环境变量 ## 增加用户和其他文件夹 $ adduser postgres $ passwd postgres $ mkdir /usr/local/programs/postgresql/logs $ mkdir /usr/local/programs/postgresql/data $ chown postgres /usr/local/programs/postgresql/data $ su - postgres ## 初始化数据库 $ ./bin/initdb -D ./data $ ./bin/createdb test $ ./bin/psql test ## 已有数据库,可导入data文件夹后尝试root访问,假如带密码,可能需要进一步研究下 $ ./bin/postgres -D ./data >./logs/start-log-1.log 2>&1 & $ ./bin/psql --list ##列出数据库 ## ok,安装完成 ## 自定义设置,权限控制等,可以跳过,等熟悉使用后再做 ## 编辑数据库配置及权限文件: $ vi /usr/local/programs/postgresql/data/postgresql.conf ## 数据库配置文件 $ chown postgres postgresql.conf $ chmod 644 postgresql.conf $ vi /usr/local/programs/postgresql/data/pg_hba.conf ## 权限文件 $ vi /usr/local/programs/postgresql/data/pg_ident.conf ## 设置开机自启动: $ vi /etc/rc.d/rc.local ## 添加如下内容 ``` /usr/local/programs/postgresql/bin/postgresql start ```
5. 安装php
## 源码已经在第一步中下载,现在开始安装: $ yum install libxml2 libxml2-devel libpng libpng-devel libjpeg libjpeg-devel freetype freetype-devel $ ./configure \ --prefix=/usr/local/programs/php \ --with-apxs2=/usr/local/programs/apache2/bin/apxs \ --with-zlib \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-zlib-dir \ --enable-mbstring \ --with-pgsql=/usr/local/programs/postgresql \ --with-pdo-pgsql=/usr/local/programs/postgresql $ make $ make test > Bug #42718 (unsafe_raw filter not applied when configured as default filter) [ext/filter/tests/bug42718.phpt] XFAIL REASON: FILTER_UNSAFE_RAW not applied when configured as default filter, even with flags > Bug #67296 (filter_input doesn''t validate variables) [ext/filter/tests/bug49184.phpt] XFAIL REASON: See Bug #49184 > Bug #53640 (XBM images require width to be multiple of 8) [ext/gd/tests/bug53640.phpt] XFAIL REASON: Padding is not implemented yet > zend multibyte (7) [ext/mbstring/tests/zend_multibyte-07.phpt] XFAIL REASON: https://bugs.php.net/bug.php?id=66582 > zend multibyte (9) [ext/mbstring/tests/zend_multibyte-09.phpt] XFAIL REASON: https://bugs.php.net/bug.php?id=66582 >Bug #70470 (Built-in server truncates headers spanning over TCP packets) [sapi/cli/tests/bug70470.phpt] XFAIL REASON: bug is not fixed yet ## 查阅官方的bug,发现: > id=66582: status : Closed. Fixed in master (PHP7) > id=42718: status : Assigned > id=42718: reference to id=49184, unsolved for many years ## 那就不关心了,直接装吧 $ make install > You may want to add: /usr/local/programs/php/lib/php to your php.ini include_path ## 那就按它说的设置吧 $ cp php.ini-development /usr/local/programs/php/lib/php.ini ``` include_path = ".;/usr/local/programs/php/lib/php" ## 然后,编辑httpd的设置,确保其能正确解析php文件 ``` ... LoadModule php5_module modules/libphp5.so ... AddType application/x-httpd-php .php AddType application/x-httpd-php-source .php5 ... <ifmodule dir_module> DirectoryIndex index.html index.php </ifmodule> ``` ## 重启httpd,测试 $ cd /usr/local/programs/apache2 $ bin/httpd -h $ bin/httpd -k stop $ bin/httpd -f conf/httpd.conf ## 默认设置的www页面在./htdocs/下,那就先去里面建一个测试页面吧 $ vi htdocs/index.php ``` <?php phpinfo(); ?> ``` $ curl http://localhost/index.php |grep postgresql #ok
后续应该做的事
* 1. 启动时,不需要要手动指定配置文件
* 2. php初始化www目录设置
* 3. php 用户、权限管理等
以上就介绍了centos 7下源码编译安装php支持PostgreSQL,包括了postgresql,centos 7方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
get year from a postgresql DATE
get year from a postgresql date 1、如果所在的列属性 mydate 本身为 DATE 类型,则使用: [sql] SELECT EXTRACT(year FROM mydate) FROM mytable; 2、如果所在的列属性 mydate 为 varchar 类型,则先使用 to_date()将其转换为 DATE类型,然后在使用 EXTRAC
get year from a postgresql date
1、如果所在的列属性 mydate 本身为 DATE 类型,则使用:
[sql]
SELECT EXTRACT(year FROM mydate) FROM mytable;
2、如果所在的列属性 mydate 为 varchar 类型,则先使用
to_date()将其转换为 DATE类型,然后在使用 EXTRACT year:
[sql]
SELECT EXTRACT(year FROM to_date(mydate,
PostgreSQL - update语句怎么关联多个表
问题
对于select语句,我们可以通过join/outer join来关联多个表;但是对于update语句,是不能直接通过join/outer join来关联多表数据的,这里仅针对Postgresql。
或者说,在Postgresql中,就算使用update+join不会报错,但join的那部分其实是没任何效果的,如下所示:
update a set value = ‘test‘ from a join b on a.b_id = b.id join c on b.c_id = c.id where a.key = ‘test‘ and c.value = ‘test‘;
按照上边的sql,本意是a、b、c三表关联,当c的value是‘test‘且a的key也是‘test‘的时候,就将a的value也改为‘test‘。但实际上这个sql有大问题,这里的join和where条件并没有意义,一旦update成功,你会发现,a表内的所有数据的value都被改成了‘test‘!!要么update 0条数据,要么全部update!至于是哪种结果,这要看where的条件,目前还不清楚为什么会这样。因为这种写法本身就是不对的!
Postgresql中正确的多表关联update写法
在update语句中不应该通过join来进行多表关联,而是要通过from来多表关联,如下:
update a set value = ‘test‘ from b,c where a.b_id = b.id and b.c_id = c.id and a.key = ‘test‘ and c.value = ‘test‘;
通过from来多表关联,而关联条件则是放到了where中,这样就可以达到我们想要的效果了。另外补充一句,对于set xxx = ‘xxx‘
这个update的部分,是不可以在column字段前加上表前缀的,比如下边的写法就是有语法错误的:
update a set a.value = ‘test‘;
参考链接
- How to do an update + join in PostgreSQL?
PostgreSQL 13 配置参数update_process_title
参数名称 |
update_process_title |
参数值数据类型 |
Bool |
默认值 |
on(除windows之外的平台);off(Windows平台) |
取值范围 |
on和off |
参数单位 |
|
参数含义 |
每当服务器接收到一个新的 SQL 命令时都更新process title |
是否可session级修改 |
是,此时仅限于superuser可以在session级修改 |
修改后何时生效 |
Reload即可生效 Session级修改时会立即在session级生效 |
今天的关于postgresql update from的分享已经结束,谢谢您的关注,如果想了解更多关于centos 7下源码编译安装php支持PostgreSQL postgresql手册 postgresql官网下载 postgresql视频教、get year from a postgresql DATE、PostgreSQL - update语句怎么关联多个表、PostgreSQL 13 配置参数update_process_title的相关知识,请在本站进行查询。
本文标签: