Orcl 数据库;

                                    Oracle  数据库
   
一:Oracle 关系型数据库(ORM)分布式集群数据库;
                   
                    二:Oracle 8i--> Oracle 9i   l=internet(网络)
                  
                    三:Oracle11G --> Oracle10g = grid (网络,云计算--虚拟化技术)2002

四:Oracle 作为一个数据库, DB2数据库 -IBM 
    索引技术  存储过程技术  PLSQL 编程技术 ;

五:Oracle 数据库:关系型数据库 , 集群分布式数据库 , 福布斯100家公司98家都在使用 ,
               
    
                    六:Oracle 的标准开发:
                           1:Oracle 数据库 安装好了 Oracle-OraDb10g_home1
   2:Oracle 实例  创建了 orcl;
                           3:创建自己的表空间 用来进行数据的存储没有;
                           4:创建自己的用户 操作自己的表空间 没有;
                            
  

                   七:数据操作方面:(根据业务的不同在 业务层处理业务;)

                                数据操作方面在 ,业务上一般都会有 权限设置; 因为一些数据 是 特定的;

                             1:添加 

                                      添加一般就是 新增数据 ;注意添加的数据类型;

                                    主键  一般设在 不关系业务逻辑的列上, 一般为 id ,因为唯一标识;

                             2:删除

                                删除一般就是根据 指定 id 删除, 如果是 对删除一般都是 id放在一个集合里 去循环依次删除;

                                删除在 业务里面是一个 ,一般为 注意项;因为不会真正删除 用户,只是给 用户 换了一个状态,查询时

                               不体现它,特定 条件 查询在  体现其用户 ;

                             3:更新

                                     更新 ,也就是 修改数据 ,在你修改数据的 时候,注意 :要把你修改的 对象数据全部 查询出来,在把 你想                                         修改的 数据,覆盖掉原来的数据; 不查询全部的话,跟新保存时 会出现只有你  修改的有值,其他的都为

                                    null ;

                                   修改 一般就是 ,回显数据,修改,保存;

  

                             4:查询
                                      根据指定 id,查询;


              八:Oracle 数据库sql语句:
                          1: sql:结构化查询语言,简称sql。
                                结构化查询语言是一种数据库查询和程序设计语言,
用于存储数据以及查询、更新和管理关系数据库系统;

         2:分为:
                                a:DML(数据库操作语言):分别用于添加、修改和删除表中的行。也成为动作查询语句;
   b:DDL(数据库定义语言):其语句包括动词CREATE 和 DROP。在数据库中创建新表或删除表,
         为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字,
   它也是动作查询的一部分;
                           c:DCL(数据库控制语言):他的语句通过 GRANT 和 REVOKE 获得许可,确定当个用户和用户组对数据库对                                         象的访问。

                                                       

                             某些 RDBMS 可用 GRANT 或 REVOKE 控制对表单个例的访问;







          九:Oracle 多表查询  、 连接查询 :
                1:最基础的多表查询:
            select  *  from 表一,表二 ;
多表查询的条数显示格式为:表一条数 * 表二条数 ;

                2:多表查询中的笛卡尔积问题?
         更好的做到保证数据完整,但这也促使很多数据 冗余、重复;
                         利用连接条件的限定  主外键关联  来解决笛卡尔积问题;

                3:如果表太多的话,怎么办 表名太多、乱、繁琐 ?
                         使用内连接查询:(内连接的时候,靠的是主外键关联, 外建表收集外键信息,
                  收集好了之在与主键表关联)
         a:内连接查询特点:内连接查询中,外键的字段值必须是出现在两张表;
                                  是连接查询里查询最快的;
例子:
                                           select  *   from  EMP E
                                          inner join  DEPT D  ON  E.DEPTNO =D.DEPTNO 
                                           WHERE   D.DEPTNO=10 AND  LOWER(E.ENAME) LIKE 's%'  
  
                4:外连接查询:( 主  次 ):为保证连接的两张表中某一张表的数据完整;
                    a:左外连接:(left join)保证左表完整 如果右表没有与之匹配数据以NULL填充;
-- 查询所有部门:
      select  *  from  dept  d  left   join  emp e  on  d.deptno=e.deptno
  -
