博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
postgres前言(常用语句熟悉 系列一)
阅读量:4550 次
发布时间:2019-06-08

本文共 3363 字,大约阅读时间需要 11 分钟。

在这里,我直接把写的代码贴出来,sql语句基本差不多,稍微熟悉即可,直接看代码:

 

----简单查询create table fruits( f_id  char(10) NOT NULL, s_id INT NOT NULL, f_name char(255) NOT NULL, f_price decimal(8,2) NOT NULL,PRIMARY KEY(f_id));----创建表格------填充数据‘insert into fruits values('a1',101,'apple',5.2),('b1',102,'blackberry',10.2),('bs1',103,'orange',11.2),('bs2',105,'melon',8.2),('t1',102,'banana',10.3),('t2',102,'grape',5.3),('o1',103,'coconut',9.2),('c0',101,'cherry',3.2),('a2',103,'apricot',2.2),('l2',104,'lemon',6.4),('b2',104,'berry',7.6);---查询所有数据select * from fruits;---查询单价大于5的水果select * from fruits where f_price>5;---查询单价位于(2,10)select * from fruits where f_price between 2 and 10;---order by排序(降序)select * from fruits order by f_price desc;----group by分组select s_id,count(*) as total from fruits group by s_id;---having 过滤分组------HAVING子句与GROUP BY子句组合使用,用于选择函数结果满足某些条件的特定行select s_id ,COUNT(f_name) from fruits group by S_id having count(f_name)>1;-----having关键字与where关键字都是用来过滤数据,那么两者有什么区别呢?----其中重要的一点就是having是用在数据分组之后进行过滤选择分组,而where在分组前进行---用来选择数据,另外where 排除记录不在包括在分组中。---limit限制查询结果的数量,select所有行,可能是表中的所有行,如果仅仅需要发返回第行或者-----前几行,使用limit关键字,select * from fruits limit 4;----返回前四行select * from fruits limit 3 offset 4;---offset表示从哪一行之后开始显示,这里表示从第五行开始---显示,显示3行----count函数(返回某列的总数)select count(s_id) as total from fruits;----sum求和函数,制定某列进行求和select sum(f_price) as totalPrice from fruits;----avg平均值函数,求某一列的平均值select avg(f_price) as totalPrice from fruits;----连接查询----创建suppliers表格create table supplies(s_id INT PRIMARY KEY,s_name varchar(50) NOT NULL,s_city varchar(50) NOT NULL);--插入数据insert into suppliesvalues(101,'京东','江苏'),(102,'天猫','北京'),(103,'苏宁','北京'),(104,'饿了么','郑州'),(105,'美团','杭州'),(106,'支付宝','上海');----内链接查询(inner join )比较表之间的数据select supplies.s_id,s_name ,f_name,f_price from fruits,supplies where fruits.s_id=supplies.s_id;----supplies和ruits通过s_id联系到一块去----inner join ....onselect supplies.s_id,s_name ,f_name,f_price from fruits inner join supplies on fruits.s_id=supplies.s_id;---这里的连接查询,两个表的关系通过inner join 指定,在使用这种语法时候连接条件---要使用on子句给出不是where,on和where后面的限定条件一样----创建订单表create table orders(o_num INT NULL,o_date DATE NOT NULL,c_id varchar(50) NOT NULL);----插入数据insert into ordersvalues(30001,'2018-9-27 12:12:45','10001'),(30002,'2018-9-28 08:12:45','10002'),(30003,'2018-9-29 12:20:45','10003'),(null,'2018-9-30 11:12:23','10004'),(30004,'2018-9-30 10:11:45','10005'),(30005,'2018-10-01 14:12:45','10006');----创建客户表create table customers(c_id char(10) PRIMARY KEY,c_name varchar(255) NOT NULL,c_email varchar(50) NULL);----插入数据insert into customersvalues('10001','狗子','gouzi@163.com'),('10002','蘑菇','mogu@163.com'),('10003','领导','lingdao@163.com'),('10004','stars','stars@163.com');----外连接查询(左连接和右连接)----连接查询将查询多个表中相关联的行,内链接时,返回查询的结果集合中的仅仅是满足符合查询条件和连接条件的行----但有时需要包括没有关联的行中数据,即返回的查询结果结合中不仅仅要包括满足条件的行而且还要包括左表(左外连接和左连接)----右表(右外连接和右连接)或两个边接表(全外连接)中的所行数据----left join:返回左表中的所有记录和右表中连接字段相等的记录----right join:返回右表中的所有记录和左表中的连接字段相等的记录----查询所有的客户包括没有订单的(左外连接)select customers.c_id,orders.o_num from customers left outer join orders on orders.c_id=customers.c_id;----右连接查询查询所有订单包括没有客户的select customers.c_id,orders.o_num from customers right outer join orders on orders.c_id=customers.c_id;----查询ID为10001的客户订单信息select customers.c_id,orders.o_num from customers inner join orders on customers.c_id=orders.c_id and customers.c_id='10001';

 

转载于:https://www.cnblogs.com/tuboshu/p/10752302.html

你可能感兴趣的文章
Get Sauce(状压DP)
查看>>
Office2007 升级到 office2010
查看>>
Python+Selenium 自动化实现实例-Xpath捕捉元素的几种方法
查看>>
SpringBoot整合Hibernate
查看>>
PPT1 例2
查看>>
。。。。。
查看>>
extern外部方法使用C#简单例子
查看>>
血液循环结构
查看>>
SQL Server统计数据库中表个数、视图个数、存储过程个数
查看>>
设计模式:观察者模式
查看>>
JVM体系结构之六:堆Heap之1
查看>>
TCP之二:TCP的三次握手与四次分手
查看>>
es的返回数据结构
查看>>
[ActionScript 3.0] as3处理xml的功能和遍历节点
查看>>
linux学习(6)-redhat安装xwindow环境
查看>>
6.28 加法作业
查看>>
CentOS6+nginx+uwsgi+mysql+django1.6.6+python2.6.6
查看>>
【bzoj2829】信用卡凸包 凸包
查看>>
oracle 游标
查看>>
关于拍照那些小事——五一苏行记(三)
查看>>