Oracle
优点:数据量,读写速度,安全,稳定
缺点:对Windows支持不友好
安装
安装成功后设置
检测
oracle 自带用户
超级管理员
普通管理员
Oracle的数据类型
1、数值类型
NUMBER:可以表示整数,也可以表示小数
NUMBER(P,S):表示有效位数为P位,小数位数为S位
NUMBER(P):表示一个P位整数
2、字符类型
VARCHAR2:可变长度的字符串(装不下,可自动扩展)
CHAR:表示指定长度的字符串
LONG:表示一个可变的字符串,任何字符串变量都可以赋值给它(纯数据开发用到)
NCHAR和NVARCHAR2:根据字符集确定
3、日期类型
DATE:包含年月日时分秒
TIMESTAMP:时间戳,包含年月日和时分秒毫秒
4、布尔类型
BOOLEAN:TRUE,FALSE,NULL
5、文件类型(不建议数据库内上传文件)
BLOB:二进制数据,可以是图片、音频、视频...
PLSQL Developer
字体调整:工具->首选项
表空间 tablespace:存储在本地计算机硬盘上
1、创建一个新的用户
文件->新建->Command Window
create user lv identified by orcl123;
2、为已创建的用户授权
授予最大的权限(授权必须要用sys账户)
grant dba to lv;
3、创建一个表空间
create tablespace lv datafile 'E:\lv.dbf'size 200m
autoextend on next 10m maxsize unlimited;
datafile:表空间的数据文件存放路径
size:设置初始大小为200M
autoextend:on/off 表示启动/停止自动扩展空间
next 10M:表空间满了,自动扩展10M
maxsize unlimited:无限制扩展
4、为当前用户指定表空间
alter user lv default tablespace lv;
5、修改当前字符集为简体中文
alter session set nls_language = 'SIMPLIFIED CHINESE';
6、创建表
create table person(
name varchar2(10),
gender char(2),
age number(3),
birthday date,
sal number(7,2)
);
7、查看表结构
desc person
8、插入数据(默认不会自动提交事物)
insert into person values('张三','男',20,'7-6月-1990',5000);
9、提交事物
commit;
10、导入文件
@文件路径 文件名
11、查询数据
select name from person where birthday = '7-6月-1990';
// to_char 日期函数(查询时尽量使用)
select name from person where to_char(birthday,'yyyy-mm-dd') = '1990-06-07';
与mysql比较
mysql 是以数据库为单位的
oracle 是以用户未单位的
oracl对字符大小写敏感
主键策略
mysql主键是int类型,自动递增
Oracle数据库没有主键自动递增(没有这个功能)
序列:是oracle提供的用于产生一系列唯一数字的数据库对象。主要用于提供主键值,一般在插入时使用
创建序列
create sequence seq_person start with 100 increment by 1;
插入数据
insert into person(id,name,gender,age,sal)
values(
SEQ_PERSON.NEXTVAL,'王五','女',18,2000
);
伪列与伪表:
伪表:dual,用于计算或进行函数的测试(大多数用于PL/SQL编程)
select 1 + 2 from dual;
select sysdate,to_char(sysdate,'yyyy-mm-dd HH24:mm:ss')from dual;
伪列:
ROWID:是一种数据类型,唯一标识一条记录物理位置的一个id,一般用不到,绝对不会重复。
ROWNUM:查询结果自增编号
select person.*,rownum from person
分页查询
Oracle分页查询(子循环,嵌套查询):
select *from person where rownum <= 3;
select t2.* from
(select t1.*,rownum as rn from employees t1 where 1=1 and rownum <= 当前页*每页显示的记录数)t2
where t2.rn > (当前页-1)*每页显示的记录数;
Mysql分页查询:
select * from person limit ((当前页-1)*每页显示的记录数 + 1),每页显示的记录数;
select *from person limit 1,3;
主键裂缝(主键永远不会重复)解决方法
oracal rownumber
jstl标签库(c:foreach)
jquery 遍历for循环
Oracle JDBC
public class JDBCOracleTest {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
//com.mysql.jdbc.Driver
Class.forName("oracle.jdbc.driver.OracleDriver");
//jdbc:mysql://localhost:3306/数据库名
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","lv","orcl123");
if(conn != null) {
System.out.println("oracle连接成功...");
}
String sql = "insert into person(id,name,gender,age,birthday,sal)"
+ "values(seq_person.nextval,'赵六','女',25,'24/10月/2000',3000)";
stmt = conn.createStatement();
stmt.executeUpdate(sql);
System.out.println("数据插入成功...");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}