一、pgsql里面的数据类型不再介绍:https://www.runoob.com/postgresql/postgresql-data-type.html

二、常用基本语句

2.1、CREATE DATABASE dbname;   创建数据库

create database  Demo1;

          注意:createdb 命令位于 PostgreSQL安装目录/bin 下,执行创建数据库的命令:

        $ cd /Library/PostgreSQL/11/bin/
        $ createdb -h localhost -p 5432 -U postgres Demo1
        password ******

2.2、DROP DATABASE [ IF EXISTS ] dbname;   删除数据库

drop database  Demo1;

注意: dropdb 名位于 PostgreSQL安装目录/bin 下,执行删除数据库的命令:

          $ cd /Library/PostgreSQL/11/bin/
          $ dropdb -h localhost -p 5432 -U postgres runoobdb
          password ******

2.3、DROP TABLE 语句来删除表格,包含表格数据、规则、触发器
DROP TABLE Demo1; 或者 drop table department, company;

2.4、PostgreSQL 模式(SCHEMA)可以看着是一个表的集合, 一个模式可以包含视图、索引、数据类型、函数和操作符

      相同的对象名称可以被用于不同的模式中而不会出现冲突,

      例如 schema1 和 myschema 都可以包含名为 mytable 的表。

      使用模式的优势:1、允许多个用户使用一个数据库并且不会互相干扰。

2、将数据库对象组织成逻辑组以便更容易管理。

3、第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。

2.4.1、 创建 语法:# create schema myschema;

# create table myschema.company(

                          ID INT NOT NULL,

                          NAME VARCHAR (20) NOT NULL,

                          AGE INT NOT NULL,

                          ADDRESS CHAR (25),

                          SALARY DECIMAL (18, 2),

                          PRIMARY KEY (ID)

                                 );

       2.4.2、删除语法:

        删除一个为空的模式(其中的所有对象已经被删除):

          DROP SCHEMA myschema;

        删除一个模式以及其中包含的所有对象:

          DROP SCHEMA myschema CASCADE;

2.5、插入语句:INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);

所有字段插入值或者 INSERT INTO TABLE_NAME
VALUES (value1,value2,value3,...valueN);
案例:# INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE)
           VALUES (1, 'Paul', 32, 'California', 20000.00,'2001-07-13');

所有字段插入值或者 INSERT INTO COMPANY
           VALUES (1, 'Paul', 32, 'California', 20000.00,'2001-07-13');


2.6、查询语句:SELECT column1, column2,...columnN FROM table_name;
案例:SELECT * FROM company;
SELECT * FROM COMPANY
WHERE SALARY > 50000;
                              =或!=或 >=、IS NOT NULL;
案例2:
        # SELECT (17 + 6) AS ADDITION ;
# SELECT COUNT(*) AS "RECORDS" FROM COMPANY;

PostgreSQL 还内置了一些数学函数,如:
        1、avg() : 返回一个表达式的平均值
        2、sum() : 返回指定字段的总和
        3、count() : 返回查询的记录总数

      2.7、更新数据库表中数据
语法:UPDATE table_name SET column1 = value1,
column2 = value2...., columnN = valueN WHERE [condition];
案例:# UPDATE COMPANY SET SALARY = 15000 WHERE ID = 3;

2.8、DELETE 语句来删除 PostgreSQL 表中的数据
DELETE FROM table_name WHERE [condition];
案例:DELETE FROM table_name WHERE [condition];

2.9、查询数据 limit 或 OFFSET
案例:=# SELECT * FROM COMPANY LIMIT 4;
偏移 offset
# SELECT * FROM COMPANY LIMIT 3 OFFSET 2;

2.10、DISTINCT 关键字与 SELECT 语句一起使用,用于去除重复记录,只获取唯一的记录
案例:SELECT DISTINCT name FROM COMPANY;


2.11、PostgreSQL 约束用于规定表中的数据规则。
PostgreSQL 中常用的约束。
1、
NOT NULL:指示某列不能存储 NULL 值。
2、UNIQUE:确保某列的值都是唯一的。
          3、PRIMARY Key:NOT NULL 和 UNIQUE 的结合。
确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
4、FOREIGN Key: 保证一个表中的数据匹配另一个表中的值的参照完整性。
5、CHECK: 保证列中的值符合指定的条件。
6、EXCLUSION :排他约束,保证如果将任何两行的指定列或表达式使用指定操作符进行比较,
至少其中一个操作符比较将会返回 false 或空值。
          CREATE TABLE COMPANY3(
          ID INT PRIMARY KEY NOT NULL,
           NAME TEXT NOT NULL,
           AGE INT NOT NULL UNIQUE,
           ADDRESS CHAR(50),
           SALARY REAL DEFAULT 50000.00
           );

2.12、删除约束
     ALTER TABLE table_name DROP CONSTRAINT some_name;

