Oracle,Postgresql等数据库使用

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
性能测试 PTS,5000VUM额度
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
9天前
|
SQL 关系型数据库 数据库
PostgreSQL数据库报错 ERROR: multiple default values specified for column "" of table "" 如何解决?
PostgreSQL数据库报错 ERROR: multiple default values specified for column "" of table "" 如何解决?
161 59
|
3天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—异常断电导致Oracle数据库数据丢失的数据恢复案例
Oracle数据库故障: 机房异常断电后,Oracle数据库启库报错:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。数据库没有备份,归档日志不连续。用户方提供了Oracle数据库的在线文件,需要恢复zxfg用户的数据。 Oracle数据库恢复方案: 检测数据库故障;尝试挂起并修复数据库;解析数据文件。
|
3天前
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
12 2
|
13天前
|
缓存 关系型数据库 数据库
如何优化 PostgreSQL 数据库性能?
如何优化 PostgreSQL 数据库性能?
17 2
|
7天前
|
SQL Oracle 关系型数据库
Oracle数据库管理:从入门到精通
表(Table):表是Oracle数据库中存储数据的基本结构单元,由行(Row)和列(Column)组成。每行代表一个记录,每列代表一个字段。 SQL(Structured Query Language):SQL是Oracle数据库的核心语言,用于与数据库交互,执行查询、插入、更新和删除等操作。 数据库实例与数据库:在Oracle中,数据库实例是一组后台进程和内存结构,用于管理数据库并提供服务。而数据库则是数据的物理存储,包括数据文件、控制文件、联机日志和参数文件等。
28 0
|
16天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
18天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
158 11
|
2月前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~
|
13天前
|
存储 SQL 关系型数据库
MySQL的安装&数据库的简单操作
本文介绍了数据库的基本概念及MySQL的安装配置。首先解释了数据库、数据库管理系统和SQL的概念,接着详细描述了MySQL的安装步骤及其全局配置文件my.ini的调整方法。文章还介绍了如何启动MySQL服务,包括配置环境变量和使用命令行的方法。最后,详细说明了数据库的各种操作,如创建、选择和删除数据库的SQL语句,并提供了实际操作示例。
57 13
MySQL的安装&数据库的简单操作
|
19天前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案

推荐镜像

更多
下一篇
无影云桌面