Postgresql 1小时快速入门

1.什么是PostgreSql?

PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),是从伯克利写的 POSTGRES 软件包发展而来的。经过十几年的发展, PostgreSQL 是世界上可以获得的最先进的开放源码的数据库系统, 它提供了多版本并发控制,支持几乎所有SQL语句(包括子查询,事务和用户定义类型和函数),并且可以获得非常广阔范围的(开发)语言绑定 (包括C,C++,Java,perl,python,php,nodejs,ruby)。

知识点

   面向关系的数据库

  + Oracle

  + MySql

  + SQLServer

  + PostgreSql

  NoSql

  + MongoDB

  + Redis

数据库排名

https://db-engines.com/en/ranking

官方网站

https://www.postgresql.org/

2.安装

使用环境

psql (PostgreSQL) 12.5 (Ubuntu 12.5-0ubuntu0.20.04.1)

$ sudo apt-get install postgresql

ubuntu安装postgresql

$ sudo su postgres

切换到postgres用户

$ psql --version

查看postgresql的版本

$ psql -l

查看数据库列表

$ createdb test01

创建数据库

$ psql test01

切换到test01数据库

test01=# \q

退出test01数据库

$ dropdb test01

删除数据库test01

查看帮助信息

test01=# help

You are using psql, the command-line interface to PostgreSQL.

Type:  \copyright for distribution terms

       \h for help with SQL commands

       \? for help with psql commands

       \g or terminate with semicolon to execute query

       \q to quit

3.操作数据表

# create table postg(title varchar(255),content text);

创建表

# \dt

查看该库下面的表

# \d postg

查看postg表的详细信息

# alter table postg rename to mypostg;

更改表名

# drop table mypostg;

删除表

# \i /home/cong/桌面/test01/test01.sql

执行sql脚本

alter table users add fullname varchar(255); # 加字段

alter table users drop fullname; # 删字段

alter table users rename player to nba_player; # 重命名字段

alter table users alter nba_player type varchar(100); # 改变字段类型

create index nba_player_index on users(nba_player); # 创建索引

drop index nba_player_index; #删除索引

  

4.PostgreSql的基础数据类型

* 数值型:

  + integer(int)

  + real

  + serial

* 文字型:

  + char

  + varchar

  + text

* 布尔型:

  + boolean

* 日期型:

  + date

  + time

  + timestamp

* 特色类型:

  + Array

  + 网络地址型(inet)

  + JSON型

  + XML型

5.表子段的约束条件

create table posts (

    id serial primary key,

    title varchar(255not null,

    content text check(length(content) > 8),

    is_draft boolean default TRUE,

    is_del boolean default FALSE,

    created_date timestamp default 'now'

);

-- 说明

/*

约束条件:

not null:不能为空

unique:在所有数据中值必须唯一

check:字段设置条件

default:字段默认值

primary key(not null, unique):主键,不能为空,且不能重复

*/

6.DML

插入

insert into [tablename] (field, ...) values (value, ...);

insert into [tablename] (field, ...) values (value, ...),(value1, ...),...;


更新

update [table] set [field=newvalue,...] where ...

物理删除

delete from [table] where ...

7.DQL

create table users (

    id serial primary key,

    player varchar(255not null,

    score real,

    team varchar(255)

);

insert into users (player, score, team) values

('库里'28.3'勇士'),

('哈登'30.2'火箭'),

('阿杜'25.6'勇士'),

('阿詹'27.8'骑士'),

('神龟'31.3'雷霆'),

('白边'19.8'热火');

select * from users;

select player, score from users;

where语句的使用

使用where语句来设定select,update,delete语句数据抽出的条件。

select * from users;

select * from users where score > 20;

select * from users where score < 30;

select * from users where score > 20 and score < 30;

select * from users where team = '勇士';

select * from users where team != '勇士';

select * from users where player like '%';

select * from users where player like '_';

分页查询

order by [ASC|DESC]

limit  #要取得记录条数

offset #不写默认为0

select * from users order by score desc limit 3 offset 1; # 第二位开始取三条数据

 

distinct/sum/max/min/group by/having # mysql用法一样

8.常见函数

length/concat/alias/substring # mysql一样用法

random() # 0~1随机数

order by random() 随机排序

order by random() limit 1 # 随机取一条数据;

9.视图

视图(View)是从一个或多个表导出的对象。视图与表不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。

视图就是一个SELECT语句,把业务系统中常用的SELECT语句简化成一个类似于表的对象,便于简单读取和开发。

* 使用数据库视图(view)

create view ...

drop view ...

\dv

查看所有视图

\d

查看视图的表结构

10.事务

数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。

begin 开启事务

commit 提交事务

rollback 回滚事务

begin;

update users set score = 50 where player = '库里';

update users set score = 60 where player = '哈登';

commit;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值