三、PostgreSQL 高级
 
   3.1、别名

SELECT C.ID, C.NAME, C.AGE, D.DEPT FROM COMPANY AS C, DEPARTMENT AS D WHERE C.ID = D.EMP_ID; 
   3.2、PostgreSQL 触发器是数据库的回调函数,它会在指定的数据库事件发生时自动执行/调用。

          PostgreSQL 触发器可以在下面几种情况下触发:

                      3.2.1、在执行操作之前(在检查约束并尝试插入、更新或删除之前)。

           3.2.2、 在执行操作之后(在检查约束并插入、更新或删除完成之后)。

                      3.2.3、更新操作(在对一个视图进行插入、更新、删除时)

语法:1、创建触发器时的基础语法如下

CREATE TRIGGER trigger_name [BEFORE|AFTER|INSTEAD OF]

event_name ON table_name

[

-- 触发器逻辑....

];

   
案例:
关键字 触发器名字
# CREATE TRIGGER example_trigger AFTER INSERT ON COMPANY FOR EACH ROW EXECUTE PROCEDURE auditlogfunc();

CREATE OR REPLACE FUNCTION auditlogfunc() RETURNS TRIGGER AS $example_table$
BEGIN
INSERT INTO AUDIT(EMP_ID, ENTRY_DATE) VALUES (new.ID, current_timestamp);
RETURN NEW;
END;
$example_table$ LANGUAGE plpgsql;

列出触发器:


# SELECT * FROM pg_trigger;


列举出特定表的触发器,语法如下:


# SELECT tgname FROM pg_trigger, pg_class WHERE tgrelid=pg_class.oid AND relname='company';

删除触发器

# drop trigger example_trigger on company;
 
 
3.3、索引 # \d company 命令列出 COMPANY 表的所有索引:
# CREATE INDEX salary_index ON COMPANY (salary);

使用索引时,需要考虑下列准则:

    1、索引不应该使用在较小的表上。

    2、索引不应该使用在有频繁的大批量的更新或插入操作的表上。

    3、索引不应该使用在含有大量的 NULL 值的列上。

4、索引不应该使用在频繁操作的列上。



3.4、PostgreSQL 中,ALTER TABLE 命令用于添加,修改,删除一张已经存在表的列。

   3.4.1、用 ALTER TABLE 在一张已存在的表上添加列的语法如下:

       ALTER TABLE table_name ADD column_name datatype;

    3.4.2、在一张已存在的表上 DROP COLUMN(删除列),语法如下:

      ALTER TABLE table_name DROP COLUMN column_name;

   3.4.3、修改表中某列的 DATA TYPE(数据类型),语法如下:

      ALTER TABLE table_name ALTER COLUMN column_name TYPE datatype;
案例:# ALTER TABLE COMPANY ADD GENDER char(1);  添加列
# ALTER TABLE COMPANY DROP GENDER; 删除列

3.5、PostgreSQL 中 TRUNCATE TABLE 用于删除表的数据,但不删除表结构。
TRUNCATE TABLE 与 DELETE 具有相同的效果,但是由于它实际上并不扫描表,所以速度更快。
语法:TRUNCATE TABLE table_name;
案例:TRUNCATE TABLE COMPANY;

3.6、PostgreSQL 视图是只读的,因此可能无法在视图上执行 DELETE、INSERT 或 UPDATE 语句。
但是可以在视图上创建一个触发器,当尝试 DELETE、INSERT 或 UPDATE 视图时触发,需要做的动作在触发器内容中定义。

   3.6.1、用户或用户组认为更自然或直观查找结构数据的方式。

   3.6.2 、限制数据访问,用户只能看到有限的数据,而不是完整的表。

   3.6.3、汇总各种表中的数据,用于生成报告。

语法:

CREATE [TEMP | TEMPORARY] VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];

案例:

CREATE VIEW COMPANY_VIEW AS
SELECT ID, NAME, AGE
FROM COMPANY; --创建

