
Oracle
Dark丶照萤映雪
生活明朗,万物可爱!
展开
-
oracle sqlloader 的简单使用
sqlldr简单使用原创 2022-10-15 18:27:53 · 1817 阅读 · 1 评论 -
oracle 获取表字段注释
-- 获取表字段注释SELECT T.* FROM USER_COL_COMMENTS T WHERE T.TABLE_NAME = 'EMP';原创 2020-10-19 10:59:00 · 312 阅读 · 0 评论 -
oracle 获取表注释
-- 获取表注释SELECT T.* FROM USER_TAB_COLUMNS T WHERE T.TABLE_NAME = 'EMP';原创 2020-10-19 10:58:07 · 195 阅读 · 0 评论 -
oracle 回退表数据
-- 查看某条记录插入数据的时间 select t.*,t.rowid from emp1 t; insert into emp1(empno,ename,hiredate,job,sal,deptno) values('8888','广西外国语',to_date('2020/4/19','yyyy/MM/dd'),'公司小职员','5000','10'); select...原创 2020-04-19 10:36:01 · 1785 阅读 · 2 评论 -
oracle 查看被锁的表和解锁
-- 查看锁表进程SQL语句一 select sess.sid,sess.serial#,lo.os_user_name,ao.object_name,lo.locked_mode from v$locked_object lo,dba_objects ao, v$session sess where ao.object_id = lo.object_id and lo.sess...原创 2020-04-19 10:28:50 · 201 阅读 · 0 评论 -
oracle 行列转换
SELECT empno,ename,SUM(DECODE(deptno,'10',sal,0)) 部门10,--这里使用max,min都可以SUM(DECODE(deptno,'20',sal,0)) 部门20,SUM(DECODE(deptno,'30',sal,0)) 部门30,SUM(DECODE(deptno,'40',sal,0)) 部门40,SUM(DECODE(dept...原创 2018-12-21 20:11:26 · 131 阅读 · 0 评论 -
oracle 外连接
左外连接:左表A与左表B左外连接时,A表显示全部数据(符合与不符合都显示),B表只显示符合条件的数据1、select e.empno,e.ename,d.deptno,d.dname from emp e left outer join dept d on e.deptno = d.deptno;2、select e.empno,e.ename,d.deptno,d.dname from...原创 2018-12-21 18:56:25 · 450 阅读 · 0 评论 -
查询表定义的主键
SELECT col.column_nameFROM user_constraints con,user_cons_columns colWHERE con.constraint_name=col.constraint_name and con.constraint_type='P' and col.table_name='EMP';原创 2018-12-09 12:38:39 · 1506 阅读 · 0 评论 -
日期格式RR和YY的区别
RR日期型格式的算法为:1.如果当前年份的最后两位数(即不包括世纪)为0—49,并且指定的年份的最后两位数也为0—49,则返回的日期在本世纪。2.如果当前年份的最后两位数(即不包括世纪)为0—49,并且指定的年份的最后两位数为50—99,则返回的日期在上一世纪。3.如果当前年份的最后两位数(即不包括世纪)为50—99,并且指定的年份的最后两位数为0—49,则返回的日期在下一世纪。4.如果当...转载 2018-12-09 12:28:10 · 1970 阅读 · 0 评论 -
oracle 触发器
触发器类型:DDL触发器:执行DDL语句时触发数据库级触发器:在发生打开、关闭、登录、退出数据库时触发DML触发器:在对表或视图执行DML语句时触发。DML触发器(语句级触发器、行级触发器、instead of触发器)语句级触发器:无论受影响的行数是多少,都只执行一次语句级触发器例子:create or replace trigger trg_emp after insert or upda...原创 2018-03-14 11:32:08 · 308 阅读 · 0 评论 -
oracle EXISTS、IN、ANY、ALL
>ANY:比子查询返回结果中的最小值(不包括最小值)大的数据。select ename,sal from emp where deptno > any(select deptno from dept);=ANY:与子查询返回结果中的最大最小范围内的数据(x<=ANY<=Y)(相当于IN操作符)。select ename,sal from emp where ...原创 2018-12-21 21:50:36 · 277 阅读 · 0 评论 -
关于group by子句使用的注意事项
1、select empno,avg(sal) from emp where avg(sal)>8000 group by empno; 会报错误:ORA-00934: 此处不允许使用分组函数 解决方法:使用having子句,select empno,avg(sal) from emp group by empno having avg(sal)>4000;...原创 2018-12-11 20:01:05 · 446 阅读 · 0 评论 -
oracle 复制表
1、复制整张表的全部字段的数据CREATE TABLE copy_emp AS SELECT * FROM emp;2、复制这张表的部分字段的数据CREATE TABLE copy_emp AS SELECT empno, ename FROM emp;原创 2018-12-23 11:27:27 · 1437 阅读 · 0 评论 -
oracle drop、truncate和delete的区别
(1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。 TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。(2)表和索引所占空间。 当表被TRUNCATE 后,这个表和索引所占用...转载 2018-12-23 12:03:17 · 483 阅读 · 0 评论 -
oracle 批量插入、删除、修改数据
1、批量插入数据insert all into copy_dept(deptno,dname) values('50','50') into copy_dept(deptno,dname) values('60','60') select 1 from dual;2、批量删除数据 链接3、批量修改数据update copy_dept set ...原创 2018-12-23 12:30:07 · 661 阅读 · 0 评论 -
oracle 查看表的完整约束
select dbms_metadata.get_ddl('TABLE','EMP') from dual;注意:dbms_metadata.get_ddl('TABLE','EMP')中的表名称必须是大写,如EMP原创 2018-12-23 16:01:51 · 4934 阅读 · 0 评论 -
oracle SQL语句执行顺序
1、from2、where3、group by 4、having5、select6、order by原创 2018-12-31 11:19:42 · 938 阅读 · 1 评论 -
Oracle 使用游标修改或删除数据
declare -- 定义游标 cursor mycur is select empno,job from empnew for update;begin for record in mycur loop dbms_output.put_line(''||record.empno||'------'||record.job); if record.job='董事长' ...原创 2018-03-19 23:37:34 · 5687 阅读 · 1 评论 -
Oracle 循环游标
-- 查找员工号,姓名,职位declare -- 定义游标 cursor mycur is select empno,ename,job from emp; v_empno emp.empno%type; v_ename emp.ename%type; v_job emp.job%type;begin -- 打开游标 open mycur; -- 提取数据 ...原创 2018-03-19 23:36:42 · 212 阅读 · 0 评论 -
Oracle 隐式游标SQL
-- 根据用户输入的员工号,更新指定员工的工资,比如工资涨100declarebegin update empnew set sal = sal + 100 where empno = &eno; if sql%found then dbms_output.put_line('成功修改员工工资'); commit; else dbms_output...原创 2018-03-19 23:35:56 · 299 阅读 · 0 评论 -
oracle 同义词
同义词是现有对象的一个别名,有两种类型(公有同义词和私有同义词)a.简化SQL语句b.隐藏对象的名称和所有者c.提供对对象的公共访问1.公有同义词(由一个特殊的用户组public所拥有)create public synonym table_name for hc.emp;2.私有同义词(由创建它的用户所有)create or replace synonym emp_syn for hc.em...原创 2018-02-20 22:15:19 · 596 阅读 · 0 评论 -
oracle 序列
序列是用于唯一的、连续序号的对象序列既可以升序,也可以降序1.创建序列:create sequence seq_empstart with 1minvalue 1maxvalue 999999999increment by 1nocyclecache 102.查询当前用户的序列:select * from user_sequences;3.返回序列的下一个值select seq_emp...原创 2018-02-20 22:27:43 · 226 阅读 · 0 评论 -
oracle 视图
视图以经过定制的方式显示来自一个或多个表的数据视图可以视为“虚拟表”或“存储的查询”创建视图所依据的表称为“基表”视图的优点有: 提供了另外一种级别的表安全性 隐藏的数据的复杂性 简化的用户的SQL命令 隔离基表结构的改变 通过重命名列,从另一个角度提供数据1.创建视图:create view emp_dept_view asselect e.empno,e.ena...原创 2018-02-20 23:00:19 · 542 阅读 · 0 评论 -
oracle 索引
索引是与表相关的一个可选结构用以提高 SQL 语句执行的性能减少磁盘I/O使用 CREATE INDEX 语句创建索引在逻辑上和物理上都独立于表的数据Oracle 自动维护索引1.索引类型(唯一索引,组合索引,反向键索引,位图索引,基于函数的索引)2.创建索引:create index idx_emp_ename on emp(ename);3.创建唯一性索引:create unique inde...原创 2018-02-20 23:04:18 · 196 阅读 · 0 评论 -
oracle nvl和nvl2的区别
1.nvl(value1,value2):value1为null时,返回value2;否则返回value1select nvl(1,2) nvl from dual;select nvl(null,2) nvl from dual;2.nv2(value1,value2,value3):value1不为null时,返回value2;否则返回value3select nvl2(1,2,3) nvl2...原创 2018-02-22 22:39:07 · 770 阅读 · 0 评论 -
oracle 时间与字符串相互转换
to_char(date,format):时间转字符串select to_char(sysdate,'YYYY"年"MM"月"DD"日"') 时间转字符串 from dual;to_date(str,format):字符串转时间select to_date('2018-02-23 15:33:21','yyyy-MM-dd HH24:mi:ss') 字符串转时间 from dual;...原创 2018-02-23 15:42:47 · 16783 阅读 · 0 评论 -
oracle 存储过程
1.存储过程示例1(使用过程参数in)create or replace procedure emp_pro(emp_no in number)as empname varchar2(20);begin select ename into empname from emp where empno = emp_no; dbms_output.put_line('员工姓名:'|| em...原创 2018-02-24 17:14:47 · 215 阅读 · 0 评论 -
oracle 函数
1.不带参数的函数示例create or replace function fun_hello return varchar2asbegin return '广西外国语学院';end;调用select fun_hello from dual;begin dbms_output.put_line(fun_hello);end;结果:2.带参数的函数示例create or rep...原创 2018-02-24 17:24:42 · 165 阅读 · 0 评论 -
Oracle 函数大全
-- ************************* 数学函数 *******************************-- abs(x) 返回绝对值select abs(-100),abs(100) from dual;-- sign(x) 返回正负值 数字,若为正值返回1,负值返回-1,0返回0select sign(100),sign(-100),sign(0) from dua...原创 2018-03-18 20:39:12 · 647 阅读 · 0 评论 -
Oracle预定义的21个系统异常类型
命名的系统异常产生原因ACCESS_INTO_NULL未定义对象CASE_NOT_FOUNDCASE 中若未包含相应的 WHEN ,并且没有设置 ELSE 时COLLECTION_IS_NULL集合元素未初始化CURSER_ALREADY_OPEN游标已经打开DUP_VAL_ON_INDEX唯一索引对应的列上有重复的值INVALID_CURSOR在不合法的游标上进行操作INVALID_NUMBER...转载 2018-03-19 22:05:27 · 384 阅读 · 0 评论 -
Oracle 非预定义异常
-- 删除dept表中指定部门的信息-- 分析:dept和emp表之间具有主外键的关系,当删除指定部门的信息时,应确保该部门下没有员工declare -- 1.定义非预定义异常 e_fk exception; -- 2.把Oracle错误与异常建立关联 -- -2292 违反外键约束的错误编号 pragma exception_init(e_fk,-2292);begin...原创 2018-03-19 22:42:10 · 358 阅读 · 0 评论 -
Oracle 预定义异常
declare v_name emp.ename%type; v_sal emp.sal%type:=&salary;begin select ename,sal into v_name,v_sal from emp where sal=v_sal; dbms_output.put_line(v_name||'工资是:'||v_sal); exception ...原创 2018-03-19 22:45:25 · 257 阅读 · 0 评论 -
Oracle 自定义异常
/*自定义异常:如果你想在某个特定时间发生时间向应用程序的用户发出一些警告信息。而事件本身不会抛出Oracle内部异常,这个异常是属于应用程序的特定异常,那么就需要自定义异常用户定义的异常错误是通过显式使用raise语句来触发,当引发一个异常错误时,控制就转向到exception块异常错误部分,执行错误处理代码步骤: 1.在声明部分定义异常 <异常情况> excepti...原创 2018-03-19 22:59:01 · 1000 阅读 · 0 评论 -
Oracle 异常处理函数SQLCODE和SQLERRM
/*异常处理函数 异常处理函数用于取得Oracle错误号和错误信息,其中函数SQLCODE用于取得错误号,SQLERRM用于取得错误信息 另外,通过使用内置过程raise_application_error,可以在创建子程序(过程、函数、包)时自定义错误号和错误信息*/declare v_empno emp.empno%type:=&empno; v_ename em...原创 2018-03-19 23:13:00 · 21673 阅读 · 0 评论 -
Oracle 显式游标
-- 查找员工号,姓名,职位declare -- 定义游标 cursor mycur is select empno,ename,job from emp; v_empno emp.empno%type; v_ename emp.ename%type; v_job emp.job%type;begin -- 打开游标 open mycur; -- 提取数据 ...原创 2018-03-19 23:34:01 · 154 阅读 · 0 评论 -
Oracle 带参数游标
-- 参数游标declare cursor mycur(dno number) is select empno,ename,job,deptno from emp where deptno=dno;begin for record in mycur(10) loop dbms_output.put_line('员工编号:'||record.empno||' 员工名称:'||r...原创 2018-03-19 23:34:58 · 1059 阅读 · 0 评论 -
Oracle 让别人连接到自己的数据库
一、服务器端配置(自己的数据库) 1.打开安装目录下的 D:\app\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora的配置文件 2.HOST将原来的localhost改为hc-PC(自己电脑的主机名)二、客户端配置(别人的数据库) 1.打开安装目录下的 D:\app\product\11.2.0\dbhome_1\N原创 2018-01-31 17:54:48 · 5269 阅读 · 0 评论