ORACLE数据库

oracle概述

在这里插入图片描述
Oracle(甲骨文公司),全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。2013年,甲骨文已超越 IBM ,成为继 Microsoft 后全球第二大软件公司。2020年9月14日,甲骨文证实,它已经与TikTok的中国所有者字节跳动达成协议,成为其“可信技术提供商”,但该协议仍需美国政府批准。
在这里插入图片描述
对于我们 java 程序员而言,我们必须要记住这个甲骨文公司,因为它旗下有两个产品和我们息息相关

  • JAVA语言(技术)
    2009年,甲骨文公司宣布收购Sun 。2010年,Java编程语言的共同创始人之一詹姆斯·高斯林从Oracle公司辞职。2011年,甲骨文公司举行了全球性的活动,以庆祝Java7的推出,随后Java7正式发布。2014年,甲骨文公司发布了Java8正式版 。
  • Oracle 数据库
    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

oracle常用账号

  • Sys sysdba 系统超级管理员
    (Sys /system 一般都是管理身份,用于管理oracle数据。默认 sys ,system都是没有oracle没有加锁,可以直接能录orcl数据。)
  • System 普通用户 具备管理员权限
  • Scott 示例账号 提供了一些常用的练习表 密码:tiger (需设置)
    (Scott 普通用户,一般都是开发学习使用此账户,但是默认scott账户是加锁的,需用使用 sys 登录进行解锁操作!!)
  • 自定义账号: mike 、jack

oracle重要概念

全局数据库:一般只有一个全局数据库
表空间:tablespace 数据库对象
Oracle 存放数据的基本逻辑单元
模式 schema 理解成“用户”
数据库的实例

oracle表空间创建

三部曲

  • 创建表空间
  • 创建用户
  • 授权
-- 1. 创建表空间
CREATE TABLESPACE gz2015_tablespace   -- 逻辑名
DATAFILE 'D:\Oracle\orcl_tablespace\gz2015.DBF'  --物理文件路径  
SIZE 10M AUTOEXTEND ON;  -- size表示初始容量 ,可以自动扩展容量


--2. 创建用户
CREATE USER gz2015 IDENTIFIED BY gz2015
DEFAULT TABLESPACE gz2015_tablespace;  -- 指定当前帐号使用的表空间

--3. 授权 包括权限和角色  角色是权限的集合
select * from role_sys_privs where role='RESOURCE';
select * from role_sys_privs where role='CONNECT';

GRANT RESOURCE,CONNECT TO  gz2015;
-- REVOKE .... FROM ....

oracle中建表

oracle中数据库字段类型

在这里插入图片描述
在这里插入图片描述

建表操作

建表语句:

create table item
(
  item_id number(9) primary key not null,
  item_name varchar2(200) not null,
  price number(8,2) not null,
  createtime date not null,
  detail varchar2(500) not null
)

插入操作:
在这里插入图片描述
注意在oracle中插入、更新、删除的时候,都需要手动commit一下,这时候数据才会真正的保存到数据库中!!

oracle中主键自增处理

在oracle中并没有自动增长一说,我们需要借助于序列来自己完成
在这里插入图片描述

create sequence seq_items_id;  -- 默认是以1 开始,然后以1 递增

drop sequence seq_items_id;  -- 删除一个序列

-- 设置自增序列的 属性    从2 开始  每次 递增1 
create sequence seq_items_id 
start with 2
increment by 1;

如何查询序列呢?
在这里插入图片描述

select seq_items_id.nextval from dual;  -- 每次产生一个

select seq_items_id.currval from dual; -- 获取当前的序列id

在这里插入图片描述
在这里插入图片描述

oracle中内置函数

  • to_date():转化为时间数据类型输出
  • to_char():转化为字符串数据类型输出
  • to_number():转化为数字数据类型输出
select to_date('2019-10-10','yyyy-mm-dd') from dual;

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

select to_char(sysdate,'yyyy"年"mm"月"dd"日" hh24:mi:ss') from dual;

select to_number('123')from dual;

select to_number('123q') from dual;  -- 操作不合理,会报错!

-- 以上语句如果可以转就转换,如果不能转换就直接抛出异常

oracle中分页操作

