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,'王五','女'182000
);

伪列与伪表:

伪表: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();
				}
			}
		}
		
	}
}

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页