oracle
1, 初识oracle
###以下所有的链接均为淡蓝色字体
1,什么是oracle?
Oracle Database,又名Oracle RDBMS,简称Oracle。是甲骨文公司推出的一款关系数据库管理系统。
Oracle数据库系统是目前世界上流行的关系数据库管理系统,拥有可移植性好、使用方便、功能强等优点,在各类大、中、小、微机环境中都适用。
Oracle是一种高效率、可靠性好的、适应高吞吐量的数据库解决方案。
2,oracle环境准备?
准备win10/7的 64位操作系统
3,oracle安装
我用的是oracle 11g版本
(1)进入甲骨文官方网址。
oracle下载地址
(2)解压完毕两个文件后。点击
(3)步骤1,不用填写电子邮件,下面的勾不用打
(4)步骤2
(5)步骤3
(6)步骤4
安装路径尽量不要c盘。就可以了。路径不用改默认的。全局数据库名ercl,管理口令填写一个大写,一个小写字母加6位以上的数字
(7)步骤5
自检
说实话这步没啥用。自检不通过也可以安装。通过也可以安装。直接忽略掉它。
(8)步骤6,正式安装
(9)步骤7
###耐心等待走完。。如果这里走到50%左右出现错误。。。就是刚才下载的时候两个解压包没解压到一块导致的。
设置sys和system的新口令
(10)步骤8
出现这个就是安装好了。可以使用了
4,oracle登录
(1)win10系统可以点击开始–所有应用–刚安装的oracle–在这里找到
(2)
点开以后需要输入账户和密码
##可以参考以下链接。通过无密码方式登录,之后修改密码。
sys密码重置方法
(3)登录进去的页面
代表你可以使用oracle了
5,oracle 数据表导入
前言:之前用mysql的盆友。知道mysql的数据往oracle中导入。。需要注意以下几点
1.自动增长的数据类型处理
MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。
CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;
其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999
INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL
2 . 单引号的处理
MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
3 . 翻页的SQL语句的处理
MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数;PHP里还可以用SEEK定位到结果集的位置。ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位 置, 并且只能用ROWNUM<100, 不能用ROWNUM>80。
以下是经过分析后较好的两种ORACLE翻页SQL语句( ID是唯一关键字的字段名 ):语句一:SELECT ID, [FIELD_NAME,…] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;语句二:SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (select [FIELD_NAME,…] FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;
4. 长字符串的处理
长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长 度字段值都应该提出警告,返回上次操作。
5 . 日期字段的处理
MYSQL日期字段分DATE和TIME两种,ORACLE日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间为SYSDATE, 精确到秒,或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)年-月-日 24小时:分钟:秒 的格式YYYY-MM-DD HH24:MI:SS TO_DATE()还有很多种日期格式, 可以参看ORACLE DOC.日期型字段转换成字符串函数TO_CHAR(‘2001-08-01’,’YYYY-MM-DD HH24:MI:SS’)
日期字段的数学运算公式有很大的不同。MYSQL找到离当前时间7天用 DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)ORACLE找到离当前时间7天用 DATE_FIELD_NAME >SYSDATE - 7;
6 . 空字符的处理
MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构, 导数据的时候会产生错误。因32313133353236313431303231363533e58685e5aeb931333365656661此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。
7 . 字符串的模糊比较
MYSQL里用 字段名 like ‘%字符串%’,ORACLE里也可以用 字段名 like ‘%字符串%’ 但这种方法不能使用索引, 速度不快,用字符串比较函数 instr(字段名,‘字符串’)>0 会得到更精确的查找结果。
8 . 程序和函数里,操作数据库的工作完成后请注意结果集和指针的释放。
###emmmmm,所以有更简单的方法导出mysql数据到oracle中嘛!!!
这网页只用关心里面下载地址,其余不要去乱配!!!!!
(1)安装以后会桌面上出现
(2)步骤1
(3)步骤2
数据库名称填写mysql里您需要导出的数据库名称。用户名密码均是你mysql的
(4)步骤3
大写的ORCL,是你的oracle TNS。用户名密码是你刚才能登录的用户名和密码,点击next。。。
####这里可能有些童鞋会报cannot load OCI DLL,126 193错误
链接。。。。。解决cannot load问题
链接。。。。。配置环境变量
下载32位客户端
这时候已经可以识别orcl了
####然后解决完这个问题,可能还会出一个问题
TNS:could not resolve the connect identifier specified
链接,解决TNS问题
基本上就到这一步了
(5)步骤4
一定是gbk这里
(6)
这些应该天然熟悉吧!!!
方法二:
如果直接就是oracle的sql文件
那么找到路径执行下面语句即可
SQL>@F:\website\oraok\ot\11g\xxx.sql
6,可视化工具 sql developer安装
###如果这个看完还有问题。一般是因为本身安装的oracle是64位。中间有一步下载了一个32位客户端。。。这里需要注意
oracle home路径配置你最初oracle安装的路径
oci请配置之前32位客户端的oci.dll的路径
2,oracle实战
1,springboot项目集成oracle
我这里搭建的是springboot-2.1.13版本的,以超市订单管理系统为基础。
我们从最基础开始吧
创建springboot项目这里就不再叙述,主要看配置文件
###会出现。。。pom.xml里oracle jar包无法导入的情况
解决方案:
1,找到oracle安装目录下的ojdbc6.jar.把它复制出来
2,提前配置好maven的环境变量,确保dos命令可以操作mvn
3,把刚才的jar包复制到任意一个盘符下
4,打开dos。。。
执行如下命令 mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=10.2.0.2.0 -Dpackaging=jar -Dfile=F:\ojdbc6.jar
5,最关键一步。执行完毕之后,出现BUILD SUCCESS,就说明成功了,就可以到C:\Users\XXX.m2\repository\com\oracle\ojdbc6\目录里面把10.2.0.2.0整个文件夹复制到自己手动配置的maven本地仓库了
(如果jar包已经复制到了本地仓库下。不用执行第5步。直接执行下面的dependency.如果复制下面这段代码出现错误。一个一个手敲吧)
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>10.2.0.2.0</version>
</dependency>
2,oracle实战:登录
(1)pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.49</version>
</dependency>
<!-- 这里使用的是JPA包,也可使用JDBC包进行 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- 加载oracel jdbc驱动包 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>10.2.0.2.0</version>
</dependency>
(2)application.properties
server.port=8080
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:ORCL
spring.datasource.username=scott
spring.datasource.password=123456
mybatis.typeAliasesPackage=com.oracletest.demo.pojo
mybatis.mapperLocations=classpath*:sqlMapper/*.xml
(3)实体类
package com.oracletest.demo.pojo;
public class User {
private String userName;
private String userPassword;
User(){}
public User(String userName, String userPassword) {
this.userName = userName;
this.userPassword = userPassword;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
@Override
public String toString() {
return "User{" +
"userName='" + userName + '\'' +
", userPassword='" + userPassword + '\'' +
'}';
}
}
(4)mapper接口
package com.oracletest.demo.mapper;
import com.oracletest.demo.pojo.User;
import org.springframework.data.repository.query.Param;
/**
* 用户接口
* @author ljs
* @Time 2020-05-30 20:06
*/
public interface UserMapper {
//登录
User selectLogin(@Param("userName")String userName,
@Param("password")String userPassword);
}
(5)mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.oracletest.demo.mapper.UserMapper">
<!--映射关系-->
<resultMap id="login" type="com.oracletest.demo.pojo.User">
<result column="userName" property="userName" jdbcType="VARCHAR"/>
<result column="userPassword" property="userPassword" jdbcType="VARCHAR"/>
</resultMap>
<!--登录-->
<select id="selectLogin" resultMap="login" parameterType="User">
select userName,userPassword from smbms_user
where userName=#{userName} AND userPassword=#{userPassword}
</select>
</mapper>
(6) service
package com.oracletest.demo.service;
import com.oracletest.demo.pojo.User;
import org.springframework.data.repository.query.Param;
public interface UserService {
//登录
User selectLogin(@Param("userName")String userName,
@Param("password")String userPassword);
}
(7)serviceImpl
package com.oracletest.demo.service.Impl;
import com.oracletest.demo.mapper.UserMapper;
import com.oracletest.demo.pojo.User;
import com.oracletest.demo.service.UserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class UserServiceImpl implements UserService {
@Resource
private UserMapper userMapper;
@Override
public User selectLogin(String userName, String userPassword) {
return userMapper.selectLogin(userName, userPassword);
}
}
(8)controller
package com.oracletest.demo.controller;
import com.oracletest.demo.pojo.User;
import com.oracletest.demo.service.UserService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/user")
public class UserController {
@Resource
private UserService userService;
@RequestMapping(value = "/login",method = RequestMethod.GET)
public Object login(@RequestParam(value = "userName",required = true)String userName,
@RequestParam(value = "userPassword",required = true)String userPassword){
Map<String,Object> map=new HashMap<String,Object>();
User user=userService.selectLogin(userName,userPassword);
if(user!=null){
//执行登录
map.put("msg","登录成功");
map.put("result",true);
map.put("data",user);
}else {
//不执行登录,返回
map.put("msg","登录失败");
map.put("result",false);
}
return map;
}
}
(9)启动类
package com.oracletest.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.oracletest.demo.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
##数据库数据如下
访问接口结果