增加

进入到 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 + 数据库名 来进入数据库:

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;

插入数据(INSERT语句)

语法:

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);
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

执行以下查询:

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;

参考链接:

原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/postgresql/postgresql-between-condition.html
 

09-03 21:21