数据库知识3

1、dblink:把远端的数据库连接过来,可以把别人的数据库当做自己的数据库做

2、数据字典:

3、导入dmp表到sq developer中:cmd--imp java10java10 file=路径+文件名 tables=表名

     然后刷新一下PL sql

     导出:cmd  -- exp java10/java10  file=路径\文件名  tables=表名

不给路径:默认导出到c :administrator

     导入方式根据导出方式决定

     导入方式有很多种

     可以在java中写个循环,把表写进去

     PL developer中工具---

4、要继续学习的:

安装linux
配置网络
拷贝
开启防火墙
安装LINUX
在Lindux 上安装java和oracle

5、导出表:cmd  -- exp java10/java10  file=路径\文件名  full=y

6、访问别人的电脑:sqlplus system/system@别人电脑的IP     然后回车

     别人电脑的ip可以在admin的tname上给个名字和IP地址来修改指定

     在这里从A机器A用户把数据导入到B机器B用户

     imp system/system@IP地址 file=e:/exp_db.dmp  fromuser=java10 touser=scott

     重做日志进程,做数据库恢复

7、LINUX虚拟机:

     全名:zizi

     用户名:system

     密码:system

     虚拟机名称:Red Hat Enterprise Linux 6

8、视图相当于一个虚拟表,分配权限

     没括号括起来来可不写

     如果没有写只读,修改视图的数据会把原表的数据也改掉

     视图 相当于一个虚拟表,有权限的数据、占空间少

     每次看视图都会执行原来视图的创建语句

     修改视图的数据 select * from ename_dname for update

      create or replace   若果没有就创建,如果有就替换

      视图的查询语句要写好

9、分层开发、orm、mvc、jsp

     列名要和属性名对应上update set

10、序列默认从1开始,步长为1,最小值:1,最大值:999999999999999

11、同义词:别名?有 public_synonym 授权后可以直接根据名字访问,如果直接synonym需要scott.tview来访问

12、cmd--imp java10java10 file=路径+文件名 tables=表名

      没有指定表空间,导入到了users表空间中

13、生成同义词和视图要授权

14、存储过程和functions才会生成对象,语句块不会生成对象

15、%type 用谁的类型,

16、打印语句:dbms_output.put_line(变量名)

17、%rowtype行类型

18、行类型怎么能一下子打印两个东西???不能整行输出,只能一个个地取

19、接受用户的输入值,用一个&符号可以让用户手动输入

20、可以声明变量的时候就赋值

21、elsif

23、写oracle语句的时候多换两行

24、oracle的快捷键

     F8执行

25、没有i++,要写i:=i+1

26、for i in 1..100 loop
 dbm_output.put_line(i);

27、异常:

      when        then

28、游标指向一行行的指针,

      for 行类型   in  游标对象  loop

         循环体

      end Loop;

29、RAISE_APPLICATION_ERROR(-20100,'自定义错误!');

      java也有一个抛出异常:自己写一个类,继承exception 类就定义好了

      myexception抛出去,给虚拟机处理,如果虚拟机处理不了就操作系统处理

      raise  myException;

      myexception exception

      public class MyException extends Exception(

        public  MyException(){

             super("my exception");

        }

         public MyException(String mystring){

              super(mystring);

          }

30、异常堆栈,

游标使用:

   1、定义

   2、打开

   3、获取数据

   4、关闭 

游标只是一个指针

31、给emp表所有员工都加1000,直到所有人工资都超过5000元,最高工资不能超过9000;(用Loop)

for r_emp in my_cursor loop

    dbms_output.put_line(r_emp.ename);

end loop;

for循环隐式打开

32、可以给表创建别名,也可以给视图创建别名

33、异常处理:

       修改内部错误码:

              如果要处理未命名的内部异常,必须使用OTHERS异常处理器或PRAGMA EXCEPTION_INIT 。PRAGMA由编译器控制,或者是对于编译器的注释。PRAGMA在编译时处理,而不是在运行时处理。EXCEPTION_INIT告诉编译器将异常名与ORACLE错误码结合起来,这样可以通过名字引用任意的内部异常,并且可以通过名字为异常编写一适当的异常处理器。
  
  在子程序中使用EXCEPTION_INIT的语法如下:
  PRAGMA EXCEPTION_INIT(exception_name, -Oracle_error_number);
  
  在该语法中,异常名是声明的异常,下例是其用法:
  DECLARE
  deadlock_detected EXCEPTION;
  PRAGMA EXCEPTION_INIT(deadlock_detected, -60);
  BEGIN
  ... -- Some operation that causes an ORA-00060 error
  EXCEPTION
  WHEN deadlock_detected THEN
  -- handle the error
  END;

       自定义异常(2种方法):

       1、declare

                 ee Exception

            begin

                if  满足错误条件   then

                    raise   ee;

              exception

                  when ee then  ('自定义异常!');

            end;

       2、RAISE_APPLICATION_ERROR

        Raise_application_error(error_number,message[,true,false]))
  
  错误号的范围是-20,000到-20,999。错误信息是文本字符串,最多为2048字节。TRUE和FALSE表示是添加(TRUE)进错误堆(ERROR STACK)还是覆盖(overwrite)错误堆(FALSE)。缺省情况下是FALSE。
  
  如下代码所示:
  IF product_not_found THEN
  RAISE_APPLICATION_ERROR(-20123,'Invald product code' TRUE);
  END IF;

34、exit退出循环

35、nextval,序号后面有个函数

36、一个表是可以有一个主键的,两个列放在一起创建一个主键,联合主键,说明他们的组合是唯一的,外键是做一个桥梁的意思,做了联合主键的表只能做主表了?让别的表做它的辅助

37、导入表是系统分配的,在user中,是否能指定表空间?

38、多用exist这个关键词,exists前还不需要加入列名,默认取的是select中的字段吧。而且后面where里把两个表连接关系加上

39、通过联合主键连起来的两张表,如果要同时查询上方的信息,可以from三张表放在一起,where多个连接条件放在一起

40、真心觉得用intersect更好诶,如果是相等的条件就用表连接把结果查询出来,如果是不存在的条件

 41、is not null

42、to_char 函数可以指定格式的啊~

posted @ 2017-03-10 09:28  孜然风味  阅读(180)  评论(0)    收藏  举报