一、Oracle  中的分页

1) select * from emp;

2)select * ,rownum from emp; //这样写不行

3)select ename,job,sal,rownum from emp; //可以

ENAME      JOB             SAL     ROWNUM
---------- --------- --------- ----------
SMITH      CLERK        800.00          1
ALLEN      SALESMAN    1600.00          2
WARD       SALESMAN    1250.00          3
JONES      MANAGER     2975.00          4

4)select a1.*,rownum  from (select * from emp) a1 ;

5)select a1.*,rownum  from (select * from emp) a1 and rownum <=10  ; //只查前10条  用过一次,就不能再用第二次

6)select * from  (select a1.*,rownum 行号 from (select * from emp) a1 where rownum <=10)  where 行号>=5;   查的是5到10条

查询的变化,如果有改动,只要改变里面的查询即可,不管是排序,还是指定列查询

二、Oracle 中的函数

1.字符串函数

--lower (char) //  select lower('AAA') from dual; ->aaa

--upper(char)

--length() //select length('AAA') from dual -> 3

--substr(char,m,n) 取子串

--replace(char1,search_string,replace_string) //显示所有emp姓名,用 a 替换所有的 A  -> select replace(ename,'A','a') from emp;

--instr(char1,char2,[,n[,m]] 取子串在字符串中的位置

2.数学函数

--round(n,[m]) 四舍五入,省掉m则四舍五入到整数,如果m为正,则四舍五入到小数点的m位后,如果m是负数,则舍入到小数点的m位前

--trunc (n,[m]) 用于截取数字,省m则截掉小数部分,如果m为正,则四舍五入到小数点的m位后,如果m是负数,则舍入到小数点的m位前

--mod(m,n) 求模

--floor(n) 反回小于或是等于 n的最大整数

--ceil(n) 反回大于或是等于n 的最小整数

3.日期函数

--sysdate 返回系统时间     select sysdate from dual;  mysql 用 now() , sqlserver 用 getDate()

--add_month(d,n)  //查找已经入职 8 个月多的员工 select * from scott.emp where  sysdate>add_months(hiredate,8);

--last_month(d) 返回指定日期所在月份的最后一天  //这个d 就是指定的日期

4.转换函数

用于将数据从一种类型转换成别一种在某些情况下,oracle server 允许值的数据类型和实际的不一样,这时oracle 会隐含的转变数据类型。比如 可以将 '11' 传给 number类型。

反之也可以,将11 传给 varchar2日期是否可以显示时分秒?货币可否加 货币符号

SQL> select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from scott.emp;
// 本例没写错,上面的确实是 hh24,并且 那个地方确实是 mi

yyyy 表示 年份

mm 表示 月份

dd 表示 天

hh24 表示 小时

mi 表示 分钟

ss 表示 秒

如果要写成  yyyy-MM-dd hh:mm:ss 这样就不对了,因为 Oracle 的烂格式很特

5.系统函数

SYS_context('...','...')     //返回一个指定namespace下的parameter值。该函数可以在SQL和PL/SQL语言中使用。以下的例 子都要写成 select sys_context('userenv','xxxx') from dual 这样的方式:

1 terminal 当前会话客户所对应的终端的标识符   select sys_context('userenv','terminal') from dual; -> AAA-74B992CC317

2 language 语言 ->SIMPLIFIED CHINESE_CHINA.ZHS16GBK

3 db_name 当前数据库名称 ->orcl

4 nls_date_format 当前会话所对应的日期格式 ->DD-MON-RR

5 session_user 当前会话所对应的数据库用户名 ->SA

6 current_schema 当前会话客户所对应的默认方案名 SA

7 host 返回数据库所在的主机名称   ->WORKGROUP\AAA-74B992CC317

三、关于 dual 的说明

如下查询  select 10+5 ; 可以发现出错: 未找到要求的from 关键字,但这样的写法在mysql或sqlserver都是可以的,在oracle 中 要改写成 select 10+5 from dual

T-SQL是SQL Server的语言引擎,而Oracle的语言引擎却是 PLSQL。

这两种查询语言都对ANSI SQL-92标准进行了扩展以提供额外的支持力度。

用PLSQL执行数据查询的时候,FROM子句是必须的,这同SQL Server的要求是不一样的。

SELECT语句必须选择针对的数据表。在Oracle数据库内有一种特殊的表Dual。

Dual表是Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的select中Dual表由Oracle连同数据字典一同创建,所有的用户都可以用名称DUAL访问该表。这个表里只有一列dummy,该列定义为VARCHAR2(1)类型,有一行值X。从DUAL表选择数据常被用来通过SELECT语句计算常数表达式,由于DUAL只有一行数据,所以常数只返回一次。

==几个常见的查询

//查看当前连接的用户
select user from dual;
//查看当前日期
select user from dual;

==几个常见的查询操作

//用查询结果创建新表
create table T(id,name,sal, deptno) as select empno,ename,sal,deptno from emp;
//使用特定的格式插入日期 (使用 to_date 函数)
insert into emp values (2000,'张三','XXX',9000,to_date('1999-12-15','yyyy-MM-dd'),3000,500,20);
//使用子查询插入数据
//例子 : 把emp表中某些符合条件的数据,导入到 T2表中
create table T2(id number(5), stuName varchar2(20),deptNo number(5) ) ;
insert into T2 (id,stuName,deptNO) select empno,ename,deptNO from emp where sal <2000
//使用子查询更新数据
//例子 希望工 scott 的 岗位,工资,奖金 和smith 一样
update emp set (job,sal,comm) =(select job,sal,comm from emp where ename='SCOTT') where ename='SMITH';

四、关于 sys 和 system用户

用户和方案的关系 一个用户被创建以后,会创建一个对应的方案,和用户名一样,方案里装的数据对象(表,视图,序列....)

数据库管理员

每个oracle都有一个或多个dba ,他的主要工作是什么

1 安装和升级oracle数据库

2 建库,建表空间,建表,视图,索引

3 定制并实施备份计算和恢复计划

4 数据库的权限管理,调优故障处理

5 高级dba 能参与项目开发,会写sql语句,存储过程,触发器,函数,约束等

管理员管理数据库用的用户是 sys 和 system

最主要的区别 :存储的数据的重要性不同

sys: 所有的数据字典和基表和视图都放在sys用户中,这些东西对oracle的运行是至关重要的,由数据库自已维护,任何用户都不能修改,sys 用户拥有 dba,sysdab,sysoper 角色或权限 ,是高权限用户

sysdba >sysoper >dba

system 用于存放次一级的数据, 比如orcle 的一些特性或工具的管理信息,它有dba,sysdba 角色或权限

sys用户必须以 as sysdba 或 sysoper 的方式登录 不能normal 方式登录

system 可以以sysdba 的身份登录的,如果以这样的方式登录,其实登录的就是sys

五、数据库(表)的逻辑备分与恢复

逻辑备份: 用工具 export 将数据对象的结构和数据以文件的方式导出的过程

逻辑恢复: 用工具 import 从备份的文件把数据对象恢复的过程

物理备份和恢复: 在数库open 的状态下或关闭的状态下均可进行,但逻辑备份和恢复必须在open的状态的才能进行

== 导出

分三种 导出表 ,导出方案, 导出数据库 //用户和方案的关系:一个用户创建以后,对应着一个方案,方案名和用户名一样,方案里装的是数据对象

导出用 exp 命令 ,它有很多常用的选项

-- userid 用于指定执行导出操作的用户名,口令,连接字符串 //scott/scott@orcl

-- tables 用于指定要导出的表

-- owner  执行导出操作的方案

-- full=y 指定导出的是整个数据库

-- inctype 指导出操作的增量类型

-- rows 指定导出操作是否要导出表中的数据 // rows=n 表示不导出数据,只导出表结构

-- file 指定文件名

--导出表

1) 导出自己的表 比如 scott 导出自已的 emp 和 dept 表

