Oracle研学-基础操作
学自B站黑马程序员笔记
一 创建表空间(创建数据文件)
创建表空间同时会创建一个数据文件(下面5行应该是一句话),表空间在PLSQL的Object的tablespace中可以看到
create tablespace waterboss //创建表空间
datafile 'c:\waterboss.dbf' //创建表空间对应的数据文件(给个地址)
size 100m //文件大小100m(先占地方)
autoextend on //开启自动拓展100m满了会自动扩充
next 10m; //一次拓展10m
二 创建用户
用户建在表空间上,表建在用户上,编程的时候关注用户既可,一个表空间可建多个用户,用户在Object的Users中可以看到,可用该用户登录plsql(需要登录权限)
create user wateruser //创建用户(3行一句话)
identified by itcast //创建密码(口令)
default tablespace waterboss; //指定该用户默认属于哪个表空间grant dba to wateruser; //赋予用户权限(dba角色权限)
三 数据类型
1. 字符型
(1)CHAR : 固定长度的字符类型,最多存储 2000 个字节
(2)VARCHAR2 :可变长度的字符类型,最多存储 4000 个字节
(3)LONG : 大文本类型。最大可以存储 2 个 G
2. 数值型
NUMBER : 数值类型
例如:NUMBER(5) 最大可以存的数为 99999
NUMBER(5,2) 最大可以存的数为 999.99
3. 日期型
(1)DATE:日期时间型,精确到秒
(2)TIMESTAMP:精确到秒的小数点后 9 位
4. 二进制型(大数据类型)
(1)CLOB : 存储字符,最大可以存 4 个 G
(2)BLOB:存储图像、声音、视频等二进制数据,最多可以存 4 个 G
四 创建表
//创建业主表 于object的tables中可查看
CREATE TABLE T_OWNERS(
ID NUMBER PRIMARY KEY, //主键
NAME VARCHAR2(30), //业主名称
ADDRESSID NUMBER, //地址id
HOUSENUMBER VARCHAR2(30), //门牌号
WATERMETER VARCHAR2(30), //水表编号
ADDDATE DATE, //登记日期
OWNERTYPEID NUMBER //业主类型id
)//修改表-追加字段
ALTER TABLE T_OWNERS ADD(REMARK VARCHAR2(20),OUTDATE DATE
)//修改表-修改字段类型
ALTER TABLE T_OWNERS MODIFY(REMARK CHAR(20),OUTDATE TIMESTAMP
)//修改表-修改字段名OUTDATE变为EXITDATE
ALTER TABLE T_OWNERS RENAME COLUMN OUTDATE TO EXITDATE//修改表-删除字段REMARK
ALTER TABLE T_OWNERS DROP COLUMN REMARK//插入语句,此刻处于事务状态需要进行事务的提交才能查询到
INSERT INTO T_OWNERTYPE (ID,NAME) VALUES (1,'居民');//插入当前系统时间sysdate会返回当前系统时间
insert into T_OWNERS VALUES(1,'邢道荣',1,'1-1','123456',sysdate,1);
commit;//可以通过语句进行commit事务提交//修改语句日期为三天前(支持对日期的运算)3代表3天(默认),年月会用函数
update T_OWNERS SET ADDDATE=ADDDATE-3 WHERE ID=1;//删除语句,TRUNCATE执行效率高于delete,当执行delete时数据并没有真正的删除,只是移动到了回滚段中,此时通过rollback可回滚,可能产生碎片且不释放空间
delete from T_OWNERS WHERE ID=1;//TRUNCATE删除表中数据不需要commit直接执行既可生效,不可回滚,truncate会销毁表之后重建表结构,效率更高
truncate table T_OWNERTYPE
五 建立jdbc链接
进入oracle包中C:\oracle\product\10.2.0\db_1\jdbc\lib,取出ojdbc14.jar包部署到项目中,而后建立基本访问类
/*基本数据访问类:获取数据库链接,关闭资源*/
public class BaseDao {static{//静态代码块只执行一次,加载驱动try {Class.forName("oracle.jdbc.driver.OracleDriver");} catch (ClassNotFoundException e) {e.printStackTrace();}}//获取数据库链接public static java.sql.Connection getConnection() throws SQLException {//thin表示瘦链接,即程序所在的pc上可以不装oracle的任何东西,胖链接需要在本地装oracle的东西return DriverManager.getConnection("jdbc:oracle:thin:@192.168.80.10:1521:orcl","wateruser","itcast");}//关闭结果集,执行对象,链接对象,不为空才有关闭的必要public static void closeAll(java.sql.ResultSet rs,java.sql.Statement stmt,java.sql.Connection conn){if(rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(stmt!=null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if(conn!=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}
}
3.建立实体类
public class Owners {private Long id;//编号private String name;//业主名称private Long address;//地址idprivate String housernumber;//门牌号private String watermeter;//水表编号private Date adddate;//增加日期private Long ownertypeid;//业主类型
}
4.编写增删改方法
/*业主的数据访问类*/
public class OwnersDao{//插入方法public static void add(Owners owners){//声明链接对象 预处理对象java.sql.Connection conn=null;java.sql.PreparedStatement stmt=null;try {conn=BaseDao.getConnection();//获取链接//几列就放几个问号(占位符下标从1开始)stmt=conn.prepareStatement("insert into t_owners values(?,?,?,?,?,?,?)");stmt.setLong(1,owners.getId());//设置第一个参数,业主编号stmt.setString(2,owners.getName());//业主名称stmt.setLong(3,owners.getAddress());//地址编号stmt.setString(4,owners.getHousernumber());//门牌号stmt.setString(5,owners.getWatermeter());//水表编号//要求传递sql的date类型,此时传递util的date类型所以报错//通过gettime方法转长整形,通过长整形构造sql的date类型,反过来一样stmt.setDate(6,new java.sql.Date(owners.getAdddate().getTime()));//增加日期stmt.setLong(7,owners.getOwnertypeid());//业主类型stmt.execute();//执行} catch (SQLException e) {e.printStackTrace();} finally {//增删改不涉及结果集故设为nullBaseDao.closeAll(null,stmt,conn);}}//修改方法public static void update(Owners owners){//声明链接对象 预处理对象java.sql.Connection conn=null;java.sql.PreparedStatement stmt=null;try {conn=BaseDao.getConnection();//获取链接//几列就放几个问号(占位符下标从1开始)stmt=conn.prepareStatement("update t_owners set name=?,addressid=?,"+"housenumber=?,watermeter=?,adddate=?,ownertypeid=? where id=?");stmt.setString(1,owners.getName());//业主名称stmt.setLong(2,owners.getAddress());//地址编号stmt.setString(3,owners.getHousernumber());//门牌号stmt.setString(4,owners.getWatermeter());//水表编号//要求传递sql的date类型,此时传递util的date类型所以报错//通过gettime方法转长整形,通过长整形构造sql的date类型,反过来一样stmt.setDate(5,new java.sql.Date(owners.getAdddate().getTime()));//增加日期stmt.setLong(6,owners.getOwnertypeid());//业主类型stmt.setLong(7,owners.getId());//设置第一个参数,业主编号stmt.execute();//执行} catch (SQLException e) {e.printStackTrace();} finally {//增删改不涉及结果集故设为nullBaseDao.closeAll(null,stmt,conn);}}//删除方法public static void delete(Long id){//声明链接对象 预处理对象java.sql.Connection conn=null;java.sql.PreparedStatement stmt=null;try {conn=BaseDao.getConnection();//获取链接//几列就放几个问号(占位符下标从1开始)stmt=conn.prepareStatement("delete from t_owners where id=?");stmt.setLong(1,id);//设置第一个参数,业主编号stmt.execute();//执行} catch (SQLException e) {e.printStackTrace();} finally {//增删改不涉及结果集故设为nullBaseDao.closeAll(null,stmt,conn);}}
}
5.测试
public class Test {public static void main(String[] args) {Owners owners=new Owners();owners.setId(3L);owners.setName("许攸");owners.setAddress(1L);owners.setHousernumber("3-2");owners.setWatermeter("96469");owners.setAdddate(new Date());owners.setOwnertypeid(1L);OwnersDao.add(owners);System.err.println("ok");}
}
public class Test2 {public static void main(String[] args) {Owners owners=new Owners();owners.setId(3L);owners.setName("许攸");owners.setAddress(1L);owners.setHousernumber("3-2");owners.setWatermeter("5555");owners.setAdddate(new Date());owners.setOwnertypeid(1L);OwnersDao.update(owners);System.err.println("ok");}
}
public class Test3 {public static void main(String[] args) {OwnersDao.delete(1L);}
}
六 数据导出与导入
-
整库的导入导出(需要dba的权限)
- 导出:整库的导出会形成一个文件,服务器的命令行输入(需要有dba权限的账号密码,full=y表示全部的意思y是yes)exp system/password full=y 不指定文件名时导出文件名为EXPDAT.DMP(纯二进制oracle自己的文件)
- 导入:若对象存在则自动跳过,命令行输入IMP system/qwer1234 full=y(实质上是执行了一串的create语句),不指定名则找默认文件
- 指定导出文件名:exp system/qwer1234 full=y file=water.dmp
- 导入指定文件:imp system/itcast full=y file=water.dmp
-
用户导入导出
- 按用户导出:exp system/qwer1234 owner=wateruser file=wateruser.dmp
- 按用户导入:imp system/qwer1234 file=wateruser.dmp fromuser=wateruser
-
按表导入导出
- 按表导出:exp wateruser/itcast file=a.dmp tables=t_owners,t_ownertype
- 按表导入:imp wateruser/itcast file=a.dmp tables=t_owners,t_ownertype
- 用tables参数指定需要导出的表,若有多个表用逗号分隔既可,若表在用户下则使用用户帐号和密码,用system找用户下的表是找不到的(需要打点调用)
- 可以通过tables指定表名进行导入(dmp中有多个表,我可以只取一个,整库导出也可以只导入一张表)
七 关于重复提交事务的问题
不同的sql窗口相当于不同的事务,而事务是有隔离级别的,必须等该事务提交之后,其他事务才能查询到,在没有提交事务前,该表会被锁住(出现红色闪电,事务的提交和回滚会进行解锁),操作同一条记录会产生冲突(行级锁)
相关文章:
Oracle研学-基础操作
学自B站黑马程序员笔记 一 创建表空间(创建数据文件) 创建表空间同时会创建一个数据文件(下面5行应该是一句话),表空间在PLSQL的Object的tablespace中可以看到 create tablespace waterboss //创建表空间 datafile c:\waterboss.dbf //创建表空间对应的…...
jmeter下载地址
Jmeter安装教程【5.5】【Windows】jmeter详细安装配置教程,装不好你打我_一只莽夫的博客-CSDN博客...
C语言,求取数组的序亏:已知一个整数数组,求出个数组中每个元素在整个 数组的排序。
要求获取整数数组中每个元素的排序,可以使用以下方法: 1. 定义一个结构体数组,其中每个结构体包含数组元素的值和索引。 2. 遍历整数数组,将每个元素与其索引一起存储到结构体数组中。 3. 对结构体数组进行排序,按照…...
信息流广告行为兴趣定向底层逻辑算法
行为兴趣定向 1: 行为兴趣的背后是计划的数据 行为是用户在平台的动作:点赞、评论、分享、点击、下单、成交等,用户发生过的标签 兴趣不一定发生,我有打高尔夫的兴趣,但是从来没打过,因为穷 系统会根据用户的行为标…...
Selenium——isDisplayed()、isEnabled()、isSelected()
判断页面是否存在某元素 Selenium没有直接提供判断是否存在的方法,可以使用findElements返回的数量判断;或者判断findElement是否抛出异常 webDriver.findElements(By.xpath("(//div[classel-button-group]//button)[1]")).size()isDisplaye…...
unity UGUI中获取点击位置处的URL链接
需求是,我们在一个text组件中像写网页那样写入链接,然后点击这个链接,就能访问配置的网页啥的。比如: <a href"hello">链接文本</a></summary> 最终的效果如下: 图中,image区…...
【Arduino库之:FastLED库】
第一:基础 led [ 0 ] CRGB::Red; //为第一个灯珠设置红色 FastLED.show(); //这个作用才会显示 示例程序: #include <FastLED.h> #define NUM_LEDS 8 #define DATA_PIN 7 #define CLOCK_PIN 13 CRGB leds[NUM_LEDS]; CRGB myGRBcolor(0…...
两道面试题秒杀你的C++基础!
大家好,我是光城,今天发两个非常重要的面试题,可以留言区说出你的答案,这两个题目都比较重要,看你能答对不? 1.C中初始化变量有几种方式,各自有什么区别? 或者说Initialization分为哪…...
回归预测 | MATLAB实现SMA+WOA+BOA-LSSVM基于黏菌算法+鲸鱼算法+蝴蝶算法优化LSSVM回归预测
回归预测 | MATLAB实现SMAWOABOA-LSSVM基于黏菌算法鲸鱼算法蝴蝶算法优化LSSVM回归预测 目录 回归预测 | MATLAB实现SMAWOABOA-LSSVM基于黏菌算法鲸鱼算法蝴蝶算法优化LSSVM回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现SMAWOABOA-LSSVM基于黏菌算法…...
柔性数组(Flexible Array Members)在C语言中的应用
什么是柔性数组? 在C语言中,柔性数组(Flexible Array Members,FAMs)是C99标凈引入的一种便捷的数据结构,用于声明具有可变大小数组的结构体。柔性数组通常用于当结构体的大小在编译时不确定,但…...
华为手环配置技巧
前言 华为手环作为生活健康辅助设备发挥不可忽视的作用,但每次更换手环后需要重新配置。华为手环不仅有健康监测、消息通知、天气推送、离线支付、公交卡、运动锻炼、等功能,还有倒计时、计时器、手电筒、闹钟、等小工具。下文介绍如何进行配置。 配置…...
2023全球数字贸易大赛--什么是 DID 身份,中青校园APP,全球碳交易=树根格致,多元空间=购物时代的web3.0,超喵Overview
目录 什么是 DID 身份,为什么需要 DID 1. 中心化身份的问题 2. 为什么 DID 一定会出现...
有序表常见题型
给定一个数组arr和两个整数a和b求arr中有多少个子数组累加和在a到b这个范围上返回达标的子数组数量 如【3,6,1,9,2】达标的子数组通过暴力求解的方式时间复杂度为O(N的三次方)【找每个子数组占用O…...
【开源】基于JAVA语言的桃花峪滑雪场租赁系统
项目编号: S 036 ,文末获取源码。 \color{red}{项目编号:S036,文末获取源码。} 项目编号:S036,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设…...
【开源】基于Vue.js的图书管理系统
文末获取源码,项目编号: S 066 。 \color{red}{文末获取源码,项目编号:S066。} 文末获取源码,项目编号:S066。 目录 一、 系统介绍二、 功能模块2.1 登录注册模块2.1 图书馆模块2.2 图书类型模块2.3 图书模…...
python跑ncnn(验证模型是否转换成功)
为了转ncnn模型是否成功,用python验证一下先 pip install ncnn分割模型的验证代码 import ncnn import cv2 import numpy as np# 创建ncnn的网络对象 net ncnn.Net()# 加载ONNX模型 net.load_param(E:\\Android_Projects\\ncnn-android-deeplabv3plus-main\\app\…...
FL Studio 21.2.1.3859中文破解激活版2024免费下载安装图文教程
FL Studio 21.2.1.3859中文破解激活版是我见过更新迭代最快的宿主软件,没有之一。FL Studio12、FL Studio20、FL Studio21等等。有时甚至我刚刚下载好了最新版本,熟悉了新版本一些好用的操作,Fl Studio就又推出了更新的版本,而且F…...
人工智能发展史
人工智能(AI)的发展史是一段跨越数十年的旅程,涵盖了从早期理论探索到现代技术革新的广泛内容。人工智能的发展历程展示了从最初的概念探索到现代技术突破的演变。尽管经历了多次起伏,但AI领域持续进步,不断拓展其应用…...
【面试经典 150 | 二分查找】搜索插入位置
文章目录 写在前面Tag题目来源题目解读解题思路方法一:二分查找闭区间左闭右开区间开区间总结 知识总结写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,…...
DAPP开发【06】nodejs安装与npm路径更换
windows系统在执行用户命令时顺序 windows系统在执行用户命令时,若用户未给出文件的绝对路径, 则 (1)首先在当前目录下寻找相应的可执行文件、批处理文件等; (2)若找不到,再依次在系…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)
引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...
2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版
1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...