b:右外连接:(right join)它正好与左外连接相反:
                              select  *  from  emp e  right  join  DEPT D on  e.deptno=D.deptno;


                        
                     注意 : 由外链接尝尝会出现左表数据为NULL的情况,这样通常第一列
又是一张表的主键,所以这样会破坏主键上的索引,查询会很慢
经验 : 所有的右连接都能以左连接代替.能用左连接不用右连接
能用内连接,不用外连接;
                     
 


           十:子查询:
          -- 查询比员工7654工资高和员工7788从事一样工作的人
        select  ename  from  emp e  where
                         sal >(    select  sal  from  emp e where  e.empno=7654)
                       and
                         -job =( select  job from  emp e  where  e.empno=7788)


          十一:连接公式:
                  select   *   from  外键表  外
                      内连接/外连接  join  主键表 主 on 外.外键 = 主.主键 ;


                  注意:一般用内连接,两个表中有一个表中的列与另一个表中的列对应不上为空,
                        那么用外连接,外连接一般都用左外连接;   
          
  1:外连接分为:左外连接:
            右外连接:
 
           十二:自关联:
                     把一张表在关联的时候,起了两个别名,模拟两张表进行了一个连接查询,这种形式叫做自关联查询;    
                         
   

     Oracle 存取  数据:
              数据存在哪里?
           Oracle 数据文件  很多   并且很分散
    system  能创建表空间 ,相当于我们 mysql 中的 root
 
       1:创建表空间 
      CREATE   tablespace    表空间名;
  
   2:指定表空间位置
           datafile '指定空间位置'(不建议放在c盘)


       3:指定表空间大小
           size 30m (30照)
      
       4:关闭自动增长
           autoextend   off;(关闭自动增长 )
             
     5:创建自己的普通用户:
           create   user  用户名;
   
      Oracle当中用户分为 2类:
                     a:普通用户:创建表  增、删、改、查  像scott用户   
                     b:管理员用户:system(数据方面的管理)   sys(运维方面的管理)
                                    我们一般不用sys ,用它只是改 system密码,sys 使用一般很危险;误删除表;  
         
       6:指定密码:
            identified  by    密码(一般为 orcl);


       7:指定操作的表空间:
             default  tablespace 绑定的表空间名字;   


       8:给新用户赋予权限:
             -- connect  角色  登录角色权限;
            -- resource  更为 正式角色  开发角色:    
               grant  connect,resource  to   角色;



  创建表:(切记不要看错你当前的用户)
            1:登录到自己的用户上,创建表:
                    create  table   表名(
  列名 1
  列名 2
  列名 3
  。。。。

)
           删除表:  drop  table  表名;
   
    面试题:删除整表的时候,那种方式比较快?第二种快;
      a:delete from 表名;慢   安全   带事务 ;可以删除单条数;delete 面对的是 表数据;
         -- 这种删除在删除的时候带事务删除,删除之前要备份一下你的数据,因为有回滚;
 
  b:truncate table  表名;快   危险   不带事务 ;不可以删除单条数据,truncate 面对的是表结构;
                 -- 这种删除在删除的时候,没有带事务,一旦删除,没有回滚;
-- 他的删除方式为:先把你的数据文件中数据都删掉,在根据你的表结构创建回来;
 
 
2: Oracle 里的数据类型:
                     varchar2(size) :可变长字符数据;
 
char(size) :定长字符数据 ;


number(p,s) :可变长数值数据;(java中也有number,所有数字类型的父类就是 number)
          表示存储  数字(整数、小数)
                          p: 有效位数;(去掉负号和小数点 从左开始数)
                          s: 代表保留几位小数; 
                     
date :日期型数据类型
                             时、分、秒  也是这个;


                     LONG : 可变长字符数据,最大可达到2 G;


                     clob : 字符数据,最大可达 4 G;


                     raw and  LONG RAW :原始的二进制数据;


                     blob : 二进制数据,最大可达到 4 G;
        
                     bfile :存储外部文件的二进制数据,最大可达到 4 G;


                     rowid :行地址 ;
 


  
