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)若找不到,再依次在系…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
2.2.2 ASPICE的需求分析
ASPICE的需求分析是汽车软件开发过程中至关重要的一环,它涉及到对需求进行详细分析、验证和确认,以确保软件产品能够满足客户和用户的需求。在ASPICE中,需求分析的关键步骤包括: 需求细化:将从需求收集阶段获得的高层需…...
6.计算机网络核心知识点精要手册
计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法:数据与控制信息的结构或格式,如同语言中的语法规则语义:控制信息的具体含义和响应方式,规定通信双方"说什么"同步:事件执行的顺序与时序…...
2025 后端自学UNIAPP【项目实战:旅游项目】7、景点详情页面【完结】
1、获取景点详情的请求【my_api.js】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http(/login/getWXSessionKey, {code,avatar}); };//…...
C++ 使用 ffmpeg 解码 rtsp 流并获取每帧的YUV数据
一、简介 FFmpeg 是一个开源的多媒体处理框架,非常适用于处理音视频的录制、转换、流化和播放。 二、代码 示例代码使用工作线程读取rtsp视频流,自动重连,支持手动退出,解码并将二进制文件保存下来。 注意: 代…...
