Oracle

一、Oracle 12c下载

打开Oracle的官方中文网站,选择相应的版本即可。

下载地址:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html

注意:下载时,根据电脑系统选择相应的版本,如下图,因为我用的是WIN 10 64位系统,因此选择第一个下载。

Docker安装Oracle

安装

拉取oracle 11g 镜像,这个版本可以自行选择

docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

下载完成后 查看镜像:
docker images

运行oracle容器

docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
命令后面的地址一定要是你下载的镜像地址也就是你拉取镜像名字,否则会出现名字已存在docker start oracle11g

使用navicat连接

默认值

服务名:helowin

用户名:system

密码:helowin

在Mac上用Navicat连接Oracle的时候总是提示:ORA-21561: OID generation failed

在终端上输入:hostname

比如得到了bogon这样的机器名,那么接着就需要编辑/etc/hosts文件,添加:

127.0.0.1 bogon

保存并退出,再次打开客户端,恢复正常。

停止/启动oracle服务:

docker stop oracle11g
docker start oracle11g

创建用户

新建tom用户密码123,刷新连接


修改配额权限

导入连接(3个表)

通过sql创建表

--创建表
CREATE TABLE STUDENT(ID NUMBER(10) PRIMARY KEY,NAME VARCHAR(20) NOT NULL
);
--主键
CREATE TABLE supplier (supplier_id numeric(10) not null,supplier_name varchar2(50) not null,contact_name varchar2(50),CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
);varchar -- 存放定長的字符数据,最长2000個字符;varchar2 -- 存放可变长字符数据,最大长度为4000字符numeric(a,b) 精确数值数据类型,与之相对的是近似数值数据类型 FLOAT、DOUBLE 和 REAL
a代表整数位加小数位的总位数(不算小数点),b代表小数位的位数--外键
CREATE TABLE products(product_id numeric(10) not null,supplier_id numeric(10) not null,CONSTRAINT fk_supplier FOREIGN KEY (supplier_id) REFERENCES supplier(supplier_id)
);
-- 添加学生信息  表名必须加""
INSERT into "tb_student" VALUES('18443','20111143','tom','男','1991‐01‐16','汉族','5.0','012202',' 3.0')
--如果添加日期报错,设置语言环境、日期格式
ALTER SESSION SET nls_date_language='AMERICAN';
alter session set nls_timestamp_format = 'YYYY-MM-DD HH24:MI:SS.FF';
-- 修改学生信息
UPDATE "tb_student" set "name"='tom2' WHERE "name"='tom'
-- 删除记录
delete from "tb_student" WHERE "id"='18443'
-- 查询tom
select * from "tb_student" where "id"='18443'
-- 查询年龄在22~28岁的学生信息。
select "id", "code", "name","nationality","age" from "tb_student" where "age" between 22 and 28
-- 查询满族、回族、蒙古族学生信息
select "id","code","name","nationality","age"  from "tb_student"
where "nationality"='满族' or "nationality"='回族' or "nationality"='蒙古族'select "id","code","name","nationality","age"  from "tb_student"
where "nationality" in ('满族','回族','蒙古族')-- 查询年龄小于20的或者民族是“鄂伦春族”的学生记录。
select"id","code","name","nationality","age"  from "tb_student"
where "age"<20 or "nationality"='鄂伦春族'
-- 看看这么写什么意思
select "id","code","name","nationality","age"
from "tb_student" where "age"<20 or ("nationality"='鄂伦春族' and "sex"='女')
--查询姓吴的学生信息
select"id","code","name","nationality","age"  from"tb_student" where"name"like'吴%'
-- 查询姓吴的,名字只带一个字的学生的信息
select"id","code","name","nationality","age"  from"tb_student"where"name"like'吴_'
-- 查询姓吴的,名字带两个字的学生的信息
select"id","code","name","nationality","age"  from"tb_student"where"name"like'吴__'
-- 查询名字中带“晓”的学生的信息
select"id","code","name","nationality","age"  from"tb_student"where"name"like'%晓%'
-- 下面这个什么意思?
select"id","code","name","nationality","age"  from"tb_student"where"name"like'_晓_'
-- 查询回族的学生,并按照年龄从小到大排列
select "id","code","name","nationality","age"  from "tb_student"
where "nationality" ='回族'
order by "age" asc
--查询回族的学生,并按照年龄从小到大排列,年龄相同的再按照id降序排列
select"id","code","name","sex","age","nationality"  from "tb_student"
where"nationality"='回族'
order by"age" asc,"id" desc
-- 查询维吾尔族的学生,并按照年龄从小到大排列,年龄相同的再按照出生日期降序排列
select"id","code","name","sex","age","nationality","birthday" from"tb_student"
where"nationality"='维吾尔族'
order by"age"asc,"birthday"desc
-- 别名,可以给列起个别名(as),排序的时候这列就可以用别名来替代
select"id","code","name","sex","age"as"年龄","nationality","birthday" from"tb_student"
where"nationality"='维吾尔族'
order by"年龄"asc,"birthday"desc
-- 当前brithday在所选的列中处于第7位,所以下面的排序这个列名可以用“7”代替
select "id","code","name","sex","age" as "年龄","nationality","birthday"  from "tb_student"
where "nationality"='维吾尔族'
order by "年龄" asc,7 desc
-- 查询满族学生年龄最小的前10名,没有limit
select rownum,t.*
from
(select"id","code","name","sex","age"as"年龄","nationality","birthday"from "tb_student"where"nationality"='满族'order by "age" asc) t
where rownum <= 10
-- 查询学生信息的前5条数据 第一页数据
select *  from
(select rownum as "r","id","code","name","sex","age" as "年龄","nationality","birthday"
from "tb_student"
where rownum <=5) t where "r">0
-- 查询学生信息的6-10条数据 第二页数据
select *  from
(select rownum as "r","id","code","name","sex","age" as "年龄","nationality","birthday"
from "tb_student"
where rownum <=10) t where "r">5
-- 查询民族
select"nationality" from "tb_student"-- 去除重复民族select distinct "nationality"  from "tb_student"-- 查询学生都在哪天出生select distinct "birthday" from "tb_student"-- 查询学生的平均年龄
select avg("age") from "tb_student"
-- 查询所有女同学的平均年龄
select avg("age")  from "tb_student" where "sex"='女'
-- 查询所有女同学的平均年龄,以及最大年龄,最小年龄
select avg("age"),max("age"),min("age")  from "tb_student"where "sex"='女'-- 可以起别名
select avg("age")as"平均年龄",max("age")as"最大年龄",min("age")as"最小年龄"from "tb_student"  where "sex"='女'
-- min()、max()函数可以操作日期类型的
select max("birthday"),min("birthday")  from "tb_student"
-- 统计有多少条记录
select count(*)from"tb_student"-- 统计男同学有多少名
select count("sex")  from "tb_student"where"sex"='男'-- 统计有多少名回族的学生
select count(*)from"tb_student"where"nationality"='回族'-- 按性别分组统计平均年龄、最大年龄、最小年龄
select "sex",avg("age")as"平均年龄",max("age")as"最大年龄",min("age") as "最小年龄"from "tb_student"  group by "sex"-- 统计每个民族的男生人数
select "nationality"as"民族",count(*)as"人数" from"tb_student"where "sex"='男'group by "nationality"-- 统计多于30人的民族
select "nationality",count(*)  from "tb_student"group by "nationality"having count(*)>30
-- 内连接语句
select"id","code","name","sex","nationality","age","tb_student"."majorCode","majorName"
from "tb_student" inner join "tb_major"
on "tb_student"."majorCode"="tb_major"."majorCode"-- Oracle扩展方式select"id","code","name","sex","nationality","age","tb_student"."majorCode","majorName"from"tb_student","tb_major"where"tb_student"."majorCode"="tb_major"."majorCode"
-- 外连接语句-- 左外select"id","code","name","sex","nationality","age","tb_student"."majorCode","majorName"from"tb_student" left join "tb_major"on "tb_student"."majorCode"="tb_major"."majorCode"
-- 右外select"id","code","name","sex","nationality","age","tb_student"."majorCode","majorName"from"tb_student"right join"tb_major"on"tb_student"."majorCode"="tb_major"."majorCode"
-- 全外select"id","code","name","sex","nationality","age","tb_student"."majorCode","majorName"from"tb_student" left join"tb_major"on"tb_student"."majorCode"="tb_major"."majorCode"UNIONselect"id","code","name","sex","nationality","age","tb_student"."majorCode","majorName"from"tb_student" right join"tb_major"on"tb_student"."majorCode"="tb_major"."majorCode"--查询哪些学生的年龄大于平均年龄select"id","code","name","sex","nationality","age"  from "tb_student"
where "age" >(select avg("age") from "tb_student")-- 查询年龄最大的满族学生是谁
select"id","code","name","sex","nationality","age"  from"tb_student"
where"nationality"='满族'
and "age"=(select max("age")from"tb_student"where"nationality"='满族')
-- 与学号‘20092138’相同专业的学生有哪些
select"id","code","name","sex","nationality","age","majorCode"  from"tb_student"
where"majorCode"=(select "majorCode"from"tb_student"where"code"='20092138')
--与学号‘20092138’相同专业的学生还有哪些
select"id","code","name","sex","nationality","age","majorCode"  from"tb_student"where"majorCode"=(select"majorCode"from"tb_student"where"code"='20092138')and"code"<>'20092138'
--与学号‘20092138’、'20091627'相同专业的学生有哪些select"id","code","name","sex","nationality","age","majorCode"  from"tb_student"
where "majorCode" in
(select"majorCode"from"tb_student"where"code"='20092138'or "code"='20091627')
--查询‘化学化工与材料学院-制药工程(化学制药)’专业有哪些学生select"id","code","name","nationality","sex","tb_student"."majorCode","majorName"from"tb_student"inner join"tb_major"on"tb_student"."majorCode"="tb_major"."majorCode"  where "majorName"='化学化工与材料学院-制药工程(化学制药)'select "id","code","name","sex","nationality","age","majorCode"  from"tb_student"where"majorCode"= (select"majorCode"from"tb_major"where"majorName"='化学化工与材料学院-制药工程(化学制药)')

