Oracle数据库操作
Oracle 常用数据类型
Oracle 中常用的操作符
Oracle 常用函数
Oracle 中的序列 和 Oracle 中的查询
Oracle 中的视图
Oracle 中的触发器
Oracle 中的存储过程
oracle常用的数据类型
字符型、数字型、日期型、lob类型
字符型
VARCHAR2 (n):可变长度的字符,最大长度4000bytes,即1<=n<=4000,VARCHAR2(10),表示占10个字节的字符串,当长度小于10字节时,不会自动补空格,占实际大小,大于则报错
数字类型
NUMBER(P,S):P为整数位+S小数位数.例如NUMBER(5,3),表示整数位数为2,小数位数为3的数字,如25.112
日期类型
data缺省格式为DD-MON-YY,timestamp同样,精确到纳秒
LOB类型
BLOB:二进制数据,最大长度4G. CLOB:字符数据,最大长度4G,一般音视频类就BLOB,文献就CLOB
oracle常用的操作符
比较操作符
=、!=、<、>、<=、>=、BETWEEN AND (检查是否在两个值之间)
[NOT] IN(与列表中的值匹配)
[NOT] LIKE(匹配字符模式, * _ 通配符)
[NOT] IS NULL(检查是否为空)
逻辑操作符
and or not
如果and和or混用,and的优先级高于or,所以尽量的使用括号来表明优先级
集合操作符
UNION(联合) 返回两个查询选定不重复的行。( 删除重复的行 )
UNION ALL(联合所有) 合并两个查询选定的所有行,包括重复的行。
INTERSECT(交集) 只返回两个查询都有的行。
MINUS(减集) 在第一个查询结果中排除第二个查询结果中出现的行。 (第一 – 第二)
连接操作符
使用 || 连接字符串
SELECT (‘wwj’ || ‘hello’) as str1 FROM dual;
oracle常用的函数
字符串函数 (subsrt 和 replace 和 decode)
SELECT SUBSTR(ch, pos, length) as str1 FROM dual
pos代表等于0或1时,都是从第一位开始截取
length代表要截取的字符串的长度
如果pos填写为负数,为倒着截取
SELECT REPLACE(‘wwj’,‘j’,‘q’) as str1 FROM dual
将字符串中包含j的替换成q
decode(条件,值1,返回值1,值2,返回值2) 等同于 if elseif
数学函数 (round 和 trunc )
SELECT ROUND(n, int) as num1 FROM dual
int位置代表保留几位小数,并且四舍五入
SELECT TRUNC(n1, n2) as num1 FROM dual
n2代表保留几位小数,并不四舍五入
转换函数(tochar 和 todate)
SELECT to_char(SYSDATE,‘Day, HH12:MI:SS’) FROM dual; SELECT TO_CHAR(99,’$99.9999’) FROM dual;
SELECT to_date(‘2089-5-7 17:09:37’,‘yyyy-mm-dd HH24:MI:SS’) from dual
其它函数
nal(expr1,expr2)代表 oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。
比如:select ename,NVL(comm, -1) from emp; 如何comm没值,则取-1
Oracle 中的序列 和 Oracle 中的查询
mysql数据中提供了数据库自增的选项,但是oracle中没有提供,只有利用序列实现主键自增的功能
sequence 就是序号,也可以说是序列
序列创建的语法
CREATE SEQUENCE seq1
INCREMENT BY 1 – 每次加几个
START WITH 1 – 从1开始计数
NOMAXvalue – 不设置最大值
NOCYCLE – 一直累加,不循环
CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE
查看与操作序列信息
select * from user_sequences;
Select * from all_sequences;
使用序列名.CurrVal:返回 sequence的当前值
使用序列名.NextVal:增加sequence的值,然后返回 增加后sequence值
select seq1.currval from dual
重新初始化seq的序号(可以使用修改)
alter sequence seq1 increment by 1
删除seq drop sequence seq1
rownum分页
SELECT ROWNUM , dept.* FROM dept
SELECT * FROM
(
SELECT ROWNUM , dept.* FROM dept
WHERE ROWNUM < endNum
)
WHERE ROWNUM > startNum
计算起始位置和结束位置 startNum = (pageNo - 1) * pageSize endNum = (pageNo * pageSize) + 1
查询
分组查询使用group by 和 having 进行过滤条件筛选
子查询也就是条件中加入查询语句
连接查询,内连接(利用where或者inner join),左和右连接(left join 和 right join),自连接(树菜单结构)