postgreSql

获取指定行的记录

select * from
(
select *,row_number() over(order by alarm_record_id asc) as ORDERS from alarm_record
) as m where ORDERS = 5
在这里插入图片描述

postgreSql数据库的字段名设计时候注意不要采用驼峰命名法,否则报列名找不到
postgreSql跨模式查询

select count(1) from “KFC.Flash sale”.f_product_info where 嗣源 = ‘12:22’ # KFC.Flash 是模式名称,须加""双引号

postgreSql设置主键自增

create SEQUENCE t_interface_user_id_seq START 1;// t_interface_user表名,id要设置的主键字段//执行完把
nextval(‘t_interface_user_id_seq’::regclass)放到设计表时的对应的框里即可注意单引号格式
DROP SEQUENCE t_interface_user_id_seq ;//删除索引
TRUNCATE table t_interface_user;

postgresql查询模式是否存在

SELECT exists(
SELECT schema_name
FROM information_schema.schemata
WHERE schema_name = ‘Flash sale’
) as schema_exists;

分页查询

select * from ahqwtest_couponmsgsend_monthrightsmsg where status=0
order by id,usercode
limit 2000 offset 4000;
–limit 每页2000条参数不变 offset 偏移量0/2000/4000参数变

select id,usercode,status from(
select rownum as rn, * from (
SELECT row_number() over(order by id asc,usercode asc) as rownum,* FROM ahqwtest_couponmsgsend_monthrightsmsg where status=0
) as t_1 WHERE rownum <= 2000 --2000,4000,6000
) as t_2 where rn >= 1 ; --1,2001,4001
–从第1行到第2000行,分页查时两个参数都要变

循环造数据
do $$
declare
i integer := 1;
begin
  while i <= 50000 loop
    insert into level_info_bak (usercode) values (i);  --执行插入
  end loop;
end $$;
折线图功能-[case-when]
select 
  sum(case a.alarm_state when 1 then 1  when 2  then 1 else 0  end) totle,
	sum(case a.alarm_state when 1 then 1  else 0  end) prehandle,
	sum(case a.alarm_state when 2 then 1  else 0  end) handled,
	substr(to_char(a.create_time,'YYYY-MM-DD HH24:MI:SS'),1,13) as times
from alarm_record_detail as a 
where a.is_del=0 and a.brand_id='KFC'
and substr(to_char(a.create_time,'YYYY-MM-DD HH24:MI:SS'),1,13) in 
(
select * from 
(select substr(to_char(CURRENT_TIMESTAMP,'YYYY-MM-DD HH24:MI:SS'), 1, 13)
union 
select substr(to_char(CURRENT_TIMESTAMP- interval '1 hours','YYYY-MM-DD HH24:MI:SS'), 1, 13)
union
select substr(to_char(CURRENT_TIMESTAMP- interval '2 hours','YYYY-MM-DD HH24:MI:SS'), 1, 13)
union
select substr(to_char(CURRENT_TIMESTAMP- interval '3 hours','YYYY-MM-DD HH24:MI:SS'), 1, 13)
union
select substr(to_char(CURRENT_TIMESTAMP- interval '4 hours','YYYY-MM-DD HH24:MI:SS'), 1, 13)
union
select substr(to_char(CURRENT_TIMESTAMP- interval '5 hours','YYYY-MM-DD HH24:MI:SS'), 1, 13)
union
select substr(to_char(CURRENT_TIMESTAMP- interval '6 hours','YYYY-MM-DD HH24:MI:SS'), 1, 13)
union
select substr(to_char(CURRENT_TIMESTAMP- interval '7 hours','YYYY-MM-DD HH24:MI:SS'), 1, 13)
union
select substr(to_char(CURRENT_TIMESTAMP- interval '8 hours','YYYY-MM-DD HH24:MI:SS'), 1, 13)
union
select substr(to_char(CURRENT_TIMESTAMP- interval '9 hours','YYYY-MM-DD HH24:MI:SS'), 1, 13)
union
select substr(to_char(CURRENT_TIMESTAMP- interval '10 hours','YYYY-MM-DD HH24:MI:SS'), 1, 13)
union
select substr(to_char(CURRENT_TIMESTAMP- interval '11 hours','YYYY-MM-DD HH24:MI:SS'), 1, 13)
)as v)
group by  substr(to_char(a.create_time,'YYYY-MM-DD HH24:MI:SS'),1,13) ORDER BY times;
postgresql和mysql区别

