week_1 Oracle

注:简单学orcale第一周

一、ORACLE 简介

(一)什么是 ORACLE

ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据
库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或
B/S 体系结构的数据库之一。
ORACLE 通常应用于大型系统的数据库产品。
ORACLE 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通
用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个
完备关系的产品;作为分布式数据库它实现了分布式处理功能。
ORACLE 数据库具有以下特点:
(1)支持多用户、大事务量的事务处理
(2)数据安全性和完整性控制
(3)支持分布式数据处理
(4)可移植性

(二)ORACLE 体系结构

1.数据库

Oracle 数据库是数据的物理存储。这就包括(数据文件 ORA 或者 DBF、控
制文件、联机日志、参数文件)。其实 Oracle 数据库的概念和其它数据库不一
样,这里的数据库是一个操作系统只有一个库。可以看作是 Oracle 就只有一个大数据库。

2.实例

一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)
和内存结构(Memory Structures)组成。一个数据库可以有 n 个实例。

3.数据文件(dbf)

数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,
真正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件
组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,
就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才
行。

4.表空间间

表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻
辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在
逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为 system 表空
间)。
每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件
(datafile)。一个数据文件只能属于一个表空间。
![image.png](https://img-blog.csdnimg.cn/img_convert/7bb7d5055a22b4157d1be17bba515624.png#clientId=u08dcb68f-aaa2-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=166&id=uf70c7149&margin=[object Object]&name=image.png&originHeight=208&originWidth=661&originalType=binary&ratio=1&rotation=0&showTitle=false&size=71971&status=done&style=none&taskId=u9ab7fe0a-2062-45f8-bc85-c47afde5de7&title=&width=528.8)
注:表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。
由于oracle的数据库不是普通的概念,oracle是有用户和表空间对数据进行
管理和存放的。但是表不是有表空间去查询的,而是由用户去查的。因为不同用
户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!
![image.png](https://img-blog.csdnimg.cn/img_convert/66b67943ecda765de55de44a8a4718e7.png#clientId=u08dcb68f-aaa2-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=294&id=u5e047377&margin=[object Object]&name=image.png&originHeight=367&originWidth=359&originalType=binary&ratio=1&rotation=0&showTitle=false&size=28090&status=done&style=none&taskId=u7a358aaf-df7f-4a51-84dc-20d2dda1fce&title=&width=287.2)

5.用户

用户是在表空间下建立的。用户登陆后只能看到和操作自己的表, ORACLE的用户与MYSQL的数据库类似,每建立一个应用需要创建一个用户。
![image.png](https://img-blog.csdnimg.cn/img_convert/48c743abadaa136fd14f9cf2a0a5a101.png#clientId=u08dcb68f-aaa2-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=510&id=ua551917b&margin=[object Object]&name=image.png&originHeight=638&originWidth=756&originalType=binary&ratio=1&rotation=0&showTitle=false&size=239464&status=done&style=none&taskId=ud60fe11a-02ff-40fe-867e-cc562f8193f&title=&width=604.8)

二、表的创建、修改、删除和数据的增、删、改

安装oracle

(一)racle操作语言

1.创建表空间
create tablespace myspace
--定义表空间文件位置
datafile 'c:\myspace.dbf'
--默认一百m
size 100m
--开启自动增长
autoextend on
--每次增长10m
next 10m

2.创建表用户
create user myapp
define pwdxxx
alter user myapp identified by yx123456
--给myapp赋予dba权限(高权限)
grant dba to myapp

3.创建、修改、删除表

3.1关于表
(1)创建表

CREATE TABLE 表名称(
 字段名 类型(长度) primary key,
 字段名 类型(长度),
 .......
);

**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
(2)修改表

增加字段
ALTER TABLE 表名称 ADD(列名 1 类型 [DEFAULT 默认值],列名 1 类型 [DEFAULT 默认值]...)
修改字段
ALTER TABLE 表名称 MODIFY(列名 1 类型 [DEFAULT 默认值],列名 1 类型 [DEFAULT 默认值]...)
修改字段名语法
ALTER TABLE 表名称 RENAME COLUMN 原列名 TO 新列名
删除字段名
--删除一个字段
ALTER TABLE 表名称 DROP COLUMN 列名
--删除多个字段
ALTER TABLE 表名称 DROP (列名 1,列名 2...)

(3)删除表

DROP TABLE 表名称

3.2关于数据

插入数据
INSERT INTO 表名[(列名 1,列名 2...)]VALUES(1,值 2...)
修改数据
UPDATE 表名 SET 列名 1=1,列名 2=2....WHERE 修改条件;
删除数据
DELETE FROM 表名 WHERE 删除条件;
TRUNCATE TABLE 表名称

比较 truncat 与 delete 实现数据删除?
1. delete 删除的数据可以 rollback
2. delete 删除可能产生碎片,并且不释放空间
3. truncate 是先摧毁表结构,再重构表结构

三、JDBC操作Oracle

1、项目前准备(导入一些数据)

创建表


--建立价格区间表
create  table t_pricetable
(
id number primary key,
price number(10,2),
ownertypeid number,
minnum number,
maxnum number
);


--业主类型
create table t_ownertype
(
id number primary key,
name varchar2(30)
);

--业主表
create table t_owners
(
id number primary key,
name varchar2(30),
addressid number,
housenumber varchar2(30),
watermeter varchar2(30),
adddate date,
ownertypeid number
);



--区域表
create table t_area
(
id number,
name varchar2(30)
);

--收费员表
create table t_operator
(
id number,
name varchar2(30)
);


--地址表
create table t_address
(
id number primary key,
name varchar2(100),
areaid number,
operatorid number
);


--账务表--
create table t_account 
(
id number primary key,
owneruuid number,
ownertype number,
areaid number,
year char(4),
month char(2),
num0 number,
num1 number,
usenum number,
meteruser number,
meterdate date,
money number(10,2),
isfee char(1),
feedate date,
feeuser number
);


create sequence seq_account;

--业主类型
insert into t_ownertype values(1,'居民');
insert into t_ownertype values(2,'行政事业单位');
insert into t_ownertype values(3,'商业');

--地址信息--
insert into t_address values( 1,'明兴花园',1,1);
insert into t_address values( 2,'鑫源秋墅',1,1);
insert into t_address values( 3,'华龙苑南里小区',2,2);
insert into t_address values( 4,'河畔花园',2,2);
insert into t_address values( 5,'霍营',2,2);
insert into t_address values( 6,'回龙观东大街',3,2);
insert into t_address values( 7,'西二旗',3,2);

--业主信息
insert into t_owners values(1,'范冰',1,'1-1','30406',to_date('2015-04-12','yyyy-MM-dd'),1 );
insert into t_owners values(2,'王强',1,'1-2','30407',to_date('2015-02-14','yyyy-MM-dd'),1 );
insert into t_owners values(3,'马腾',1,'1-3','30408',to_date('2015-03-18','yyyy-MM-dd'),1 );
insert into t_owners values(4,'林小玲',2,'2-4','30409',to_date('2015-06-15','yyyy-MM-dd'),1 );
insert into t_owners values(5,'刘华',2,'2-5','30410',to_date('2013-09-11','yyyy-MM-dd'),1 );
insert into t_owners values(6,'刘东',2,'2-2','30411',to_date('2014-09-11','yyyy-MM-dd'),1 );
insert into t_owners values(7,'周健',3,'2-5','30433',to_date('2016-09-11','yyyy-MM-dd'),1 );
insert into t_owners values(8,'张哲',4,'2-2','30455',to_date('2016-09-11','yyyy-MM-dd'),1 );
insert into t_owners values(9,'昌平区中西医结合医院',5,'2-2','30422',to_date('2016-10-11','yyyy-MM-dd'),2 );
insert into t_owners values(10,'美廉美超市',5,'4-2','30423',to_date('2016-10-12','yyyy-MM-dd'),3 );


--操作员
insert into t_operator values(1,'马小云');
insert into t_operator values(2,'李翠花');



--地区--
insert into t_area values(1,'海淀');
insert into t_area values(2,'昌平');
insert into t_area values(3,'西城');
insert into t_area values(4,'东城');
insert into t_area values(5,'朝阳');
insert into t_area values(6,'玄武');


--价格表--

insert into t_pricetable values(1,2.45,1,0,5);
insert into t_pricetable values(2,3.45,1,5,10);
insert into t_pricetable values(3,4.45,1,10,null);

insert into t_pricetable values(4,3.87,2,0,5);
insert into t_pricetable values(5,4.87,2,5,10);
insert into t_pricetable values(6,5.87,2,10,null);

insert into t_pricetable values(7,4.36,3,0,5);
insert into t_pricetable values(8,5.36,3,5,10);
insert into t_pricetable values(9,6.36,3,10,null);

--账务表--
insert into t_account values( seq_account.nextval,1,1,1,'2012','01',30203,50123,0,1,sysdate,34.51,'1',to_date('2012-02-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,1,1,1,'2012','02',50123,60303,0,1,sysdate,23.43,'1',to_date('2012-03-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,1,1,1,'2012','03',60303,74111,0,1,sysdate,45.34,'1',to_date('2012-04-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,1,1,1,'2012','04',74111,77012,0,1,sysdate,52.54,'1',to_date('2012-05-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,1,1,1,'2012','05',77012,79031,0,1,sysdate,54.66,'1',to_date('2012-06-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,1,1,1,'2012','06',79031,80201,0,1,sysdate,76.45,'1',to_date('2012-07-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,1,1,1,'2012','07',80201,88331,0,1,sysdate,65.65,'1',to_date('2012-08-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,1,1,1,'2012','08',88331,89123,0,1,sysdate,55.67,'1',to_date('2012-09-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,1,1,1,'2012','09',89123,90122,0,1,sysdate,112.54,'1',to_date('2012-10-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,1,1,1,'2012','10',90122,93911,0,1,sysdate,76.21,'1',to_date('2012-11-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,1,1,1,'2012','11',93911,95012,0,1,sysdate,76.25,'1',to_date('2012-12-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,1,1,1,'2012','12',95012,99081,0,1,sysdate,44.51,'1',to_date('2013-01-14','yyyy-MM-dd'),2 );

insert into t_account values( seq_account.nextval,2,1,3,'2012','01',30334,50433,0,1,sysdate,34.51,'1',to_date('2013-02-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,2,1,3,'2012','02',50433,60765,0,1,sysdate,23.43,'1',to_date('2013-03-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,2,1,3,'2012','03',60765,74155,0,1,sysdate,45.34,'1',to_date('2013-04-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,2,1,3,'2012','04',74155,77099,0,1,sysdate,52.54,'1',to_date('2013-05-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,2,1,3,'2012','05',77099,79076,0,1,sysdate,54.66,'1',to_date('2013-06-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,2,1,3,'2012','06',79076,80287,0,1,sysdate,76.45,'1',to_date('2013-07-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,2,1,3,'2012','07',80287,88432,0,1,sysdate,65.65,'1',to_date('2013-08-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,2,1,3,'2012','08',88432,89765,0,1,sysdate,55.67,'1',to_date('2013-09-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,2,1,3,'2012','09',89765,90567,0,1,sysdate,112.54,'1',to_date('2013-10-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,2,1,3,'2012','10',90567,93932,0,1,sysdate,76.21,'1',to_date('2013-11-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,2,1,3,'2012','11',93932,95076,0,1,sysdate,76.25,'1',to_date('2013-12-14','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,2,1,3,'2012','12',95076,99324,0,1,sysdate,44.51,'1',to_date('2014-01-14','yyyy-MM-dd'),2 );

insert into t_account values( seq_account.nextval,100,1,3,'2012','12',95076,99324,0,1,sysdate,44.51,'1',to_date('2014-01-01','yyyy-MM-dd'),2 );
insert into t_account values( seq_account.nextval,101,1,3,'2012','12',95076,99324,0,1,sysdate,44.51,'1',to_date('2015-01-01','yyyy-MM-dd'),2 );

update t_account set usenum=num1-num0;
update t_account set money=usenum*2.45;
commit;

导入数据

--插入语句
insert into T_OWNERTYPE (ID,NAME) VALUES (1,'居民');
insert into T_OWNERS VALUES (1,'张三丰',1,'1-1','123456',sysdate,1 );
commit;
--修改语句
update T_OWNERS set adddate=adddate-3 where id=1;
commit;
--删除语句
delete from T_OWNERS where id=1;
commit;
--删除语句
truncate table T_OWNERTYPE

2、jdbc操作Oracle

jdbc方法封装

import java.sql.DriverManager;
import java.sql.SQLException;
/**
 * 获取数据库连接
 */
public class BaseDao {
    static {
        //加载驱动
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e){
            e.printStackTrace();
        }
    }

    //String user ,String pwd
    public static java.sql.Connection getConnection() throws SQLException {
        return DriverManager.getConnection("jdbc:oracle:thin:192.168.80.10","myapp","yx123456");
    }

    /**
     * 关闭连接的所有资源
     */
    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();
            }
        }
    }
}

jdbc操作数据库

import com.yinxin.dao.BaseDao;
import java.sql.SQLException;

/**
 *业主dao层操作类
 */
public class OwnerDao {
	/**
	 * 添加方法
	 */
	public static void add(Owners owners) {
		java.sql.Connection conn = null;
		java.sql.PreparedStatement stmt = null;

		try {
			conn = BaseDao.getConnection();
			stmt = conn.prepareStatement("insert into T_OWNERS values(?,?,?,?,?,?,?)");
			stmt.setLong(1, owners.getId());
			stmt.setString(2, owners.getName());
			stmt.setLong(3, owners.getAddressid());
			stmt.setString(4, owners.getHousenumber());
			stmt.setString(5, owners.getWatermeter());
			stmt.setDate(6, new java.sql.Date(owners.getAdddate().getTime()));
			stmt.setLong(7, owners.getOwnertypeid());
			//提交请求执行
			stmt.execute();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			BaseDao.closeAll(null, stmt, conn);
		}
	}
	/**
	 * 更新
	 */
	public static void update(Owners owners) {

		java.sql.Connection conn = null;
		java.sql.PreparedStatement stmt = null;

		try {
			conn = BaseDao.getConnection();
			stmt = conn.prepareStatement("update T_OWNERS set name=?,addressid=?,housenumber=?,"
					+ "watermeter=?,adddate=?, ownertypeid=? where id=?");

			stmt.setString(1, owners.getName());
			stmt.setLong(2, owners.getAddressid());
			stmt.setString(3, owners.getHousenumber());
			stmt.setString(4, owners.getWatermeter());
			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 {
			BaseDao.closeAll(null, stmt, conn);
		}
	}
	/**
	 * 删除
	 */
	public static void delete(Long id) {

		java.sql.Connection conn = null;
		java.sql.PreparedStatement stmt = null;

		try {
			conn = BaseDao.getConnection();
			stmt = conn.prepareStatement("delete from T_OWNERS where id=?");
			stmt.setLong(1, id);
			stmt.execute();
		} catch (SQLException e) {

			e.printStackTrace();
		} finally {
			BaseDao.closeAll(null, stmt, conn);
		}
	}

}

四、数据导入导出(cmd命令操作)

1、整库导入导出

--整库导出命令,添加参数 full=y 就是整库导出
exp myapp/yx123456 full=y
--如果想指定备份文件的名称,则添加 file 参数即可
exp myapp/yx123456 file=文件名 full=y
--整库导入命令
imp myapp/yx123456 full=y
--此命令如果不指定 file 参数,则默认用备份文件 EXPDAT.DMP 进行导入
--如果指定 file 参数,则按照 file 指定的备份文件进行恢复
imp myapp/yx123456 full=y file=water.dmp

2、按用户导出与导入

--按表导出 用 tables 参数指定需要导出的表,如果有多个表用逗号分割即可
exp myapp/yx123456 owner=wateruser file=wateruser.dmp
--按表导入
imp myapp/yx123456 file=a.dmp tables=t_account,a_area
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值