postgresql數據庫經常使用命令(資源)

進入數據庫


#su - postgres                             #切換用戶,執行後提示符會變爲 '-bash-4.2$'
#psql -U postgres                        #登陸數據庫,執行後提示符變爲 'postgres=#'
#ALTER USER postgres WITH PASSWORD 'postgres'           #設置postgres用戶密碼爲

#postgres=# \q                                      #退出數據庫html

\h   :   查看SQL命令的解釋,好比\h select。
\?   :   查看psql命令列表。
\l   :   列出全部數據庫。
\c [database_name]   :   鏈接其餘數據庫。
\d   :   列出當前數據庫的全部表格。
\d [table_name]   :   列出某一張表格的結構。
\du   :  列出全部用戶。
\e   :   打開文本編輯器。
\conninfo   :    列出當前數據庫和鏈接的信息。
alter user postgres with password 'new password'             #更改postgres的密碼

 

注意 :linux

pg_dump                                 將PostgreSQL數據庫導出到一個腳本文件 
pg_dumpall                             將全部的PostgreSQL數據庫導出到一個腳本文件 
pg_restore                               從一個由pg_dump或pg_dumpall程序導出的腳本文件中恢復PostgreSQL數據庫 
sql

[表內基本操做]

*在已有的表裏添加字段:                alter table [表名] add column [字段名] [類型]; 
*刪除表中的字段:                           alter table [表名] drop column [字段名]; 
*重命名一個字段:                             alter table [表名] rename column [字段名A] to [字段名B]; 
*給一個字段設置缺省值:                     alter table [表名] alter column [字段名] set default [新的默認值]; 
*去除缺省值:                                    alter table [表名] alter column [字段名] drop default; 
在表中插入數據:                                        insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......); 
修改表中的某行某列的數據:                       update [表名] set [目標字段名]=[目標值] where [該行特徵]; 
刪除表中某行數據:                                    delete from [表名] where [該行特徵]; 
delete from [表名];                           --刪空整個表數據庫

設定用戶特定的權限

仍是要用例子來講明: 
建立一個用戶組: 
sales=# CREATE GROUP sale; 
添加幾個用戶進入該組 
sales=# ALTER GROUP sale ADD USER sale1,sale2,sale3; 
授予用戶級sale針對表employee和products的SELECT權限 
sales=# GRANT SELECT ON employee,products TO GROUP sale; 
在sale中將用戶user2刪除 
sales=# ALTER GROUP sale DROP USER sale2;centos

 

建立用戶以及設置用戶密碼bash

默認狀況下只有用戶名。postgres沒有設置密碼yii

postgres=# select usename,passwd from pg_shadow;               查看用戶以及是否加密
 usename  |               passwd                
----------+-------------------------------------
 postgres | 
 zabbix   | md520e0e8833ebe8947cd347f94b1c4977f
(2 rows)
#create user test                  #建立test用戶,不設置密碼
postgres=# \password test          #test用戶設置密碼
Enter new password: 
Enter it again: 
postgres=# select usename,passwd from pg_shadow;
 usename  |               passwd                
----------+-------------------------------------
 postgres | 
 zabbix   | md520e0e8833ebe8947cd347f94b1c4977f
 test     | md55a2e54ee57e5b7273b9a8fed78c1ebd8
(3 rows)

 

增長

進入到 PostgreSQL 的安裝目錄,並進入到 bin 目錄,createdb 命令位於 PostgreSQL安裝目錄/bin 下,執行建立數據庫的命令:編輯器

$ cd /Library/PostgreSQL/11/bin/
$ createdb -h localhost -p 5432 -U postgres runoobdb
password ******
CREATE DATABASE dbname;

 

選擇數據庫

使用 \l 用於查看已經存在的數據庫:函數

postgres=# \l

使用 \c + 數據庫名 來進入數據庫:post

postgres=# \c runoobdb

鏈接數據庫後面添加數據庫名來選擇數據庫:

$ psql -h localhost -p 5432 -U postgress testdb
Password for user postgress: ****

 

 

給定的數據庫中建立一個新表

