1-Oracle数据库

*.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:#99ccff;}*.hl_mark_KMSmartTagYellowImg{background-color:#ffff66;}*.hl_mark_KMSmartTagOrangeImg{background-color:#ffad5b;}*.hl_mark_KMSmartTagGreenImg{background-color:#84e384;}*.hl_mark_KMSmartTagPurpleImg{background-color:#d6acff;}*.hl_mark_KMSmartTagRedImg{background-color:#ff8888;}

.wiz-todo, .wiz-todo-img {width: 16px; height: 16px; cursor: default; padding: 0 10px 0 2px; vertical-align: -7%;-webkit-user-select: none;} .wiz-todo-label { line-height: 2.5;} .wiz-todo-label-checked { color: #666;} .wiz-todo-label-unchecked {text-decoration: initial;} .wiz-todo-completed-info {padding-left: 44px; display: inline-block; } .wiz-todo-avatar { width:20px; height: 20px; vertical-align: -20%; margin-right:10px; border-radius: 2px;} .wiz-todo-account, .wiz-todo-dt { color: #666; }

一、Oracle的基本概念

1.Oracle Database的基本概念:

一个Oracle服务器

是一个数据库管理系统(RDBMS,关系型数据库管理系统——基于关系模型的数据库系统叫做RDBMS,关系模型是指基于二维表的模型),它提供开发的,全面的,近乎完整的信息管理

由一个Oracle数据库和多个Oracle实例组成

2.Oracle数据库和Oracle实例

Oracle数据库:位于硬盘上实际存放数据的文件,这些文件组织在一起,成为一个逻辑整体,即为Oracle数据库。因此在Oracle看来,“数据库”是指硬盘上文件的逻辑集合,必须要与内存里的实例合作,才能对外提供数据管理服务。

Oracle实例:位于物理内存里的数据结构。它由一个共享的内存池和多个后台进程所组成,共享的内存池可以被所有进程访问。用户如果要存取数据库(也就是硬盘上的文件)里的数据,必须通过实例才能实现,不能直接读取硬盘上的文件。

区别:实例可以操作数据库;在任何时刻一个实例只能与一个数据库关联;大多数情况下,一个数据库上只有一个实例对其进行操作。

3.Oracle数据库的体系结构(重要)

客户端JDBC访问Oracle数据库时,如果是写入操作,会先将数据存在在实例内存中(可以有多个),然后将实例内存中的数据统一存放到系统全局区域,再统一调用系统进程的写操作,将数据写入到磁盘上的数据库文件;如果是读取操作,系统进程的读取操作会将数据读取到系统全局区域,再分别存储到实例内存中,再提供给客户端JDBC。

4.集群:

5.表空间(users)和数据文件

表空间由多个数据文件组成,数据文件只能属于一个表空间。表空间为逻辑概念,数据文件为物理概念。

6.段、区和块

7.数据库的逻辑和物理结构

8.其他知识:

如果不想让Oracle数据库开机启动,可在服务中关闭OracleServiceORCL服务

Oracle客户机:如果想要从网的一台计算机上访问另外一台计算机上的Oracle服务,需要安装Oracle客户机才能够访问。安装Oracle客户机需要将客户机程序解压,然后将sqlplus所在目录添加到path路径中

访问方式:sqlplus scott/[email protected]:1521/orcl

解决中文乱码问题:

增加环境变量,设置NLS_LANG为SIMPLIFIED CHINESE_CHINA.ZHS16GBK

本机ip:192.168.56.1   虚拟机ip:192.168.56.101

二、基本的select语句

1.基本的登录语句:

  1. --登录Oracle
  2. sqlplus scott/[email protected].168.56.101:1521/orcl
  3. --清屏
  4. host cls
  5. --当前用户
  6. show user
  7. USER 为 "SCOTT"

2.JDBC连接Oracle数据库的写法:

  1. jdbc:oracle:thin:@localhost:1521:orcl
  2. jdbc:oracle:oci:@loaclhost:1521:orcl

第一种方式只需要一个jar包,第二种方式更复杂一些(功能更强大)。

3.记录控制台屏幕语句:

  1. --开始记录
  2. spool d:\1.txt
  3. --结束记录
  4. spool off

4.设置行宽和列宽

  1. --当前用户下的表(oracle中必须要有from)
  2. select * from tab;
  3. --员工表的结构desc是describe的缩写
  4. desc emp
  5. --查询所有员工信息
  6. select * from emp;
  7. --显示设置行宽
  8. show linesize
  9. --结果linesize 80
  10. set linesize 120
  11. --设置列宽(col代表column,a表示字符类型,8表示长度为8,9表示以为数字,9999表示四个数字,for是format的缩写)
  12. col ename for a8
  13. col sal for 9999
  14. --/表示引用上面的sql语句
  15. /

5.change命令:

  1. --通过列名查询
  2. select empno,ename,job,mgr,hiredate,sal,comm,deptno form emp;
  3. --第 2 行出现错误: ORA-00923: 未找到要求的 FROM 关键字
  4. --c命令 change缩写
  5. --指定第二行
  6. 2
  7. --结果:2* form emp
  8. --/form原错误值/from新值
  9. c /form/from
  10. --改正结果:2* from emp
  11. --/代表引用上面的sql语句
  12. /

6.滤空函数nvl

将comm奖金中的null值变成0,从而不会出现总薪水的值为null

  1. select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0) from emp;