注意:编程语言中的统一数据类型   
  数据类型一共分为四类:(就像人的一生,)
                       -- 出生
                      1:数值数据类型  (java 中一般其实是分为两种:数值数据类型和非数值数据类型)
  
                    -- 大一点
                     2;字符数据类型
 
                  -- 小学   
   3:时间和日期数据类型
   
               -- 中学  高中   大学 成人
                4:文件数据类型 (声音  图片  视频)--> 二进制数据类型
  
  
     创建完表之后,操作表:
            1: 添加数据:
                  insert  into   表名
   (第一个括号里面写你要添加的列名;例如:pid、name、。。)
    values
    (第二个括号里面写,对应第一个括号的列名要添加的数据;);
                      
            2: 在执行这种增  删  改  的时候得事务:
               --  提交:
                  commit;
  
               --  回滚事务:
                  ROLLBACK;       


  
            3 :更新语句:
     update   表名  set  修改的列名= 要修改的内容,......
   where   rowid  ='你要修改的记录的id'
                 
4: 获取rowid :  select  rowid,别名 . *  from   表名  别名;




5: 删除数据:(根据指定 id,id相同用 rowid 删除);
        delete   from   表名  where  pid/rowid  ;


6:  Oracle 事务操作:
             Oracle 事务操作  增、删、改   必须显示  提交或回滚  ;
    事务隔离级别:1  2  4 8 数据 : 脏读 、幻读、虚读、不可重复读 ;
                             事务的四大特性: 原子性   一致性   隔离性   持久性 ;
           一旦增删改,不提交事务,当你退出登录,在登录跟没操作之前一样;
    Oracle 数据库有一个事务特性:事务点:如果那条数据你只想添加指定的几条的话,就在那你想添加的条数后面加上一个事务点,
                              SAVEPOINT  a;然后在你不想要的条数后面 ROLLBACK  TO  SAVEPOINT  a; 在提交事务   commit;
           你不想添加的 数据就不会去添加;             
  
            a:Oracle 中事务隔离级别与隔离性:
                     1):读未提交数据:
 允许事务读取未被其他事务提交的变更,脏读、不可重复读和幻读的问题都会出现;
   
                     2):读已提交数据:
                                         只允许事务读取已经被其他提交的变更,可以避免脏读,但不可重复读和幻读问题任然可能出现;
      
            3):可重复读:
                       确保实物可以多次从一个字段中读取相同的值,在这个事务持续期间,禁止其他事务对这个字段进行
           更新,可以避免脏读和不可重复读,但幻读的问题仍然存在;
  
        4):串行化:
                                确保事务可以从一个表中相同的行,在这个事务持续期间,禁止其他事务对该表插入、更新和删除操作,
           所有并发问题都可以避免,但性能十分低下;
 
Oracle 支持的3种事务隔离级别:读未提交数据 、串行化、READ ONLY;
                            Oracle 默认事务隔离级别为:读已提交数据;

            7: Oracle 数据约束:
     1):我们为什么使用约束?
       使用约束可以更好的保证数据的完整性;
   
  2):在 Oracle 数据库中,约束的类型包括:
        a:主键约束(Primary Key)
b:非控约束(Not Null)
c:唯一约束(Unique)
d:外键约束(Foreign Key)
e:检查性约束(Check)

               3):主键约束: 主键约束(Primary Key)
                      一个表只有一个主键约束,主键约束不可重复,
                         主键约束一般设在无关有业务逻辑的列上,一般设为 id列;
                       
      a:例子:建表是直接添加 ;  
       pid  number(10) primary  key;
   
  b:表键成之后添加主键约束:
     alter  table 表名 add constraint 起一个名  primary  key (pid);   


         Oracle  PL/SQL 编程语言:
          1: 假如 A 公司 是  mysql 数据库,B  公司是  Oracle 数据库,他们的数据交互,表结构不一样;
              这是就用到了   数据迁移技术;
                        这就用到了 PL/SQL ,PL/SQL 具有一定的业务逻辑;   
     
                      
      2:解决 PL/SQL 报错问题:
                        PL/SQL  也有着非常丰富的异常处理机制;
                           1):预定义异常:
                                   
   


猜你喜欢

转载自blog.csdn.net/wangtao3333/article/details/79986115
今日推荐