1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOSにPostgreSQLをインストールする

Last updated at Posted at 2018-04-12
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
chrony:x:995:993::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sato:x:1000:1000::/home/sato:/bin/bash
[root@ik1-305-12909 zipfile]# # yum -y install postgresql-server
[root@ik1-305-12909 zipfile]#  yum -y install postgresql-server
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: mirror.dmmlabs.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package postgresql-server.x86_64 0:9.2.23-3.el7_4 will be installed
--> Processing Dependency: postgresql-libs(x86-64) = 9.2.23-3.el7_4 for package: postgresql-server-9.2.23-3.el7_4.x86_64
--> Processing Dependency: postgresql(x86-64) = 9.2.23-3.el7_4 for package: postgresql-server-9.2.23-3.el7_4.x86_64
--> Processing Dependency: libpq.so.5()(64bit) for package: postgresql-server-9.2.23-3.el7_4.x86_64
--> Running transaction check
---> Package postgresql.x86_64 0:9.2.23-3.el7_4 will be installed
---> Package postgresql-libs.x86_64 0:9.2.23-3.el7_4 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================
 Package                          Arch                  Version                        Repository              Size
====================================================================================================================
Installing:
 postgresql-server                x86_64                9.2.23-3.el7_4                 updates                3.8 M
Installing for dependencies:
 postgresql                       x86_64                9.2.23-3.el7_4                 updates                3.0 M
 postgresql-libs                  x86_64                9.2.23-3.el7_4                 updates                234 k

Transaction Summary
====================================================================================================================
Install  1 Package (+2 Dependent packages)

Total download size: 7.0 M
Installed size: 33 M
Downloading packages:
(1/3): postgresql-libs-9.2.23-3.el7_4.x86_64.rpm                                             | 234 kB  00:00:00
(2/3): postgresql-9.2.23-3.el7_4.x86_64.rpm                                                  | 3.0 MB  00:00:02
(3/3): postgresql-server-9.2.23-3.el7_4.x86_64.rpm                                           | 3.8 MB  00:00:02
--------------------------------------------------------------------------------------------------------------------
Total                                                                               2.6 MB/s | 7.0 MB  00:00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
postgresql.confを編集するために、バックアップファイルを作る。
cp postgresql.conf postgresql.conf.org
postgresql.confの最終行に追記する。
echo "listen_addresses = '*'" >> /var/lib/pgsql/data/postgresql.conf
postgresqlをリスタートする
bash-4.2$ cp postgresql.conf postgresql.conf.org
bash-4.2$ echo "listen_addresses = '*'" >> /var/lib/pgsql/data/postgresql.conf
bash-4.2$ cp pg_hba.conf pg_hba.conf.org
bash-4.2$ echo "# PostgreSQL Client Authentication Configuration File" >  ./pg_hba.conf
bash-4.2$ echo "# ===================================================" >> ./pg_hba.conf
bash-4.2$ echo "local all all              trust"                      >> ./pg_hba.conf
bash-4.2$ echo "host  all all 127.0.0.1/32 trust"                      >> ./pg_hba.conf
bash-4.2$ echo "host  all all ::1/128      trust"                      >> ./pg_hba.conf
bash-4.2$ exit
exit
[root@ik1-305-12909 zipfile]# service postgresql restart
Redirecting to /bin/systemctl restart  postgresql.service
postgresqlにログイン
# psql -U postgres
Dataベースのリストを見る
postgres=# \l
                             List of databases
   Name    |  Owner   | Encoding  | Collate | Ctype |   Access privileges
-----------+----------+-----------+---------+-------+-----------------------
 postgres  | postgres | SQL_ASCII | C       | C     |
 template0 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
 template1 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
(3 rows)
新たにsalesというDataベースをつくる
postgres=# create database sales
postgres-# ;
CREATE DATABASE
postgres=# \l
                             List of databases
   Name    |  Owner   | Encoding  | Collate | Ctype |   Access privileges
-----------+----------+-----------+---------+-------+-----------------------
 postgres  | postgres | SQL_ASCII | C       | C     |
 sales     | postgres | SQL_ASCII | C       | C     |
 template0 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
 template1 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