springboot连接Oracle

<!-- oracle -->
<dependency><groupId>com.oracle</groupId><artifactId>ojdbc8</artifactId><version>10.2.0.4.0</version>
</dependency>

Oracle商业版权版权问题,Maven中央仓库没有这个资源

在Maven本地仓库添加Oracle.jar驱动包

查看maven目录

下载ojdbc8.jar,复制到Maven本地仓库中

复制到你自己的仓库中

此目录下/Users/liujiang/Documents/apache-maven-3.6.0/maven-repository/com/oracle/ojdbc8/10.2.0.4.0/ojdbc8.jar

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=10.2.0.4.0 -Dpackaging=jar -Dfile=/Users/liujiang/Documents/apache-maven-3.6.0/maven-repository/com/oracle/ojdbc8/10.2.0.4.0/ojdbc8.jar

logging.level.org.springframework=DEBUG
server.port=8080
server.servlet.context-path=/spring.datasource.driver-class-name: oracle.jdbc.driver.OracleDriver
spring.datasource.url: jdbc:oracle:thin:@192.168.83.156:1521:helowin
spring.datasource.username:system
spring.datasource.password: helowin#mybatis.mapper-locations = classpath:mapper/*Mapper.xml
mybatis.type-aliases-package =com.aishang.oracle_demo.po#配置这句话,控制台输出sql语句
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#采用驼峰标识,解决 Mybatis resultType返回结果为null的问题
#mybatis.configuration.map-underscore-to-camel-case=true

pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.aishang</groupId><artifactId>oracle_demo</artifactId><version>0.0.1-SNAPSHOT</version><name>oracle_demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><!-- Spring Boot JDBC --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- oracle --><dependency><groupId>com.oracle</groupId><artifactId>ojdbc8</artifactId><version>10.2.0.4.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><!-- spring-boot整合mybatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.1.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

controller

package com.as.oracle.controller;import com.as.oracle.po.User;
import com.as.oracle.service.UserService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.util.List;/*** @program: oracleDemo* @description: ${description}* @author: liujiang* @create: 2021-05-14 11:24**/
@RestController
public class IndexController {@Resourceprivate UserService userService;@RequestMapping("/")public List<User> getAll(){List<User> allUsers = userService.getAllUsers();return  allUsers;}
}

user

package com.as.oracle.po;/*** @program: oracleDemo* @description: ${description}* @author: liujiang* @create: 2021-05-14 11:25**/
public class User {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

userService

package com.as.oracle.service;import com.as.oracle.po.User;import java.util.List;/*** @program: oracleDemo* @description: ${description}* @author: liujiang* @create: 2021-05-14 11:28**/
public interface UserService {List<User> getAllUsers();
}

userServiceImpl

package com.as.oracle.service.impl;import com.as.oracle.dao.UserDao;
import com.as.oracle.po.User;
import com.as.oracle.service.UserService;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.List;/*** @program: oracleDemo* @description: ${description}* @author: liujiang* @create: 2021-05-14 11:30**/
@Service
public class UserServiceImpl implements UserService {@ResourceUserDao userDao;@Overridepublic List<User> getAllUsers() {return userDao.getAllUsers();}
}

userDao

package com.as.oracle.dao;import com.as.oracle.po.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.util.List;/*** @program: oracleDemo* @description: ${description}* @author: liujiang* @create: 2021-05-14 11:31**/
@Mapper
public interface UserDao {@Select("select * from \"tom\".\"tb_student\"")List<User> getAllUsers();
}

05Oracle快速入门,docker安装Oracle,springboot整合Oracle相关推荐

