PostgreSQLの設置、配置及び簡単な使用方法


一、PostgreSQL概要
1、何がPostgreSQLですか?
PostgreSQLデータベースは、現在の最も強力なオープンソースデータベースであり、豊富なデータタイプ(JSON何JSONBタイプ、配列タイプ)とカスタムタイプなどをサポートしています。また、GiSTフレームワークでインデックスタイプを実現できるなど、豊富なインターフェースを提供しています。また、C言語を使ってユーザー定義関数、触発器を書くこともサポートしています。人気のある言語を使ってユーザー定義関数を書くこともサポートしています。例えば、PL/PerlはPerl言語を使ってユーザー定義関数を書く機能を提供しています。もちろんPL/Pytthon、PL/Tclもあります。など。
2、PostgreSQLデータベースのメリット
PostgreSQLデータベースは、現在の最も強力なオープンソースデータベースであり、工業標準SQL 92に最も近いクエリ言語であり、最新のSQL規格に適合した新しい機能を実現しています。SQL 2003.
安定信頼性:PostgreSQLは唯一データがゼロになることができるオープンソースデータベースです。海外の一部の銀行もPostgreSQLを使っていると報道されています。
ソース節約:PostgreSQLデータベースはオープンソースであり、無料であり、BSDプロトコルであり、使用と二次開発にはほとんど制限がありません。
幅広いサポート:PostgreSQLデータベースは、C、C+++、Perl、Python、Java、Tcl、PHPなど多くの主流開発言語をサポートしています。
PostgreSQL社区が活躍しています。PostgreSQLは基本的に3ヶ月ごとにパッチバージョンが発売されています。これは既知のBUGがすぐに修復され、アプリケーションシーンの需要も適時に応じられます。
二、PostgreSQLの設置と配置
菗取付前準備:
1、システムバージョン

