一、安装数据库
1.Oracle 数据库安装包下载之后,会出现了两个 zip 压缩包名称分别为 win64_11gR2_database_1of2.zip
以及
win64_11gR2_database_2of2.zip
;
2.将两个压缩包解压到同一个文件夹中,找到 setup 应用程序安装包;
3.按照安装包的顺序安装 Oracle 数据库;
4.安装完成之后,配置电脑的环境变量:
变量名:TNS_ADMIN
变量值: D:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN
(该目录为 Oracle 数据库)
变量名:NLS_LANG
变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
5.在 CMD 中,输入以下命令:
sqlplus / as sysdba
6.创建数据库,其文件存储在 F:\Workspaces\Tablespaces\DATA.DBF
:
create tablespace DATA logging datafile 'F:\Workspaces\Tablespaces\DATA.DBF' size 256m autoextend on next 256m maxsize 10240m extent management local;
7.创建数据库临时文件,其文件存储在 F:\Workspaces\Tablespaces\DATA_TEMP.DBF
:
create temporary tablespace DATA_TEMP tempfile 'F:\oracle\DATA_TEMP.DBF' size 256m auToextend on next 256m maxsize 10240m extent management locacl;
8.创建用户 xjlrs
及密码,并与上述两个文件形成映射关系:
create user xjlrs identified by xjlrs default tablespace DATA temporary tablespace DATA_TEMP;
9.给用户 xjlrs
授权:
CREATE USER xjlrs IDENTIFIED BY xjlrs;//创建用户及设置密码
grant dba,connect,resource to xjlrs;/授权
10.将 F:\oracle\test.dmp
数据库文件导入数据库(在 CMD 命令行中执行):
imp xjlrs/xjlrs file='F:\oracle\test.dmp' full=y;
11.(可选)使用 sql developer 可视化工具: 完成之后,下载 sql developer 并安装,之后打开软件,并输入在 Oracle 中刚创建的用户及密码,选择数据库,登录完成之后,成功。
注意:
若在 sql developer 中出现 ORA-12545 错误,则需要重启当前电脑或者修改 D:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN 文件夹中listener.ora 文件的 host 变量如下:
… host = [计算机全名] …
12.导入数据库(在 CMD 命令行中执行):
imp username/password file=[文件目录]/[文件] full=y;
二、相关名词定义
1.DDL(数据库定义语言):包括 create、alter、drop 等。
添加列:
alter table tableName add ( 列名 数据类型[默认值][约束],列名 数据类型...);
删除列:
alter table tableName drop column(列名1,列名2);
修改列名:
alter table tableName rename column oldname to newName;
修改列的其它属性:
alter table tableName modify(列名 数据类型[默认值][约束],列名 数据类型,...);
添加约束:
alter table tableName add 约束名;
删除约束:
alter table tableName drop constraint 约束名;
定义约束,同时给约束添加名称:
create table t_test(
id number(10) constraint pk_test primary key,name varchar(20)
);
删除表:
drop table tableName;
序列:
概念:用以给某列生成自动增长的(不可重复)一组值
语法:create sequence 序列名[可选参数]
创建序列,默认从1开始,每次递增1;increment by m
:每次递增m
maxvalue n; //最大值是n
minvalue m;//最小值是m
start with ... //默认从1开始
increment by ... //默认递增1
cycle/nocycle //默认不循环
no cache/cache value //默认有缓存,缓存为20
序列使用:
序列名.nextval //获取下一个可用值
序列名.curval //获得当前会话中的序列值(至少执行一次 nextval)
序列删除: drop sequence 序列名
注意
序列一旦被创建,可以在任意表中使用;序列中的值一旦产生,不能重复获取
视图:
概念:是一种虚表(相对的,视图所依赖的表叫基表)
注:视图相当于从表中抽取出的逻辑上相关的数据集合。
创建视图:
create view viewname as select 语句
视图使用(主要是用来做查询的,没有性能优化):
select * from viewname;
删除视图:
frop view viewname;
注:删除只是删除视图的定义,不会删除基表中的数据
查看当前用户的所有视图:
select * from user_views;
查看视图定义语句:
select dbms_metadata.get_ddl('VIEW','viewname') from dual;
select text from all_viewa where view_name='viewname';
索引
为指定的表的指定列创建索引:提高查询效率
创建索引:
create index index_name on tablename(columnname);
使用索引:根据索引指定的列查询时,oracle 数据库会自动应用索引,提高查询效率。
删除索引:
drop index indexname;
注意:
索引类似于字典的目录,用于提高查询效率
索引索引并不是建得越多越好(占用存储空间,添加/修改/删除数据的同时,需要维护索引,消耗时间、内存和 CPU 的资源)
在主键和唯一键上,oracle 会自动创建索引
2.DML(数据操作语言):用于检索或修改数据。包含 insert 、update、delete
注意:
delete
操作:注意子表外键,将外键设置为 null,或删除子表中的数据。
3.DQL(数据查询语言):使用保留字 select、where、order by、group by、having 等。
4.DCL(数据控制语言):用于定义数据库用户权限。关键字 alter password、grant、revoke、create synonym
5.TPL(事务处理语言):确保被 DML 语句影响的表的所有行及时得以更新。
begin transaction,commit,rollback
6.事务
概念:事务是一个原子操作。是一个最小执行单元,由一个或多个 SQL 组成,这 n 条 sql 的执行规则是要么全部执行成功,只要有一个执行失败,就都必须失败。
事务边界:
开始:上一个事务结束后的第一个 DML 语句,开始执行第一个 sql ,事务开启。
提交:
1> 显示提交:commit
2> 隐式提交:rollback
,正常退出命令— sqlplus exit
回滚:
1> 显示回滚:rollback
2> 隐式回滚:非正常退出(断电,宕机)
事务的隔离级别:
无事务
读未提交:read-uncommitted
提交读:read-committed
(oracle 默认支持)
可重复读:repeatable-read
序列化读:serializable-read
(oracle 支持)
事务的传播属性:
PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务。父事务与子事务只要有一个失败,就全部回滚。
PROPAGATION_SUPPORTS -- 支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY -- 支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW -- 新建事务,如果当前存在事务,把当前事务挂起。父事务与子事务相互独立运行,互不影响。
PROPAGATION_NOT_SUPPORTED -- 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER -- 以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED -- 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
TransactionDefinition接口中定义了五个表示隔离级别的常量:
TransactionDefinition.ISOLATION_DEFAULT:使用后端数据库默认的隔离界别,MySQL默认采用的REPEATABLE_READ隔离级别,Oracle默认采用的READ_COMMITTED隔离级别。
TransactionDefinition.ISOLATION_READ_UNCOMMITTED:最低的隔离级别,允许读取,允许读取尚未提交的的数据变更,可能会导致脏读、幻读或不可重复读。
TransactionDefinition.ISOLATION_READ_COMMITTED:允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。
TransactionDefinition.ISOLATION_REPEATABLE_READ:对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。
TransactionDefinition.ISOLATION_SERIALIZABLE:最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就说,该级别可以阻止脏读、不可重复读以及幻读。但是这将严重影响程序的性能。通常情况下也不会用到该级别。
7.CCL(指针控制语言):
declare cursor,fetch into,update where current 用于对一个或多个表单单独进行的操作