7.edit方法

  1. --ed是edit的缩写
  2. ed
  3. --结果:已写入 file afiedt.buf
  4. --执行sql语句
  5. /

8.别名的格式:

"别名"或者不加引号,区别:别名中有空格或者关键字必须加上双引号


1

2

--别名的使用

select empno as "员工号",ename "姓名",sal "月  薪",sal*12,comm,sal*12+nvl(comm,0) from emp

9.distinct的使用


1

2

3

4

5

6

7

8

9

10

11

12

13

--distinct去掉重复记录

select distinct deptno from emp;

--字符串连接

--distinct作用于后面所有的列

select distinct deptno,job from emp;

--连接符

--concat

select concat('Hello','  World');

--dual: 伪表

select 'hello'||'  world' 字符串 from dual;

10.其它注意点:

三、过滤和排序

1.基本用法


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

--字符串大小写敏感

--查询名叫KING的员工

select from emp where ename='KING';

--日期格式敏感

--查询入职日期是17-11月-81的员工

select from emp where hiredate='17-11月-81';

--默认格式:DD-MON-RR

--查看日期格式

select from v$nls_parameters;

--修改日期格式

alter session set NLS_DATE_FORMAT='yyyy-mm-dd';

--session|system,session表示当前会话有效,system表示系统内有效

--修改成默认

alter session set NLS_DATE_FORMAT='DD-MON-RR';

--between and

--查询工资1000~2000之间的员工

select from emp where sal between 1000 and 2000;

--between and: 1. 包含边界 2. 小值在前 大值在后

--in 在集合中

--查询10和20号部门的员工

select from emp where deptno in (10,20);

--null值 3. 如果集合中含有null,不能使用not in;但可以使用in

--错误查找语句

select from emp where deptno not in (10,20,null)

--like 模糊查询

-- %(任意位数字符)  _(一位字符)

--查询名字以S打头的员工

select from emp where ename like 'S%';

--\转义符号,转义_这个特殊符号

select from emp where ename like '%\_%' escape '\'

--回退已完成,oracle自动开启事务,所以可以直接回滚

rollback;

--排序

--查询员工信息,按照月薪排序

select from emp order by sal;

--order by 后面 + 列,表达式,别名,序号

select empno,ename,sal,sal*12 from emp order by sal*12 desc;

--多个列排序(先按照第一个排序,相同时按照第二个排序)

select from emp order by deptno,sal;

--order by 作用于后面所有的列;desc只作用于离他最近的一列

select from emp order by deptno desc,sal desc

--查询员工信息,按照奖金排序

--null 值 4. null的排序,默认情况下null最大

select from emp order by comm;

--oracle默认进行分页,可以设置每页记录数

set pagesize 20

--a命令: append(在当前的sql语句的基础上添加desc)

--a与后面的关键字之间要有两个空格(防止语句连到一起)

a  desc

select from emp order by comm desc nulls last(将null放到最后,默认情况下null最大)

