orcle介绍
Oracle的关系数据库是世界第一个支持SQL语言的数据库。Oracle属于甲骨文公司,是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。
2013年,甲骨文已超越 IBM ,成为继 Microsoft 后全球第二大软件公司。Oracle是一个大型的数据库的,里面的提供了用户很多便捷的操作,但是由于过于庞大以及收费,所以小
型公司都会选择小型的数据库。
Oracle与MySQL的区别
1.Oracle是大型数据库而Mysql是中小型数据库,同时Mysql是开源的而Oracle价格非常高。
2.主键上面Mysql一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,Mysql将自动增长;Oracle没有自动增长类型,
主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可。
3.单引号的处理 MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。ORACLE不能使用引号(包括单双引 号)将数字括起来。双引号被用来将包含特定字符或者空格的列别名括起来。
4.翻页的SQL语句的处理 MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数;ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能用ROWNUM<100, 不用 ROWNUM>80
5.数据类型不一样,ORACLE有独特的数据类型,例如CLOB类型。
6.空字符的处理 MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL 或空字符,需要把它改成一个空格的字符串。
7.在函数的使用里,ORACLE有更多的函数方法使用。
ORACLE的数据类型
char,varchar2,nchar,xvarchar2,number,date,timestamp,blob,clob,bfile
其中nchar,xvarchar2是使用的unicode字符集,blob是二进制对象,clob是字符串对象,bfile是二进制存储在操作系统文件中。
number是可以整数也可以浮点数,number(p,s) 前一个是数据(从非零开始),后一个是小数点后面多少位。
伪列ROWID和ROWNUM,ROWID存储着表行的存储地址,使用它可以快速的定位到表中某一行。ROWID格式,数据对象编号+文件编号+块编号+行编号。
ROWNUM是查询结果集的一个序号。使用伪列可以像使用普通列一样,但是没有在表中存储。
sql语言
ddl:create,alter,drop,truncate
dml:insert,update,delete,select
tcl:commit,savepoint,rollback
dcl:grant,revoke
sql语法
在使用条件查询的时候,一般不推荐使用 > 符号,因为在使用这个条件时,数据会出现错误,查询的时候,如果不满足条件会进行抛弃,然后在下一行比较,但是ROWNUM不会改变。例如:10行数据,如果使用ROWNUM>5来查询后,发现没有查询数据,因为在第一行比较时发现ROWNUM=1<5,不满足条件,抛弃,那么下一行将还是ROWNUM=1,所以是空的。也就是先有结果,再有ROWNUM。
orcle进行分页就很麻烦:
1 | select * from ( |
排序是在rownum赋值之后。
利用现有表创建新表
1 | create table new_t as select * from old_t; |
可以使用检查点来回滚到那个检查点
1 | //一整套流程,必须这么做 |
操作符与函数
算术操作符,逻辑操作符,比较操作符和MySQL一样,例如+,-,*,/,&,|,>,<
但是集合操作符有新的,union是并集,minus是差集,intersect,例如:
1 | //没有出现重复的数据行 |
连接字符串和数字使用 || 方法,mysql中使用concat()。
函数:单行函数,分组函数,分析函数。
sqrt()算出平方根,lower()转换成小写字符串,to_char()转换成字符串,to_date()转换成带格式的时间,to_number()转换成数字,nvl()对空值进行操作,decode()对值进行转换
1 | select to_char(sysdate,'YYYY"年"MM"月"dd"日"') from dual; |
表空间
表空间:永久性,临时性,撤销。
使用表空间给不同的子系统创建不同的表空间,这样会增加效率和性能。
1 | create TABLESPACE name datafile 'filename' [size][autoextend(off|on)]; |
调整表空间
1 | alter TABLESPACE name add datafile 'filename' size 80M; |
删除表空间
1 | drop TABLESPACE name [including contents]; |
角色权限
角色是带有以些权限的名称,有connect,resource,dba,select,update…
授予权限
1 | grant privileges or role to user; |
撤销权限
1 | revoke privileges or role from user; |
序列
在mysql中使用主键,里面有自动增长的选择,但是在orcle里面没有这个操作,需要使用序列来进行同样的功能。
语法:
1 | create sequence name start_with val //开始序列值 |
通过序列的伪列来访问值:nextval 下一个值,currval 当前值。