SQL教程:在PostgreSQL上学习SQL

PostgreSQL是一个开放源代码的对象关系(也称为扩展关系)数据库管理系统。 PostgreSQL中的现代关系数据库功能包括复杂查询,外键,触发器,可更新视图,事务完整性和多版本并发控制。 用户可以使用新的数据类型,函数,运算符,聚合函数,索引方法和过程语言来扩展PostgreSQL。

PostgreSQL经过20多年的开发和部署,是一个可靠的开源数据库,在很多方面都可以与商业关系数据库匹敌。 您可以将其安装在Linux(所有最新发行版),Windows(Windows 2000 SP4和更高版本),FreeBSD,OpenBSD,NetBSD,MacOS,AIX,HP / UX和Solaris上。 您还可以在Amazon Aurora中找到高性能的PostgreSQL托管版本,在CockroachDB中找到与有线兼容的分布式实现。

从这里开始,我将按照惯例将PostgreSQL和Postgres(不是全大写)名称互换使用。 我可以发音 Postgres; 我永远不知道该说Post-gres-QL还是Post-gres-续集。

在本教程中,我们将逐步安装PostgreSQL,连接到数据库,加载一些数据以及运行各种SQL查询。 为了解决这个问题,我们将使用SQL join子句针对两个相关表执行查询。 在此过程中,我将为您可能要使用的Postgres建议一些GUI客户端,并简要概述有用的PostgreSQL扩展。 最后,我将为您提供一些很好的参考,以帮助您使用Postgres和SQL进行下一步。

安装PostgreSQL

我的InfoWorld同事Serdar Yegulalp写了一篇有关安装和配置PostgreSQL的出色教程,“ PostgreSQL 10入门 ”。 我用它来通知我在iMac上的安装,并结束了下载和运行下面的屏幕快照中所示的仅限Mac的Postgres.App

postgres应用 IDG

除了使用默认配置设置安装最新的生产数据库版本(10.5)外,我还将Postgres命令行实用程序添加到了计算机的路径中,并安装了跨平台的pgAdmin 4和仅限Mac的Postico GUI工具,如下所示。

postgres cli工具 IDG

将Postgres的命令行实用程序添加到您的路径很有用。

pgadmin IDG

pgAdmin 4在Web浏览器中显示其UI。 postgres数据库中正在监视的事务是出于维护目的。

邮政 IDG

Postico是用于MacOS的商业Postgres客户端产品。 免费试用有限制,但是可以使用并且不会过期。

由于我具有有效的JetBrains订阅,因此我还安装了DataGrip ,这是一个多数据库客户端工具。 如果在Windows上进行此练习,则可能会在Alpha Anywhere中使用可视化的SQL查询构建器和SQ​​L命令行。

连接到PostgreSQL数据库

连接到Postgres数据库时需要了解的关键事项是其主机,其分配的端口,您最初希望使用的数据库以及您的用户名和密码。 其中一些具有众所周知的默认值。

如果将Postgres与客户端安装在同一台计算机上,则主机将为localhost。 默认情况下,将有两个可见的数据库,一个名为postgres,一个使用您的用户名。 除非已更改(通常在数据库启动时),否则端口将为5432。

上面的信息与您使用的客户端无关。 对于大多数目的,psql命令行在一开始就可以正常工作。 稍后,当您尝试使用复杂的联接构造查询时,您可能希望使用图形客户端,主要是为了节省大量时间和易于出错的键入。

如果数据库使用默认值并且在使用的计算机上,则要与psql连接,请确保数据库正在运行,然后在命令行中键入psql <enter>

Martins-iMac:~ mheller$ psql
psql (10.5)
Type "help" for help.

相反,如果看到一条错误消息,表明未找到该命令,则可以将Postgres命令行实用程序添加到路径中,然后重新启动Shell,或者完全限定可执行文件的位置。

运行psql后,如果键入help <enter>   您会看到以下内容:

mheller=# help
You are using psql, the command-line interface to PostgreSQL.
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit
mheller=#

提示会告诉您正在使用哪个数据库。 您可以使用\conninfo了解更多\conninfo ,并使用\c更改连接:

mheller=# \conninfo
You are connected to database "mheller" as user "mheller" via socket in "/tmp" at port "5432".
From the command help ( \? ):
\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}
                 connect to new database (currently "mheller")

让我们尝试更改数据库:

mheller=# \c postgres
You are now connected to database "postgres" as user "mheller".
postgres=#

