博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一天学会PostgreSQL10
阅读量:6684 次
发布时间:2019-06-25

本文共 6336 字,大约阅读时间需要 21 分钟。

  hot3.png

 

要:mysql和Postgre10 两个数据库其实基本是一样的,个人感觉Postgre比mysql功能更加多一些,接下来全面介绍下Postgre10所有的功能以及Springboot+postgre项目的搭建(以JPA为例,简单易懂)

(一、介绍    二、Postgre10所有功能   三、Springboot+JPA+Postgre10)

一、介绍

1. PostgreSQL支持文本,图像,声音和视频,并包括用于C/C++,Java,Perl,Python,Ruby,Tcl和开放数据库连接(ODBC)的编程接口。PostgreSQL支持SQL的许多功能,例如复杂SQL查询,SQL子选择,外键,触发器,视图,事务,多进程并发控制(MVCC),流式复制(9.0),热备(9.0))

2.工具:【1】Navicat for Postgre 【2】pgAdmin4

二、功能

1.增删改查:

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)  VALUES (value1, value2, value3,...valueN);
DELETE FROM table_name  WHERE [condition];
UPDATE table_name  SET column1 = value1, column2 = value2...., columnN = valueN  WHERE [condition];
SELECT * FROM "table_name";

2.排序:

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

3.分组,Having:

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

4.条件语句符( AND, OR, NOT, LIKE, IN, NOT IN, BETWEEN AND)

SELECT column1, column2, ..... columnN    FROM table_name    WHERE [search_condition]    AND [search_condition];
SELECT column1, column2, ..... columnN    FROM table_name    WHERE [search_condition]    OR [search_condition];
SELECT *  FROM EMPLOYEES  WHERE (NAME = 'Minsu' AND ADDRESS = 'Delhi')  OR (ID>= 8);

查询那些地址不为NULL的记录信息,执行以下查询:

SELECT *  FROM EMPLOYEES  WHERE address IS NOT NULL ;
SELECT *   FROM EMPLOYEES   WHERE NAME LIKE 'Ma%';

.......

5.链接方式(左连接,右连接,内连接,全链接,跨连接)

  • 内连接(INNER JOIN ON)
  • 左外连接(LEFT OUTER JOIN On)
  • 右外连接(RIGHT OUTER JOIN ON)
  • 全连接(FULL OUTER JOIN  ON)
  • 跨连接(CROSS JOIN)===类似笛卡尔积

6.视图(视图的意思是从一个表中挑选出来的数据自动当成一个表来存储)

CREATE VIEW current_employees AS  SELECT NAME, ID, SALARY FROM EMPLOYEES;

7.存储过程(一个函数表达式)

CREATE OR REPLACE FUNCTION totalRecords ()  RETURNS integer AS $total$  declare      total integer;  BEGIN     SELECT count(*) into total FROM EMPLOYEES;     RETURN total;  END;  $total$ LANGUAGE plpgsql;

8.触发器(类似当执行insert update...等操作的时候,BEFORE,AFTER都会触发已经设计好的一个规则)

9.别名、时间、UNIONS 和 NULL 值:

SELECT column_name AS alias_name  FROM table_name  conditions...  ;
SELECT column1 [, column2 ]FROM table1 [, table2 ][WHERE condition]UNIONSELECT column1 [, column2 ]FROM table1 [, table2 ][WHERE condition]

10.索引:

CREATE INDEX index_name  ON table_name (column_name);

11.修改表(添加字段,修改表的数据类型,删除表的字段...)

12.截断表:

PostgreSQL TRUNCATE TABLE命令用于从现有表中删除完整的数据。您也可以使用DROP TABLE命令删除完整的表,但会从数据库中删除完整的表结构,如果希望存储某些数据,则需要重新创建此表。

它和在每个表上使用DELETE语句具有相同的效果,但由于实际上并不扫描表,所以它的速度更快。 此外,它会立即回收磁盘空间,而不需要后续的VACUUM操作。 这在大表上是最有用的。

13.事物:

  • 原子性(Atomicity):确保工作单位内的所有操作成功完成; 否则事务将在故障点中止,以前的操作回滚到其以前的状态。
  • 一致性(Consistency):确保数据库在成功提交的事务时正确更改状态。
  • 隔离性(Isolation):使事务能够独立运作并相互透明。
  • 持久性(Durability):确保在系统发生故障的情况下,提交的事务的结果或效果仍然存在。
  • BEGIN TRANSACTION:开始事务。
  • COMMIT:保存更改,或者您可以使用END TRANSACTION命令。
  • ROLLBACK:回滚更改。

14.锁:

15.子查询、自动递增:

16.权限:

