数据库知识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、

posted @ 2017-03-13 09:19  孜然风味  阅读(143)  评论(0)    收藏  举报