现在,让我们切换回数据库mheller:

postgres=# \c mheller
You are now connected to database "mheller" as user "mheller".
mheller=#

您的默认数据库和用户名将与我的不同。

要执行SQL命令和查询,请在查询完成后添加分号( ; ),然后按<enter>键。 在这里,我们创建一个新数据库,连接到该数据库,再连接回我们的默认数据库,最后删除新数据库:

mheller=# create database test;
CREATE DATABASE
mheller=# \c test
You are now connected to database "test" as user "mheller".
test=# \c mheller
You are now connected to database "mheller" as user "mheller".
mheller=# drop database test
mheller-# ;
DROP DATABASE
mheller=#

数据库创建和删除也可以从系统外壳中完成。 相关的命令行实用程序createdbdropdb

将数据加载到PostgreSQL数据库中

数据库设计是一门艺术,而不是一门科学,需要大量的经验才能正确。 即使是专业的数据库设计人员,也经常需要随着时间的推移修改其设计以匹配应用程序数据使用模式,例如,通过为常见查询添加索引,或通过添加外键约束以强制引用完整性。

无需花费数周(或数月)来学习数据库设计,而是加载已经采用Postgres格式的库存数据库。 我想使用PgFoundry示例数据库之一 ,但是,该网站不再处于活动状态。

一种替代方法是使用PostgreSQL Exercises网站上的三表数据库。 这很简单,但是我将其留给您以后再处理,因为您可以在线进行所有练习,并且希望您现在在本地使用数据库。 SportsDBDVD Rental(Pagila)示例很有趣,但是对于第一次复习来说有点太复杂了。

相反,我希望您打开https://github.com/pthom/northwind_psql并克隆或下载并解压缩存储库。 Northwind最初是Microsoft的示例,但GitHub用户pthom已将其改编为Postgres。 我之所以喜欢Northwind,主要是因为我曾经使用它来向开发人员讲授SQL,并逐渐熟悉了数据。 数据库图如下:

实体关系模型 IDG

像这样的实体关系图来自工具。 该图像看起来很像是由SQL Server Management Studio生成的。 本质上,矩形是表格,列显示在矩形内,主键和外键标有键图标。 表之间的连接是外键约束。

您可以使用create_db脚本将数据库加载到PostgreSQL中,假设您使用的是具有Bash shell的计算机。 如果您在Windows上运行,请尝试将create_db.sh重命名为create_db.cmd并删除脚本的第一行。

在克隆或解压缩northwind_psql的目录中打开一个Shell,然后运行脚本。 成功的数据库加载将如下所示:

Martins-iMac:northwind_psql mheller$ ./create_db.sh
NOTICE:  database "northwind" does not exist, skipping
NOTICE:  role "northwind_user" does not exist, skipping
SET
SET
SET
SET
SET
SET
SET
SET
DROP TABLE
DROP TABLE
DROP TABLE
DROP TABLE
DROP TABLE
DROP TABLE
DROP TABLE
DROP TABLE
DROP TABLE
DROP TABLE
DROP TABLE
DROP TABLE
DROP TABLE
DROP TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1

ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
CREATE ROLE
ALTER ROLE
GRANT
GRANT

现在我们可以尝试查询数据库。

在PostgreSQL中运行SQL查询

首先,让我们尝试查看一个表。 从命令行对northwind数据库运行psql 。 您的默认用户名可能会起作用; 如果不是,请使用凭据用户northwind_user和密码thewindisblowing

数据库中定义了哪些区域? select查询应如下所示。 我从上图获得了表名。

northwind=# select * from region;
region_id | region_description
-----------+--------------------
         1 | Eastern
         2 | Western
         3 | Northern
         4 | Southern
(4 rows)

那很简单。 星号表示返回表中的所有字段。 假设我们只是想按字母顺序查看区域名称。 这需要指定所需的字段名称(我们从上一个查询中获知的名称),并添加一个order by子句。 默认是升序排列。

northwind=# select region_description from region order by region_description;
 region_description
--------------------
 Eastern
 Northern
 Southern
 Western
(4 rows)

现在让我们看一下产品类别:

northwind=# select * from categories;
 category_id | category_name  |                        description                         | picture
