数据库学习笔记(七)

一、MySQL索引有哪两种存储类型?其巾系统默认索引存储类型是什么?

索引的两种存储类型:B型树索引和哈希索引。其中B型树索引是系统默认的存储类型。支持B型树索引的是InnoDB和MyISAM。支持哈希索引的是MEMORY。

二、存储过程的优点

1.存储过程增强了SQL语言的功能和灵活性

2.存储过程允许标准组件编程,可以一次编译多次运行

3.存储过程能实现较快的执行速度

4.存储过程能减少网络流量。

5.存储过程可被作为一种安全机制来充分利用。

三. 创建存储过程

1.创建语句

创建存储过程的基本形式如下:

CREATE PROCEDURE 存储过程名 ([parameter[,...]]) [characteristic...]

BEGIN

过程体;

END;

例1:能够通过学号获得学生的姓名,第一种方式(用户变量在调用的时候定义)

(1)创建存储过程:

-- 创建存储过程(查)

DELIMITER //

CREATE PROCEDURE p_stu(IN xh CHAR(15),OUT xm CHAR(10))

BEGIN

SELECT sname INTO xm FROM student WHERE sno=xh;

END;

-- 执行存储过程

SET @name=NULL;

CALL p_stu('0601020212',@name)

-- 查询变量,获得值

SELECT @name;

例2:创建存储过程,可以实现对sdept表数据的录入

-- 创建存储过程(增)

DROP PROCEDURE IF EXISTS p_insdept

DELIMITER //

CREATE PROCEDURE p_insdept(in_dno CHAR(2),in_name VARCHAR(30),in_addr VARCHAR(50),in_tele CHAR(15))

BEGIN

INSERT INTO sdept VALUES(in_dno,in_name,in_addr,in_tele);

END;

-- 插入数据

CALL p_insdept('12','电子信息学院','沿滨路6号','84233312');

例3:使用存储过程录入数据时,违反主键、唯一约束,需要给出提示,代码正常结束。

  1. -- 创建存储过程(异常处理:违反主键唯一约束)

    DROP PROCEDURE IF EXISTS p_insdept

    DELIMITER //

    CREATE PROCEDURE p_insdept(in_dno CHAR(2),in_name VARCHAR(30),in_addr VARCHAR(50),in_tele CHAR(15))

    BEGIN

    DECLARE EXIT HANDLER FOR 1062 SET @status='违反约束';

    INSERT INTO sdept VALUES(in_dno,in_name,in_addr,in_tele);

    END;

    -- 调用存储过程

    CALL p_insdept('05','外语学院','南京路10号','888881230');

    -- 查看异常值

    SELECT @status;

2.-- 创建存储过程(异常处理:违反外键约束)

DROP PROCEDURE IF EXISTS p_delsdept;

DELIMITER //

CREATE PROCEDURE p_delsdept(in_name VARCHAR(30))

BEGIN

-- declare continue handler for sqlstate'23000' set @sta='违反外键约束';

DECLARE CONTINUE HANDLER FOR 1451 SET @sta='违反外键约束';

DELETE FROM sdept WHERE dname=in_name;

END;

-- 调用存储过程

CALL p_delsdept('计算机学院');

-- 查看存储过程的异常值

SELECT @sta;

例4:创建存储过程,可以实现根据学院的名称对sdept表数据的删除操作

-- 创建存储过程(删)

DELIMITER //

CREATE PROCEDURE p_delsdept(in_name VARCHAR(30))

BEGIN

DELETE FROM sdept WHERE dname=in_name;

END;

CALL p_delsdept('电子信息学院');

例5:使用存储过程删除sdept表中数据,输入参数为院系名称,当该院系被其他表引用,则提示出现外键约束,代码正常结束

  1. 判断错误码

错误码: 1451,触发外键关联

delete from sdept where dname='计算机学院’;

  1. 创建存储过程

drop procedure if exists p_delsdept;

create procedure p_delsdept(in_name varchar(30));

BEGIN

-- declare continue handler for SQLSTATE23000 set @sta=’违反外键约束’;

declare continue handler for 1451 set @sta='违反外键约束’;

delete from sdept where dname=in_name;

end;

  1. 调用存储过程

call p_delsdept(‘计算机学院’);

  1. 查看存储过程中的异常值:select @sta;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值