PSQL使用

image.png

  • \h 显示SQL命令的说明
  • \? 显示pgsql命令的说明
  • \l 数据库列表
  • \q 退出
  • \c 链接数据库

基础语法

  • 创建数据库 create database ;
  • 删除数据库 drop database ;
  • 连接数据库 \c
  • 查看数据表 \d
  • 查询语句 select <> from <>
  • order by 排序
    • select from order by (column_name,…) asc/desc;
  • distinct 去重
    • select distinct (column_name,…) from ;
  • 查询条件
    • where and or 限定某一个属性if
      • select *from person where gender =’Female’ and (country_of_birth =’China’ or country_of_birth =’Japan’);
  • 比较 comparison
    • select 1 =1;
    • select 1>2;
    • select 3<5;
    • select ‘a’ = ‘b’;
    • select 3<=1;
    • select 4 <> 5;
  • limit offset
    • select * from person limit 10; 打印前10个
    • select * from person offset 4 limit 10; 忽略前4个打印10个;
  • 范围查询
    • in
    • between
    • like
  • group by 对相同的数据进行分组 一般配合count() sum() 等函数使用
    • SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME;
  • having 筛选分组后的各组数据
    • 在group by 后 order by前
    • where子句在所选列上设置条件,而having子句则在由group by子句创建的分组上设置条件。
    • SELECT column1, column2 FROM table1, table2 WHERE [ conditions ] GROUP BY column1, column2 HAVING [ conditions ] ORDER BY column1, column2
    • select country_of_birth, count() from person group by country_of_birth having count() >= 20 order by count(*) desc ;
    • image.png
  • min max avg round sum
  • 硬删除
    • delete from where
    • delete from person where date_of_birth between ‘1900-01-01’ and ‘2000-12-31’;
  • 清空数据表
    • truncate 清空数据表数据不删除结构
      • truncate table ;
    • delete 清空表数据
      • delete from table ;
    • image.png
  • 软删除
    • alter table add column boolean not null default(false);添加删除标签
  • 修改表 添加 删除 修改 一张已经存在的表的列 添加删除约束
    • 添加列alter table customers add column removed boolean not null default(false);
    • 添加属性 alter table customers alter column name set not null;
    • 修改列名 alter table customers rename name to Nname;
    • 添加主键alter table customers add primary key(id);
  • 更新修改数据 update set where
    • update customers set nname = ‘dd’ where id = 4;
  • 添加主键
    • image.png
  • 添加外键
    • 外键关联必须关联其他表的主键primary key
      • 分为列级创建和表级创建(表级可以加别称)
    • image.png
      • 上述insert into时 deptId的数值必须在dept表的id中存在。
      • 在 “dept” 上的更新或删除操作违反了在 “emp3” 上的外键约束 “fk_emp3_dept” Detail: 键值对(id)=(1)仍然是从表”emp3”引用的
  • 主键约束的作用
    • 提高数据的检索效率
    • 唯一标识一条记录
  • 外键约束作用
    • 保障数据完整性
    • 提高检索效率
  • 唯一约束 unique
  • 检查查询
    • image.png
  • 连接 把来自两个或者多个表的行结合起来,基于这些表之间的共同字段。
    • join
  • 交叉连接
    • 交叉连接(CROSS JOIN)把第一个表的每一行与第二个表的每一行进行匹配。如果两个输入表分别有 x 和 y 行,则结果表有 x*y 行。由于交叉连接(CROSS JOIN)有可能产生非常大的表,使用时必须谨慎,只在适当的时候使用它们。
    • SELECT … FROM table1 CROSS JOIN table2 …
  • 内连接
    • 内连接(INNER JOIN)根据连接谓词结合两个表(table1 和 table2)的列值来创建一个新的结果表。查询会把 table1 中的每一行与 table2 中的每一行进行比较,找到所有满足连接谓词的行的匹配对。
    • 当满足连接谓词时,A 和 B 行的每个匹配对的列值会合并成一个结果行。
    • 内连接(INNER JOIN)是最常见的连接类型,是默认的连接类型。
    • INNER 关键字是可选的。
    • SELECT table1.column1, table2.column2…
    • FROM table1
    • INNER JOIN table2
    • ON table1.common_filed = table2.common_field;
  • 左外连接
    • 对于左外连接,首先执行一个内连接。然后,对于表 T1 中不满足表 T2 中连接条件的每一行,其中 T2 的列中有 null 值也会添加一个连接行。因此,连接的表在 T1 中每一行至少有一行。
    • SELECT … FROM table1 LEFT OUTER JOIN table2 ON conditional_expression …
  • 右外连接
    • 首先,执行内部连接。然后,对于表T2中不满足表T1中连接条件的每一行,其中T1列中的值为空也会添加一个连接行。这与左联接相反;对于T2中的每一行,结果表总是有一行。
    • SELECT … FROM table1 RIGHT OUTER JOIN table2 ON conditional_expression …


mockaroo.com 生成假数据方便数据库测试