oracle函数

oracle常用函数积累

佐手、 提交于 2020-02-05 08:54:21
--oracle常用函数积累-- --1、字符串长度:LENGTH ,语法: CONCAT(string) --示例 select LENGTH('AA_BB') from dual;--结果:5 --2、字符串连接:CONCAT,语法: CONCAT(string1,string2) --示例 select CONCAT('AA','_BB') from dual;--结果:AA_BB --简单点,用双竖线即可 select 'AA'||'''-'''||'BB' from dual;--结果:AA'-'BB,单引号要用''转义 --3、字符串替换:REPLACE,语法:REPLACE(string,search_str[,replace_str]); --示例 select REPLACE('AA_BB','BB','CC') from dual;--结果:AA_CC select REPLACE('AA_BBBB','BB') from dual;--结果:AA_ --4、字符串截取:SUBSTR,语法: SUBSTR(string,start_position,[length]),string 源字符串,start_position开始位置(从0开始), length 可选项,截取的个数 --示例 select SUBSTR('AA_BB',0,2) from dual;-

Oracle数据库环境搭建和select查询重要点

随声附和 提交于 2020-02-05 02:19:00
Oracle数据库环境搭建和查询重要点 环境搭建 安装OracleXE112_Win64 安装plsqldeveloperxx(64) DBMS 数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称 DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。大部分 DBMS 提供数据定义语言DDL(Data Definition Language)和数据操作语言 DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。 DDL DDL包括了create创建;drop删除;alter修改;rename重命名;truncata截断; DML 包括了insert插入;delete删除;update更新;select查询; DCL 包括了grant授权;revoke回收权利;commit提交事务;rollback回滚事物; 表 表是从属于用户的 ,查询表(用户名.表名),当前用户查询自己的表时,用户名.可以省略,其他用户查询 别的用户表 ,不能省略,同时必须存在权限。 表结构 表由表名、字段(名称+类型+约束)、记录 组成 三范式 在设计数据库时,存在行业的标准,这个标准也称为条件,即范式 Normal Form

Oracle(创建视图)

