Oracle回顾
夏木炎
个人学习工作记录(只对自己负责),不接受批评,不保证准确,爱看则看。。。
展开
-
Oracle子查询举例
--组函数,将多行数据输入函数,得到一行结果--avg求平均值,产生小数部分select avg(s_age)from student;--关于空值,避开空值,只统计有具体值的行。select avg(comm) from emp;--count计数器,统计有多少行--统计有多少个员工select count(ename) from emp;--关于空值,避开空值,只统计有具体原创 2018-01-22 11:07:47 · 298 阅读 · 0 评论 -
Oracle异常处理举例
--异常处理--预定义异常--实验no-data-found异常--EXCEPTION,放在执行块的最下面 --WHEN 异常信息 THEN --发生该异常的处理代码; --WHEN 异常信息 THEN --发生该异常的处理代码; --WHEN OTHERS THEN 概括了除以上异常列表外的所有异常 --dbms_output.put_line(原创 2018-01-23 09:36:34 · 1368 阅读 · 0 评论 -
Oracle函数的使用举例
--函数 --创建最简单的函数 --如果函数不带有参数,则定义时省略函数名后面的括号,调用时不省略。 CREATE OR REPLACE FUNCTION re5 RETURN NUMBER IS reval NUMBER;BEGIN reval := 5; RETURN reval;END add2num;--调用函数 DECLARE re NUMBER;BE原创 2018-01-23 09:36:51 · 246 阅读 · 0 评论 -
Oracle存储过程
--存储过程--语法上来说,比函数少了返回值CREATE OR REPLACE PROCEDURE pro_add(in1 NUMBER, in2 NUMBER, out1 OUT NUMBER) ASBEGIN out1 := in1 +原创 2018-01-23 09:37:06 · 190 阅读 · 0 评论 -
Oracle包的使用
--包--例子:创建一个计算器包--包的定义:像抽象类,只有定义CREATE OR REPLACE PACKAGE cal AS FUNCTION addfun(num1 NUMBER, num2 NUMBER) RETURN NUMBER; FUNCTION subfun(num1 NUMBER, num2 NUMBER) RETURN NUMBER; FUNCTION mul原创 2018-01-23 09:37:19 · 480 阅读 · 0 评论 -
Oracle创建scott用户
1.找到scott.sql脚本 C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql2.在sqlplus中,用sys用户登录,执行脚本 conn sys/密码 as sysdba @C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scot原创 2018-01-20 09:07:00 · 5338 阅读 · 1 评论 -
DDL数据定义语言举例
--创建的关键字 create 跟着对象类型 table 对象的名称 表名 用括号将列名包裹--列名 数据类型 规定数据的大小 分隔符用逗号create table student ( s_id number(8), s_name varchar2(50), s_age number(4), s_sex varchar2(6),原创 2018-01-20 09:24:33 · 493 阅读 · 0 评论 -
DQL数据查询语句举例
--SELECT 列名 FROM 表名;select sal+300,ename,deptno from emp;--加入运算符select (2-2)*3 from dual;--关于空值的处理,空值和数值运算的结果还是空值--列出员工每月的总收入(工资+奖金)select ename,sal+comm from emp;--列的别名select ename 姓名,sal 工资原创 2018-01-20 09:30:19 · 444 阅读 · 0 评论 -
Oracle与字符相关的函数举例
--字符相关函数--转小写SELECT lower(ename) FROM emp;--转大写SELECT upper('abCDfg') from dual;--首字符转大写,其它转小写select initcap('abcDE') from dual;--拼接字符串select concat('abc','defg') from dual;select 'abc'||'def原创 2018-01-20 09:33:23 · 339 阅读 · 0 评论 -
Oracle常用数学相关函数举例
--常用数学函数--四舍五入--默认留下整数部分select round(4.233) from dual;select round(4.633) from dual;--可以指定小数部分的长度select round(4.233456,2) from dual;select round(4.237456,2) from dual;--截断--默认留下整数,不管后面selec原创 2018-01-20 09:45:51 · 625 阅读 · 0 评论 -
Oracle日期相关函数举例
--日期相关函数--获取当前系统时间,不要加括号select sysdate from dual;--时间值可以直接计算,默认加天数select sysdate+500 from dual;select sysdate+(1/24/6) from dual;--计算间隔多少个月select ename,months_between(sysdate,hiredate) from原创 2018-01-20 09:49:29 · 442 阅读 · 0 评论 -
Oracle类型转换相关函数举例
--日期转字符串select to_char(sysdate) from dual;select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual;select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss day') from dual;select to_char(sysdate,'fmyyyy-mm-d原创 2018-01-20 09:55:25 · 326 阅读 · 0 评论 -
Oracle处理查询空值问题
--通用函数--nvl,判断是否为null,如果为空,返回值1,不为空,返回原值select nvl('a','为空值') from dual;--解决之前留下来的工资加奖金得到空值的问题select ename,sal,comm,sal+nvl(comm,0) 总收入 from emp;--nvl2,判断是否为null,如果不为空,返回值1,为空,返回值2select nvl2(n原创 2018-01-20 09:59:55 · 5315 阅读 · 0 评论 -
Oracle通用函数和条件函数
--语法: nullif(表达式1,表达式2)select nullif(2+2,4) from dual;--返回空select nullif('ABC','ABC') from dual;--返回空select nullif('你好','你好') from dual;--返回空--由上可知,表达式1和表达式2相等,返回值为空select nullif(2+3,4) from dua原创 2018-01-20 10:08:38 · 560 阅读 · 0 评论 -
Oracle游标举例
--游标--显式游标--显式游标的使用方式--4个步骤--定义游标--语法:cursor 游标名 is 查询子句--打开游标--语法: open 游标名--获取结果(遍历游标)--语法:fetch 游标名 into 变量--关闭游标--语法:close 游标名DECLARE CURSOR cur_stu IS SELECT * FROM student;原创 2018-01-23 09:36:17 · 293 阅读 · 0 评论 -
Oracle条件分支语句和循环语句举例
--流程控制--条件分支BEGIN IF 2 = 2 THEN dbms_output.put_line('aaa'); END IF;END;BEGIN IF 1 = 2 THEN dbms_output.put_line('aaa'); ELSE dbms_output.put_line('bbb'); END IF;END;DECL原创 2018-01-23 09:35:50 · 845 阅读 · 0 评论 -
Oracle相关子查询和分级查询举例
1.相关子查询--类似not in的查询条件会受到子查询中null值的影响,通常会排除子查询中的空值SELECT ename FROM emp WHERE empno NOT IN (SELECT mgr FROM emp WHERE mgr IS NOT NULL); --有一种查询,出现了本部门,本公司之类的字眼,通常需要用到相关子查询--输出员工的姓名,工资,和本部门的平均原创 2018-01-22 17:06:22 · 811 阅读 · 0 评论 -
DML数据操纵举例
--insert 向表中插入数据--基本语法 insert into 表名 (字段名) values (对应的字段值)--向指定的字段写入值,其它的字段为空,字段的顺序无关,只要字段值对应insert into student (s_id,s_name) values(8,'小李');--省略形式 insert into 表名 values (对应的字段值)和数据表中的顺序对应,不能省略原创 2018-01-22 17:11:57 · 290 阅读 · 0 评论 -
Oracle分页查询
--分页查询--MySQL limit,sql server top--oracle利用rownum伪列实现,rownum只能过滤<--列出员工的前5位select rownum,ename from emp where rownum<6;--列出员工的第6位到10位--将伪列转换成子查询的列,就可以使用大于符号--子查询形成新的表e2,含有伪列组成的新的一列select ro,e原创 2018-01-22 17:15:15 · 270 阅读 · 0 评论 -
Oracle事务和锁,及闪回表举例
1. 事务和锁--事务的ACID特性--原子性:事务的各个组成部分不可分割,要么一起成功执行,要么一起不执行。--一致性:事务的执行只能让数据库从一个正常状态转移到另一个正常状态。 --何 200 伍 200 陈 200 状态1 --何 100 伍 200 陈 300 状态2 --何 200 伍 100 陈 300 状态3 --何 100 伍 100 陈 400 状原创 2018-01-22 17:23:06 · 532 阅读 · 0 评论 -
Oracle临时表举例
--事务临时表CREATE GLOBAL TEMPORARY TABLE temp1(id NUMBER,name VARCHAR2(50))ON COMMIT DELETE ROWS;--向事务临时表写数据insert into temp1 values(1,'aaa');--查询数据select * from temp1;--事务没有结束,表中有数据--提交事务commi原创 2018-01-22 17:24:53 · 167 阅读 · 0 评论 -
Oracle约束举例
--创建非空约束:--创建表的同时创建约束,默认名称create table tab3 ( id number not null, name varchar2(20));--创建表的同时创建约束,自定义名称create table tab4 ( id number constraint notnull_tab4_id not null,原创 2018-01-22 17:29:35 · 263 阅读 · 0 评论 -
Oracle视图举例
--创建视图的语法--create view 视图名 as (子查询),子查询的结果就构成视图的结构--视图模拟一张表,但是数据库只存储视图的结构,不会实际保存数据--数据来源于基本表,当使用视图时生成数据--所以视图不破坏数据模型的规范化(范式)--透过视图查询数据更加简介--从学生系统中获取学生的姓名,所学科目,教师姓名select st.s_name,su.su_name,sc原创 2018-01-22 17:31:51 · 339 阅读 · 0 评论 -
Oracle序列、索引、同义词举例
1. 序列--创建序列create sequence seq_stu_id;--每一个序列创建出来后,先要调用nextval。select seq_stu_id.nextval from dual;select seq_stu_id.currval from dual;--使用序列,提供一个连续的,自动增长的数值,通常用来生成编号。--给学生表插入记录,主键值使用序列生成ins原创 2018-01-22 18:46:41 · 174 阅读 · 0 评论 -
Oracle 用户和权限
--创建用户create user lessondba identified by abc;--给用户授权--直接授权grant create view to lessondba;--通过角色授权grant connect to lessondba;grant resource to lessondba;--使用用户登录--修改用户密码ALTER USER 用户名原创 2018-01-22 18:50:10 · 202 阅读 · 0 评论 -
Oracle结果集合并
--并集 把多个查询的结果合并起来--列数要相同--对应列的数据类型要相容select * from stuunionselect s_id,s_name from student;--不会去掉重复值select * from stuunion allselect s_id,s_name from student;--交集,多个查询结果的共同部分select * from原创 2018-01-23 09:34:17 · 4519 阅读 · 0 评论 -
Oracle查询语句执行顺序
--sql查询的语句执行顺序(selectfromwheregroup byhaving)union(selectfrom)order by--顺序fromwheregroup byselecthavingunionorder by原创 2018-01-23 09:34:54 · 612 阅读 · 0 评论 -
Oracle创建新用户授权
--创建一个usera用户create user usera identified by abc;--给用户授权,connect和resource角色,创建视图的权限grant connect,resource,create view to usera;--创建student表,create table student( s_id number, s_name原创 2018-01-23 09:35:10 · 219 阅读 · 0 评论 -
PLSQL基本语法
--plsql的基本语法--3个部分,声明,执行块,异常--执行块是必须的declarebeginexceptionend;--最简形式beginend;--声明变量:变量名 数据类型--声明时赋值 :=--在执行部分赋值--not null 声明时就要赋值--constant 声明时就要赋值,执行中不能改变DECLARE a NUMBER NOT NULL原创 2018-01-23 09:35:28 · 3482 阅读 · 0 评论 -
Oracle多表连接查询举例
--多表查询,单张表中的数据不齐全,不方便阅读--1992标准,select 字段列表 from 表列表 where 连接条件(避免笛卡尔积)and 过滤条件--如果有N张表,应该至少有N-1个用于避免笛卡尔积的连接条件--如果两个表中有同名字段,需要在字段前加上表名区分。加上可以提高效率--可以给表起别名select e.ename,d.dname from emp e,dept d原创 2018-01-20 10:11:25 · 2335 阅读 · 0 评论