AI智能
改变未来

初识oracle

oracle

  • 1, 初识oracle
  • 1,什么是oracle?
  • 2,oracle环境准备?
  • 3,oracle安装
  • 4,oracle登录
  • 5,oracle 数据表导入
  • 6,可视化工具 sql developer安装
  • 2,oracle实战
    • 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);}}

    ##数据库数据如下

    访问接口结果

    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » 初识oracle