--先来一波介绍:

oracle是一款关系型数据库,具有以下特点:

1.支持多用户,大事务量的事务处理

2.在保持数据安全和数据完整性方面性能优越

3.支持分布式数据处理

4.具有可移植性

数据库实例:每个启动的数据库都对应一个数据库实例,由这个实例来访问数据库中的数据。如果把数据库理解为硬盘上的文件,则数据库实例就是通过内存分享运行状态的一组服务器的后台进程。

表空间:每个oracle数据库由若干个表空间组成,用户在数据库中建立的所有内容都被存储在表空间内.一个表空间由多个数据文件组成,但一个数据文件只属于一个表空间.属于数据库的逻辑结构.

 

安装:自行百度(我用的时11g)

window下启动数据库(开启服务):1.OracleServiceSID时Oracle数据库服务,默认自启,否则客户端连接数据库会报错。

                                                  2.OracleOraDb11g_home1TNSListenter,监听服务,监听来自客户端连接的请求(本地连接可不启,使用自带的sqlplus连接。但若是第三方客户端连接,必须开启)

                                                   3.OracleDBConsoleSID:数据库控制台服务

服务器端和客户端的配置可通过相应的配置文件查看:   LISTENER.ora    TNSNAME.ora

 

--oracle常用的数据类型:

1.字符串数据类型

char:固定长度的字符串,默认占用1字节

varchar2:可变长度的字符串

nchar :用来存储Unicode字符集类型,双字节

nvarchar2 :存储国际化可变长度的字符串

 

2.数值数据类型:

number:可以存储证书,负数,零,定点数,精度为38位的浮点数

格式:number(p,s)

p:有效位数,冲左边第一个不为0的数算起,小数点和位数不计入位数。

s:小数点右边数字的位数

使用规则:先精确到小数点s位,若有效位数《=p,则正确。

 

3.日期时间数据类型

date:日期和时间的数据

timestamp:用于存储日期的年月日和时间的时分秒

(若数据库内的日期和我们查询出来的不一样,可能系统环境变量没有设置)

 

4.lob数据类型

clob:存储大量字符数据,大量文字内容的文档

blob:二进制对象,音频视频等

nclob:存储大的nchar字符数据,不大于4gb

 

--伪列,只提供显示操作,不能插入,更新,删除它们的值。

rowid : 不管数据是否重复,每条数据对应的rowid全局唯一

rownum : 主要用于分页,返回一个数值代表行的次序

例如:查询emp表第五条至第10条的记录

--先内层查询使用中止行筛选出结果集,然后在外层查询从结果集找出符合的
select rn,em.empno,em.ename from ( select rownum rn,emp.* from emp where rownum<=10) em where rn>=5;

  

 

--sql语言介绍

1.数据定义语言(DDL) : create   alter truncate  drop

 

2.数据操纵语言(DML) : insert  select   update  delete

--distinct子句筛选结果集中内容全部相同的行,仅保留一行。

   列别名:若别名中包含特殊字符(如空格),则使用双引号括起来.

    使用现有表创建新表:

    --表和数据的完全复制

     create table newStuInfo

     as

     select * from stuInfo;

     --仅要表的结构

     ....where 1<>2;

 

3.事务控制语言(TCL) : commit   savepoint  rollback

    --合适开启事务

       在oracle中,事务在上一次事务结束后,在下一次修改时自动开启

   --合适结束事务

       1)数据被提交

         发出commit    /    执行DDL或DCL语句,事务自动提交      /       与oracle分离,如退出第三方客户端

        2)数据被撤销

          发出rollback指令       /      服务器进程异常结束        /     dba停止会话

 

4.事务控制语言(DCL) grant  revoke

 

 

--sql操作符

       -集合操作符: 将两个查询的结果组合成一个结果集

       union : 两个查询选定的所有不重复的行

        union all  : 就算重复我们也要,all

        intersect  : 返回两个查询都有的行,即两表相同的数据

        minus  : 只返回第一个查询选定,二未被第二个查询选定

 

        -连接操作符(||):  用于将两个或多个字符串合并成一个字符串,或将一个字符串与一个数值合并在一起

 

--sql函数

       to_char():转换位字符串类型

       to_date():转换位日期类型

        to_number():转换为数值类型

 

 

oracle数据库应用:

 

--表空间:数据库逻辑结构的一个重要组件。表空间可以存放各种应用对象,如表,索引。每个表空间由一个或多个数据文件组成.

 使用表空间的目的:对不同的用户分配不同的表空间,对不同的模式对象分配不同的表空间,方便对用户数据的操作,对模式对象的管理。

