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(带参数)