oracle的学习1-oracle的介绍和DDL操作&DML操作

Oracle笔记

 

ORACLE 数据库具有以下特点:

(1)支持多用户、大事务量的事务处理

(2)数据安全性和完整性控制

(3)支持分布式数据处理

(4)可移植性

 

.数据库

Oracle 数据库是数据的物理存储。这就包括(数据文件 ORA 或者 DBF、控

制文件、联机日志、参数文件)。其实 Oracle 数据库的概念和其它数据库不一

样,这里的数据库是一个操作系统只有一个库。可以看作是 Oracle 就只有一个

大数据库。

 

3.数据文件(dbf)

数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,

真正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件

组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,

就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才

行。

4.表空间

表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻

辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在

逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为 system 表空间)。

每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件

(datafile)。一个数据文件只能属于一个表空间。

 

注:表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这

些表数据放到一个或者多个数据文件中。

 

由于 oracle 的数据库不是普通的概念,oracle 是有用户和表空间对数据进行

管理和存放的。但是表不是有表空间去查询的,而是由用户去查的。因为不同用

户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!

 

5.用户

用户是在表空间下建立的。用户登陆后只能看到和操作自己的表, ORACLE

的用户与 MYSQL 的数据库类似,每建立一个应用需要创建一个用户。

 

(三)创建表空间

create tablespace waterboss

datafile 'd:\waterboss.dbf'

size 100m

autoextend on

next 10m ;

解释:

waterboss 为表空间名称

datafile 用于设置物理文件名称 ,,不指定的话,会是默认的路径.

size 用于设置表空间的初始大小

autoextend on 用于设置自动增长,如果存储量超过初始大小,则开始自动扩容

next 用于设置扩容的空间大小

 

(四)创建用户

create user wateruser

identified by root

default tablespace waterboss ;

wateruser 为创建的用户名

identified by 用于设置用户的密码

default tablesapce 用于指定默认表空间名称

 

(五)用户赋权

grant dba to wateruser ;

给用户 wateruser 赋予 DBA 权限后即可登陆

 

 

四、表的创建、修改与删除

(一)创建表

语法:

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

 

实例:    

 

创建业主表:

 

create table t_owners

(

id number primary key,

name varchar2(30),

addressid number,

housenumber varchar2(30),

watermeter varchar2(30),

adddate date,

ownertypeid number

);

 

 

(二)修改表

1. 增加字段语法:

ALTER TABLE 表名称 ADD(列名 1 类型 [DEFAULT 默认值],列名 1 类型

[DEFAULT 默认值]...)

为业主表增加两个字段,语句:

-- 追加字段

ALTER TABLE T_OWNERS ADD

(

REMARK VARCHAR2(20),

OUTDATE DATE

)

 

2. 修改字段语法:

ALTER TABLE 表名称 MODIFY(列名 1 类型 [DEFAULT 默认值],列名 1 类型

[DEFAULT 默认值]...)

修改两个字段的类型,语句:

-- 修改字段

ALTER TABLE T_OWNERS MODIFY

(

REMARK CHAR(20),

OUTDATE TIMESTAMP

)

 

 

3. 修改字段名语法:

ALTER TABLE 表名称 RENAME COLUMN 原列名 TO 新列名

语句:

ALTER TABLE T_OWNERS RENAME COLUMN OUTDATE TO EXITDATE

 

4. 删除字段名

-- 删除一个字段

ALTER TABLE 表名称 DROP COLUMN 列名

-- 删除多个字段

ALTER TABLE 表名称 DROP (列名 1,列名 2...)

语句:

-- 删除字段

ALTER TABLE T_OWNERS DROP COLUMN REMARK

 

 

 

(三)删除表

语法:

DROP TABLE 表名称

 

五、数据增删改

(一)插入数据

语法:

INSERT INTO 表名[(列名 1,列名 2,...)]VALUES(值 1,值 2,...)

 

执行 INSERT 后一定要再执行 commit 提交事务

向业主表插入数据:

