Oracle笔记3

2009-07-16 21:28

1、oracle数据库连接方式
    1 sqlplus 进行连接 【oracle client】
       tnsnames.ora 里面的配置信息
                     【服务器信息: 协议、端口、ip/主机名】
                     【数据库信息: sid (services_name)】
    2 jdbc链接 不需要 oracle-client
      thin链接
            jdbc:oracle:thin:host:port:sid

使用jdbc连接数据库没有统一规则, jdbc:____:____:host:__:___?____
    具体链接词的写法与规则与jdbc驱动有关

 

    3 ODBC链接
           需要oracle-client
           需要使用 tnsnames.ora 中的配置信息
-------------------------------------------------------------------
2、oracle - sqlserver

     oracle    -----    [1 用户名 ]
               ----schema
                       --- table
                       --- view
                        ....
              ----security
                      --- user
               ---- store
                      ---tablespace

    sql-server              [1 database 名称 2 data file ]
            -----database
                 --- table
                 --- view
                 --- user
存储的角度上来看 sql-server的database 等同于 oralce 的 tablespace
组织              sql-server的database 等同于 oralce 的 schema
安全              sql-server的database 等同于 oralce 的 Instance

================================================================

1 拿到连接
2 使用连接构造 Statement [执行语句]
【Statement statement= connect.createStatement()     】
3 执行Statement并且返回结果[有结果则返回,没结果不管]
       1、执行Sql: statement.executexxxxxx;
    2、服务结果集
          while(rs.next){
     String sx=rs.getString(?)   
    }

2: Oracle
   1   create index
         数据库表中的 pk(primary key) 是有索引的
   Index 类型
      B-tree 缺省的 类型 其他的用B-tree 索引
    bitmap Indexes      "性别 ,男、女、其他" 取值比较少的字段 用位图索引
    Function-based indexes     建立基于某一个、一组函数运算的结果进行索引
    Partitioned indexes      基于分区表
    Domain indexes            基于Domain-域
   权限: CREATE ANY INDEX
   语法: Create    [BitMap] Index index_name on table_name(column_1,func_column_2);
          drop index index_name
  
   2   create view
       VIEW 实际上就是一条SELECT 语句,可以作为表一样使用它,
    如果该select语句本身就非常慢,做成视图也不会有效提高速度。
   
    、
   
   权限: CREATE ANY VIEW
   语法: Create view view_name as
                   一条SELECT 语句
       Drop view view_name
   ---------------------------------------------------------------------------
  
  
   3   create sequence
        create sequence sequence_name
         start with 0
         increment by 1
         nocache
         nocycle;
         删除序列 drop sequence sequence_name
         修改序列   alter sequence increment by 1
         nocache
         nocycle;
         使用sequence 当前值   sequence_name.currval
   使用sequence 的值   sequence_name.nextval
  
-------------------------------------------------------------------------------------
1 查询使用 select  
2 select 后面使用的 from 的内容 是一个“集合” ,该集合可以是一个 Table、View、Select结果、多个Select结果的联合
3 select 无穷嵌套

select
   字段
from
   集合----- 子查询 --subQuery
where
   条件
group by 字段 -- 需要使用到聚合函数   -- 字段必须存在于Select中
order by 字段 【ASC/DESC】 --字段必须存在在集合中【desc不可以省略,asc为缺省】

order by 排序条件由前向后,优先级递减
--------------------------------------------
select 选择结果的合并
交集:intersect
SQL> select username from www where userid<8 intersect select username from www
where userid<16;

USERNAME
--------------------------------
_A7
mmzzxx
提交完成

合集:union
SQL> select username from www where userid<8 union select username from www whe
re userid<16;
-------------------------------------------------user_score
user_id   user_name   user_score user_type
1            Jam      90           A
2            Jbm      60           A
3            Jcm      80           B
4            Jdm      90           B
5            Jem      20           B
6            Jfm      40           A
7            Jim      70           A
---------------------------------------------- add_score
user_id      add_score          add_type
   7            20              少数民族
   5            30              少数民族+体育特长
   3             5              三好学生
   1            15              奥数
-------------------------------------------------------
查询:
    所有加分学生的原始分数;
select t1.user_score-t2.add_score,t1.user_name from
(select user_id,user_score,user_name from user_score where user_id in( select user_id from add_score))t1,
    (select user_id,add_score from add_score) t2
where t1.user_id=t2.user_id

查询:
    计算user_type 为 A 的 没有加分的学生的及格率 -- count(1)、count(*)
    1 查询加分的学员的user_id   --- A
    2 查询所有学生中,user_id 不在集合 A 中的记录 --B
    3 在B集合中查询 user_type = A 的学生 ---C
    4 在集合C中统计分数不小于60的人数 --结果 X
    5 在集合C中统计所有的人数 --结果 Y
    6 结果   select X/Y ×100 ||'%' from dual;


查询:
    计算加分学生的用户类型(user_type)的比例   -- count(1)、count(*)
   


---count(1)    对第一个字段进行统计【一般情况下第一个字段都是一个number类型主键】
---count(*)    1: 对所有字段进行统计 2:自动采用已建索引的字段进行统计
   

-------------------------------------------------------
oracle 层次查询

select 字段 from 集合
start with   条件 1
connect by   条件 2【 在条件中使用 prior 修饰字段】

===============================================

driverName:oracle.jdbc.driver.OracleDriver
URL:jdbc:oracle:thin:@<machine_name><:port>:sid(不带参数)
URL:jdbc:oracle:thin:用户名/密码@<machine_name><:port>:sid(带参数)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值