PostgreSQL 是最灵活的数据库之一,并且它是开源的。
数据库是以一种有组织且灵活的方式存储信息的工具。电子表格在本质上就是一个数据库,但是图形化应用程序这一限制使得大多数的电子表格应用程序对程序员毫无用处。随着 边缘计算和物联网设备成为重要的平台,开发者们需要更有效且轻量级的方法,来存储、处理、查询大量的数据。我最爱的一种组合是使用Lua 连接 
ostgreSQL 数据库。无论你使用什么编程语言,PostgreSQL 一定是数据库的绝佳选择,但是在使用 PostgreSQL 之前,首先你需要知道一些基本的东西。
安装 PostgreSQL
在 Linux 上安装 PostgreSQL,要使用你的软件库。在 Fedora,CentOS,Megeia 等类似的 Linux 版本上使用命令:
$ sudo dnf install postgresql postgresql-server
在 Debian, Linux Mint, Elementary 等类似的 Linux 版本上使用命令:
$ sudo apt install postgresql postgresql-contrib
在 macOs 和 Windows 上,可以从官网 postgresql.org下载安装包。
出现新建数据库保存对话框,修改数据库路径和数据库名,点击【创建】,就有了一个空的数据库,下面你可以双击‘使用设计器创建表’,在打开的数据表设计界面中,设计字段(包括字段名、数据类型、字段大小等),有几个字段,就添加几个,设计好。
配置 PostgreSQL
大多数发行版安装 PostgreSQL 数据库时没有启动它,但是为你提供了一个脚本或 systemd 服务,能够可靠地启动 PostgreSQL。但是,在启动 PostgreSQL 之前,必须创建一个数据库集群。
在 Fedora,CentOS 等类似的版本上,编写一个简单数据库,PostgreSQL 安装包中提供了一个 PostgreSQL 配置脚本。运行这个脚本,可以进行简单地配置:
$ sudo /usr/bin/postgresql-setup --initdb[sudo] password: * Initializing database in '/var/lib/pgsql/data' * Initialized,logs are in /var/lib/pgsql/initdb_postgresql.log
在基于 Debian 的发行版上,在安装 Postgres 的过程中,配置会通过 apt
postgres
sudo
postgres
$ sudo -u postgres \"initdb -D /var/lib/pgsql/data \--locale en_US.UTF-8 --auth md5 --pwprompt"
运行 PostgreSQL
现在,数据库集群已经存在了,使用 initdb
$ sudo systemctl start postgresql
创建一个数据库用户
使用 createuser
postgres
创建一个数据库
使用 createdb
exampledb
bogus
$ createdb exampledb --owner bogus
与 PostgreSQL 交互
你可以使用 psql
$ psql --user bogus exampledbpsql (XX.Y)Type "help" for help.exampledb=>
一、 建立数据库 方法一:使用向导,调出方法⑴可采用“文件”菜单“新建” ⑵或采用“工具”菜单“向导” 方法:使用数据库设计器 1、 使用向导建立数据库 特点:可以方便快捷地创建数据库,但只适用于一般常用的数据库。 2。
数据库包含很多表。这些表可以可视化为表格,有很多行(在数据库中称为 记录)和很多列。行和列的交集称为字段。
结构化查询语言(SQL)是以它提供的内容而命名的,它能提供可预测且一致的语法,来查询数据库内容,从而收到有用的结果。
目前,你的数据库是空的,没有任何的表。你可以用 CREATE
IF NOT EXISTS
在你创建一个表之前,想想看你希望这个表包含哪一种数据(在 SQL 术语中称为“数据类型”)。在这个例子中,我创建了一个表,包含两列,有唯一标识符的一列和最多九个字符的可变长的一列。
exampledb=> CREATE TABLE IF NOT EXISTS my_sample_table(exampledb(> id SERIAL,exampledb(> wordlist VARCHAR(9) NOT NULL);
关键字 SERIAL
SERIAL
VARCHAR
你可以使用 INSERT
exampledb=> INSERT INTO my_sample_table (wordlist) VALUES ('Alice');INSERT 0 1
如果你尝试在 wordlist
exampledb=> INSERT INTO my_sample_table (WORDLIST) VALUES ('Alexandria');ERROR:VALUE too long FOR TYPE CHARACTER VARYING(9)
创建好数据库之后,要想査看某个已经创建的数据库信息,可以通过SHOW CREATE DATABASE语句查看,具体语法格式如下所示:SHOW CREATE DATABASE数据库名称;查看创建好的数据库itcast的信息,SQL语句如下所示:SHOW CREATE DATABASE 。
当你需要改变一个域的定义时,你可以使用 ALTER
wordlist
exampledb=> ALTER TABLE my_sample_tableALTER COLUMN wordlist SET DATA TYPE VARCHAR(10);ALTER TABLEexampledb=> INSERT INTO my_sample_table (WORDLIST) VALUES ('Alexandria');INSERT 0 1
SQL 是一种查询语言,因此你可以通过查询来查看数据库的内容。查询可以是很简单的,也可以涉及连接多个不同表之间的复杂关系。要查看表中的所有内容,请使用 SELECT
*
*
exampledb=> SELECT * FROM my_sample_table; id |wordlist----+------------1 | Alice2 | Bob3 | Alexandria(3 ROWS)
更多数据
PostgreSQL 可以处理很多数据,但是对于任何数据库来说,关键之处在于你是如何设计你的数据库的,以及数据存储下来之后你是怎么查询数据的。在 OECD.org上可以找到一个相对较大的公共数据集,你可以使用它来尝试一些先进的数据库技术。
首先,将数据下载为逗号分隔值格式(CSV)的文件,并将文件另存为 Downloads
land-cover.csv
在文本编辑器或电子表格应用程序中浏览数据,来了解有哪些列,以及每列包含哪些类型的数据。仔细查看数据,并留意错误情况。例如,COU
AUS
GRC
BRIICS
在你理解了这些数据项后,你就可以准备一个 PostgreSQL 数据库了。
$ createdb landcoverdb --owner bogus$ psql --user bogus landcoverdblandcoverdb=> create table land_cover(country_code varchar(6),country_name varchar(76),small_subnational_region_code varchar(5),small_subnational_region_name varchar(14),large_subnational_region_code varchar(17),large_subnational_region_name varchar(44),measure_code varchar(13),measure_name varchar(29),land_cover_class_code varchar(17),land_cover_class_name varchar(19),year_code integer,year_value integer,unit_code varchar(3),unit_name varchar(17),power_code integer,power_name varchar(9),reference_period_code varchar(1),reference_period_name varchar(1),value float(8),flag_codes varchar(1),flag_names varchar(1));
Postgres 可以使用特殊的元命令 \copy
landcoverdb=> \copy land_cover from '~/land-cover.csv' with csv header delimiter ','COPY 22113
插入了 22113 条记录。这是一个很好的开始!
用 SELECT
landcoverdb=> SELECTlcm.country_name, lcm.year_value, SUM(lcm.value) sum_valueFROM land_cover lcmJOIN (SELECTcountry_name, large_subnational_region_name, small_subnational_region_name, MAX(year_value) max_year_valueFROM land_coverGROUP BY country_name, large_subnational_region_name, small_subnational_region_name) AS lcmyvONlcm.country_name = lcmyv.country_name ANDlcm.large_subnational_region_name = lcmyv.large_subnational_region_name ANDlcm.small_subnational_region_name = lcmyv.small_subnational_region_name ANDlcm.year_value = lcmyv.max_year_valueGROUP BY lcm.country_name, lcm.large_subnational_region_name, lcm.small_subnational_region_name, lcm.year_valueORDER BY country_name, year_value;
输入密码 创建数据库 代码:create database test;使用刚才创建的数据库 代码: use test;创建一张表 代码:create table user(id int not null,username varchar(100) not null,password varchar(100) not null,primary k。
下面是样例的一些输出:
---------------+------------+------------ Afghanistan| 2019 |743.48425 Albania| 2019 |128.82532 Algeria| 2019 |2417.3281 American Samoa | 2019 | 100.2007 Andorra| 2019 |100.45613 Angola | 2019 |1354.2192 Anguilla | 2019 | 100.078514 Antarctica | 2019 |12561.907[...]
拓展数据库
PostgreSQL 是伟大的开源数据库之一。有了它,你可以为结构化数据设计存储库,然后使用 SQL 以不同的方式查询它,以便能够获得有关该数据的新视角。PostgreSQL 也能与许多语言集成,包括 Python、Lua、Groovy、Java 等,因此无论你使用什么工具集,你都可以充分利用好这个出色的数据库。
via: