数据库基础教程(3):相关理论知识
2016-08-15 19:38
471 查看
1、存储过程和函数
而存储过程可以返回多个。存储过程是为了尽量发挥一个数据库软件的性能而设计的。定义存储过程的语法如下
显然,颇为类似定义了一个函数。有两个输入参量。还制定了默认值。[]表示可有可无的东西。调用的语法也比较简单
exec usp_StudentByGenderAge ‘女’,50
在mysql中创建存储过程是create procedure
调用的办法是
而数据库中的常用函数有
合计函数:count,sum,avg,min,max
日期与实践函数 day month year weekday date today current等等。
2、数据库中的游标
游标是一种临时的数据库对象。可以用来存放数据库表中的数据行副本。所以,常见的的用出就是用来保存查询结果。如果一个结果集需要重复使用若干次,显然重复查询若干次不是什么好办法。
在mysql中,定义游标的语句是
DECLARE cursor_name CURSOR FOR select_statement
打开游标的语句是
OPEN cursor_name
使用游标的语句是
FETCH cursor_name INTO var_name [, var_name] …
关闭游标的语句是
CLOSE cursor_name
MYSQL中使用游标的一个存储过程如下:
3、触发器
触发器是一种特殊类型的存储过程。触发器主要是通过事件(增,删,改)而进行触发而自动调用执行的。
分为事前触发器,时候触发器,行级触发器,语句级触发器
mysql中定义触发器的语句如下
一个例子为
这时候我们只要执行:
insert into o(gid,much) values(1,3)$
就会发现触发器被自动工作了
4、聚集索引和非聚集索引
聚集索引表示数据按照索引的顺序进行存储。显然,这样的检索效率高。但是如果插入和删除数据则会出发很大问题。
非聚集索引是索引存储在一个地方,索引带有的指针指向数据存储位置。索引中的项目按照索引的顺序存储,但是索引指向的数据没有规律。虽然检索效率低,但是,数据更新方便。
聚集索引适合在经常要搜索范围的值。这样知道第一个便可以依次遍历到最后一个。
而存储过程可以返回多个。存储过程是为了尽量发挥一个数据库软件的性能而设计的。定义存储过程的语法如下
create proc usp_StudentByGenderAge @gender nvarchar(10) [='男'], @age int [=30] as select * from MyStudent where FGender=@gender and FAge=@age
显然,颇为类似定义了一个函数。有两个输入参量。还制定了默认值。[]表示可有可无的东西。调用的语法也比较简单
exec usp_StudentByGenderAge ‘女’,50
在mysql中创建存储过程是create procedure
mysql> DELIMITER // mysql> CREATE PROCEDURE proc1(OUT s int) -> BEGIN -> SELECT COUNT(*) INTO s FROM user; -> END -> // mysql> DELIMITER ;
调用的办法是
mysql > SET @p_in=1; mysql > CALL demo_in_parameter(@p_in);
而数据库中的常用函数有
合计函数:count,sum,avg,min,max
日期与实践函数 day month year weekday date today current等等。
2、数据库中的游标
游标是一种临时的数据库对象。可以用来存放数据库表中的数据行副本。所以,常见的的用出就是用来保存查询结果。如果一个结果集需要重复使用若干次,显然重复查询若干次不是什么好办法。
在mysql中,定义游标的语句是
DECLARE cursor_name CURSOR FOR select_statement
打开游标的语句是
OPEN cursor_name
使用游标的语句是
FETCH cursor_name INTO var_name [, var_name] …
关闭游标的语句是
CLOSE cursor_name
MYSQL中使用游标的一个存储过程如下:
BEGIN DECLARE no_more_record INT DEFAULT 0; DECLARE pID BIGINT(20); DECLARE pValue DECIMAL(15,5); DECLARE cur_record CURSOR FOR SELECT colA, colB from tableABC; /*首先这里对游标进行定义*/ DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_record = 1; /*这个是个条件处理,针对NOT FOUND的条件,当没有记录时赋值为1*/ OPEN cur_record; /*接着使用OPEN打开游标*/ FETCH cur_record INTO pID, pValue; /*把第一行数据写入变量中,游标也随之指向了记录的第一行*/ WHILE no_more_record != 1 DO INSERT INTO testTable(ID, Value) VALUES (pID, pValue); FETCH cur_record INTO pID, pValue; END WHILE; CLOSE cur_record; /*用完后记得用CLOSE把资源释放掉*/ END
3、触发器
触发器是一种特殊类型的存储过程。触发器主要是通过事件(增,删,改)而进行触发而自动调用执行的。
分为事前触发器,时候触发器,行级触发器,语句级触发器
mysql中定义触发器的语句如下
create trigger triggerName after/before insert/update/delete on 表名 for each row #这句话在mysql是固定的 begin sql语句; end;
一个例子为
需要先执行该语句:delimiter $(意思是告诉mysql语句的结尾换成以$结束) create trigger tg1 after insert on o for each row begin update g set num=num-3 where id=1; end$
这时候我们只要执行:
insert into o(gid,much) values(1,3)$
就会发现触发器被自动工作了
4、聚集索引和非聚集索引
聚集索引表示数据按照索引的顺序进行存储。显然,这样的检索效率高。但是如果插入和删除数据则会出发很大问题。
非聚集索引是索引存储在一个地方,索引带有的指针指向数据存储位置。索引中的项目按照索引的顺序存储,但是索引指向的数据没有规律。虽然检索效率低,但是,数据更新方便。
聚集索引适合在经常要搜索范围的值。这样知道第一个便可以依次遍历到最后一个。
相关文章推荐
- 相关数学理论和公式(基础知识杂选)
- -数据库速成教程-(一) 基础知识与基本概念
- HTML入门基础教程相关知识
- 数据库相关知识基础
- 3S基础知识:MapX应用教程-如何和大型数据库关联|空间数据库
- 专家系统/模糊理论/神经网络/遗传算法相关基础知识
- oracle教程1--数据库基础知识
- 基础会计的相关理论知识
- 数据库相关理论知识整理复习
- 数据库系统基础教程二:关系数据库设计理论
- 理论基础知识之————KB Kb Kbps 相关单位的区别和换算
- 通信相关基础知识0(FFT相关第一篇--傅里叶分析之掐死教程完整版)
- PostgreSQL入门学习之数据库连接相关基础知识
- 基础会计的相关理论知识
- HTML基础教程第3课-文字标签属性和文字布局相关知识
- JAVA相关基础知识(转载)
- Java数据库接口JDBC基础教程之驱动设置
- C++相关基础知识(转贴)
- JAVA相关基础知识---2