PostgreSQL 教程
約束條件
not null, 不能為空
unique, 在所有數據中必須唯一
check, 字段設置條件
default, 字段默認值
primary(not null, unique), 主鍵, 不能為空且不能重復
數據庫操作
create database [name]; // 建立數據庫
drop database [name]; // 刪除數據庫
\c [database_name] // 連接其他數據庫
\l // 列出所有數據庫
\? // 查看 psql 命令
\q // 退出 psql
// 改名
ALTER DATABASE exp3_1_complicated_query RENAME TO exp3_1;
PostgreSQL 數據類型 | 菜鳥教程 (runoob.com)
表格操作
創建表格
CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),SALARY REAL
);
CREATE TABLE DEPARTMENT(ID INT PRIMARY KEY NOT NULL,DEPT CHAR(50) NOT NULL,EMP_ID INT NOT NULL
);
CREATE TABLE COMPANY3(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INT NOT NULL UNIQUE,ADDRESS CHAR(50),SALARY REAL DEFAULT 50000.00
);
插入數據
create table test(id int, body varchar(100));
insert into(test(id,body) values(1, 'hello,postgresql');
查詢數據
select * from test; // 查詢數據
更新數據
update test set name = 'mayun' where id = 1; // 更新數據
delete from test where id = 1; // 刪除數據
表格操作
\d // 查看當前數據庫所有表格
\d [table_name] // 列出某一張表格的結構
DROP TABLE table_name; // 刪除表格
數據類型
timestamp : 日期和時間
date : 日期,無時間
time : 時間
Schema
PostgreSQL 模式(SCHEMA)可以看著是一個表的集合。
一個模式可以包含視圖、索引、數據類型、函數和操作符等。
相同的對象名稱可以被用于不同的模式中而不會出現沖突,例如 schema1 和 myschema 都可以包含名為 mytable 的表。
使用模式的優勢:
- 允許多個用戶使用一個數據庫并且不會互相干擾。
- 將數據庫對象組織成邏輯組以便更容易管理。
- 第三方應用的對象可以放在獨立的模式中,這樣它們就不會與其他對象的名稱發生沖突。
模式類似于操作系統層的目錄,但是模式不能嵌套。
#創建schema:
create schema myschema;create table myschema.company(ID INT NOT NULL,NAME VARCHAR (20) NOT NULL,AGE INT NOT NULL,ADDRESS CHAR (25),SALARY DECIMAL (18, 2),PRIMARY KEY (ID)
);#刪除schema:
drop schema myschema;#刪除一個模式以及其中包含的所有對象:
DROP SCHEMA myschema CASCADE;# 列出所有模式 (schema )
\dn
# 顯示特定 schema 的所有 table
\d <schema>.*
其余操作
\t // 只顯示元組
\! cls // 清屏 在 Windows 系統中
-- 刪除唯一索引
drop index uk_users_name;
-- 刪除唯一索引
drop index if EXISTS uk_users_name;
create table undergraduate(
sno char(10) primary key not null,
sname char(10) not null unique,
ssex char(2) not null check(ssex = '男' or ssex = '女'),
birthday date not null,
polity char(20) default '群眾'
); create table sc(
sno char(10) not null,
cno char(10) not null,
grade real
);// check(date > 2019-10-22),
參考資料
零基礎入門PostgreSQL · 語雀