(4 rows)
テーブルをつくる
postgres=# insert into userlist values(1,    'sato','tokyo',18);
INSERT 0 1
postgres=# insert into userlist values(2,'nao','kyoto',22);
INSERT 0 1
postgres=# insert into userlist values(3,'john','newyork',34);
INSERT 0 1
postgres=# insert into userlist values(4,'lisa','paris',24);
INSERT 0 1
postgres=# insert into userlist values(5,'kaoru','nagoya',15);
INSERT 0 1
postgres=# insert into userlist values(6,'ryo','fuhuoka',40);
INSERT 0 1
平均年齢を算出する
postgres=# select avg(age) from userlist;
         avg
---------------------
 25.5000000000000000
(1 row)
合計の年齢を算出する
postgres=# select sum(age) from userlist;
 sum
-----
 153
(1 row)
年齢順に表示する
postgres=# select * from userlist order by age ;
 id | name  | address | age
----+-------+---------+-----
  5 | kaoru | nagoya  |  15
  5 | kaoru | nagoya  |  15
  1 | sato  | tokyo   |  18
  1 | sato  | tokyo   |  18
  2 | nao   | kyoto   |  22
  2 | nao   | kyoto   |  22
  4 | lisa  | paris   |  24
  4 | lisa  | paris   |  24
  3 | john  | newyork |  34
  3 | john  | newyork |  34
  6 | ryo   | fuhuoka |  40
  6 | ryo   | fuhuoka |  40
(12 rows)
20歳から25歳までの平均年齢を算出する
postgres=# select avg(age) from userlist where age between 20 and 25 ;
         avg
---------------------
 23.0000000000000000
(1 row)
20歳から25歳までの合計年齢を算出する
postgres=# select sum(age) from userlist where age between 20 and 25 ;
 sum
-----
  92
(1 row)
テーブルuserlistを捨てる
postgres=# drop table userlist;
DROP TABLE
Dataベースsalesを捨てる
postgres=# drop database sales;
DROP DATABASE
Postgresqlを終了する
postgres=# \q
[root@ik1-305-12909 home]#
【実践問題】
奨学金の給付制度により、東京、京都、fuhuokaの内、
人数が5人以上の場合、1人7000円の給付をすることになった。
該当する都市のみテーブルに表示しなさい。
また結果を/home/lisa/data/result4.csvに保存しなさい。
カラムはaddress, count, moneyだけで良い。ただしmoneyの大きい順番で表示すること。

postgres=#  select address,count(*),count(*)*7000 as "money" from userlist where address in ('tokyo','fuhuoka','kyoto')gro
up by address having count(*)>=5 order by count(*) desc;

表示結果は以下の通り
 address | count | money
---------+-------+-------
 tokyo   |    14 | 98000
 fuhuoka |     5 | 35000
(2 rows)
【実践問題】
東京と京都でイベントを開催することになり、
チラシの配布が必要になった。
ここに住んでいる20代の人に対して、
年齢の20倍のチラシをノルマにしたい。
name, address, age, printのカラムを表示し、
枚数の多い順番で表示しなさい。
ただしprintがチラシの枚数である。

表示コマンドは以下のとおり
postgres=#  select address, age, age*20 as "print" from userlist where (address in ('tokyo','kyoto')) and (age between 20 and 29) order by print desc;

表示結果は以下になる
 address | age | print
---------+-----+-------
 tokyo   |  26 |   520
 tokyo   |  25 |   500
 tokyo   |  25 |   500
 tokyo   |  23 |   460
 tokyo   |  22 |   440
 kyoto   |  22 |   440
 kyoto   |  21 |   420
(7 rows)

【実践問題】
東京、京都、名古屋に住んでいる10代の人が
londonに留学することになった。
それに伴い、住所を変更したい。
住所を変更し、name, address, ageを表示しなさい。

表示コマンドは以下の通り
※まず対象者を抽出する。

postgres=#  select address, age from userlist where (address in ('tokyo','kyoto','nagoya')) and (age between 10 and 19);

対象者が表示される。この場合は3名

 address | age
---------+-----
 tokyo   |  18
 nagoya  |  15
 tokyo   |  19
(3 rows)

その上で、住所変更措置を下記の通り実行する

postgres=# update userlist set address='london' where (address in ('tokyo','kyoto','nagoya')) and (age between 10 and 19);

住所が変更された対象者が表示される

UPDATE 3
postgres=# select * from userlist where address='london';
 id | name  | address | age
----+-------+---------+-----
  1 | sato  | london  |  18
  5 | kaoru | london  |  15
 18 | nori  | london  |  19
(3 rows)
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?