可以将不同的数据文件创建到不同的磁盘,有利于管理磁盘空间,有利于提高io性能。

语法:       创建表空间:

       create tablespace tablespacename

       datafile 'filename'   size [k/m]  autoextend [off/on]

      --off:不扩容      on:空间用完自动扩容

表空间扩容:     1.alter database  datafile 'filename'   resize  [k/m];

                         2.添加数据文件: alter tablespace tablespacename  add   datafile 'filename'

                                                    size  [k/m]   autoextend  [off/on];

删除表空间: delete tablespace tablespacename including contents;

表空间只读: alter tablespace  tablespacename readonly;

 

 

--用户自定义管理:

语法: 创建用户:create user user

                        identified  by   password

                        default   tablespace tablespacename

                        temporary      tablespace  tablespacename;

 

--数据库权限管理:

系统权限是指授权用户是否可以连接到数据库上及在数据库上可以进行哪些操作。

对象权限是指用户对数据库中的对象所拥有的权限.

 

用户可通过        被管理员授权        或          获取被管理元授权的角色

oracle中系统预定义角色   :   connect:需要连接到数据库上的角色

                                              resource :  创建表,触发器等

                                              dba : 最高权限

 

授权:      grant  权限/角色    to   用户;

               revoke   权限/角色    from   用户;

 

--序列

  序列(sequence) : 用来生成唯一,连续的证书的数据库对象,通常用来生成主键或唯一的值。

创建序列语法:    create  sequence  sequence_name

                           start  with integer  //要生成的第一个序列号

                          increment  by integer   //增量

                          maxvalue  integer    // 最大

                          minvalue   integer  //最小

                          cycle // 到达最大值或最小值后,将继续开始从头开始生成值          nocycle   //默认的选项,当到达最大值或最小值后,将不在继续生成值

                           cache integer   //预先分配一组序列号,保存在内存中.      nocache                               //若忽略这俩,默认缓存20个序列号

nextval  :  第一次获取序列的初始值,再次引用,增加序列值,返回新值

currval   :  序列当前值

 

更改序列: 使用alter sequence 

删除序列: drop sequence  sequence_name

 

--同义词  : 现有对象的别名

当前用户创建私有同义词需要权限:create synnoym                     其它用户模式:create  synnoym

创建私有同义词:        create  synonym  synonym_name     for   object_name;

 

创建公有同义词需要权限  :  create  public  synnoym

     create  public  synnoym  synnoym_name   for  object_name;

删除同义词:     drop  (public )       synnoym  synnoym_name;

 

 

--索引  :   加快对表执行sql的速度.

b树索引:建在重复值少的列,有助于按关键字的升序和降序扫描索引。

create index index_name  on   table_name  (column_list);

 

反向键索引:  对于连续增长的索引列,反向索引可以将索引数据分散在多个索引块,减少i/o瓶颈的发生。

create index index_name_reverse on table(column)   reverse;

位图索引: 最适合数据仓库和决策支持系统

               优点: 大批及时查询,减少响应时间

                         占用空间明显减少
                          配置要求不高

create bitmap index index_bit_name    on  table(column);

 

删除索引:drop index index_name

何时删除:不需要,损坏,批量加载前,加载后重建

重建索引: alter index...rebuild

何时重建:用户表一道新的表空间,应将索引一道指定的表空间

                  包含许多已经删除的项,

 

 

 

--分区表:   一个表分为几个部分,存储在不同的位置。

范围分区:以列的值的范围作为分区的划分条件,将不同的数据放入不同的分区

               create table  分区表名   partition by range (column_name)(

                partition 分区名  values  less than (分区条件),

                   ...

                ) as select * from 原表明;

 

间隔分区:范围分区的自动化,随着数据的增加自动划分更多的分区.

                 create table 分区表明(

                 列..

                  )

                  partition  by range (列)

                  interval  (NUMTOYMINTERVAL(n,'interval_unit'))     //按照括号内定义的间隔分区   (3,'month'):每三个月一分

                  (partition  分区名  values  less than  (分区条件);//不在该区,新建分区

     或者(另一种方式)创建间隔分区的结构和创建范围分区的结构差不多

修改分区表:alter  table  分区表  add  partition 分区表 values less  than (column);

查看几个分区,分区名称:  select * from user_tab_partitions;

 

 

搞完,虽然只是些语法,但都是我自己敲的,不喜别喷。

呃呃呃,貌似也没人看,就当自言自语了。哈哈