[root@node1 ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
2、yumインストール(公式サイトで対応バージョンのyumソースを見つけて、現地にインストールします。

[root@node1 ~]# yum -y install pgdg-centos96-9.6-3.noarch.rpm #yum   
[root@node1 ~]# yum -y install postgresql-server #  postgreesql
#       
[root@node1 ~]# rpm -ql postgresql-server
/etc/pam.d/postgresql
/usr/bin/initdb
/usr/bin/pg_basebackup
/usr/bin/pg_controldata
/usr/bin/pg_ctl
/usr/bin/pg_receivexlog
/usr/bin/pg_resetxlog
/usr/bin/postgres
/usr/bin/postgresql-check-db-dir
/usr/bin/postgresql-setup
/usr/bin/postmaster
/usr/lib/systemd/system/postgresql.service
/usr/lib/tmpfiles.d/postgresql.conf
/var/lib/pgsql
/var/lib/pgsql/.bash_profile
/var/lib/pgsql/backups
/var/lib/pgsql/data
/var/run/postgresql、
#  postgresql
#       :
[root@node1 ~]# systemctl start postgresql.service
Job for postgresql.service failed because the control process exited with error code. See "systemctl status postgresql.service" and "journalctl -xe" for details.
#              ,          
postgresql-setup initdb
Initializing database ... OK #       
#    Postgresql
[root@node1 ~]# systemctl start postgresql.service
[root@node1 ~]# netstat -tnlp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name 
tcp  0  0 127.0.0.1:5432  0.0.0.0:*  LISTEN  1512/postgres  
tcp6  0  0 ::1:5432    :::*  LISTEN  1512/postgres 
#      
[root@node1 ~]# systemctl status postgresql.service
● postgresql.service - PostgreSQL database server
 Active: active (running) since Sat 2016-11-26 22:49:07 CST; 1min 33s ago
#         “postgres”  ,     
[root@node1 ~]# su - postgres
-bash-4.2$ psql
psql (9.2.15)
Type "help" for help.
postgres=# 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
#    ,        。
3、ソースの取り付け
ハハはまず公式サイトにソースコードをダウンロードする(https://www.postgresql.org/ftp/source/

#      
[root@node1 soft]# tar xf postgresql-9.6.1.tar.bz2
[root@node1 soft]# cd postgresql-9.6.1
# yum -y groupinstall "Development tools" #    
# yum -y install perl-ExtUtils-Embed readline-devel zlib-devel python-devel #   
# ./configure --prefix=/usr/local/postgresql-9.6.1 --with-perl --with-python --with-blocksize=32 --with-wal-blocksize=64 --with-wal-segsize=64
# make && make install
#      
[root@node1 postgresql-9.6.1]# cat /etc/profile.d/postgresql.sh
export PATH=$PATH:/usr/local/pgsql/bin
export PGDATA=/data/pgdata
[root@node1 postgresql-9.6.1]# source /etc/profile.d/postgresql.sh
[root@node1 postgresql-9.6.1]# echo "/usr/local/pgsql/lib" > /etc/ld.so.conf.d/pgsql.conf
[root@node1 postgresql-9.6.1]# ldconfig
#              
[root@node1 postgresql-9.6.1]# mkdir /data/pgdata/
[root@node1 postgresql-9.6.1]# chown -R postgres.postgres /data/pgdata/
[root@node1 postgresql-9.6.1]# su - postgres
-bash-4.2$ initdb
The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
fixing permissions on existing directory /data/pgdata ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
Success. You can now start the database server using:
 pg_ctl -D /data/pgdata -l logfile start
#  contrib      
# cd postgresql-9.6.1/contrib/
# make
# make install
#        
# pg_ctl start -D $PGDATA #PGDATA pgsql     
# pg_ctl stop -D $PGDATA [-m SHUTDOWN-MODE]
  -m           ,     
smart:         ,     。        ,        。
fast:       ,        ,        ,         。
immediate:       ,            ,    ,             。
4、PostgreSQLの簡単な配置

        postgresql.conf  ,      :
#listen_addresses = 'localhost'   # what IP address(es) to listen on;
#port = 5432       # (change requires restart)
listen_addresses        ,               ,         "*",  0.0.0.0。
port       ,     ,        ,        。
#    Log     
logging_collector = on #     ,on    
log_directory = 'pg_log' #         
                       
   :            
log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 1d
log_rotation_size = 0
   :           ( 10MB  ),       
log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 0
log_rotation_size = 10M
   :   7    ,       
log_filename = ‘postgresql-%a.log'
log_truncate_on_rotation = off
log_rotation_age = 1d
log_rotation_size = 0
5、メモリパラメータの設定
shared_バffers:共有メモリのサイズは、主にデータブロックを共有するために使用されます。
ヽoo。ツ。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。Bffersのデフォルト値は32 MBで、十分なメモリがあれば、このパラメータを大きく変更できます。このようにデータベースはより多くのデータベースをキャッシュできます。データを読み込むと、共有メモリから読み込むことができます。ファイルから読み込む必要はありません。
ワークmem:単一のSQLを実行する時、並べ替え、hash junが使っているメモリは、SQLを実行し終わったら、メモリが解放されます。この値を大きく設定すると、並べ替え操作が速くなります。
三、SQL文法入門
1、SQL文の文法概要
(1)、ステートメントの分類(SQLコマンドは一般的にDDL、DML、DQLのいくつかの種類に分けられます。)
DDL:Data Definition Languageの略語、つまりデータ定義言語は、主に作成、削除、修正表、索引などのデータベースオブジェクト言語に使われます。
DMML:Data Manipulation Languageの略称、つまりデータ操作言語は、主にデータを挿入、更新、削除するために使用されるので、INSERT、UPDATE、DELETEの3つの文にも分類されます。
DQL:データベースクエリステートメント、基本的にタイムリーなSELECTクエリコマンドは、データクエリに使用されます。