Oracle数据库笔记整理

Oracle数据库

函数

大小写转换

SELECT ename, LOWER(ename) FROM emp;
SELECT ename, UPPER(ename) FROM emp;
复制代码

截取

SELECT ename, SUBSTR(ename,1,2) FROM emp;
复制代码

四舍五入

SELECT ROUND(3.54159) FROM dual;
SELECT ROUND(3.14159,3) FROM dual;
复制代码

日期转字符

SELECT TO_CHAR(SYSDATE, 'yyyy-MM-dd HH:mi:ss') FROM dual;
SELECT TO_CHAR(SYSDATE, 'yyyy-MM-dd HH24:mi:ss') FROM dual;
复制代码

字符格式转换

SELECT TO_CHAR(sal, '99,999.9999') FROM emp;
复制代码

字符转日期

SELECT TO_DATE('2019-06-11 15:08:00','yyyy-MM-dd HH24:mi:ss') FROM dual;
复制代码

解决NULL空值问题

SELECT ename, NVL(comm,0) FROM emp;
复制代码

表链接

  • 左链接:left join,返回左表中全部的数据和右表中知足条件的数据
  • 右链接:right join,返回右表中全部的数据和左表中知足条件的数据
  • 内链接:inner join,返回左表和右表同时知足条件的数据

分页

在MySQL分页LIMIT,在ORACLE不支持LIMIT,引入ROWNUM伪列 如:查询某表前5条数据sql

SELECT * FROM 表名 WHERE ROWNUM <=5;
复制代码

可是ROWNUM不支持> >= =,故须要使用子查询实现查询。 如:数据库

SELECT ename, deptno
FROM (SELECT ename, deptno, rownum AS rn FROM emp) t 
WHERE t.rn > 10
复制代码

视图

视图就当作一张虚标,数据来源于真实的表。函数

建立视图语法:ui

CREATE VIEW  视图名
AS  SQL语句;
复制代码

视图须要建立视图权限,登录管理员帐号执行受权命令spa

GRANT CREATE TABLE, CREATE VIEW TO scott;
复制代码

数据字典

表、索引、视图等信息储存在ORACLE数据库的表中,这些表称为数据字典。code

序列

自增加

  • MySQL:auto_increment
  • ORACLE:不支持auto_increment

实现自增加原理对象

获取当前的id,自增1 id++,做为下一条数据的id插入。 id为主键,id实现自增加。索引

建立序列语法:rem

CREATE SEQUENCE 序列名;
复制代码

序列自己是一个对象,有两个属性。每次调用nextval,会自增加1个string

例子: 建表

CREATE TABLE weibo(
    id NUMBER PRIMARY KEY,
    user_id VARCHAR2(20),
    content VARCHAR2(1024),
    count NUMBER
);
复制代码

建序列

CREATE SEQUENCE seq_weibo;
复制代码

怼数据

INSERT INTO weibo(id, user_id, content, count)
VALUES (seq_weibo.nextval, 'admin', '21213131ea', 1);
INSERT INTO weibo(id, user_id, content, count)
VALUES (seq_weibo.nextval, 'admin', '21213131ea', 1);
复制代码

观察id,每次调用nextval会自增加1个。

SELECT * FROM weibo;
复制代码

索引

目的:为了加快查询效率

建立主键时,会默认建立一个主键的索引。查询索引字段效率高,非索引字段默认全表扫描。

单字段建立索引

CREATE INDEX 索引名
ON 表名(字段名)
复制代码

例:

CREATE INDEX index_user_gameid
ON t_user_fee(gameid);
复制代码

多字段建立索引

CREATE INDEX 索引名
ON 表名(字段1, 字段2, ...)
复制代码

例:

CREATE INDEX index_user_gameid_msisdn
ON t_user_fee(msisdn, gameid);
复制代码

注意: 一旦给索引的字段添加了函数,则该索引失效。

相关文章
相关标签/搜索