CREATE TABLE table_name(  
   column1 datatype,  
   column2 datatype,  
   column3 datatype,  
   .....  
   columnN datatype,  
   PRIMARY KEY( one or more columns )  
);
CREATE TABLE public.student2
(
  id integer NOT NULL,
  name character(100),
  subjects character(1),
  CONSTRAINT student2_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE public.student2
  OWNER TO postgres;
COMMENT ON TABLE public.student2
  IS '這是一個學生信息表2';
CREATE TABLE myschema.tb_test
(
  id integer,
  name character(254)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE myschema.tb_test
  OWNER TO postgres;

 

建立模式

經過SQL命令行直接建立 -

CREATE SCHEMA myschema;

建立了一個表,表名爲 COMPANY 表格,主鍵爲 IDNOT NULL 表示字段不容許包含 NULL 值:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

 

刪除

使用SQL刪除數據庫

postgres=# drop database testdb;
DROP DATABASE
postgres=# drop table student2;
#CREATE DATABASE testdb OWNER postgres;                   #建立testdb數據庫,屬於用戶postgres

 

插入數據(INSERT語句)

語法:

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)  
VALUES (value1, value2, value3,...valueN);

 

注意:column1, column2, column3,...columnN是要插入數據的表中的列的名稱。

INSERT INTO EMPLOYEES(  ID, NAME, AGE, ADDRESS, SALARY)  
VALUES
 (1, 'Maxsu', 25, '海口市人民大道2880號', 109990.00 ), 
(2, 'minsu', 25, '廣州中山大道 ', 125000.00 ), 
(3, '李洋', 21, '北京市朝陽區', 185000.00),   
(4, 'Manisha', 24, 'Mumbai', 65000.00), 
(5, 'Larry', 21, 'Paris', 85000.00);


 

查詢數據(SELECT語句)

SELECT語句用於從數據庫表中檢索數據。 數據以結果表格的形式返回。

語法:

SELECT "column1", "column2".."column" FROM "table_name";

這裏,column1,column2,.. columnN指定檢索哪些數據的列。 若是要從表中檢索全部字段,則必須使用如下語法:

SELECT * FROM "table_name";

 

執行如下查詢從表中檢索指定字段:

SELECT id,name FROM EMPLOYEES;

或者

SELECT ID, NAME, AGE, SALARY  FROM EMPLOYEES;


 

更新數據(UPDATE語句)

UPDATE語句用於修改表中現有的記錄。 要更新所選行,您必須使用WHERE子句,不然將更新全部行。

語法:

如下是update語句的基本語法:

UPDATE table_name  
SET column1 = value1, column2 = value2...., columnN = valueN  
WHERE [condition];


刪除數據(DELETE語句)

WHERE」子句用於指定刪除所選記錄的條件,如是不指定條件則將刪除全部記錄。

語法:

如下是DELETE語句的基本語法:

DELETE FROM table_name  
WHERE [condition];

 

ORDER BY子句

ORDER BY子句用於按升序或降序對數據進行排序。數據在一列或多列的基礎上進行排序。

語法:

SELECT column-list  
FROM table_name  
[WHERE condition]  
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

參數說明:

  • column_list:它指定要檢索的列或計算。
  • table_name:它指定要從中檢索記錄的表。FROM子句中必須至少有一個表。
  • WHERE conditions:可選。 它規定必須知足條件才能檢索記錄。
  • ASC:也是可選的。它經過表達式按升序排序結果集(默認,若是沒有修飾符是提供者)。
  • DESC:也是可選的。 它經過表達式按順序對結果集進行排序。

 

升序排序 - ORDER BY [field] ASC

執行如下查詢以按升序ORDER BY AGE數據記錄:

SELECT *   
FROM EMPLOYEES  
ORDER BY AGE ASC;

按照 age 字段升序排序

降序排序 - ORDER BY [field] DESC

執行如下查詢以按降序ORDER BY name DESC數據的記錄:

SELECT *   
FROM EMPLOYEES 
ORDER BY name DESC;

按照 name 字段降序排序

 

GROUP BY子句

GROUP BY子句用於將具備相同數據的表中的這些行分組在一塊兒。 它與SELECT語句一塊兒使用。

GROUP BY子句經過多個記錄收集數據,並將結果分組到一個或多個列。 它也用於減小輸出中的冗餘。

語法:

SELECT column-list  
FROM table_name  
WHERE [conditions ]  
GROUP BY column1, column2....columnN  
ORDER BY column1, column2....columnN

 

注意:在GROUP BY多個列的狀況下,您使用的任何列進行分組時,要確保這些列應在列表中可用。

執行如下查詢:

SELECT NAME, SUM(SALARY)   
FROM EMPLOYEES   
GROUP BY NAME;

 

如何減小冗餘數據:

再來看看下面這個例子:

咱們在「EMPLOYEES」表中插入一些重複的記錄。添加如下數據:

INSERT INTO EMPLOYEES VALUES (6, '李洋', 24, '深圳市福田區中山路', 135000);  
INSERT INTO EMPLOYEES VALUES (7, 'Manisha', 19, 'Noida', 125000);  
INSERT INTO EMPLOYEES VALUES (8, 'Larry', 45, 'Texas', 165000);

執行如下查詢以消除冗餘:

SELECT NAME, SUM(SALARY)   
FROM EMPLOYEES   
GROUP BY NAME;

      使用GROUP BY NAME時,能夠看到重複的名字數據記錄被合併。 它指定GROUP BY減小冗餘。

 

 

Having子句

HAVING子句與GROUP BY子句組合使用,用於選擇函數結果知足某些條件的特定行。

語法:

SELECT column1, column2  
FROM table1, table2  
WHERE [ conditions ]  
GROUP BY column1, column2  
HAVING [ conditions ]  
ORDER BY column1, column2

HAVING子句與GROUP BY子句組合使用,用於選擇函數結果知足某些條件的特定行。

語法:

SELECT column1, column2  
FROM table1, table2  
WHERE [ conditions ]  
GROUP BY column1, column2  
HAVING [ conditions ]  
ORDER BY column1, column2

在「EMPLOYEES」表中插入一些重複的記錄,首先添加如下數據:

INSERT INTO EMPLOYEES VALUES (7, 'Minsu', 24, 'Delhi', 135000);  
INSERT INTO EMPLOYEES VALUES (8, 'Manisha', 19, 'Noida', 125000);

執行如下查詢表「EMPLOYEES」中name字段值計數大於1的名稱。

SELECT NAME,COUNT (NAME) 
FROM EMPLOYEES  
GROUP BY NAME HAVING COUNT (NAME) > 1;


 

PostgreSQL條件查詢

Having子句

HAVING子句與GROUP BY子句組合使用,用於選擇函數結果知足某些條件的特定行。

語法:

SELECT column1, column2  
FROM table1, table2  
WHERE [ conditions ]  
GROUP BY column1, column2  
HAVING [ conditions ]  
ORDER BY column1, column2

將顯示名稱(name)數量小於2的記錄。

執行如下查詢:

SELECT NAME   
FROM EMPLOYEES  
GROUP BY NAME HAVING COUNT (NAME) < 2;

在「EMPLOYEES」表中插入一些重複的記錄,首先添加如下數據:

INSERT INTO EMPLOYEES VALUES (7, 'Minsu', 24, 'Delhi', 135000);  
INSERT INTO EMPLOYEES VALUES (8, 'Manisha', 19, 'Noida', 125000);

查詢表「EMPLOYEES」中name字段值計數大於1的名稱。

SELECT NAME,COUNT (NAME) 
FROM EMPLOYEES  
GROUP BY NAME HAVING COUNT (NAME) > 1;

 

AND條件

AND條件與WHERE子句一塊兒使用,以從表中的多個列中選擇惟一的數據。

語法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition]    
AND [search_condition];

