mysql语句:存储过程、mysql执行流程、MySQL 索引

存储过程

  • 基本过程:
  1. 定义变量`
SET @studentNo = 2;
SET @loginPwd = '111111';
SET @studentName = '测试名字';
SET @sex = '女';
SET @gradeId = 7;
SET @phone = '18391234541';
SET @address = 'xxxxxx';
  1. 创建存储过程
CREATE PROCEDURE insertStudent(in studentNo int(4),loginPwd varchar(20),studentName varchar(50),
                               sex char(2),gradeId int(4),phone varchar(50),address varchar (255))
BEGIN
insert into student(studentNo,loginPwd,studentName,sex,gradeId,phone,address) 
            values(studentNo,loginPwd,studentName,sex,gradeId,phone,address);
SELECT studentNo;
END

创建过程外:
变量声明并赋值

SELECT 'HELLO ZHANGSAN!' INTO @hello;

查询变量内容

SELECT @hello;

创建过程中:
变量声明并赋值

DECLARE str VARCHAR(10);
SELECT 'HELLO ZHANGSAN!' INTO str;
set str = 'HELLO ZHANGSAN!';
  1. 执行存储过程
CALL insertStudent(@studentNo,@loginPwd,@studentName,@sex,@gradeId,@phone,@address);
  1. 删除存储过程
drop PROCEDURE insertstudent;

IN OUT INOUT

  • IN 输入参数 表示改参数的值 必须在调用存储过程时指定,在存储过程中改参数的值不能被返回
-- IN
CREATE PROCEDURE get_in(in stuNo int(4))
BEGIN
SELECT stuNo;  -- 1: 存储过程输入了参数stuNo
SET stuNo=1011; -- 1011:存储过程中 改参数的值
SELECT stuNo;
END

SET @stuNo = 1;
CALL get_in(@stuNo); -- 调用存储过程时 指定输入参数
-- 存储过程 没有输出参数 stuNo仍为1
select @stuNo;  -- 1:存储过程中改参数的值 不能被返回

  • OUT 输出参数 该值在存储过程中,内部被改变并可以返回
-- OUT  
CREATE PROCEDURE get_out(out stuNo int(4))
BEGIN
SELECT stuNo;  -- null:没有输入参数 没有初值,默认为null
SET stuNo=1011;
SELECT stuNo;
END

SET @stuNo=1;
CALL get_out(@stuNo); -- 调用必须有形参@x 
SELECT @stuNo+1;-- 1012(存储过程输出了参数stuNo1011)
  • INOUT 输入输出参数,调用是指定,并且可以被改变和返回
 -- INOUT
CREATE PROCEDURE demo_in_out(INOUT p_inout INT)
BEGIN
SELECT p_inout;  -- 1 :存储过程输入了参数stuNo
SET p_inout =2; -- 2
SELECT p_inout;  
END

SET @stuNo=1;
CALL demo_in_out(@stuNo); -- stuNo为1 (存储过程输出了参数stuNo)
-- 存储过程 输出了参数 stuNo为2
SELECT @stuNo+1;  -- 3

存储过程 使用if

if xx (无分号)
then xx;
else xx;
end if;

CREATE PROCEDURE addSex(in sex int(1))
BEGIN
DECLARE str VARCHAR(10);  -- DECLARE:声明一个变量

if sex = 0  -- IF语句开始
THEN  set str = '男';
ELSE set str = '女';
end IF ;  -- IF语句结束

select str;
END

set @sex = 0;
CALL addSex(@sex);

if xx(无分号)
then xx;
elseif xx (无分号)
then xx;
else xx;
end if;

CREATE PROCEDURE adSex(in sex int(1))
BEGIN
DECLARE str VARCHAR(10);  -- DECLARE:声明一个变量
if sex = 0  -- IF语句开始
THEN  set str = '男';
ELSEIF sex = 1
then set str = '女';
else set str = '未知性别';
end IF ;  -- IF语句结束

select str;
END

set @sex = 3;
CALL adSex(@sex);

存储过程 使用case

CASE x (无分号)
WHEN x THEN xx;
WHEN x THEN xx;
END CASE;

CREATE PROCEDURE addSex1(in sex int(1))
BEGIN
DECLARE str VARCHAR(10);
CASE sex  -- 开始case
WHEN 0 THEN SET str = '男';
WHEN 1 THEN SET str = '女';
when 2 then set str = '未知性别';
END CASE;  -- 结束case
select str;	
END

set @sex = 2;
CALL addSex1(@sex);

存储过程 使用loop 循环

既没有输入参数 也没有输出参数 的存储过程addSex2()
LOOP名:LOOP(无分号)
xx;
xx;
END LOOP;

CREATE PROCEDURE addSex2()
BEGIN
	DECLARE var int;
	set var = 0;
	LOOP_LABLE:LOOP -- LOOP开始循环(起名为 LOOP_LABLE)
	INSERT INTO table1 VALUES('循'); -- 循环体
	SET var = var +1;
	IF var >10 THEN
		LEAVE LOOP_LABLE; -- LOOP离开循环 (语法 LEAVE 循环名称;)
	END IF;
	END LOOP; -- LOOP结束循环
END

CALL addSex2();

mysql执行流程

在这里插入图片描述

MySQL 索引

索引的作用

确保数据的唯一性,
快速的定位特定数据,
提高查询的速度(使用分组和排序进行数据检索时 可以显著的减少时间)

索引的缺点

insert update delete时,降低表的更新速度
《 保存内容,保存索引文件

什么时候建索引

  • 不必建索引
  1. 某列有许多重复
  2. 对于很小的表
  • 需要建索引
  1. 经常查的列
  2. 但不经常改变的列

有哪些

  • 主键索引
  1. 最 常见的索引 类型
  2. 确保数据记录的唯一性,确定特定的数据记录在数据库中的位置
  3. 主键索引只能有一个
  • 唯一索引
  1. 避免同一个表中某数据列中值重复
  2. 唯一索引可以有多个
  • 常规索引
  1. 快速的定位到特定数据
  • 全文索引
  1. 快速的定位特定数据
  2. 只能用于MyISAM类型的表,只能用于 CHAR VARCHAR TEXT数据类型 适合大型数据集。

怎样添加

ALTER TABLE ‘表名’ ADD INDEX 索引名ind(studentNo,subjectNo)
ALTER TABLE cardinfo ADD INDEX (IsReportLoss)

索引的底层数据结构

B-TREE B+TREE HASH等
– B树特征
– B+数 从根节点到叶子结点,逐级查找
HASH
– 是采用一定的哈希算法,把键换算成新的哈希值
– 只需要一次哈希算法结合立刻定位到响应的位置,速度非常快 不支持范围查询 比如 WHERE price > 100

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值