oracle
- 1, 初识oracle
- 1,什么是oracle?
- 2,oracle环境准备?
- 3,oracle安装
- 4,oracle登录
- 5,oracle 数据表导入
- 6,可视化工具 sql developer安装
- 1,springboot项目集成oracle
- 2,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=8080spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriverspring.datasource.url=jdbc:oracle:thin:@localhost:1521:ORCLspring.datasource.username=scottspring.datasource.password=123456mybatis.typeAliasesPackage=com.oracletest.demo.pojomybatis.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;}@Overridepublic 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_userwhere 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;@Servicepublic class UserServiceImpl implements UserService {@Resourceprivate UserMapper userMapper;@Overridepublic 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 {@Resourceprivate 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);}}
##数据库数据如下
访问接口结果