-------------+----------------+------------------------------------------------------------+---------
           1 | Beverages      | Soft drinks, coffees, teas, beers, and ales                | \x
           2 | Condiments     | Sweet and savory sauces, relishes, spreads, and seasonings | \x
           3 | Confections    | Desserts, candies, and sweet breads                        | \x
           4 | Dairy Products | Cheeses                                                    | \x
           5 | Grains/Cereals | Breads, crackers, pasta, and cereal                        | \x
           6 | Meat/Poultry   | Prepared meats                                             | \x
           7 | Produce        | Dried fruit and bean curd                                  | \x
           8 | Seafood        | Seaweed and fish                                           | \x
(8 rows)

让我们看一下刚才看到的具有category_id=1的饮料产品。 这需要一个where子句。

northwind=# select * from products where category_id=1;
 product_id |       product_name        | supplier_id | category_id |  quantity_per_unit  | unit_price | units_in_stock | units_on_order | reorder_level | discontinued
------------+---------------------------+-------------+-------------+---------------------+------------+----------------+----------------+---------------+--------------
          1 | Chai                      |           8 |           1 | 10 boxes x 30 bags  |         18 |             39 |              0 |            10 |            1
          2 | Chang                     |           1 |           1 | 24 - 12 oz bottles  |         19 |             17 |             40 |            25 |            1
         24 | Guaraná Fantástica        |          10 |           1 | 12 - 355 ml cans    |        4.5 |             20 |              0 |             0 |            1
         34 | Sasquatch Ale             |          16 |           1 | 24 - 12 oz bottles  |         14 |            111 |              0 |            15 |            0
         35 | Steeleye Stout            |          16 |           1 | 24 - 12 oz bottles  |         18 |             20 |              0 |            15 |            0
         38 | Côte de Blaye             |          18 |           1 | 12 - 75 cl bottles  |      263.5 |             17 |              0 |            15 |            0
         39 | Chartreuse verte          |          18 |           1 | 750 cc per bottle   |         18 |             69 |              0 |             5 |            0
         43 | Ipoh Coffee               |          20 |           1 | 16 - 500 g tins     |         46 |             17 |             10 |            25 |            0
         67 | Laughing Lumberjack Lager |          16 |           1 | 24 - 12 oz bottles  |         14 |             52 |              0 |            10 |            0
         70 | Outback Lager             |           7 |           1 | 24 - 355 ml bottles |         15 |             15 |             10 |            30 |            0
         75 | Rhönbräu Klosterbier      |          12 |           1 | 24 - 0.5 l bottles  |       7.75 |            125 |              0 |            25 |            0
         76 | Lakkalikööri              |          23 |           1 | 500 ml              |         18 |             57 |              0 |            20 |            0
(12 rows)

employees中有很多领域,所以让我们来看一下其中的一些领域。 在这里,我们按两个字段进行排序,分别是titlelast_name