2.其它:

四、单行函数(共六种,最后一个是条件表达式)

1.基本用法:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

--字符函数

select lower('Hello WOrld') 转小写,upper('Hello WOrld') 转大写,initcap('hello world') 首字母大写 from dual;

--substr(a,b) 从a中,第b位开始取

select substr('Hello World',3) 子串 from dual;

--substr(a,b,c) 从a中,第b位开始取,取c位

select substr('Hello World',3,4) 子串 from dual;

--length 字符数 lengthb 字节数(英文字符数和字节数相同,中文一个字符两个字节)

select length('Hello World') 字符,lengthb('Hello World') 字节 from dual;

--instr(a,b) 在a中,查找b

select instr('Hello World','ll') 位置 from dual;

--lpad 左填充 rpad右填充

-- abcd填充后共10位,左边右边分别填充特定符号

select lpad('abcd',10,'*') 左,rpad('abcd',10,'*') 右 from dual;

--trim 去掉前后指定的字符

select trim('H' from 'Hello WorldH'from dual;

--replace

select replace('Hello World','l','*'from dual;

--四舍五入

select round(45.926,2) 一,round(45.926,1) 二,round(45.926,0) 三,round(45.926,-1) 四,round(45.926,-2) 五 from dual;

--结果

        一         二         三         四         五                         

---------- ---------- ---------- ---------- ----------                         

     45.93       45.9         46         50          0 

--截断函数

select trunc(45.926,2) 一,trunc(45.926,1) 二,trunc(45.926,0) 三,trunc(45.926,-1) 四,trunc(45.926,-2) 五 from dual

--查询当前时间

select sysdate from dual;

--将当前时间转换成特定格式

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'from dual;

--系统的时间戳(将一秒划分成100,0000份)

select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss:ff'from dual;

--昨天 今天 明天

select (sysdate-1) 昨天,sysdate 今天,(sysdate+1) 明天 from dual;

--计算员工的工龄:天  星期 月 年

select ename,hiredate,(sysdate-hiredate) 天,(sysdate-hiredate)/7 星期,(sysdate-hiredate)/30 月,(sysdate-hiredate)/365 年 from emp;

--months_between(第一个参数如果比第二个参数小,就会计算出负数)

select ename,hiredate,(sysdate-hiredate)/30 一,months_between(sysdate,hiredate) 二 from emp;

--73个月后

select add_months(sysdate,73) from dual;

--last_day(月份中的最后一天)

select last_day(sysdate) from dual;

--next_day(下一个指定的日期:星期几)

select next_day(sysdate,'星期二'from dual;

--对日期四舍五入('month',看日期在一个月的前一半还是后一半舍入,年也是如此)

select round(sysdate,'month'),round(sysdate,'year'from dual;

--隐式转换的前提:被转换对象是可以转换的

-显式转换

SP2-0042: 未知命令 "-显式转换" - 其余行忽略。

--显式转换

--2015-04-14 15:28:12今天是星期二

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day'from dual;

--查询员工薪水:两位小数 千位符 本地货币代码

select to_char(sal,'L9,999.99'from emp;

--nvl2(a,b,c) 当a=null时候,返回c;否则返回b

select sal*12+nvl2(comm,comm,0) from emp;

--nullif(a,b) 

--           当a=b时候,返回null;否则返回a

select nullif('abc','abc') 值 from dual;

--coalesce 从左到右找到第一个不为null的值

select comm,sal,coalesce(comm,sal) "第一个不为null的值" from emp;

--条件表达式

--涨工资,总裁1000 经理800 其他400

set linesize 200

select from emp;

--sql99方式

select ename,job,sal 涨前,

         case job when 'PRESIDENT' then sal+1000

                  when 'MANAGER' then sal+800

                  else sal+400

          end 涨后

  from emp;

--oracle方式

select ename,job,sal 涨前,

         decode(job,'PRESIDENT',sal+1000,

                    'MANAGER',sal+800,

                              sal+400) 涨后

  from emp;

2.其它:

五、多行函数(分组函数)

1.基本用法:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

-- 工资的总额

select sum(sal) from emp;

  

--人数

select count(*) from emp;

  

--平均工资

select sum(sal)/count(*) 一,avg(sal) 二 from emp;

  

--平均奖金(count(*)包含了comm为空的记录)

select sum(comm)/count(*) 一,sum(comm)/count(comm) 二,avg(comm) 三 2  from emp;

--结果

        一         二         三                                                                                                                                                                        

---------- ---------- ----------                                                                                                                                                                        

157.142857        550        550

  

select count(*),count(comm) from emp;

  COUNT(*) COUNT(COMM)                                                                                                                                                                                  

---------- -----------                                                                                                                                                                                  

        14           4

  

--null 值 5.多行函数会自动滤空,可以嵌套滤空函数来屏蔽他的滤空功能;

SQL> select count(*),count(nvl(comm,0)) from emp;

  

--分组数据

--group by

--求部门的平均工资

select deptno,avg(sal) from emp group by deptno;

  

-- 多个列的分组

select deptno,job,sum(sal) from emp group by deptno,job order by 1;

  

--求平均工资大于2000的部门

select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;

  

--where和having的区别:where后面不能使用多行函数

--where和having通用

--查询10号部门的平均工资

select deptno,avg(sal) from emp group by deptno having deptno=10;

  

/*

group by 的增强

select deptno,job,sum(sal) from emp group by deptno,job

+

select deptno,sum(sal) from emp group by deptno

+

select sum(sal) from emp

====

select deptno,job,sum(sal) from emp group by rollup(deptno,job)

抽象

group by rollup(a,b)

=

group by a,b

+

group by a

+

group by null

*/

--实现报表查询的功能

select deptno,job,sum(sal) from emp group by rollup(deptno,job);

--结果

  DEPTNO      JOB     SUM(SAL)                                                                                                                                                                         

---------- --------- ----------                                                                                                                                                                         

        10 CLERK           1300                                                                                                                                                                         

        10 MANAGER         2450                                                                                                                                                                         

        10 PRESIDENT       5000                                                                                                                                                                         

        10                 8750                                                                                                                                                                         

        20 CLERK           1900                                                                                                                                                                         

        20 ANALYST         6000                                                                                                                                                                         

        20 MANAGER         2975                                                                                                                                                                         

        20                10875                                                                                                                                                                         

        30 CLERK            950                                                                                                                                                                         

        30 MANAGER         2850                                                                                                                                                                         

        30 SALESMAN        5600                                                                                                                                                                                                                                                                                                                                                 

        30                 9400                                                                                                                                                                         

                          29025

  

--break on表示取出重复,skip2表示不同列别之间跳过两行

break on deptno skip 2

select deptno,job,sum(sal) from emp group by rollup(deptno,job);

--结果

  DEPTNO      JOB     SUM(SAL)                                                                                                                                                                         

---------- --------- ----------                                                                                                                                                                         

        10 CLERK           1300                                                                                                                                                                         

           MANAGER         2450                                                                                                                                                                         

           PRESIDENT       5000                                                                                                                                                                         

                           8750                                                                                                                                                                         

                                                                                                                                                                                                                                                                                                                                                                                                                    

        20 CLERK           1900                                                                                                                                                                         

           ANALYST         6000                                                                                                                                                                         

           MANAGER         2975                                                                                                                                                                         

                          10875                                                                                                                                                                         

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

        30 CLERK            950                                                                                                                                                                         

           MANAGER         2850                                                                                                                                                                         

           SALESMAN        5600                                                                                                                                                                         

                           9400                                                                                                                                                                         

                                                                                                                                                                                                                                                                                                                                                                                                                    

                          29025

  

--取消去重和跳行设置

break on null

2.其它:

六、多表查询

1.层次查询:

2.笛卡尔积(使用连接条件就是避免使用笛卡尔全集):


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

--等值连接

--查询员工信息:员工号 姓名 月薪 部门名称

select e.empno,e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno;

--不等值连接

--查询员工信息:员工号 姓名 月薪 工资级别

select e.empno,e.ename,e.sal,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal;

--外连接

--按部门统计员工人数:部门号 部门名称 人数

/*

希望: 对于某些不成立的记录,任然希望包含在最后的结果中

左外连接:where e.deptno=d.deptno不成立的时候,等号左边的表任然被包含

   写法: where e.deptno=d.deptno(+)

右外连接:where e.deptno=d.deptno不成立的时候,等号右边的表任然被包含

   写法:where e.deptno(+)=d.deptno

*/

select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数 from emp e,dept d where e.deptno(+)=d.deptno group by d.deptno,d.dname;

--自连接(通过别名的方式实现)

--查询员工信息:员工的姓名 老板的姓名

--自连接:通过表的别名,将同一张表视为多张表

select e.ename 员工姓名, b.ename 老板姓名 from emp e,emp b where e.mgr=b.empno;

-- 自连接不适合操作大表(笛卡尔积最小为n的平方)

--层次查询(适合具有树状层次关系的查询)

--根节点没有父节点,连接条件是当前节点的老板id等于上级节点的员工id,伪列必须写出来

select level,empno,ename,mgr from emp connect by prior empno=mgr start with mgr is null order by 1;

--结果

     LEVEL      EMPNO ENAME             MGR                                                                                                                                                             

---------- ---------- ---------- ----------                                                                                                                                                             

         1       7839 KING                                                                                                                                                                              

         2       7566 JONES            7839                                                                                                                                                             

         2       7698 BLAKE            7839                                                                                                                                                             

         2       7782 CLARK            7839                                                                                                                                                             

         3       7902 FORD             7566                                                                                                                                                             

         3       7521 WARD             7698                                                                                                                                                             

         3       7900 JAMES            7698                                                                                                                                                             

         3       7934 MILLER           7782                                                                                                                                                             

         3       7499 ALLEN            7698                                                                                                                                                             

         3       7788 SCOTT            7566                                                                                                                                                             

         3       7654 MARTIN           7698                                                                                                                                                             

     LEVEL      EMPNO ENAME             MGR                                                                                                                                                             

---------- ---------- ---------- ----------                                                                                                                                                             

         3       7844 TURNER           7698                                                                                                                                                             

         4       7876 ADAMS            7788                                                                                                                                                             

         4       7369 SMITH            7902  

3.其它:

4.SQL99

七、SQL中的重点知识

1.SQL优化的原则:

(1)尽量使用列名代替*,效率更高

(2)where 解析的顺序:  右  --> 左,因此可以在and语句时将最可能错误的放在右边,在or语句时将最可能正确的放在右边

(3)尽量使用where,因为where在分组前就进行了过滤,效率更高(尤其是数据量大的时候)

(4)理论上,尽量使用多表查询

(5)尽量不要使用集合运算,集合运算效率低

2.SQL中的null:

(1)包含null的表达式都为null

(2)null!=null(需要使用is null或者is not null判断是否为空)

(3)如果集合中含有null,不能使用not in;但可以使用in(为什么?因为not in做的是与操作所以就得不到任何结果(null!=null),而in 做的是或操作)

(4)null的排序,默认情况下null最大

(5)多行函数会自动滤空;

3.next_day的应用:每个星期一自动备份数据

1. 分布式数据库

2. 快照snapshot

参考: 27-分布式数据库.avi

来自为知笔记(Wiz)

附件列表

时间: 2024-11-10 12:03:10

1-Oracle数据库的相关文章

win7 64位系统 PB连接oracle数据库出现“oracle library oci.dll could not be loaded”问题的解决方法

今天与大家分享一个自己的学习笔记,希望能给遇到同样问题的人带来帮助. 不知道大家在win7 64位系统下用 PB连接oracle数据库时,是否遇到过“oracle library oci.dll could not be loaded”问题. 今天,在win7 64位系统下用 PB连接oracle数据库时,一直出现上述错误,在百度上找了很久,都没有找到一个完整的解决方案,咨询了很多人,(他们都说是我的PB和oracle没装好,但我装的时候没出现任何问题,一切都很顺利,而且PB和oracle都能正

Oracle数据库——触发器的创建与应用

一.涉及内容 1.理解触发器的概念.作用和类型. 2.练习触发器的创建和使用. 二.具体操作 (实验) 1.利用触发器对在scott.emp表上执行的DML操作进行安全性检查,只有scott用户登录数据库后才能向该表中执行DML操作.(第1题中,user是系统函数,返回当前用户.字符串中使用两个单引号表示一个单引号.) 要求:分别以system用户和scott用户对emp 表执行DML操作,试验触发器的运行效果. (1)在scott用户下创建触发器 语句: create or replace t

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

这种操作百度一搜一大片,今天整理以前做的项目时自己备份了一下数据库,试着将数据进行导出备份和导入恢复了一下:下面是操作过程: 1 开启服务 2 配置监听 找到下面文件: 记事本打开 在导航器的下拉菜单中选择:将数据库添加到树, 然后点击确定 然后使用PL/SQL就可以登录了: 3 建立新表空间和新用户 使用system用户登录:执行如下sql语句建立表空间和新用户,以及给用户授权 建立表空间 Create tablespace myyyjc datafile 'D:\app\Administra

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性 作者:赵全文  网名:guestart 我们生产环境的Oracle数据库都做了RMAN备份,是采用了一周的RMAN备份保留策略:除了使用RMAN备份以外,我们还使用了爱数(Eisoo)备份软件来进行备份,可以说是做到了有备无患.可是,如果有一天,Oracle数据库由于主机层面硬件原因或是数据库层面的原因不能对外提供高可用服务的时候,假设数据丢了一大部分,我们只有用RMAN备份来进行恢复,再如果发现,RMAN备份失效了,那就往地缝里

PL/SQLDeveloper导入导出Oracle数据库方法

前一篇博客介绍了Navicat工具备份Oracle的方法,这篇博客介绍一下使用PL/SQL Developer工具导入导出Oracle数据库的方法. PL/SQL Developer是Oracle数据库用于导入导出数据库的主要工具之一,本文主要介绍利用PL/SQL导入导出Oracle数据库的过程. 1.Oracle数据库导出步骤 1.1 Tools→Export User Objects...选项,导出.sql文件. 说明:此步骤导出的是建表语句(包括存储结构). 1.2 Tools→Expor

Linux环境下Oracle数据库启动停止命令

切换root至oracle数据库账号 su – oracle 查看数据库服务状态: ps -ef |grep oracle netstat –an|grep 1521 查看数据库监听状态: [[email protected] ~]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 25-NOV-2016 03:36:45 Copyright (c) 1991, 2009, Oracle. All righ

Oracle数据库中文乱码问题

最近碰到Oracle乱码问题,刚开始甚是头疼,以前在合肥出差的时候,这种问题也碰到过,当时直接抛给了“乌压压一片”(一个搞数据的同事儿),这次没办法躲过,只好硬着头皮上.虽然我这次碰到的是Oracle乱码问题中的一个,但是我决定将这个乱码问题整理清楚(不整清楚,就觉得身边有个定时炸弹,怕下次整数据库的时候会突然又爆炸). 解决这个问题的关键在于理解字符集的概念,所以在正文开始之前,有必要先提一下字符集的相关知识!(这部分知识,对于解决j2ee中文参数传递过程中出现的乱码,也非常具有参考意义) 一

Oracle数据库语句大全

转自:http://blog.sina.com.cn/s/blog_b5d14e2a0101c56z.html ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约束中指定的条件是否得到了满足. UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的. PRIMARY KEY (主键)--用来唯一的标识出表的每

Oracle数据库恢复案例

当我们在使用Oracle数据库时,突然断电,造成很多问题,致使旧数据丢失,影响了数据的正确性,破坏了数据库.此时,用户急切需求恢复数据.本文以此为例,讲述数据库数据恢复. 一.案例描述: 数据库因突然断电,数据库启库报system01.dbf需要更多的恢复来保持一致性,数据库无法打开:数据库没有备份,归档日志也不连续.客户提供了数据库的在线文件,急需恢复zxfg用户下的数据.   二.恢复流程:  1 数据库的故障检测 2 尝试挂起数据库并修复数据库 3解析数据文件 4 验证数据 5导出数据与交

重启oracle数据库的一次操作命令和alter日志。

今天重启oracle数据库的命令和alter日志: [email protected]:~> sqlplus '/as sysdba' SQL*Plus: Release 11.2.0.3.0 Production on Wed Jan 27 18:49:13 2016 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to:Oracle Database 11g Enterprise Edition Release