PostgreSQL(简称PG)和MySQL都是广泛使用的关系型数据库管理系统,它们在多个方面有显著的区别。选择PG或MySQL取决于具体的需求和使用场景,例如,对于需要处理复杂数据结构和高并发场景的应用,PostgreSQL可能是更好的选择。而对于处理简单数据结构和小型应用的情况,MySQL可能更适合。
1.数据类型支持。PostgreSQL支持更丰富的数据类型,如数组、JSON、XML、hstore(将数据以键值对的形式存储)等,而MySQL的数据类型相对较少,主要集中在整数、浮点数、日期时间、字符串等基本类型以及空间数据类型如polygon(多边形)和point(点)等GIS系统中的点线面数据。
2.ACID兼容性。PostgreSQL是完全ACID(原子性、一致性、隔离性、持久性)兼容的,而MySQL只在特定的存储引擎(如InnoDB)中提供ACID支持。
3.存储引擎。MySQL支持多种存储引擎,如InnoDB、MyISAM等,每种存储引擎都有其特点和适用场景。而PostgreSQL只支持单一的存储引擎。
4.事务处理和安全性。PostgreSQL事务处理更加强大和灵活,支持多种隔离级别(默认是读已提交),并采用MVCC(多版本并发控制)机制。而MySQL的事务处理虽然也支持多种隔离级别(默认是可重复读),但其实现方式与PostgreSQL不同, InnoDB支持 MVCC(多版本并发控制),MyISAM 不支持。

可将MVCC看成行级锁的一种妥协,它在许多情况下避免了使用锁,可以提供更小的开销。根据实现的不同,它可以允许非阻塞式读,在写操作进行时只锁定必要的记录。MVCC只工作在REPEATABLE
READ和READ COMMITED隔离级别下。READ
UNCOMMITED不是MVCC兼容的。SERIABLABLE也不与MVCC兼容,因为读操作会锁定返回的每一行数据 。

5.SQL标准兼容性。PostgreSQL在SQL标准的实现上比MySQL更完善和严谨。
6.触发器和函数支持。PostgreSQL的触发器和函数功能更加强大,支持复杂的PL/SQL语言,可以实现更复杂的业务逻辑。而MySQL在这方面的功能相对较弱。PostgreSQL还提供了一些高级功能,如异步复制、流复制、热备等。

PL/SQL语言(Procedural Language/SQL,过程化SQL语言)是Oracle推出的过程化的SQL编程语言,使用PL/SQL可以为SQL语言引入结构化的程序处理能力,例如可以在PL/SQL中定义常量、变量、游标、存储过程等,可以使用条件、循环等流程控制语句。
BEGIN
–打印hello world
DBMS_OUTPUT.PUT_LINE(‘hello world’);
END;

其中DBMS_OUTPUT 为oracle内置程序包,相当于Java中的System.out,而PUT_LINE()是调用的方法,相当于println()方法。

7.并发性能。在高并发、大数据量的情况下,PostgreSQL的性能通常优于MySQL。
8.分区表支持。MySQL的分区表实现相对成熟,适合基于主键匹配的查询和删改操作。而PostgreSQL的分区表实现相对简单。
9.开源许可证。PostgreSQL采用BSD,这意味着PostgreSQL可以被商业软件使用,并且修改后的代码可以私有化。而MySQL采用GPL(通用公共许可证)。
10.跨平台支持:MySQL支持更多的操作系统,如Windows,Linux,macOS,FreeBSD(Unix的一个分支)等。PostgreSQL虽然也支持这些操作系统,但它的最初目标是在UNIX操作系统上运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值