rownum认识
在这里插入图片描述
查询前5条数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PLSQL编程

在这里插入图片描述

基本语法

在这里插入图片描述

定义基本变量

declare
   age integer:=10;
   username varchar2(30);
begin
   username :='mike jack';
   dbms_output.put_line('年龄是:'||age);
end;

if判断

declare
 score integer:=92;
 age  integer:=10;
begin
  dbms_output.put_line('当前分数是:'||score);
  if age>=90  then
    dbms_output.put_line('成年了'||age);
   end if;
   
   if score>=90 then
     dbms_output.put_line('优秀');
     elsif score>=80 then
       dbms_output.put_line('良好');
       elsif score>=70 then
         dbms_output.put_line('一般');
        else
          dbms_output.put_line('差');
          end if;
end;

case分支

-- case 分支

declare

grade nvarchar2(20);

begin

grade :='A';  

case grade
  
 when 'A'   then dbms_output.put_line('优秀');
   when 'B' then dbms_output.put_line('良好');
   when 'C' then dbms_output.put_line('一般');
     else
       dbms_output.put_line('很差');
end case;
end;

loop循环

declare

i integer := 1;

begin
  loop 
     if i>100 then
       exit;
       end if;
       dbms_output.put_line('第'||i||'次输出了..');
       i:= i+1;
    end loop;
end;

在这里插入图片描述

while循环

declare

i integer:=1;

total integer :=0;

begin
  while i<=100 loop
    total := total + i;
    i := i+1;
  end loop;
  dbms_output.put_line(total);
end;

结果是:5050

for循环

declare
begin
  for i in 1..100 loop
    dbms_output.put_line(i);
    end loop;
 end;

在这里插入图片描述

select into 语法

declare

v_num integer;

begin
  -- v_num:= 10;
  select item_id into v_num from item where item_id = 1;
  dbms_output.put_line(v_num);
       
end;

oracle中异常

在运行程序时出现的错误叫做异常
发生异常后,语句将停止执行,控制权转移到 PL/SQL 块的异常处理部分
异常有两种类型:
预定义异常 - 当 PL/SQL 程序违反 Oracle 规则或超越系统限制时隐式
引发

用户定义异常 - 用户可以在 PL/SQL 块的声明部分定义异常,自定义的
异常通过 RAISE 语句显式引发

Oracle 预定义异常 21 个
在这里插入图片描述

declare
v_num integer;
begin
  -- v_num:= 10;
  select item_id into v_num from item where item_id = 100; -- 此时数据肯定查询不到,一定会报错!
  dbms_output.put_line(v_num);

在这里插入图片描述
如何处理:

declare

v_num integer;

begin
  -- v_num:= 10;
  select item_id into v_num from item where item_id = 100; -- 此时数据肯定查询不到,一定会报错!
  dbms_output.put_line(v_num);
      
  exception
    when no_data_found then
      dbms_output.put_line('没有找到数据啊..');
        
end;

在这里插入图片描述
再看一种情况
在这里插入图片描述

declare

v_num integer;

begin
  -- v_num:= 10;
  select item_id into v_num from item; -- 此时去查询,会出现很多条数据
  dbms_output.put_line(v_num);
      
  exception
    when no_data_found then
      dbms_output.put_line('没有找到数据啊..');
    when too_many_rows then
        dbms_output.put_line('返回了多行数据啦...');
end;

在这里插入图片描述

plsql高级-触发器

create trigger t2
after 
insert on item
declare
begin
  dbms_output.put_line('触发器被触发了..');
  end;

在这里插入图片描述
自动会触发 触发器

-- 触发触发器
insert into item values(5,'小米5');

在这里插入图片描述

JDBC连接oralce

在这里插入图片描述
BaseDao

public class BaseDao {

    static {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tigger");
    }
}

测试类

public static void main(String[] args) throws SQLException {
    Connection connection = BaseDao.getConnection();
    Statement statement = connection.createStatement();
    String sql = "insert into item values(3,'小米3')";
    int i = statement.executeUpdate(sql);
    System.out.println("插入成功:"+i);
}

在这里插入图片描述
在这里插入图片描述

oralce+ssm综合案例

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值