【1】CREATE ROLE 表示创建了一个用户名为manisha

CREATE USER manisha WITH PASSWORD 'password';

【2】接下来,让我们给予用户“manisha”在表COMPANY上授予所有权限

GRANT ALL ON COMPANY TO manisha;

【3】接下来,让我们从用户“manisha”中撤销权限

REVOKE ALL ON COMPANY FROM manisha;

【4】REVOKE表示从用户“manisha”撤消所有权限。甚至可以删除用

DROP USER manisha;

17.JDBC连接Java:

import java.sql.Connection;import java.sql.DriverManager;public class PostgreSQLJDBC {   public static void main(String args[]) {      Connection c = null;      try {         Class.forName("org.postgresql.Driver");         c = DriverManager            .getConnection("jdbc:postgresql://localhost:5432/testdb",            "postgres", "123");      } catch (Exception e) {         e.printStackTrace();         System.err.println(e.getClass().getName()+": "+e.getMessage());         System.exit(0);      }      System.out.println("Opened database successfully");   }}

三、Springboot+JPA+Postgre10

【1】首先添加依赖、

postgresql
postgresql
9.1-901-1.jdbc4
org.postgresql
postgresql
runtime
org.springframework.boot
spring-boot-starter-jdbc
org.springframework.boot
spring-boot-starter-data-jpa
org.projectlombok
lombok
1.16.10

【2】配置properties文件,连接自己的数据库

用户名是默认的不用改,只需要更改密码就好了

spring.datasource.url=jdbc:postgresql://localhost:5432/chengjianspring.datasource.username=postgresspring.datasource.password=123456spring.datasource.driverClassName=org.postgresql.Driverspring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialectspring.jpa.properties.hibernate.hbm2ddl.auto=update

【3】创建Entity,利用JPA对应生成表

运行启动,Postgre生成相应的表

import lombok.Data;import javax.persistence.Entity;import javax.persistence.Id;@Entity@Datapublic class TModel {    @Id    private Integer id;    private String descName;    private String hobby;    private int    number;}

【4】写dao,controller两层

dao:

import com.mdxl.pg.entity.TModel;import org.springframework.data.jpa.repository.JpaRepository;public interface ModelRepository extends JpaRepository
{}

controller:

@Controller@RequestMapping(value = "/pg")public class UserController {    @Autowired    UserRepository userRepository;    @Autowired    ModelRepository modelRepository;   //save    @RequestMapping(value = "/save",method = RequestMethod.POST)    public void save(){        TModel model = new TModel();        Random random = new Random(1000);        model.setId(random.nextInt());        model.setDescName("第一个描述");        model.setHobby("游戏");        modelRepository.save(model);    }    //delete    @RequestMapping(value = "del/{id}",method = RequestMethod.GET)    public String del(@PathVariable("id")int id){        TModel model =modelRepository.findOne(id);        modelRepository.delete(model);        return "success";    }    //update    @RequestMapping(value = "/update",method = RequestMethod.POST)    public String update(@PathParam("id")int id){        TModel model = new TModel();        model.setHobby("修改下这个爱好");        modelRepository.save(model);        return model.toString();    }    //select    @RequestMapping(value = "/get",method = RequestMethod.GET)    @ResponseBody    public String getList(){        List
list = userRepository.findAll(); return list.toString(); }}

【5】测试成功(利用postMan测试工具测就好了)

如果失败的话注意下细节,实在不行私信我帮你。

转载于:https://my.oschina.net/mdxlcj/blog/1608032

你可能感兴趣的文章
Python : 会打扮的装饰器
查看>>
oracle 查找删除重复数据
查看>>
MySQL重点关注性能及相关分析命令详解
查看>>
各种传马wmi c#原代码
查看>>
Derby-10.11学习笔记(三)Derby系统表及存储过程
查看>>
标准W3C盒子模型和IE盒子模型CSS布局经典盒子模型(转)
查看>>
用Windows Server 2012 R2 搭建二层证书服务结构 Part 4
查看>>
SQL Server 2008高可用×××介绍
查看>>
STP收敛
查看>>
VirtualBox无法进入Win8PE的桌面
查看>>
Cisco3550 交换机 端口限速
查看>>
Linux卸载系统自带的httpd的方法
查看>>
《Oracle从入门到精通》读书笔记第十五章 Oracle数据备份与恢复之二
查看>>
Android安全讲座第九层(二) 内存dump
查看>>
弹出菜单效果
查看>>
SQL常用语句集合(不断更新)
查看>>
centos 5 安装教程注意事项
查看>>
回顾2014,展望2015
查看>>
BIOS基础知识(下)
查看>>
nmom结果记录
查看>>