创库:在 oracle 中创建数据库通常叫创建表空间,并需要创建该表空间用户,并赋予该用户权限
--创建表空间
create tablespace jwxt datafile 'jwxt.ora' size 500m
autoextend on --自动扩展
next 50m maxsize 20480m --每次自动扩展50M,最大可到20480M
extent management local;
--创建表空间默认用户
create user jwxt identified by 888 default tablespace jwxt quota 500m on jwxt;
--赋予其所有权限
grant all privileges to jwxt;
--拥有connect权限的用户只可以登录Oracle;拥有resource权限的用户只可以创建实体,不可以创建数据库结构;拥有全部特权,是--系统最高权限,只有DBA才可以创建数据库结构。
创表:oracle 数据库使用序列 sequence 完成数据库自增操作,通常每张表都会创建一个序列
create sequence USER_SEQ
maxvalue 10000000
创表
create table "user"
(
id int
constraint USER_PK
primary key,
name varchar2(255)
)
在 oracle 中表名和字段名不能使用 TAB 上面的 ~(飘)而是使用双引号,值必须使用单引号。同时使用序列(sequence)的下一个值方法获取下一个值。每次使用该方法后该序列的下一个值会自动按照步长增加。
insert into "user"(ID,NAME) values (USER_SEQ.nextval,'张三')
Oracle 分页查询必须使用行号 rownum,每次查询的行号都在变化,所以一般使用 子查询完成,SQL 如下
select * from ( select rownum r_, row_.* from ( select * from student order by id ) row_ where rownum <=Y ) where r_>=X ;
X:起始索引位置。
Y:结束索引位置。
jdbc 操作时 url 前的驱动方式有两种,下面进行说明。最后的 sid 称为实例名,一般每个数据库服务都会有一个实例名。每个用户下有自己所属的数据库。查询也是针对该数据库。
同时需要导入相应的依赖:
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.2.0.1</version>
</dependency>
案例:
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@192.168.75.128:1521:xe", "jwxt", "888");
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select * from \"user\"");
while (resultSet.next()) {
System.out.println(resultSet.getString(2));
}
resultSet.close();
statement.close();
connection.close();
thin 和 oci 的 url 写法上的区别:
1)从使用上来说,oci必须在客户机上安装oracle客户端或才能连接,而thin就不需要,因此从使用上来讲thin还是更加方便,这也是thin比较常见的原因。
2)原理上来看,thin是纯java实现tcp/ip的c/s通讯;而oci方式,客户端通过native java method调用c library访问服务端,而这个c library就是oci(oracle called interface),因此这个oci总是需要随着oracle客户端安装(从oracle10.1.0开始,单独提供OCI Instant Client,不用再完整的安装client)
3)它们分别是不同的驱动类别,oci是二类驱动, thin是四类驱动,但它们在功能上并无差异。
4)虽然很多人说oci的速度快于thin,但找了半天没有找到相关的测试报告。