postgresql學習記錄

1、數據庫安裝mysql

centos系統自帶的數據庫版本比較低,咱們這裏參照官網安裝postgresql 11版本sql

一、安裝存儲庫RPM:

$ yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

二、安裝客戶端軟件包

yum install postgresql11

三、安裝服務器包(可選)

yum install postgresql11-server

四、初始化而且啓動數據庫

/usr/pgsql-11/bin/postgresql-11-setup initdb
systemctl enable postgresql-11
systemctl start postgresql-11

五、登錄數據庫

$ su - postgres

$ -bash-4.2$ psql
psql (11.3)
輸入 "help" 來獲取幫助信息.

$ postgres=#

六、數據庫默認數據存放目錄

-bash-4.2$ pwd
/var/lib/pgsql/data

2、數據庫的初始設置數據庫

一、修改監聽地址和端口

$ vim /var/lib/pgsql/11/data/postgresql.conf

listen_addresses = '*'        //默認是localhost,也就是127.0.0.1,沒法從其餘機器遠程登錄數據庫

port = 5432                    //默認端口,若是有多個數據庫實例,能夠修改成不一樣的端口

二、內存參數調整

shared_buffers =128M(默認)   // 共享內存大小,用於共享數據塊,根據本身機器內存大小適當調節,大一些能夠緩存更多數據,更高效的處理請求

work_mem = 4M       //單個SQL語句執行、排序、hash join使用內存,會自動釋放

三、修改數據庫log相關參數(同上面的配置參數)

logging_collector = on

log_directory = 'pg_log'

日誌的切換和是否選擇覆蓋可使用以下幾種方案(系統是默認保存一天的):

a、天天生成一個新的日誌文件
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 1d  
log_rotation_size = 0

b、每當日誌寫滿必定的大小(如100M),則切換一個新日誌
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 0  
log_rotation_size = 100M

c、只保留7天的日誌,進行循環覆蓋
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = off
log_rotation_age = 7d  
log_rotation_size = 0

四、重啓數據庫

$ systemctl restart postgresql-11

3、數據庫的基本操做vim

一、建立一個學生表

postgres=# CREATE TABLE score (student_name varchar(40),chinese_score int, test_date date);

postgres=# create table student(no int primary key,student_name varchar(40),age int);


postgres=# \d                                    // \d查看有哪些表

postgres=# \d+                                 //查看錶的數據更詳細

postgres=# \l                                     //查看有哪些數據庫

                                List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

               關聯列表
 架構模式 | 名稱  |  類型  |  擁有者
----------+-------+--------+----------
 public   | score | 數據表 | postgres
(1 行記錄)
    
postgres=# CREATE DATABASE testdb;      //建立數據庫
CREATE DATABASE

postgres=# \c testdb ;                        //切換到指定數據庫
You are now connected to database "testdb" as user "postgres".

postgres=# \d score    //查看錶的結構

postgres=# DROP TABLE score;           //刪除一張表

postgres=# insert into student values (1,'張三',18);     //插入一條數據到學生表

postgres=# select * from student;      //查詢表裏面全部的記錄

postgres=# UPDATE student SET age = 15;    //修改某一列數據的值
                      

4、Psql工具使用centos

一、遠程鏈接數據庫
psql -h <hostname or ip> -p <端口> [數據庫名稱] [用戶名稱]

[root@test ~]# vim /var/lib/pgsql/11/data/pg_hba.conf

# IPv4 local connections:
host    all             all             180.76.118.22/24         trust

trust:表示信任,不須要密碼既能夠鏈接,遠程來講很是的不安全
md5:表示須要密碼認證才能鏈接,能夠給用戶設置一個密碼

二、給postgres數據庫設置密碼或者修改密碼(先鏈接數據庫)

postgres=# ALTER USER postgres WITH PASSWORD 'postgres';

>>>密碼postgres要用引號引發來

三、顯示SQL語句的執行時間

postgres=# select * from student;
 no | student_name | age 
----+--------------+-----
  1 | 張三         |  15
(1 row)

Time: 0.718 ms

四、postgres=# \dn      //列出全部的schema

五、postgres=# \db     //列出全部的表空間

六、postgres=# \encoding utf8;   //設置默認編碼方式

連續兩個tab鍵表示命令補全

5、邏輯結構緩存

一、表、索引,在pg中叫作Relation,其餘數據庫叫作Table

數據行,pg中叫作Tuple,其餘數據庫叫作Row

二、postgres=# ALTER database osdbadb CONNECTION LIMIT 10;    //修改數據的最大鏈接爲10

三、postgres=# ALTER DATABASE osdbadb RENAME TO osdbadb01;   //修改數據庫名稱,不能在登陸的數據庫修改本身名稱,道理和大力士不能舉起本身是同樣的

四、模式:一個命名空間或目錄,不一樣模式下能夠有相同名稱的表、函數,只是爲了便於管理,與mysql的database概念是相等的,

postgres=# create schema osdba;    //建立一個模式

postgres=# \dn                             //查看有哪些模式
相關文章
相關標籤/搜索