本文基于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数据集

schema_de

schema_en

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...

这里我把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...

这里我把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,可以对这些表格进行操作了。

罗济高
1 声望1 粉丝

« 上一篇
专栏内容目录
下一篇 »
[SQL]中级SQL(4)