insert  into  T_OWNERS  VALUES  (1,' 张 三 丰

',1,'2-2','5678',sysdate,1);

语句中的 sysdate 是系统变量用于获取当前日期,点击齿轮的图标后,再点击下

图的绿色图标,此图标为 commit

我们再次录入一条数据,语句如下:

insert into T_OWNERS VALUES (2,'赵大侃

',1,'2-3','9876',sysdate,1);

commit;

 

语句中的 sysdate 是系统变量用于获取当前日期,点击齿轮的图标后,再点击下

图的绿色图标,此图标为 commit

我们再次录入一条数据,语句如下:

insert into T_OWNERS VALUES (2,'赵大侃

',1,'2-3','9876',sysdate,1);

commit;

 

 

在命令行页面插入数据的话  如果出现数据库乱码 这样解决

 

步骤一:开始-运行-输入regedit-回车进入注册表,依次单击HKEY_LOCAL_MACHINE--->SOFTWARE ---> ORACLE--->KEY_OraDb11g_home1(不同版本的Oracle显示的都不太一样,但都会包含home这个单词),找到“NLS_LANG”查看数值数据是否为:“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,如果不是就将它设置为“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”。

步骤二:设置完注册表后,接下来设置我们的环境变量,计算机(右键) --->属性--->高级系统设置--->高级--->环境变量--->新建,个人建议新建用户变量,变量名输入:“NLS_LANG”,变量值输入:“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”。点击确定即可,到此我们就设置完了。

SIMPLIFIED CHINESE_CHINA.ZHS16GBK  这里是个空格

3

步骤三:下面就看下我们的效果,关闭PLSQL,重新启动,中文果然出现了,这样就处理完成了,如图:

 

二)修改数据

语法:

UPDATE 表名 SET 列名 1=值 1,列名 2=值 2,....WHERE 修改条件;

执行 UPDATE 后一定要再执行 commit 提交事务

需求:将 ID 为 1 的业主的登记日期更改为三天前的日期

update T_OWNERS set adddate=adddate-3 where id=1;

commit;

 

(三)删除数据

语法 1

DELETE FROM 表名  WHERE  删除条件;

执行 DELETE 后一定要再执行 commit 提交事务

需求:删除业主 ID 2 的业主信息

delete from T_OWNERS where id=2;

commit;

 

语法 2

TRUNCATE TABLE 表名称

比较 truncat delete 实现数据删除?

1. delete 删除的数据可以 rollback

2. delete 删除可能产生碎片,并且不释放空间

3. truncate 是先摧毁表结构,再重构表结构

 

  • delete from 记录是一条条删的
  • truncate 一次性删掉全表
  • 区别:delete from 后面可以写条件,truncate 不可以

 

六、JDBC 连接 ORACLE

(一)创建工程,引入驱动包

需要oracleJDBC链接包

 

 

导入lib

加载驱动

获取数据库连接

关闭资源

七、数据导出与导入

当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于

计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影

响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库

中全部或部分数据丢失。因此当发生上述故障后,希望能重构这个完整的数据库

该处理称为数据库恢复,而要进行数据库的恢复必须要有数据库的备份工作。

 

 

(一)整库导出与导入

整库导出命令  (在控制台中的目录下输入这样的命令,就会把文件导出到这个位置,导入的话 应该也是相同的原理)

 

exp wateruser/root full=y

添加参数 full=y 就是整库导出

 

执行命令后会在当前目录下生成一个叫 EXPDAT.DMP,此文件为备份文件。

如果想指定备份文件的名称,则添加 file 参数即可,命令如下

exp system/root file=文件名 full=y

 

整库导入命令

imp wateruser /root full=y

 

此命令如果不指定 file 参数,则默认用备份文件 EXPDAT.DMP 进行导入

如果指定 file 参数,则按照 file 指定的备份文件进行恢复

imp wateruser /root full=y file=water.dmp

 

 

(二)按用户导出与导入

按用户导出

 

exp wateruser /root owner=wateruser file=wateruser.dmp

 

按用户导入

imp wateruser /root file=wateruser.dmp from user=wateruser

 

(三)按表导出与导入

按表导出

 

exp wateruser/root file=a.dmp tables=t_account,a_area

 

tables 参数指定需要导出的表,如果有多个表用逗号分割即可

按表导入

imp wateruser/root file=a.dmp tables=t_account,a_area

猜你喜欢

转载自blog.csdn.net/qq_35248268/article/details/81388328