Oracle,Postgresql等数据库使用

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
可观测可视化 Grafana 版,10个用户账号 1个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Oracle,Postgresql等数据库简单使用

Oracle数据库

📑前言

本文主要是【Oracle、Postgresql】——Oracle、Postgresql数据库简单使用的文章,如果有什么需要改进的地方还请大佬指出⛺️

🎬作者简介:大家好,我是听风与他🥇
☁️博客首页:阿里云主页听风与他
🌄每日一句:狠狠沉淀,顶峰相见

  • 注意oracle通过语句来实现主键自增,oracle数据库id,name等需要搭配引号来进行sql的使用,如"id","name"

    Oracle数据库中没有自增字段,我们可以通过创建序列和触发器的方式,间接地实现自增的效果。

    举个实例:

    1.创建表TEST

    create table TEST(
               id number(10) primary key,   /*主键,自动增加*/
               name varchar2(20),            /*姓名*/
               phone varchar2(20),            /*电话*/
               sex varchar2(10),            /*性别*/
               age number(10)                /*年龄*/
               );
    

    2.创建自增长序列

    create sequence TEST_SEQ
    minvalue 1                -- 最小值
    -- maxvalue 2000        -- 最大值
    nomaxvalue              -- 不设置最大值 
    start with 1            -- 从1开始计数
    increment by 1            -- 每次增加1
    nocycle                    -- 一直累加,不循环
    cache 20;
    

注意:根据实际情况 选择配置项。比如:表单中存在一部分原始数据,在创建自增长序列时,可以设置计数起始位置。例如表中存在100条原始数据,那么我们可以设置 start with 101 ,这样自增长就会从101开始。

3.创建触发器

create or replace trigger TEST_TR
before insert on TEST
for each row
begin
select TEST_SEQ.nextval into :new.id from dual;
end TEST_TR;

4.测试

insert into TEST(name,phone,sex,age)  values('张三','18888888888','男',25)
insert into TEST(name,phone,sex,age)  values('李四','18888888889','男',29)

Postagesql数据库主键自增

  • 1.创建自增序列

    CREATE SEQUENCE 
    test_id_seq
    INCREMENT 1
    MINVALUE 1
    MAXVALUE 9223372036854775807
    START WITH 1
    CACHE 1;
    
  • 2.设置默认值

    alter table 
        test -- 表名
    alter column 
        id -- 列名 
    set default nextval(
        'test_id_seq'  -- 序列名
    );
    

    再像表中插入数据

    insert into test(age) values(12)
    

    oracle数据库操作

    导入对应的依赖

            <dependency>
                <groupId>cn.easyproject</groupId>
                <artifactId>orai18n</artifactId>
                <version>12.1.0.2.0</version>
            </dependency>
    
            <dependency>
                <groupId>com.oracle.database.jdbc</groupId>
                <artifactId>ojdbc8</artifactId>
                <scope>runtime</scope>
            </dependency>
    

    application.yml文件配置

    spring:
      datasource:
        driver-class-name: oracle.jdbc.driver.OracleDriver
        url: jdbc:oracle:thin:@localhost:1521:orcl
        username: scott
        password: 020911
    

    Student类:

    package com.oracle_test.pojo;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Student {
         
        private int id;
        private String name;
        private int age;
        private String email;
    }
    

StudentMapper接口:

  package com.oracle_test.Mapper;

  import com.oracle_test.pojo.Student;
  import org.apache.ibatis.annotations.*;

  import java.util.List;

  @Mapper
  public interface StudentMapper {
   
      @Select("SELECT * FROM \"student\"")
      List<Student> findAll();

      @Insert("INSERT INTO \"student\" VALUES (#{id},#{name},#{age},#{email})")
      int addStudent(Student student);

      @Update("UPDATE \"student\" SET \"name\"=#{name},\"age\"=#{age},\"email\"=#{email} WHERE \"id\" = #{id}")
      int updateStudent(Student student);

      @Delete("DELETE FROM \"student\" WHERE \"id\" = #{id}")
      int deleteStudent(int id);
  }

