#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 表格,主键为 ID,NOT 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 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 "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语句用于修改表中现有的记录。 要更新所选行,您必须使用WHERE子句,不然将更新全部行。
语法:
如下是update
语句的基本语法:
UPDATE table_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];
WHERE”子句用于指定删除所选记录的条件,如是不指定条件则将删除全部记录。
语法:
如下是DELETE语句的基本语法:
DELETE FROM table_name WHERE [condition];
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 AGE
数据记录:
SELECT * FROM EMPLOYEES ORDER BY AGE ASC;
按照 age
字段升序排序
执行如下查询以按降序ORDER BY name DESC
数据的记录:
SELECT * FROM EMPLOYEES ORDER BY name DESC;
按照 name
字段降序排序
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子句与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;
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条件与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条件与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
条件的优势。
语法:
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条件与WHERE子句一块儿使用以否认查询中的条件。
语法:
SELECT column1, column2, ..... columnN FROM table_name WHERE [search_condition] NOT [condition];
查询那些地址不为NULL
的记录信息,执行如下查询:
SELECT * FROM EMPLOYEES WHERE address IS NOT NULL ;
查询那些年龄不是21
和24
的全部记录,执行如下查询:
SELECT * FROM EMPLOYEES WHERE age NOT IN(21,24) ;
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条件与WHERE子句一块儿使用,从指定条件知足IN
条件的表中获取数据。
语法:
SELECT column1, column2, ..... columnN FROM table_name WHERE [search_condition] IN [condition];
查询employee
表中那些年龄为19
,21
的员工信息,执行如下查询:
SELECT * FROM EMPLOYEES WHERE AGE IN (19, 21);
NOT IN条件与WHERE子句一块儿使用,以从指定条件否认IN
条件的表中获取数据。
语法:
SELECT column1, column2, ..... columnN FROM table_name WHERE [search_condition] NOT IN [condition];
查询那些年龄不是19
,25
的数据,执行如下查询:
SELECT * FROM EMPLOYEES WHERE AGE NOT IN (19, 25);
查询那些名字不是Minsu
,Maxsu
的数据信息,执行如下查询:
SELECT * FROM EMPLOYEES WHERE name NOT IN ('Maxsu', 'Minsu');
BETWEEN条件与WHERE子句一块儿使用,以从两个指定条件之间的表中获取数据。
语法:
SELECT column1, column2, ..... columnN FROM table_name WHERE [search_condition] BETWEEN [condition];
查询employees
表中年龄在24
~27
之间(含24
,27
)的数据信息,执行如下查询:
SELECT * FROM EMPLOYEES WHERE AGE BETWEEN 24 AND 27;
安装PostgreSQL
1 2 |
|
卸载PostgreSQL
1 2 |
|
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