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

相关文章
相关标签/搜索