[转帖]PG语法解剖--基本sql语句用法入门
PG语法解剖--基本sql语句用法入门
https://www.toutiao.com/i6710897833953722894/ COPY 命令挺好的 需要学习一下.
概述
今天主要对PG数据库的一些基本SQL语句用法做个介绍,做个简单了解,也做备忘!
下面主要用例子来说明。
1、建表语句
create table test (id int8 primary key,info text,crt_time timestamp);
注意保留字
2、select into & create table as
postgres=# select * into table new_tbl from pg_class;postgres=# create table tbl_1 as select * from pg_class;
3、插入\更新\删除\查询
insert into tbl (xx,xx) values (xx,xx);update tbl set xx=xx where xxx;delete from tbl where xxx=xxx;select xx from xx where xx...;
如果是delete|update limit,则:
update tbl set xx=xx where ctid = any ( array (select ctid from tbl where xx limit ? for update));delete from tbl where ctid = any ( array (select ctid from tbl where xx limit ? for update));
4、批量DML
insert into xx values (),(),...(); copy xx from stdin; copy xx from 'file'; pg_bulkloadupdate t set info=t1.info,crt_time=t1.crt_time from t1,t2 where (t.id=t1.id) and t1.id=t2.id;update tbl_1 set relname=tmp.rel from (values (1,'test1'),(2,'test2')) tmp (id, rel) where tmp.id=tbl_1.id;delete from t using t1 where t.id=t1.id;delete from tbl_1 using (values (1),(2)) tmp (rel) where tmp.rel=tbl_1.reltype;
注意update , delete 批量操作,JOIN不是一一对应时,更新目标可能会随机匹配。
5、DB端copy+客户端copy
• https://github.com/digoal/blog/blob/master/201805/20180516_03.md
• https://github.com/digoal/blog/blob/master/201805/20180510_01.md
5.1、copy为什么快?
协议:
5.2、DB 端copy
copy tbl to 'file';copy (SQL) to 'file';copy tbl from 'file';
5.3、客户端copy
copy tbl from stdin;copy (SQL) to stdout;copy tbl to stdout;psql (\copy to | from); -- copy协议
6、排序+ offset limit
select * from tbl_1 order by relname nulls first;select * from tbl_1 order by relname nulls last;select * from tbl_1 order by relname;select * from tbl_1 order by relname limit 10 offset 10;select * from tbl_1 order by relname::text collate "C";
7、聚合+解耦合
select string_agg(relname,',' order by xx) from tbl_1; select g,avg(c1) from tbl group by g;
8、distinct
select distinct relname,relnamespace from pg_class;SELECT id, COUNT_DISTINCT(val) FROM test_table GROUP BY 1;select count(distinct (relname,relnamespace)) from pg_class;select distinct on (c3) c2,c3 from tbl;
9、INNER|OUTER JOIN
•inner
select * from t1 join t2 on (t1.x=t2.x) where xxxx;
• left
1)scan filter
select t1.*,t2.* from t1 left join t2 on (t1.x=t2.x) where t1.x=x;
2)join filter
select t1.*,t2.* from t1 left join t2 on (t1.x=t2.x and t1.x=x);
• right
把上面的left join改成right join即可,这里就不多说了。
[转帖]PG语法解剖--基本sql语句用法入门的更多相关文章
- sql 语句用法
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname 3.说明:备份sql server--- 创建 ...
- MySQL常见SQL语句用法
标签(linux): mysql 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 表字段类型 TINYINT 微小整数类型,可存储的容量为1字节 INT 整数类型 ...
- python中的 sql语句用法
函数中应用sql语句def _get_cust_number(self,cr,uid,ids,field_name,args,context=None): res={} for order in se ...
- 自己不懂的SQL语句用法
left join:是SQL语言中的查询类型,即连接查询.它的全称为左外连接,是外连接的一种. 连接通常可以在select语句的from子句或where子句中建立,其语法格式为: select c ...
- sql语句用法大全
https://www.w3school.com.cn/sql/sql_in.asp .substr函数格式 (俗称:字符截取函数) 格式1: substr(string string, int ...
- 基础SQL语句用法
1.插入数据:Insert 2.更新数据:update 每行金额增加100 3.删除数据:delete 4.查询:select 1)精确查询 2)模糊查询:like 模糊查询 % 匹配 3)Betw ...
- 动态sql语句基本语法--Exec与Exec sp_executesql 的区别
http://www.cnblogs.com/goody9807/archive/2010/10/19/1855697.html 动态sql语句基本语法 1 :普通SQL语句可以用Exec执行 ...
- 数据库基本----SQL语句大全
学会数据库是很实用D~~记录一些常用的sql语句...有入门有提高有见都没见过的...好全...收藏下...其实一般用的就是查询,插入,删除等语句而已....但学学存储过程是好事...以后数据方面的东 ...
- linux之SQL语句简明教程---UNION ALL
UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起. UNION ALL 和UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复 ...
随机推荐
- scrapy 分布式爬虫- RedisSpider
爬去当当书籍信息 多台机器同时爬取,共用一个redis记录 scrapy_redis 带爬取的request对象储存在redis中,每台机器读取request对象并删除记录,经行爬取.实现分布式爬虫 ...
- javascript 闭包(closure)
<script type="text/javascript"> //闭包(closure):内层函数可以引用存在于包围它的函数内的变量,即使外层函数的执行已经结束 ...
- Java基础系列 - HashMap
package com.test3; import java.util.ArrayList; import java.util.HashMap; import java.util.List; impo ...
- LeetCode设计实现题(一)
一.LRU缓存机制(LeetCode-146) 1.1 题目描述 1.2 解题思路 思路1: 使用Map存放key,value,使用List存放key和count,count为最新的index值,每次 ...
- JAVA爬虫对font-face字体反爬虫解密
1.参考博客 https://www.jianshu.com/p/9975de57b0ce https://blog.csdn.net/litang199612/a ...
- [Java复习] 缓存Cache part1
1. 在项目中是如何使用缓存的?为什么要用?不用行不行?用了可能会有哪些不良后果? 结合项目业务,主要两个目的:高性能和高并发.缓存走内存,天然支持高并发. 不良后果: 缓存与DB双写不一致 缓存雪崩 ...
- 一个Flask应用运行过程剖析
相信很多初学Flask的同学(包括我自己),在阅读官方文档或者Flask的学习资料时,对于它的认识是从以下的一段代码开始的: from flask import Flask app = Flask(_ ...
- 解决一个 MySQL 服务器进程 CPU 占用 100%解决一个 MySQL 服务器进程 CPU 占用 100%的技术笔记》[转]
转载地址:http://bbs.chinaunix.net/archiver/tid-1823500.html 解决一个 MySQL 服务器进程 CPU 占用 100%解决一个 MySQL 服务器进程 ...
- Q_PROPERTY
1.在自定义控件中看到这个用法 2.Q_PROPERTY(double Min READ getMin WRITE setMin) 代表当前类有一个double属性叫Min,有一个读函数getMin, ...
- CentOS7下搭建zabbix监控(三)——Zabbix监控服务配置
CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置 (1).配置Zabbix监控Apache服务 主机名:yo ...