  1. Kafka精品教学(入门,安装,Springboot整合Kafka)

    ps:本文是博主结合视频和博客学习之后,自己实验总结编写的,如果侵权请联系删除. 要学习kafka首先要了解什么是消息队列,因为Kafka 是一个分布式的基于发布 / 订阅模式的消息队列(Messag ...

  2. ElasticSearch,docker 安装ElasticSearch,Springboot 使用 ElasticSearch JavaAPI

    什么是 ElasticSearch ? 数据库查询存在的问题: 性能低:使用模糊查询,左边有通配符,不会走索引,会全表扫描,性能低 关键字模糊查询比较麻烦 ElasticSearch概念 • Elas ...

  3. Swagger的安装以及SpringBoot整合Swagger2实现SwaggerAPI文档测试

    前言 本篇博客是本人在网上学习Swagger所产出的个人笔记.主要内容有: 1.Swagger的安装 2.Swagger的介绍 3.Swagger2中常用的注解 4.快速上手案例 准备工作:Swagg ...

  4. kafka 安装使用 /springboot整合kafka /消息投递机制以及存储策略 /副本处理机制

    一.背景 1.基本信息 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流 ...

  5. 10分钟解决Redis安装和Springboot整合

    1.Redis安装 for Windows https://github.com/microsoftarchive/redis/releases 下载完成后双击安装,一直下一步 然后打开Redis安装 ...

  6. Kafka 快速入门(安装)

    kafka学习目录:kafka目录 二.Kafka 快速入门 2.1.windows版安装 2.1.1.Quick Start 本次安装学习在Windows操作系统进行.(Linux版本的差别不大,运 ...

  7. datax安装 及 springboot整合 datax

    换了新工作,Java出身的我,弄点大数据的活. datax安装 环境要求 1.jdk1.8 2.python 源码地址:https://github.com/alibaba/DataX 这里我下载的是 ...

  8. OpenOffice4: 软件包安装, Docker安装,集成SpringBoot应用

    软件包安装 1. 说明 本文档采用rpm包方式安装,操作系统为centos 2 下载openoffice rpm包 创建源码包存放目录 mkdir /usr/local/src/openofficec ...

  9. 新手零基础快速入门Docker

    Docker学习 前言 今天第一次学习docker,跟着一位up主的视频进行了练习,把一些视频中讲到的内容记录了下来,并结合菜鸟教程中docker教程写下本文. 本文是我零基础入门docker的第一篇 ...

最新文章

  1. Leetcode刷题 232题:用栈实现队列(基于python3和c++两种语言)
  2. python使用缩进作为语法边界一般建议怎样缩进-Python基础自测挑战题
  3. 异构网络垂直切换算法LTE/WIMAX切换
  4. python概率密度函数参数估计_EM算法求高斯混合模型参数估计——Python实现
  5. 草稿 复选框绑定数据 1204
  6. JDK1.5新特性介绍
  7. Class 'QrCode' not found ? 和 laravel 生成二维码接口(Simple QrCod)
  8. 第二个结对编程——UI设计
  9. 千兆8光8电宽温环网工业以太网交换机8光8电全千兆二层管理型宽温工业级环网交换机 光纤自愈环网工业交换机
  10. 笔记本电脑上没有计算机软件,笔记本电脑无需安装软件,无需联网,也可无线投影在投影仪上显示...
  11. 我为什么要转到软件工程专业
  12. FFmpeg —— ffplay源码 - 制作桌面动态壁纸
  13. 同步传输和异步传输原理与比较
  14. ogv格式怎么转换为MP4格式
  15. Mapping Spiking Neural Networks的论文汇总以及思考
  16. 学信网学位认证报告在哪
  17. Java软件架构设计
  18. oracle连续月份列表,Oracle实现查询2个日期所跨过的月份列表/日期列表的方法分析...
  19. linux分区出现hfs,如何在Ubuntu中将HFS分区挂载为读/写?
  20. FANUC UIO 发那科专用IO定义说明

热门文章

  1. 最新大米API短链接生成网站源码v1.0版
  2. 《C#零基础入门之百识百例》(六)类型转换 -- 转换用户输入
  3. log-pilot日志收集到es7.x
  4. 如何解决Mac 启动时一直卡在 Apple 标志或进度条画面?
  5. [附源码]计算机毕业设计校园代取快递系统Springboot程序
  6. python3爬取华为应用市场APP安装包实战
  7. 乳腺癌标志物解决方案
  8. ST 电机控制工作台帮助文档翻译 之 支持的类别参数(单电机(控制级))
  9. 有赞个性化推荐能力的演进与实践
  10. 基于JAVA的小型云盘网盘管理系统