exp userid=scott/scott@orcl tables=(emp,dept) file="c:\scott.dmp"
//注意 export 是oracle带的工具,在 C:\oracle\product\10.2.0\db_2\bin 目录下 叫 exp.exe

2) 导出其他方案中的表

要导出其他方案中的表,要有dba 的权限或  exp_full_database 权限

3) 导出表结构

在上面的操作后面加上 rows=n 即可

4) 使用直接导出的方式

在上面的语句后面加上 direct=y 即可

速度快,数据量大的时候适用,但要求 数据库的字符集和客户端的字符集一致,否则会报错

== 导入

导入有导入表,导入方案,导入数据库

导入用的命令是 imp

常用的选项

-- userid 指定导入用的用户名和密码连接串

-- tables 执行导入的表

-- fromuser 指定源用户

-- touser :指定目标用户

-- file 指定要导入的文件名

-- inctype 指导入操作的增量类型

-- rows 指定导入操作是否要导入表中的数据  //rows=n 表示不导入数据,只导入表结构

-- ignore 如果表存在,则只导入数据

导入表

1) 导入自己的表

imp userid=scott/scott@orcl tables=(emp,dept) file=c:\scott.dmp

2) 把某个或某些表导给其他用户

imp userid=system/system@orcl tables=(dept,emp)  file=c:\scott.dmp touser=zs
//这里不要加 scott. 还有,要注意约束造成的问题

3 导入表结构

imp userid=scott/scott@orcl tables=(emp,dept) file=c:\scott.dmp rows =n

4) 导入数据

imp userid=scott/scott@orcl tables=(emp,dept) file=c:\scott.dmp ignore=y

导入方案

1) 导入自己的方案

imp userid=scott/scott file=d:\xxx.dmp;

2) 导入其他方案

imp userid system/aaaaaaaa file=d:\xxx.dmp fromuser=system touser=scott;

3) 导入数据库

