数据库知识4
1、据说存储过程很重要
2、更新游标容易造成数据死锁
3、for in 循环里隐式游标打开和关闭
4、DML都会声明隐式游标,不能直接命令操纵它所以叫隐式游标
5、rowcount表示游标读了多少行,不是原表的行号,因为定义游标的时候写了判断条件,这个判断条件会筛选掉一些东西;
6、dbms_output.out_line只能打印字符串类型,%isopen 是布尔型;
7、游标还可以带参数
8、直接指定游标的行类型就好了
param_cursor%rowtype
9、引用游标可以动态查不同的表
10、所有者也要注意,for循环不能用于引用游标
11、行死锁?一直占用进程,游标
12、查询时用显式游标,更新数据时用更新游标,有的游标还带参数,要选择的时候用
13、sql输入
14、开发要写测试用例
15、存储过程
熟练掌握存储过程、函数的定义和使用
执行用call
16、在sqlplus中使用exec
17、对象存在了,可以不用再写来执行这个对象了,
不然写了Or replace
18、声明部分放在is和begin之间
19、在报红色的存储过程点击右键,查看可以看哪里出错了
20、putline 换行,put 不换行
21、自己联系着写一下习题
22、在参数列表写In、out表示输入输出
23、输出赋值使用:=,是在select 表的元素 into 变量 from emp
24、存储过程不能有返回值,可以拿结果回来,就是通过输出参数实现的
25、mysql没有语句块的概念,oracle和SQL server可以,mysql一定要写存储过程
26、伪代码:只是描述代码的流程,并没有实际意义的代码
27、函数指定参数类型的时候不能指定长度
28、函数使用和系统函数一样:select my_fun(,) from
函数好处:把一些业务定制到数据库中,加密藏起来?
29、user_source数据字典,存储着存储过程和函数
30、过程和函数的授权
31、为了隐藏实现,为了安全性,可以一个用户专门创建函数,一个用户专门执行
32、行级触发器、语句级触发器
触发器链的死循环
33、日志表?在触发器中写日志,改日志
34、oracle建表约束主要有以下几大类:
NN:NOT NULL 非空约束
UK:UNIQUE KEY 唯一约束
PK:PRIMARY KEY 主键约束
FK:FOREIGN KEY 外键约束
CK:CHECK 条件约束
一张表必须要有一个字段为主键,这段不能为空,并且值唯一,oracle中一般将该字段定义为数值类型,用序列为该字段插入值;其他字段的约束要根据业务需求来定。
给表中的字段添加约束可以在创建表时添加,也可以在修改时添加。
创建表必须给出表名、字段名、字段类型,约束条件不是必须的。
例如:创建如下表时
CREATE TABLE tb_constraint_1
(
empno NUMBER PRIMARY KEY, --主键约束
ename VARCHAR2(20) NOT NULL, --非空约束
email VARCHAR2(60) UNIQUE, --唯一约束
sal NUMBER(5) CHECK(sal>1500), --核查约束
deptno NUMBER(4) REFERENCES tb_dept(deptno) --外键约束
);
修改已创建表中某个字段的约束:
alter table tb_constraint_1 add constraint yueshumingzi unique(ename );--修改姓名字段值必须唯一
创建表的外键约束时,外键字段的类型必须和关联表的主键的类型一致。
表名和字段名的长度oracle默认约定为长度不能大于30个字符
创建好的表,字段可以修改,以下是修改 添加表 删除表字段 格式:
alter table 表名 add 新列列名 列数据类型 [default 0 not null] (添加列默认值为0)
alter table 表名 drop 列名 (删除列)
alter table 表名 alter column 列名 新添加的数据类型 (修改列)
34、

浙公网安备 33010602011771号