pgsql与mysql在语法和常用函数上的区别

0.最直观的区别有:

//存储索引类型是B-tree,而mysql是B+tree;
//1.DCL不一样,记住常用的,需要其他时再去查询
//2.数据类型更丰富
//3.pg使用 explain  analyze更详细的查询执行计划

1.分页语法,pgsql需要显示写出偏移量单词:offset

mysql:select *from tablename limit 1,1;
pgsql:select *from tablename limit 1 offset 1;

2.时间加减时,pg要在字段值前使用interval类型关键字

pgsql:select now()+ interval '1 day';

3.合并字段:pg使用连接符号“||”

mysql:select concat('a','b');
pgsql:select 'a'||'b';

4.转换数据类型,pg有简便方法使用符号“::”,不建议用,但要明白

mysql:select cast(value as newtype);
pgsql:select cast(value as newtype);但有一个快捷的,需要注意看得懂这种写法
pgsql:select value::newtype;

5.联表更新

mysql:在set之前联表,再set更新
pgsql:类似于sqlserver,set后,使用from联表更新

6.倒序排序时,pg默认会把空值会排最前面,刚好与升序逻辑相反

mysql:select *from  order by createtime  desc  limit 10;
pgsql:select *from  order by createtime  desc  limit 10;
//处理pgsql的这种排序差差异:where条件排除空值,或者加上nulls last,如:
//select *from  order by createtime desc nulls last  limit 10;

centos使用yum安装postgresql(版本号:10)

1.官网教程:https://www.postgresql.org/download/linux/redhat/

# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Install PostgreSQL:
sudo yum install -y postgresql10-server

# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
sudo systemctl enable postgresql-10
sudo systemctl start postgresql-10

2.登录:su – postgress 切换用户后,执行命令:psql,默认用户名postgres,默认端口5432
3.退出:\q (包括反斜杠)
4.修改为可root登录:

cd /var/lib/pgsql/10/data
cat pg_hba.conf
//修改peer为trust
#local   all  all    peer
local   all   all    trust

5.修改为可远程登录

cd /var/lib/pgsql/10/data
cat pg_hba.conf
//配置文件中新增一行配置:
host    all    all    0.0.0.0/0    md5

cat postgresql.conf
//修改监听地址
listen-addresses = '*'

6.修改密码:登录后,执行命令 \password (包括反斜杠)
7.修改配置后,需要重启服务:systemctl restart postgresql-10