# PostgreSQL 命令

# 命令

# 数据库操作

# 创建数据库

CREATE DATABASE dbname;

# 列举数据库

查看已经存在的数据库

\l

# 选择数据库

\c + dbname

# 删除数据库

DROP DATABASE dbname;\d
DROP DATABASE IF EXISTS dbname;

查看已经存在的表格
\d

查看指定表格信息
\d tablename 

删除表格
DROP TABLE table_name;

# 表格操作

# 创建表格

CREATE TABLE table_name

eg:

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

# 列举表格

\d

# 选择表格

\d table_name 

# 删除表格

DROP TABLE table_name;

# Schema操作

# 创建Schema

CREATE SCHEMA schema_name;

eg:

create table yixing.company(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25),
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

# 删除Schema

DROP SCHEMA schema_name;

删除一个模式以及其中包含的所有对象:
DROP SCHEMA schema_name CASCADE;

# SQL

# INSERT 插入

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

eg:

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE) VALUES (1, 'Paul', 32, 'California', 20000.00,'2001-07-13');

# SELECT 选择

选择具体的某列
SELECT column1, column2,...columnN FROM table_name;

选择所有列
SELECT * FROM table_name;

eg:

SELECT ID,NAME FROM company;

SELECT * FROM company;

# WHERE/AND/OR/IN/BETWEEN 条件

SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;

SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;

SELECT * FROM COMPANY WHERE AGE IS NOT NULL;

SELECT * FROM COMPANY WHERE NAME LIKE 'Pa%';

SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );

SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );

SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;

子查询

SELECT AGE FROM COMPANY WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

# UPDATE 更新

规则:

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

示例:

UPDATE COMPANY SET SALARY = 15000 WHERE ID = 3;

UPDATE COMPANY SET ADDRESS = 'Texas', SALARY=20000;

# DELETE 删除

规则:

DELETE FROM table_name WHERE [condition];

示例:

DELETE FROM COMPANY WHERE ID = 2;

# LIKE 子句

在 LIKE 子句中,通常与通配符结合使用,通配符表示任意字符,在 PostgreSQL 中,主要有以下两种通配符:

  • 百分号 %
  • 下划线 _

如果没有使用以上两种通配符,LIKE 子句和等号 = 得到的结果是一样的。

规则

SELECT FROM table_name WHERE column LIKE 'XXXX%';
或者
SELECT FROM table_name WHERE column LIKE '%XXXX%';
或者
SELECT FROM table_name WHERE column LIKE 'XXXX_';
或者
SELECT FROM table_name WHERE column LIKE '_XXXX';
或者
SELECT FROM table_name WHERE column LIKE '_XXXX_';

示例:

postgresql-027

# LIMIT

规则:

SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows]

示例:

SELECT * FROM COMPANY LIMIT 4;

SELECT * FROM COMPANY LIMIT 3 OFFSET 2;

# ORDER BY

在 PostgreSQL 中,ORDER BY 用于对一列或者多列数据进行升序(ASC)或者降序(DESC)排列

规则:

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

示例:

SELECT * FROM COMPANY ORDER BY AGE ASC;

SELECT * FROM COMPANY ORDER BY NAME, SALARY ASC;

# GROUP BY

在 PostgreSQL 中,GROUP BY 语句和 SELECT 语句一起使用,用来对相同的数据进行分组。GROUP BY 在一个 SELECT 语句中,放在 WHERE 子句的后面,ORDER BY 子句的前面。

规则:

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

GROUP BY 子句必须放在 WHERE 子句中的条件之后,必须放在 ORDER BY 子句之前。

在 GROUP BY 子句中,你可以对一列或者多列进行分组,但是被分组的列必须存在于列清单中。

示例:

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

# WITH

# HAVING

规则:

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

示例:

SELECT NAME FROM COMPANY GROUP BY name HAVING count(name) < 2;

SELECT NAME FROM COMPANY GROUP BY name HAVING count(name) > 1;

# DISTINCT

在 PostgreSQL 中,DISTINCT 关键字与 SELECT 语句一起使用,用于去除重复记录,只获取唯一的记录。我们平时在操作数据时,有可能出现一种情况,在一个表中有多个重复的记录,当提取这样的记录时,DISTINCT 关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。

规则:

SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]

示例:

SELECT DISTINCT name FROM COMPANY;

# 运算符

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。PostgreSQL 运算符是一个保留关键字或字符,一般用在 WHERE 语句中,作为过滤条件。常见的运算符有:

  • 算术运算符
  • 比较运算符
  • 逻辑运算符
  • 按位运算符

# 算术运算符

假设变量 a 为 2,变量 b 为 3,则: postgresql-023

# 比较运算符

假设变量 a 为 10,变量 b 为 20,则:

postgresql-024

# 逻辑运算符

PostgreSQL 逻辑运算符有以下几种: postgresql-025

# 按位运算符

位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:

postgresql-026

#

# 参考

陕ICP备20004732号-3