数据库知识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 函数可以指定格式的啊~

浙公网安备 33010602011771号