测试类:

  package com.oracle_test;

  import com.oracle_test.Mapper.StudentMapper;
  import com.oracle_test.pojo.Student;
  import org.junit.jupiter.api.Test;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.boot.test.context.SpringBootTest;

  import java.util.List;

  @SpringBootTest
  class OracleTestApplicationTests {
   

      @Autowired
      private StudentMapper studentMapper;
      @Test
      void contextLoads() {
   
          //查询所有
          List<Student> list = studentMapper.findAll();
          list.forEach(System.out::println);
          //删除
          int i = studentMapper.deleteStudent(4);
          System.out.println("i:"+i);
          //增加
          Student student = new Student(4,"王五",18,"452");
          int i1 = studentMapper.addStudent(student);
          System.out.println("i1:"+i1);
          //修改
          Student student1 = new Student(4,"王六",18,"457");
          int i2 = studentMapper.updateStudent(student1);
          System.out.println("i2:"+i2);
      }

  }

Postgresql数据库

依赖配置

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>

application.yml文件:

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/test
    driver-class-name: org.postgresql.Driver
    username: postgres
    password: 020911

Student实体类:

package com.postgresql_test.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
   
    private int id;
    private String name;
    private int age;
}

Student.Mapper接口:

package com.postgresql_test.mapper;

import com.postgresql_test.pojo.Student;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface StudentMapper {
   
    @Select("select * from student")
    List<Student> findAll();

    @Insert("insert into student(name,age) values (#{name},#{age})")
    int addStudent(Student student);

    @Update("update student set name = #{name},age=#{age} where id = #{id}")
    int updateStudent(Student student);

    @Delete("delete from student where id = #{id}")
    int deleteUser(int id);
}

测试类:

package com.postgresql_test;

import com.postgresql_test.mapper.StudentMapper;
import com.postgresql_test.pojo.Student;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
class PostgresqlTestApplicationTests {
   

    @Autowired
    private StudentMapper studentMapper;
    //注入studentMapper
    @Test
    void contextLoads() {
   
        //添加
        Student student = new Student(0,"王五",18);
        int i = studentMapper.addStudent(student);
        System.out.println("i:"+i);
        //删除
        studentMapper.deleteUser(0);
        //修改
        Student student1 = new Student(1,"张三",17);
        int i1 = studentMapper.updateStudent(student1);
        System.out.println("i1:"+i1);
        //查询
        List<Student> list = studentMapper.findAll();
        list.forEach(System.out::println);
    }

}

Mysql数据库和DM数据库同上,只是依赖和数据库配置略作修改

📑文章末尾

image.png

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
3天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
2天前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
9天前
|
Oracle 安全 关系型数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法探讨
删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。
|
16天前
|
关系型数据库 分布式数据库 数据库
开源云原生数据库PolarDB PostgreSQL 15兼容版本正式发布
PolarDB进行了深度的内核优化,从而实现以更低的成本提供商业数据库的性能。
|
19天前
|
存储 Oracle 关系型数据库
Oracle同一台服务器创建多个数据库
【8月更文挑战第30天】在 Oracle 中,可在同一服务器上创建多个数据库。首先确保已安装 Oracle 软件并具有足够资源,然后使用 DBCA 工具按步骤创建,包括选择模板、配置存储及字符集等。重复此过程可创建多个数据库,需确保名称、SID 和存储位置唯一。创建后,可通过 Oracle Enterprise Manager 进行管理,注意服务器资源分配与规划。
34 10
|
12天前
|
关系型数据库 数据库 网络虚拟化
Docker环境下重启PostgreSQL数据库服务的全面指南与代码示例
由于时间和空间限制,我将在后续的回答中分别涉及到“Python中采用lasso、SCAD、LARS技术分析棒球运动员薪资的案例集锦”以及“Docker环境下重启PostgreSQL数据库服务的全面指南与代码示例”。如果你有任何一个问题的优先顺序或需要立即回答的,请告知。
22 0
|
20天前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
88 0
|
1月前
|
监控 Oracle 关系型数据库
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
119 2
|
2月前
|
存储 缓存 Oracle
Oracle数据库可扩展性和性能
【7月更文挑战第6天】
68 7
|
存储 SQL 负载均衡
达梦数据库与Oracle数据库:功能、性能和适用场景对比
数据库在现代信息技术领域中扮演着至关重要的角色。在企业级应用中,选择正确的数据库管理系统对于数据存储、处理和查询效率至关重要。本文将对比两个备受关注的数据库管理系统——达梦数据库和Oracle数据库,从功能、性能和适用场景等方面进行深入探讨,以帮助读者在选择合适数据库时做出明智的决策。
2691 1

推荐镜像

更多