imp userid system/aaaaaaaa  full=y  file=c:\database.dmp; 

Java基础——Oracle(五)的更多相关文章

  1. Java实习生常规技术面试题每日十题Java基础(五)

    目录 1.启动一个线程是用run()还是start()? . 2.线程的基本状态以及状态之间的关系. 3.Set和List的区别,List和Map的区别? 4.同步方法.同步代码块区别? 5.描述Ja ...

  2. JAVA基础第五章-集合框架Map篇

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  3. Java基础——Oracle(八)

    一.流程控制语句 1) 循环语句 == loop ..  end loop 简单的循环,至少被执行一次 create table userinfo (id number, name varchar2( ...

  4. Java基础——Oracle(七)

    一.概述 pl/sql (procedural lanaguage/sql)是 oracle 在标准 sql 上的扩展 .不仅允许嵌入sql 语言,还可以定义变量和常量,允许使用条件语句和循环语句,允 ...

  5. Java基础——Oracle(四)

    一.Sql * plus 常用命令 1.关于登录,连接的几个命令 1) conn[nect] //例  conn system/manager 用法 conn 用户名/密码 @网络服务名 (as sy ...

  6. java基础(十五)----- Java 最全异常详解 ——Java高级开发必须懂的

    本文将详解java中的异常和异常处理机制 异常简介 什么是异常? 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常. Java异常的分类和类结构图 1.Java中的所 ...

  7. Java基础——Oracle(六)

    一.数据字典和动态性能视图 数据字典: oracle中的重要组成部分,提供了数据库的一些系统信息,记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为 sys 用户.用户只能在数据字典上 ...

  8. Java基础——Oracle(一)

    Oracle是目前最流行的数据库之一.功能强大,性能卓越.所以学起来比较困难.学习Oracle需要具备一定的基础.比如学习过一门编程语言,或者学过其他的数据库等,没有一些基础很难下手. 一.Oracl ...

  9. 数组、栈、堆(java基础知识五)

    1.数组概述.定义格式 * A:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数据类型,也可以存储引用数据类型. * B:数组定义格式 格式1:数据类型[ ...

随机推荐

  1. 20155339 Exp9 Web安全基础

    Exp9 Web安全基础 基础问题回答 (1)SQL注入攻击原理,如何防御 原理:它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入恶意SQL语句得到 ...

  2. DSP builder安装指南(以9.1为例) 转自http://www.cnblogs.com/sleepy/archive/2011/06/28/2092362.html

    DSP Builder在算法友好的开发环境中帮助设计人员生成DSP设计硬件表征,从而缩短了DSP设计周期.已有的MATLAB函数和Simulink模块可以和Altera DSP Builder模块以及 ...

  3. Codeforces Round #512 (Div. 2) D. Vasya and Triangle

    参考了别人的思路:https://blog.csdn.net/qq_41608020/article/details/82827632 http://www.cnblogs.com/qywhy/p/9 ...

  4. pgsqls修改表字段长度

    alter table T_RPACT_PROTO_EDIT_RECORD alter column remark type VARCHAR(1024); 需要注意type关键字

  5. maya2014卸载/安装失败/如何彻底卸载清除干净maya2014注册表和文件的方法

    maya2014提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装maya2014失败提示maya2014安装未完成,某些产品无法安装,也有时候想重新安装maya ...

  6. 顺藤摸瓜:一个专黑建筑行业的QQ黏虫团伙现形记

    QQ粘虫是已经流行多年的盗号木马,它会伪装QQ登陆界面,诱骗受害者在钓鱼窗口提交账号密码.近期,360QVM引擎团队发现一支专门攻击建筑行业人群的QQ粘虫变种,它伪装为招标文档,专门在一些建筑/房产行 ...

  7. JS禁用键盘浏览器退格键

    我们在真实的项目开发中经常会使用JS 对键盘上的一些按键进行禁用,常见的比如说退格键(backspace/ 后退键),我在一个项目中就遇到过在页面编辑的时候禁用掉退格键,因为退格键会发生页面后退,这样 ...

  8. JS应用实例3:定时弹出广告

    在观看视频时候总会发现有广告弹出 这里就做一个类似这样的定时弹出广告的实例: 前面的JS代码和HTML写在同一个文件,实际开发中总是分开来写 用的时候引入即可 HTML代码: <!DOCTYPE ...

  9. Shell-14--awk

    awk ' 条件1{ 动作1} 条件2{动作2}...' 文件名 awk处理数据是 先读取第一行 然后再去处理 printf 不会加入换行符,需要手动加入 print 会自动加换行 begin 是在后 ...

  10. axios的Get和Post方法封装及Node后端接收数据

    最近有做一个Vue的小项目,其中用到了尤大大推荐使用的axios,但是使用的过程中遇到了各种各样的问题,所以这次也是将一些心得分享出来. 安装的流程我就简单说一下下吧,在一个自己新建的文件夹中命令行中 ...