Postgres学习笔记

什么是postgres

广泛使用的对象关系型数据库(ORDBMS)。

ORDBMS和RDBMS的区别

RDBMS代表关系型数据库系统,ORDBMS为RDBMS所有功能提供了面向对象概念的额外支持。该数据库支持类,对象和继承的概念。

详细的区别请看,

Installation

通过docker安装

1
docker run --name some-postgres -p 5432:5432 -e POSTGRES_PASSWORD=your_secrect_password -d postgres

默认用户名为postgres,登陆时输入,

1
docker exec -it some-postgres psql postgres://postgres:your_secrect_password@your_host_ip:5432

使用

语法

Database

创建数据库
  1. 可以使用createdb命令,

    1
    $ create mydb
  2. 可以使用sql,不要忘了加;

    1
    2
    # create database mydb;
    CREATE DATABASE
选择数据库

使用\l命令查看数据库有哪些。

1
2
3
4
5
6
7
8
9
10
11
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
mydb | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)

dropdb

删除数据库,可以使用dropdb命令

Table

创建表
1
2
3
4
5
6
7
CREATE TABLE COMPANY (
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);

注意最后一行没有逗号。

再创建一张表,

1
2
3
4
5
CREATE TABLE DEPARTMENT(
ID INT PRIMARY KEY NOT NULL,
DEPT CHAR(50) NOT NULL,
EMP_ID INT NOT NULL
);
查看表

输入\d查看所创建的所有表

1
2
3
4
5
6
7
mydb-# \d
List of relations
Schema | Name | Type | Owner
--------+------------+-------+----------
public | company | table | postgres
public | department | table | postgres
(2 rows)

输入\d table查看具体表的信息

1
2
3
4
5
6
7
8
9
10
11
mydb-# \d company
Table "public.company"
Column | Type | Collation | Nullable | Default
---------+---------------+-----------+----------+---------
id | integer | | not null |
name | text | | not null |
age | integer | | not null |
address | character(50) | | |
salary | real | | |
Indexes:
"company_pkey" PRIMARY KEY, btree (id)
删除表

使用DROP TABLE table_name;命令。

Schema

创建schema
1
2
mydb=# create schema myschema;
CREATE SCHEMA

在schema中创建表
mydb=# ```bash
create table mychema.company (
id int not null,
name varchar(20) not null,
age int not null,
address char(25),
salary decimal(18,2),
primary key (id)
);
CREATE TABLE

通过\d看不到schema.table

1
2
3
4
5
6
7
mydb=# \d
List of relations
Schema | Name | Type | Owner
--------+------------+-------+----------
public | company | table | postgres
public | department | table | postgres
(2 rows)

可以通过select操作和\d schema.table查看,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mydb=# select * from myschema.company;
id | name | age | address | salary
----+------+-----+---------+--------
(0 rows)

mydb=# \d myschema.company
Table "myschema.company"
Column | Type | Collation | Nullable | Default
---------+-----------------------+-----------+----------+---------
id | integer | | not null |
name | character varying(20) | | not null |
age | integer | | not null |
address | character(25) | | |
salary | numeric(18,2) | | |
Indexes:
"company_pkey" PRIMARY KEY, btree (id)

架构

原理

Author

wall-E

Posted on

2022-06-10

Updated on

2022-06-12

Licensed under

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.