oracle笔记

原创
2016/11/27 11:03
阅读数 80

1、数据库索引:
索引说白了就是为查询为生的。是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据,索引的实现通常使用B树及其变种B+树。
在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方法指向数据。这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。
为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。
2、储存过程为什么会提高性能和好处?
       -|存储过程的语句是预编译的,编译一次以后可不用编译,大大节约了时间;
       -|程序调用存储过程每次只是调用的语句,这样大大节省了网络流量;
       -|后台管理者可以修改存储过程,而程序不受影响,可以实现很多操作。
3、truncate delete drop:
       truncate:清空表的记录,速度比delete块,因为他是清空表中所占用的存储空间,不会去做日志的处理,是一种ddl语句,不会回滚。表结构保持不变,索引等都在。
       delete:速度比较慢,是一种dml语句,可以回滚,因为删除的时候会做一些日志等记录操作,所以速度比较慢,每次删除只是根据where条件决定删除的数据。
       drop:ddl语句,删除表,表的所有结构一并删除。跟表结构有关的相关都删除,函数和存储过程不会删除。、
4、存储过程与触发器的区别
    触发器是数据库在执行sql语句的时候自动触发的,确保表之间关联时数据的完整性和一致性
    触发器与存储过程非常相似,触发器也是SQL语句集,两者唯一的区别是触发器不能用EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发(激活)执行。触发器是在一个修改了指定表中的数据时执行的存储过程。通常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性和一致性。由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,以确保数据的完整性。触发器不同于存储过程,触发器主要是通过事件执行触发而被执行的,而存储过程可以通过存储过程名称名字而直接调用。当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,SQLSERVER就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合这些SQL语句所定义的规则。
5、insert into  和 select * into 临时表
       insert into是要求表已经存在,而select into插入的表可以不存在,会临时创建。
6、mysql建立触发器
    create TRIGGER my_trigger 
    after insert on mytable
    for each row
     begin
     insert into user(username,password)
     values(new.name,new.id) ;
     end;
     以上语法没问题,但是在命令行执行会出错,因为没有设置delimiter,mysql是用delimiter “;”这个符号来提交sql语句的,在创建触发器的时候语句里面有分号,遇到分号就提交后面的语句无法执行了,自然就出错,所以要配合delimiter使用,如下
delimiter $$;//一般设置两个这样的。
create TRIGGER my_trigger 
    after insert on mytable
    for each row
     begin
     insert into user(username,password)
     values(new.name,new.id) ;
     end;$$//这里提交sql语句。
delimiter ;//设置回去。

展开阅读全文
打赏
0
2 收藏
分享
加载中
蛮好的
2016/11/27 11:17
回复
举报
更多评论
打赏
1 评论
2 收藏
0
分享
在线直播报名
返回顶部
顶部