◇◆丶佛笑我妖孽 提交于 2020-02-04 21:25:16
概念: 视图:所谓视图就是提取一张或者多张表的数据生成一个映射,管理视图可以同样达到操作原表的效果,方便数据的管理以及安全操作。 视图其实就是一条查询 sql 语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储查询结果的一个虚拟表。视图来源于表,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整性约束。 视图的存储 与表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间。 视图的优势: 1. 信息隐藏 比如 s_emp 表中有工资,可以创建视图,隐藏工资信息。(可以配合权限,让某个用户只能查看视图,不能查看表。) 2. 使复杂查询变得简单。 3. 数据独立 4. 相同数据的不同展示形式。 视图的分类: 1. 简单视图 2. 复杂视图 比较: 简单视图 复杂视图 涉及到的表个数 1 1 个或多个 包含函数 不包含 包含 包含组数据 不包含 包含 通过视图使用 DML 可以 不可以 视图的创建: CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [

Oracle数据库中的case函数和decode函数

情到浓时终转凉″ 提交于 2020-02-04 20:58:24
Oracle数据库中的case函数和decode函数 1、case函数 case函数有两种格式: (1)格式一 CASE exp1 WHEN exp11 THEN exp12 WHEN exp21 THEN exp22 . . . . WHEN expN1 THEN expN2 ESLE expM END 说明: 该函数的返回值为:当exp11的值和exp1相等时,返回exp12的值,当exp21的值和exp1相等时,返回exp22的值,……,当expN1的值和exp1相等时,返回expN2的值,如果exp1和WHEN后面的所有表达式的值都不相等,则返回expM的值。 举例: SQL > select empno , ename , job , sal , 2 case job when 'CLERK' then sal * 1.2 3 when 'SALESMAN' then sal * 2 4 else sal 5 end AS SAL_NEW 6 from emp ; EMPNO ENAME JOB SAL SAL_NEW ---------- ---------- --------- ---------- ---------- 7369 SMITH CLERK 800 960 7499 ALLEN SALESMAN 1600 3200 7521 WARD SALESMAN

Oracle 中记录用户登录信息

陌路散爱 提交于 2020-02-04 14:55:38
我们可以使用 Oracle Audit 函数来记录用户登录信息,但是如果开放了 Audit 函数将会使 Oracle 性能下降,甚至导致 Oracle 崩溃。那我们如何才能记录用户登录信息呢?其实我们可以通过建立触发器的方式来实现。方法如下: 1. 用 sys 用户登录 Oracle 2. 创建记录用户登录信息的表 CREATE TABLE LOG$INFORMATION ( ID NUMBER(10), USERNAME VARCHAR2(30), LOGINTIME DATE, TERMINAL VARCHAR2(50), IPADRESS VARCHAR2(20), OSUSER VARCHAR2(30), MACHINE VARCHAR2(64), PROGRAM VARCHAR2(64), SID NUMBER, SERIAL# NUMBER, AUSID NUMBER ) / 3. 创建一个 Sequence,作为登录信息的主键 CREATE SEQUENCE LOGIN_SEQ minvalue 1 maxvalue 9999999999 start with 1 increment by 1 cache 20 / 4. 创建触发器,记录用户登录信息 CREATE OR REPLACE TRIGGER LOGIN_RECORD_TR AFTER logon ON

oracle——笔记——1-3内容

社会主义新天地 提交于 2020-02-04 00:40:40
select * from emp; --employee 员工表 select * from dept; --department 部门表 select * from salgrade;-- salary grade 工资等级表 ---emp empno 员工编号 ename 员工姓名 job 工作/工种 mgr manager上级编号 hiredate 入职日期 sal salary 工资 comm 奖金/津贴 deptno 部门编号 --dept deptno 部门号 dname 部门名称 loc 所在地 --salgrade grade 等级 losal lowest salary 最低工资 hisal high salary 最高工资 --------------------------- --数据查询语句 select from where --查询emp表中,所有员工的姓名、工资、部门号 select ename,sal,deptno from emp; --查询emp表中,工资大于1500 的员工信息 select * from emp where sal > 1500; --查询emp表中,上级是7698 的员工姓名和津贴 select ename,comm from emp where mgr = 7698; ---列的别名 select ename,sal

oracle——笔记——4内容

半城伤御伤魂 提交于 2020-02-04 00:40:23
--外连接 作用:查询不满足连接条件的数据 select * from emp e,dept d where e.deptno = d.deptno; select * from dept; select * from emp e,dept d where e.deptno(+) = d.deptno; ---右外 insert into emp(empno) values(1122); select * from emp e,dept d where e.deptno = d.deptno(+); ---左外 select * from emp e,dept d where e.deptno(+) = d.deptno(+); ---不存在这种写法 ----外连接的另外一种写法: select * from emp e left outer join dept d on e.deptno = d.deptno; ---left 显示左边表不满足条件的数据 ---outer 可以省略 ---on 只能写连接条件,其他条件 写到where里 select * from emp e right outer join dept d on e.deptno = d.deptno; ---右外 select * from emp e full outer join dept d on e

oracle——数据表的数据查询——oracle高级函数

99封情书 提交于 2020-02-03 23:57:23
sql查询 oracle高级函数 create table yuangong ( id number, name varchar2(50), zhiwei varchar2(50), age number, sex varchar2(20) ) tablespace test insert into yuangong values(1,'周磊01','操作工',21,'男'); insert into yuangong values(2,'周磊02','操作工',21,'女'); insert into yuangong values(3,'周磊03','操作工',22,'男'); insert into yuangong values(4,'周磊04','操作工',24,'女'); insert into yuangong values(5,'周磊05','操作工',26,'男'); insert into yuangong values(6,'周磊06','操作工',24,'女'); insert into yuangong values(7,'周磊07','操作工',29,'男'); insert into yuangong values(8,'周磊08','操作工',22,'女'); insert into yuangong values(9,'周磊09','操作工',27

2020+win10亲测+QT5.14+OCI驱动编译以及问题解决+基本使用

旧城冷巷雨未停 提交于 2020-02-03 03:58:10
1.QT5.14下OCI驱动编译完整步骤 1.安装qt的时候手动选择安装源码资源(默认不安装Source的) 2.进入QT安装目录下E:\Qt5.14\5.14.0\Src\qtbase\src\plugins\sqldrivers\oci 双击用qtcreator打开oci.pro文件 进行如下图片内对oci.pro的修改 前提准备: 找到本地oracle客户端的目录 例如:C:\Oracle\instantclient_11_2 (温馨提示:oracle客户端的版本不能比oracle服务端的低) 3.构建项目产生如下错误:’OCIBindByPos2’ was not declared in this scop 4.双击错误可以进入错误显示在qsql_oci.cpp文件的1559行 5.错误原因以及解决方式 新的OCIBindByPos2 ( ) 函数和以前的OCIBindByPos ( ) 函数产生出入 新版本OCIBindByPos2 ( ) 函数第九个参数的数据类型是ub4* 旧版本OCIBindByPos ( ) 函数第九个参数的数据类型是ub2* 故此进行一个强制类型转化,将新版的第九个参数改位ub2*类型即可,同时函数名也要改为旧版本。 6.进行项目构建,产生的驱动程序在qt所在盘符下的plugins目录下的sqldrivers目录中 注意并不是在qt的目录下

碎点篇—— oracle 语法和练习

岁酱吖の 提交于 2020-02-02 03:47:19
返回主目录 --select from where having group by order by 的正确执行顺序为: --from-->where-->group by-->having-->select-->order by -------------------------------------------------------- --1、去重:distinct 必须放在开头,多字段,每个字段不一样才去重 --2、条件比较: -- =,!=,<>,<,>,<=,>=,any,some,all -- is null, is not null -- between x and y -- in(list) , not in (list) -- like _,%,escape '\' _\%escape '\' -- not, (and,or) and优先级高 -- 按照单个列排序 -- order by col -- 降序排列:order by col desc -- 升序排列:order by col asc -- 按多个列排序:(优先级) -- order by col1 desc(asc) , col2 desc(asc) --1.全集:union all --2.并集:union (去重) --3.交集:intersect --4.差集:minus --5.不懂怎么用