MySQL 存储过程

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。优点存储过程可封装,并隐藏复杂的商业逻辑。存储过程可以回传值,并可以接受参数。存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。存储过程可以用在数据检验,强制实行商业逻辑等。缺点存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。存储过程的性能调校与撰写,受限于各种数据库系统。staffs表结构idnameage1李虎132张三143李四13delimiter $$  #将语句的结束符号从分号;临时改为两个$$(可以是自定义) CREATE PROCEDURE delete_by_id(IN id INTEGER) ##定义存储过程和传参 BEGIN #存储过程开始 ...

P1583 魔法照片

题目描述一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人。佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i]。然后将初始权值从大到小进行排序,每人就有了一个序号D[i](取值同样是1--n)。按照这个序号对10取模的值将这些人分为10类。也就是说定义每个人的类别序号C[i]的值为(D[i]-1) mod 10 +1,显然类别序号的取值为1--10。第i类的人将会额外得到E[i]的权值。你需要做的就是求出加上额外权值以后,最终的权值最大的k个人,并输出他们的编号。在排序中,如果两人的W[i]相同,编号小的优先。输入格式第一行输入用空格隔开的两个整数,分别是n和k。第二行给出了10个正整数,分别是E[1]到E[10]。第三行给出了n个正整数,第i个数表示编号为i的人的权值W[i]。输出格式只需输出一行用空格隔开的k个整数,分别表示最终的W[i]从高到低的人的编号。输入输出样例输入 #110 10 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20输出 #110 9 8 7 6 5 4...

AVL树主要代码清单

/*返回树的高度*/ int GetHeight(SubTree T) { if (!T) return 0; else return T->height; } int Max(int a, int b) { return (a > b) ? a : b; } /*左子树的左边就要 往右转*/ SubTree LLRotate(SubTree T) { SubTree Tmp; Tmp = T; T = T->left; Tmp->left = T->right; T->right = Tmp; /*维护高度*/ Tmp->height = Max(GetHeight(Tmp->left), GetHeight(Tmp->right)) + 1; T->height = Max(GetHeight(T->left), GetHeight(T->right)) + 1; ret...

AVL树的初步了解

平衡二叉树(AVL树)空树或者,任意左右子树高度差的绝对值不超过1,|BF(1)|<=1平衡二叉树调整因“破坏者”的插入导致某个结点(发现者)不平衡所以需要相对应的旋转,才能达到平衡。右单旋转​ 不平衡的“发现者” 是1号,破坏平衡结点的是3号。3号在“发现者”的左子树的左边,因LL插入,需要(右单旋转)左单旋转“发现者” 为1号 “破坏者”为3号,3号在“发现者”的右子树的右边。因RR插入,需要(左单旋转)LR旋转 “破坏者”在“发现者”的左子树的右边所以需要LR旋转(先左后右旋转)。RL旋转 “破坏者”在“发现者”的右子树的左边所以需要RL旋转(先右后左旋转)。核心代码清单