查詢全部ID小於4而且薪水大於120000的員工數據信息,執行如下查詢語句:

SELECT *  
FROM EMPLOYEES  
WHERE SALARY > 120000  
AND ID <= 4;


 

OR條件

OR條件與WHERE子句一塊兒使用,以從表中的一列或多列列中選擇惟一數據。

語法

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition]    
OR [search_condition];

查詢名字是Minsu或者地址爲Noida員工信息,執行如下查詢:

SELECT *  
FROM  EMPLOYEES 
WHERE NAME = 'Minsu'  
OR ADDRESS = 'Noida';

 

AND & OR條件

AND&OR條件在僅一個查詢中提供了ANDOR條件的優勢。

語法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition]  AND [search_condition]     
OR [search_condition];

查詢名字的值爲Minsu和地址的值爲’Delhi‘,或者ID值大於等8的記錄信息,執行如下查詢:

SELECT *  
FROM EMPLOYEES  
WHERE (NAME = 'Minsu' AND ADDRESS = 'Delhi')  
OR (ID>= 8);

 

NOT條件

NOT條件與WHERE子句一塊兒使用以否認查詢中的條件。

語法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] NOT [condition];

查詢那些地址不爲NULL的記錄信息,執行如下查詢:

SELECT *  
FROM EMPLOYEES  
WHERE address IS NOT NULL ;

