PostgreSQL 笔记

下载安装 PostgreSQL

用安装包下载

下载;

安装后会出现以下几个软件:

  • sql shell (psql): 终端
  • pgAdmin 4: 数据库 GUI
  • reload configuration: 重置设置
  • aplicacion stack builder: 下载其他的插件用的

Mac 用户用 brew

brew install

输入命令

打开 sql shell;

⚠️ SQL 语句一定要用 “;” 结尾

⚠️ 如果没有用 “;” 结尾当终端 箭头是 “->” 这样的时候说明当前操作还没结束, 输入 “;” 或者 ctrl+c 来结束.

创建数据库

CREATE DATABASE dbname;

显示全部数据库

\l

选择数据库

c 数据库名字

基本 SQL 语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 创建新表 
CREATE TABLE user_tbl(name VARCHAR(20), signup_date DATE);
# 插入数据
INSERT INTO user_tbl(name, signup_date) VALUES('张三', '2013-12-22');
# 选择记录
SELECT * FROM user_tbl;
# 更新数据
UPDATE user_tbl set name = '李四' WHERE name = '张三';
# 删除记录
DELETE FROM user_tbl WHERE name = '李四' ;
# 添加栏位
ALTER TABLE user_tbl ADD email VARCHAR(40);
# 更新结构
ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;
# 更名栏位
ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;
# 删除栏位
ALTER TABLE user_tbl DROP COLUMN email;
# 表格更名
ALTER TABLE user_tbl RENAME TO backup_tbl;
# 删除表格
DROP TABLE IF EXISTS backup_tbl;
1
2
# 插入数据的时返回数据
INSERT INTO user_tbl(name, signup_date) VALUES('张三', '2013-12-22') RETURNING *;

创建新的表单

1
2
3
4
5
6
7
CREATE TABLE colors(
color_id bigserial PRIMARY KEY NOT NULL,
hexa bigint NOT NULL,
description test,
created_timestamp timestamp DEFAULT CURRENT_TIMESTAMP,
modified_timestamp timestamp DEFAULT CURRENT_TIMESTAMP
);

最好的数据类型使用

全部数据类型

参考;

varchar 或者 text

使用text 参考;

自动增加 Primay key

请用 bigserial, serial 或者 smailserial 在创建列的时候

自动更新时间

参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TABLE product (
id INT NOT NULL,
modified_timestamp TIMESTAMP DEFAULT 'now'::timestamp
);

#provided the field is named the same thing in all tables that use this, you can use a centralized function
CREATE FUNCTION update_modified_timestamp_column() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.modified_timestamp = NOW();
RETURN NEW;
END;
$$;

CREATE TRIGGER product_update_modified_timestamp
BEFORE UPDATE ON product
FOR EACH ROW EXECUTE PROCEDURE update_modified_timestamp_column();