From: https://www.infoworld.com/article/3311438/sql-tutorial-learn-sql-on-postgresql.html

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
<p style="font-size: 15px; color: #404040; line-height: 1.74; letter-spacing: 0.008em; outline-style: none; overflow-wrap: break-word; margin: 0px;" data-lake-id="1a1a23d154e7fa8b7063ee1b94cd7570">你是是否有以下的烦恼</p> <p style="font-size: 15px; color: #404040; line-height: 1.74; letter-spacing: 0.008em; outline-style: none; overflow-wrap: break-word; margin: 0px;" data-lake-id="c5ee1c6ceb1fcb45f3af94cdc3a379b9">1、想学PostgreSQL,但是网的资料凌乱不堪,不够系统完整</p> <p style="font-size: 15px; color: #404040; line-height: 1.74; letter-spacing: 0.008em; outline-style: none; overflow-wrap: break-word; margin: 0px;" data-lake-id="3c5cafe88d46070475afb9c236db53ef">2、网有关PostgreSQL的视频课程极少,能找到的都是一些文章,官方文档,内容晦涩难懂,不够通俗易懂</p> <p style="font-size: 15px; color: #404040; line-height: 1.74; letter-spacing: 0.008em; outline-style: none; overflow-wrap: break-word; margin: 0px;" data-lake-id="8c2e2436203e8ab28bf10696950fb964"> </p> <p style="font-size: 15px; color: #404040; line-height: 1.74; letter-spacing: 0.008em; outline-style: none; overflow-wrap: break-word; margin: 0px;" data-lake-id="0f589e9c103e3ee8b401bb41ce93fdcd">这门PostgreSQL从入门到实战课程,囊括了全网最新最全的资料,对于想要快速学习应用到工作中的人员绝对是最佳选择,全程没有多余废话,而且都是实际操作,该课程内容通俗易懂,从实战角度出发,可以让我们快速掌握PostgreSQL相关的内容,绝对比我们自己去搜索相关的资料,然后去理解要高效多了。</p> <p style="font-size: 15px; color: #404040; line-height: 1.74; letter-spacing: 0.008em; outline-style: none; overflow-wrap: break-word; margin: 0px;" data-lake-id="fa2c9bc8197f93883d6267647d9d6030"> </p> <p style="font-size: 15px; color: #404040; line-height: 1.74; letter-spacing: 0.008em; outline-style: none; overflow-wrap: break-word; margin: 0px;" data-lake-id="86941226a6dadbc74af7800040b9794c">课程的特色</p> <p style="font-size: 15px; color: #404040; line-height: 1.74; letter-spacing: 0.008em; outline-style: none; overflow-wrap: break-word; margin: 0px;" data-lake-id="120f1e2947a9f483950a9105fc43fb5d"><span style="color: red;">一课程简洁通俗易懂</span></p> <p style="font-size: 15px; color: #404040; line-height: 1.74; letter-spacing: 0.008em; outline-style: none; overflow-wrap: break-word; margin: 0px;" data-lake-id="9b8832618e4d00d30dcdfa8cb1882297">用最精炼最直接的语言和通俗易懂的例子来讲解知识点</p> <p style="font-size: 15px; color: #404040; line-height: 1.74; letter-spacing: 0.008em; outline-style: none; overflow-wrap: break-word; margin: 0px;" data-lake-id="5561024705ad72af11efde33a63e48ea"> </p> <p style="font-size: 15px; color: #404040; line-height: 1.74; letter-spacing: 0.008em; outline-style: none; overflow-wrap: break-word; margin: 0px;" data-lake-id="f9b3e5927bd7187e0303416ce3dc2019"><span style="color: red;">二课程资料完整全面</span></p> <p style="font-size: 15px; color: #404040; line-height: 1.74; letter-spacing: 0.008em; outline-style: none; overflow-wrap: break-word; margin: 0px;" data-lake-id="f6f10e169b9a98ae4bf92c11093311ca">每门课程都包括pdf课件,课堂案例源码</p> <p style="font-size: 15px; color: #404040; line-height: 1.74; letter-spacing: 0.008em; outline-style: none; overflow-wrap: break-word; margin: 0px;" data-lake-id="e21aef57877310aefc631c0eb6349542"> </p> <p style="font-size: 15px; color: #404040; line-height: 1.74; letter-spacing: 0.008em; outline-style: none; overflow-wrap: break-word; margin: 0px;" data-lake-id="5a7a702eacef803ffd1db7eea80a8e6c"><span style="color: red;">三课程体系完整全面</span></p>
ASIN: B077NQGV1G, ISBN: 1788392019 Year: 2017 Format: AZW3 Pages: 488 pages Leverage the power of PostgreSQL 10 to build powerful database and data warehousing applications. About This Book Be introduced to the concept of relational databases and PostgreSQL, one of the fastest growing open source databases in the world Learn client-side and server-side programming in PostgreSQL, and how to administer PostgreSQL databases Discover tips on implementing efficient database solutions with PostgreSQL 10 Who This Book Is For If you're interested in learning more about PostgreSQL - one of the most popular relational databases in the world, then this book is for you. Those looking to build solid database or data warehousing applications with PostgreSQL 10 will also find this book a useful resource. No prior knowledge of database programming or administration is required to get started with this book. What You Will Learn Understand the fundamentals of relational databases, relational algebra, and data modeling Install a PostgreSQL cluster, create a database, and implement your data model Create tables and views, define indexes, and implement triggers, stored procedures, and other schema objects Use the Structured Query Language (SQL) to manipulate data in the database Implement business logic on the server side with triggers and stored procedures using PL/pgSQL Make use of advanced data types supported by PostgreSQL 10: Arrays, hstore, JSONB, and others Develop OLAP database solutions using the most recent features of PostgreSQL 10 Connect your Python applications to a PostgreSQL database and work with the data efficiently Test your database code, find bottlenecks, improve performance, and enhance the reliability of the database applications In Detail PostgreSQL is one of the most popular open source databases in the world, and supports the most advanced features included in SQL standards and beyond. This book will familiarize you with the latest new fe
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值