初识oracle

1, 初识oracle

###以下所有的链接均为淡蓝色字体

1,什么是oracle?

Oracle Database,又名Oracle RDBMS,简称Oracle。是甲骨文公司推出的一款关系数据库管理系统。

Oracle数据库系统是目前世界上流行的关系数据库管理系统,拥有可移植性好、使用方便、功能强等优点,在各类大、中、小、微机环境中都适用。

Oracle是一种高效率、可靠性好的、适应高吞吐量的数据库解决方案。

2,oracle环境准备?

准备win10/7的 64位操作系统

3,oracle安装

我用的是oracle 11g版本
(1)进入甲骨文官方网址。
oracle下载地址
一共有两个文件zip的。别下错了。下完以后将两个文件分别解压到一个目录下
(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);
    }

}

##数据库数据如下
在这里插入图片描述

访问接口结果
在这里插入图片描述
在这里插入图片描述

已标记关键词 清除标记
相关推荐
<p> <span style="color:#337FE5;"><strong>【为什么还需要学习C++?】</strong></span> </p> <p style="margin-left:0cm;"> 你是否接触很多语言,但从来没有了解过编程语言的本质? </p> <p style="margin-left:0cm;text-align:start;"> 你是否想成为一名资深开发人员,想开发别人做不了的高性能程序? </p> <p style="margin-left:0cm;text-align:start;"> 你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? </p> <p style="margin-left:0cm;text-align:start;">   </p> <p style="margin-left:0cm;text-align:start;"> 那么C++就是你个人能力提升,职业之路进阶的不二之选。 </p> <p style="margin-left:0cm;text-align:start;"> <br /> </p> <p style="margin-left:0cm;text-align:start;"> <br /> </p> <p style="margin-left:0cm;"> <strong><span style="color:#337FE5;">【课程特色】</span></strong> </p> <p style="margin-left:0cm;text-align:start;"> 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。 </p> <p style="margin-left:0cm;text-align:start;"> 2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。 </p> <p style="margin-left:0cm;text-align:start;"> 3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。 </p> <p style="margin-left:0cm;text-align:start;"> <br /> </p> <p class="ql-long-24357476"> <span style="color:#337FE5;"><strong>【学完后我将达到什么水平?】</strong></span> </p> <p class="ql-long-24357476"> 1.对C++的各个知识能够熟练配置、开发、部署; </p> <p class="ql-long-24357476"> 2.吊打一切关于C++的笔试面试题; </p> <p class="ql-long-24357476"> 3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。 </p> <p class="MsoNoSpacing" style="margin-left:18pt;"> <br /> </p> <div> <br /> </div> <p> <br /> </p> <p style="margin-left:0cm;text-align:start;"> <span style="color:#337FE5;"><strong>【面向人群】</strong></span> </p> <p style="margin-left:0cm;text-align:start;"> <span style="color:#222226;font-family:PingFangSC-Regular, "font-size:14px;background-color:#FFFFFF;">1.希望一站式快速入门的C++初学者;</span> </p> <p style="margin-left:0cm;text-align:start;"> <span style="color:#222226;font-family:PingFangSC-Regular, "font-size:14px;background-color:#FFFFFF;">2.希望快速学习 C++、掌握编程要义、修炼内功的开发者;</span> </p> <p style="margin-left:0cm;text-align:start;"> <span style="color:#222226;font-family:PingFangSC-Regular, "font-size:14px;background-color:#FFFFFF;">3.有志于挑战更高级的开发项目,成为资深开发的工程师。</span> </p> <p style="margin-left:0cm;text-align:start;"> <br /> </p> <p> <br /> </p> <p> <span style="color:#337FE5;"><strong>【课程设计】</strong></span> </p> <p> 本课程包含3大模块 </p> <p> <strong>基础篇</strong><br /> 本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。 </p> <p> <br /> <strong>进阶篇</strong><br /> 本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。 </p> <p> <br /> <strong>提升篇:</strong><br /> 本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。 </p> <p> <img src="https://img-bss.csdnimg.cn/202007091130239667.png" alt="" /> </p>
百度云盘分享 简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程接口的引用,用远程接口的引用访问EJB。 EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,但是它的主要作用是供程序使用的。本规范尝试满足大型主机、微型主机、个人工作站、和TACs 的不同需求。例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件,一个服务器,一个客户端。 Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密   Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。   设定字符串为“张三,你好,我是李四”   产生张三的密钥对(keyPairZhang)   张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节   通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥   Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥。 Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输   Jav
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页