postgresql -基本语句2

1.创建模式

一个数据库中可以有多个模式,在一个模式下可以有多个表

在某一模式下创建表时,使用如下语句:

create table schema_name.table_name();

创建表时,如果没有指定是那个模式下的表,那就采用默认的public

2. show search_path  显示当前所在的模式

set search_path='schema_name'; 修改所在的模式

起到一定的隔作用

3.增加索引

create index index_name on table_name(column_name);

修改索引的名字

alter index old_index_name rename to new_index_name;

4.shell 的搜索路径是基于不同的模式,指定不同的模式查看对应式下的数据库。

5.select语句

select  *

from table 1,table2

where:第一步筛选条件

group :将得到的结果分组

having :对分组后每个组内的数据进行条件筛选

order by :最后执行

6.多表连接

inner  join on:只保留需要的数据,左侧有右侧没有或是左侧没有右侧有的数据都不会保留,两个表需要有相同的列名

left   join on:左表的数据全部保留,左外连接

right join on: 右表的数据全部保留,右外连接

full join on :全部保留,全连接

crosss join: 笛卡儿积,无条件连接

7。实例

 create table a(
 id integer,
 name text);
CREATE TABLE
create table b(
name text,
height integer,
salary integer);
CREATE TABLE
insert into a values(1,'liuliu'),(2,'yolanda'),(3,'jack');
insert into b values('kate',166,8000),('liuliu',176,2000),('yolanda',178,3000);

笛卡儿连接:
pglearn=# select * from a cross join b;
 id |  name   |  name   | height | salary
----+---------+---------+--------+--------
  1 | liuliu  | kate    |    166 |   8000
  1 | liuliu  | liuliu  |    176 |   2000
  1 | liuliu  | yolanda |    178 |   3000
  2 | yolanda | kate    |    166 |   8000
  2 | yolanda | liuliu  |    176 |   2000
  2 | yolanda | yolanda |    178 |   3000
  3 | jack    | kate    |    166 |   8000
  3 | jack    | liuliu  |    176 |   2000
  3 | jack    | yolanda |    178 |   3000
(9 行记录)

全外连接:

pglearn=# select * from a full join b on a.name=b.name;
 id |  name   |  name   | height | salary
----+---------+---------+--------+--------
  3 | jack    |         |        |
    |         | kate    |    166 |   8000
  1 | liuliu  | liuliu  |    176 |   2000
  2 | yolanda | yolanda |    178 |   3000
(4 行记录)

pglearn=# select * from a full join b using(name);  也会去重复列
  name   | id | height | salary
---------+----+--------+--------
 jack    |  3 |        |
 kate    |    |    166 |   8000
 liuliu  |  1 |    176 |   2000
 yolanda |  2 |    178 |   3000
(4 行记录)
 

自然连接:去重复列

pglearn=# select * from a natural join b;
  name   | id | height | salary
---------+----+--------+--------
 liuliu  |  1 |    176 |   2000
 yolanda |  2 |    178 |   3000(2 行记录)

 

左外连接:

pglearn=# select * from a left join b on a.name=b.name;
 id |  name   |  name   | height | salary
----+---------+---------+--------+--------
  3 | jack    |         |        |
  1 | liuliu  | liuliu  |    176 |   2000
  2 | yolanda | yolanda |    178 |   3000
(3 行记录)

右外连接:

pglearn=# select * from a right join b on a.name=b.name;
 id |  name   |  name   | height | salary
----+---------+---------+--------+--------
    |         | kate    |    166 |   8000
  1 | liuliu  | liuliu  |    176 |   2000
  2 | yolanda | yolanda |    178 |   3000
(3 行记录)

 内连接:

pglearn=# select * from a inner join b on a.name=b.name;
 id |  name   |  name   | height | salary
----+---------+---------+--------+--------
  1 | liuliu  | liuliu  |    176 |   2000
  2 | yolanda | yolanda |    178 |   3000
(2 行记录) 

内连接不去重复列,等值连接会去掉重复的列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值