查詢那些年齡不是2124的全部記錄,執行如下查詢:

SELECT *  
FROM EMPLOYEES  
WHERE age NOT IN(21,24) ;

 

LIKE條件

LIKE條件與WHERE子句一塊兒用於從指定條件知足LIKE條件的表中獲取數據。

語法

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] LIKE [condition];

示例1

查詢名字以Ma開頭的數據記錄,以下查詢語句:

SELECT *   
FROM EMPLOYEES   
WHERE NAME LIKE 'Ma%';

示例2
查詢名字以su結尾的數據記錄,以下查詢語句:

SELECT *   
FROM EMPLOYEES   
WHERE NAME LIKE '%su';

示例3
查詢地址中含有大道的數據記錄,以下查詢語句:

SELECT *   
FROM EMPLOYEES   
WHERE address LIKE '%大道%';

 

IN條件

IN條件與WHERE子句一塊兒使用,從指定條件知足IN條件的表中獲取數據。

語法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] IN [condition];

查詢employee表中那些年齡爲1921的員工信息,執行如下查詢:

SELECT *  
FROM EMPLOYEES  
WHERE AGE IN (19, 21);

 

NOT IN條件

NOT IN條件與WHERE子句一塊兒使用,以從指定條件否認IN條件的表中獲取數據。

語法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] NOT IN [condition];

查詢那些年齡不是1925的數據,執行如下查詢:

SELECT *  
FROM EMPLOYEES  
WHERE AGE NOT IN (19, 25);

查詢那些名字不是MinsuMaxsu的數據信息,執行如下查詢:

SELECT *  
FROM EMPLOYEES  
WHERE name NOT IN ('Maxsu', 'Minsu');

 

BETWEEN條件

BETWEEN條件與WHERE子句一塊兒使用,以從兩個指定條件之間的表中獲取數據。

語法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] BETWEEN [condition];

查詢employees表中年齡在24~27之間(含2427)的數據信息,執行如下查詢:

SELECT *   
FROM EMPLOYEES   
WHERE AGE BETWEEN 24 AND 27;

 

安裝PostgreSQL

1

2

sudo apt-get update

sudo apt-get install postgresql postgresql-contrib

 

卸載PostgreSQL

1

2

sudo apt-get purge 'postgresql-*'

sudo apt-get autoremove 'postgresql-*'

 

CentOS卸載舊版本postgresql

一、$ yum remove postgresql*

二、刪除相關目錄文件:

       rm -rf  /var/lib/pgsql

   rm -rf  /usr/pgsql*

       rm -r /etc/postgresql/

       rm -r /etc/postgresql-common/

       rm -r /var/lib/postgresql/

三、刪除pg相關用戶組/用戶

  userdel -r postgres
  groupdel postgres

四、

 

 

參考連接:

原文出自【易百教程】,商業轉載請聯繫做者得到受權,非商業轉載請保留原文連接:https://www.yiibai.com/postgresql/postgresql-between-condition.html
 

連接 : 

PostgreSQL安裝詳細步驟(linux) : https://www.cnblogs.com/qiyebao/p/4562557.html

源碼postgresql安裝及常見錯誤處理 :https://blog.csdn.net/zhu_xun/article/details/21234663

centos7 在線安裝新版postgresql10 :https://www.jianshu.com/p/4e88071ed09a

Centos7 安裝Postgresql10.5和PostGIS : https://blog.csdn.net/u010430471/article/details/81663248

相關文章
相關標籤/搜索