DROP VIEW view_name;--删除
3.7、TRANSACTION(事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
事务具有以下四个标准属性,通常根据首字母缩写为 ACID:
  • 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
  • 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。
  • 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
  • 持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。

BEGIN TRANSACTION:开始一个事务。
COMMIT:事务确认,或者可以使用 END TRANSACTION 命令。
ROLLBACK:事务回滚。

回滚:
# BEGIN;
DELETE FROM COMPANY WHERE AGE = 25;
ROLLBACK;


提交:
# BEGIN;
DELETE FROM COMPANY WHERE AGE = 25;
COMMIT;

3.8、子查询
SELECT * FROM COMPANY WHERE ID IN (SELECT ID FROM COMPANY  WHERE SALARY > 45000) ;

3.9、权限

https://www.runoob.com/postgresql/postgresql-privileges.html

3.10、常用函数

https://www.runoob.com/postgresql/postgresql-functions.html

PGSQL基础语句汇总的更多相关文章

  1. SQL基础语句汇总

    连接数据库 1 mysql -h10.20.66.32 -uroot -p123456 -h后面是mysqlServer所在地址,-u后面是用户名,-p后面是密码 查看数据库 1 show datab ...

  2. Oracle知识梳理(三)操作篇:SQL基础操作汇总

    Oracle知识梳理(三)操作篇:SQL基础操作汇总 一.表操作 1.表的创建(CREATE TABLE): 基本语句格式:       CREATE TABLE  table_name ( col_ ...

  3. SQL基础操作汇总

    SQL基础操作汇总 一.表操作 1.表的创建(CREATE TABLE): 基本语句格式:    CREATE TABLE  table_name ( col_name    datatype, -- ...

  4. 沉淀,再出发:Java基础知识汇总

    沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...

  5. ORACLE| ORACLE基础语法汇总

    创 ORACLE| ORACLE基础语法汇总 2018-07-18 16:47:34 YvesHe 阅读数 9141更多 分类专栏: [数据库]   版权声明:本文为博主原创文章,遵循CC 4.0 B ...

  6. MySQL 基础语句

    MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...

  7. jquery基础知识汇总

    jquery基础知识汇总 一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQu ...

  8. MySQL基础语句与其在Python中的使用

    一.MySQL基础语句 $ mysql -u root -p (有密码时) $ mysql -u root     (无密码时) QUIT (or \q)  退出 查看当前所有数据库 show dat ...

  9. T——SQL基础语句(定义变量,赋值,取值,分支,循环,存储过程)

    T--SQL基础语句 1.定义变量: declare @变量名 数据类型 ; declare @a int ; declare @b  nvarchar(10) ; 2.赋值: 法1:set @变量名 ...

随机推荐

  1. 「题解」POI2005 AKC-Special Forces Manoeuvres

    本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题目链接:洛谷 P3428.官网. 题意简述 给定 \(n\) 个圆 \((x_i,y_i,r_i)\),每个圆对应一个点集 \(S ...

  2. 合宙Luat | Cat.1 Socket数据收不到?学会两招不掉线

    1 服务器收不到Socket数据的原因 Socket是大家使用Cat.1模块常用的功能之一,但Cat.1模块不是直接跟服务器连接,而是通过NAT(即网络地址转换)与服务器连接. 一个会话建立后会在NA ...

  3. 32.qt quick-模仿QQ登录界面实现3D旋转(Rotation、Flipable)

    要想模仿QQ登录界面的3D旋转,我们需要学习Rotation和Flipable.由于没找到QQ的资源图,所以我们以两个图片为例模仿QQ的3D旋转,如下图所示: 最终效果如下所示: 1.Rotation ...

  4. 源码分析Gateway请求转发

    本期我们主要还是讲解一下Gateway,上一期我们讲解了一下Gateway中进行路由转发的关键角色,过滤器和断言是如何被加载的,上期链接: https://www.cnblogs.com/guoxia ...

  5. CosId 1.0.0 发布,通用、灵活、高性能的分布式 ID 生成器

    CosId 通用.灵活.高性能的分布式 ID 生成器 介绍 CosId 旨在提供通用.灵活.高性能的分布式系统 ID 生成器. 目前提供了俩大类 ID 生成器:SnowflakeId (单机 TPS ...

  6. Java并发编程中的锁

    synchronized 使用synchronized实现同步有2种方式: 同步方法(静态与非静态) 同步代码块 任何Java对象均可作为锁使用,其中,使用的锁对象有以下3种: 静态同步方法中,锁是当 ...

  7. ES6学习笔记之数组

    1.拓展运算符 含义 拓展运算符是三个点(...),功能是将数组或类数组对象展开成一系列用逗号隔开的值.如下面代码: console.log(...[1, 2, 3]); //1 2 3 consol ...

  8. mapboxgl绘制3D线

    最近遇到个需求,使用mapboxgl绘制行政区划图层,要求把行政区划拔高做出立体效果,以便突出显示. 拿到这个需求后,感觉很简单呀,只需要用fill-extrusion方式绘制就可以啦,实现出来是这个 ...

  9. 22、oracle子查询

    22.1.什么是子查询: 1.子查询就是在一条sql语句中嵌入select语句: 2.子查询可区分为关联子查询和非关联子查询,他们和主查询之间的执行顺序和关系是不同的: 22.2.关联子查询: 1.说 ...

  10. ACM金牌选手整理的【LeetCode刷题顺序】

    算法和数据结构知识点图 首先,了解算法和数据结构有哪些知识点,在后面的学习中有 大局观,对学习和刷题十分有帮助. 下面是我花了一天时间花的算法和数据结构的知识结构,大家可以看看. 后面是为大家 精心挑 ...