psql 安装
本文基于deb Linux系统。
安装PostgreSQL:
$ sudo apt install postgresql
管理PostgreSQL:
$ sudo systemctl (start|stop|restart|reload|status) postgresql
创建用户 - create user
创建用户往往是我们使用PostgreSQL的第一步。因为我们如果新建了一个用户(user), 我们以后就可以通过psql
登陆我们的PostgeSQL。个人建议这个用户名可以设置成和我们Linux系统用户名一致。
sudo -u postgres createuser -P <我们的用户名 不带尖角括号>
新建一个数据库 - create database
有了用户名之后,我们需要新建一个数据库,这个数据库有一些表格。我们才可以运行一些有趣的SQL语句。
对于PostgreSQL每一个数据库database是带有权限的,我们还需要把这个新建的数据库GRANT
(授权)给我们上一步的用户名。
$ sudo -u postgres psql
postgres=# CREATE DATABASE test_db;
postgres=# GRANT ALL ON DATABASE test_db to <我们之前创建的用户名 不带尖角括号>;
如果成功, 我们可以从这个psql
界面用:\q
退出到shell。
这也是退出的正确方式,以后我们会对它非常熟悉的。
新建表格 -- create table
这时候我们可以向刚刚新建的数据库里面加入我们的表格了。PostgreSQL是一种关系数据库(relational Database system),我们需要提供create table...
语句去新建表格,定义每一个表格字段(field)的数据类型(data type)以及其他信息(如能不能是null value
)。
这里我们可以采用一些别人提供好的表格。
TUM Uni数据集
Schma来自Prof. Alfons Kemper, Ph.D.的课件和书。是一个很小的数据集, 关于学生教授大学课程考试等等表格。这个数据集很适合用来学习,练习SQL。我对这个数据集写了很多文章,提供SQL的联系,大家可以去我的专栏目录去寻找。
$ wget https://db.in.tum.de/teaching/ws1920/grundlagen/uni_mysql.sql
$ psql test_db < uni_mysql.sql
$ psql test_db # 然后我们就进入这个test_db,可以对这些表格进行操作了。
TUM 十项全能比赛数据集
https://db.in.tum.de/teaching/ws1920/grundlagen/sql_zehnkampf_disziplin.sql?lang=de
这里我把schema改写成英文:
DROP TABLE IF EXISTS ZehnkampfD;
CREATE TABLE ZehnkampfD (
Name VARCHAR(100) NOT NULL,
Discipline VARCHAR(100) NOT NULL,
points INTEGER NOT NULL
);
insert into ZehnkampfD values
('Bolt', '100m', 50),
('Bolt', 'Weitsprung', 50),
('Eaton', '100m', 40),
('Eaton', 'Weitsprung', 60),
('Suarez', '100m', 60),
('Suarez', 'Weitsprung', 60),
('Behrenbruch', '100m', 30),
('Behrenbruch', 'Weitsprung', 50)
;
再把这几行写入文件ZehnkampfD.sql
,载入数据库
# 这里test_db应该是另外一个新建的 没有载入数据的数据库
$ psql test_db < ZehnkampfD.sql
$ psql test_db # 然后我们就进入这个test_db,可以对这些表格进行操作了。
TUM 公共交通数据集
https://db.in.tum.de/teaching/ws1920/grundlagen/sql_fahrplan.sql?lang=de
这里我把schema改写成英文:
DROP TABLE IF EXISTS Fahrplan;
CREATE TABLE Fahrplan (
From_ VARCHAR(100) NOT NULL,
To_ VARCHAR(100) NOT NULL,
Line_ VARCHAR(10) NOT NULL,
depart TIME NOT NULL,
arrival TIME NOT NULL
);
insert into Fahrplan values
('Garching, Forschungszentrum', 'Garching', 'U6', TIME '09:06:00', TIME '09:09:00'),
('Garching', 'Garching-Hochbrück', 'U6', TIME '09:09:00', TIME '09:11:00'),
('Garching-Hochbrück', 'Fröttmaning', 'U6', TIME '09:11:00', TIME '09:15:00'),
('Garching', 'Garching, Forschungszentrum', 'U6', TIME '09:06:00', TIME '09:09:00'),
('Garching-Hochbrück', 'Garching', 'U6', TIME '09:04:00', TIME '09:06:00'),
('Fröttmaning', 'Garching-Hochbrück', 'U6', TIME '09:00:00', TIME '09:04:00'),
('Garching, Forschungszentrum', 'Technische Universität', '690', TIME '17:56:00', TIME '17:57:00')
;
再把这几行写入文件Fahrplan.sql
,载入数据库
# 这里test_db应该是另外一个新建的 没有载入数据的数据库
$ psql test_db < Fahrplan.sql
$ psql test_db # 然后我们就进入这个test_db,可以对这些表格进行操作了。
TUM onlineshop数据集
类似TPC-H
Schema:
数据:https://db.in.tum.de/teaching/ws1920/grundlagen/shop.sql
# 这里test_db应该是另外一个新建的 没有载入数据的数据库
$ psql test_db < shop.sql
$ psql test_db # 然后我们就进入这个test_db,可以对这些表格进行操作了。
该文章遵循创作共用版权协议 CC BY-NC 3.0,要求署名、非商业 、保持一致。在满足创作共用版权协议 CC BY-NC 3.0 的基础上可以转载,但请以超链接形式注明出处。文章仅代表作者的知识和看法,如有不同观点,可以回复并讨论。