c 静态函数调用控件 2022年Java面试题,很全面

 2024-02-28 00:03:15  阅读 0

将其定义为片段,但是这种方法不好,所以使用th:block。

引用

该标签不影响静态页面。

MySQL 存储过程

SQL语句需要先编译然后执行,而存储过程()是一组完成特定功能的SQL语句。 它们被编译并存储在数据库中。 用户通过指定存储过程的名称并提供参数(如果有)来调用它们。 执行它。

存储过程是在数据库中创建并保存的可编程函数,可以由 SQL 语句和控制结构组成。 当您想要跨不同应用程序或平台执行相同的功能或封装特定功能时,存储过程非常有用。 数据库中的存储过程可以看作是编程中面向对象方法的模拟,它允许控制数据的访问方式。

存储过程的优点:

1.增强SQL语言的功能和灵活性:存储过程可以用控制语句来编写,具有很强的灵活性,可以完成复杂的判断和更复杂的操作。

2、标准组件编程:存储过程创建后,可以在程序中多次调用,而无需重写存储过程的SQL语句。 数据库专业人员可以随时修改存储过程,而不会影响应用程序源代码。

3、执行速度更快:如果一个操作包含大量SQL代码或者执行多次,存储过程的执行速度将比批处理快得多。 因为存储过程是预编译的。 当存储过程第一次运行时,优化器会对查询进行分析和优化,最终将执行计划存储在系统表中。 Batch-SQL语句每次运行时都必须进行编译和优化,速度相对较慢。

4、减少网络流量:对于约定数据库对象的操作(如查询、修改),如果将这个操作涉及到的SQL语句组织成一个存储过程,那么当在客户端计算机上调用该存储过程时,将会通过网络传输的只是那个调用语句,减少了网络流量,降低了网络负载。

5、充分利用它作为安全机制:通过限制执行某个存储过程的权限,可以限制相应数据的访问权限,避免非授权用户访问数据,保证数据的安全。 。

.0以后开始支持存储过程,提高了数据库的处理速度和编程的灵活性。

MySQL存储过程的创建

语法

过程名称 ([IN | OUT | INOUT]) 参数名称数据类型 [IN | OUT | INOUT] 输出 | INOUT] 参数名称数据类型...]]) [特征...] 过程体

例子:

//

(输出INT)

开始

COUNT(*) INTO s FROM ;

结尾

//

;

分隔符

MySQL 使用“;” 默认作为分隔符。 如果没有声明分隔符,编译器会将存储过程视为SQL语句,因此编译过程会报错。因此,我们需要使用“//”来声明当前的段分隔符,让编译器将两者结合起来

“//”之间的内容被视为存储过程的代码,这些代码不会被执行;

最后一句“;” 表示恢复分隔符

范围

存储过程可以根据需要具有输入、输出以及输入和输出参数。 如果有多个参数,请将它们分开。 存储过程的定义中必须使用MySQL存储过程的参数。 参数类型共有三种: IN OUT INOUT

过程体

流程体的开始和结束用BEGIN和END标记。

调用存储过程时必须指定 IN 参数的值。 如果在存储过程中修改了参数的值,则无法返回,且为默认值。

//

(IN p_in int)

开始

别针;

设置 p_in=2;

别针;

结尾;

//

;

#转移

设置@p_in = 1;

调用(@p_int);

@别针;

结果:

1 存储过程中set p_in =2 不返回。

OUT的值可以在存储过程内部改变并且可以返回

//

(OUT p_out int)

开始

噘;

设置 p_out=2;

噘;

结尾;

//

;

#转移

设置@p_out = 1;

调用(@p_out);

@噘;

结果:

null?看来这个参数传入存储过程后就被清除了。

INOUT 在调用时指定,可以更改并返回

//

(输入输出整数)

开始

;

设置=2;

;

结尾;

//

;

#转移

设置@=1;

称呼 (@) ;

@;

结果

多变的

语法:变量名1[,变量名2....]数据类型[默认值];

数据类型是MySQL数据类型,我就不写了!

变量赋值

语法:SET 变量名=变量值

用户变量

用户变量一般以@开头

注意:滥用用户变量会使程序难以理解和管理。

#在MySQL客户端使用用户变量

将“HELLO WORLD”输入@x;

@X;

设置@y='';

@y;

设置@z=1+2+3;

@z;

结果:

你好世界

#在存储过程中使用用户变量

() (@,'世界');

设置@='你好';

称呼 ();

结果

#在存储过程之间传输全局范围的用户变量

p1() SET @='p1';

p2() ('最后是',@);

调用 p1();

调用 p2();

结果

最后是p1

评论

两种风格的存储过程注释

1.双杠:-一般用于单行注释

2.C风格:一般用于多行注释

存储过程调用

使用 call 和过程名称以及括号,并根据需要在括号内添加参数,如上面的示例所示。

存储过程查询

#查询存储过程

name FROM mysql.proc WHERE db='数据库名称';

从 。 WHERE = '数据库名称';

SHOW WHERE db='数据库名称';

#查看存储过程详细信息

SHOW 数据库.存储过程名称;

存储过程的修改

ALTER 更改创建的预先指定的存储过程,而不影响存储过程或存储功能。

改变{| } [ ....]

:

{ SQL | 没有 SQL | 读取 SQL 数据 | SQL 数据 |

SQL { | } | ''}

参数代表存储过程或函数的名称;

参数指定存储函数的特征

SQL是指子程序中包含SQL语句,不包含读取或写入数据的语句;

NO SQL表示子程序不包含SQL语句

READS SQL DATA 表示子例程包含读取数据的语句。

SQL DATA 表示子例程包含用于写入数据的语句。

SQL{|}指定谁有权限执行,表示只有定义者可以执行,表示调用者可以执行

''为注释信息

例子:

#更改SQL DATA的读写权限并表明调用者可以执行

改变

SQL数据

SQL;

#更改RAEDS SQL DATA的读写权限,并添加注释信息“FIND NAME”

改变

读取 SQL 数据

'查找名称';

删除MySQL存储过程

DROP [进程 1 [,进程 2....]]

从 MySQL 表中删除一个或多个存储过程

MySQL存储过程控制语句

变量范围

内部变量在其范围内具有更高的优先级。 当执行结束时,内部变量消失并且不再可见。 这个内部变量不能再在存储过程之外找到,但可以通过 Out 参数或将值赋给会话变量来保存它们的值。

#变量范围

//

过程()

开始

x1 (5) '外部';

开始

x1 (5) '内部';

x1;

结尾;

x1;

结尾;

//

;

#转移

调用过程();

结果:

条件语句

IF-THEN-ELSE 语句

#条件语句 IF-THEN-ELSE

删除 IF proc3;

//

proc3(IN 整数)

开始

var int;

设置变量=+1;

如果变量=0 那么

进入t (17);

万一 ;

如果=0则

tSET s1=s1+1;

别的

tSET s1=s1+2;

万一 ;

结尾;

//

;

CASE-WHEN-THEN-ELSE 语句

#CASE-WHEN-THEN-ELSE 语句

//

proc4(输入整数)

开始

设置变量=+1;

案例变量

当 0 那么

进入t (17);

当 1 那么

进入t (18);

别的

进入t (19);

结束案例;

结尾;

//

;

循环语句

趁-做…结束-同时

//

过程5()

开始

设置变量=0;

WHILE var INTO t (var);

设置变量=变量+1;

结束同时;

结尾;

//

;

...结尾

该语句的特点是执行完操作后检查结果

//

过程6()

开始

酿酒;

设置v=0;

进入 t (v);

设置v=v+1;

直到 v>=5

结尾;

结尾;

//

;

循环...结束循环

//

过程7()

开始

酿酒;

设置v=0;

:环形

进入 t (v);

设置v=v+1;

如果 v >=5 那么

离开;

万一;

结束循环;

结尾;

//

;

标签

标签可以用在begin while 或loop 语句之前,并且语句标签只能在合法语句之前使用。 您可以跳出循环,使执行指令到达复合语句的最后一步。

迭代

通过引用其标签来重新启动复合语句

#

//

proc8()

开始

酿酒;

设置v=0;

:环形

如果 v=3 那么

设置v=v+1;

;

万一;

进入 t (v);

设置v=v+1;

如果 v>=5 那么

离开;

万一;

结束循环;

结尾;

//

;

MySQL存储过程的基本功能

字符串类

(str) //返回字符串字符集

([,...]) //连接字符串

INSTR ( , ) //返回第一次出现的位置,如果不存在则返回0

LCASE() //转换为小写

LEFT ( , ) //从左边取一个字符

( ) //长度

( ) //从文件中读取内容

( , [, ] ) 与 INSTR 相同,但可以指定起始位置

LPAD ( , ,pad ) //在开头重复添加pad,直到字符串长度为

LTRIM() //去掉前导空格

(,count) //重复count次

(str, ,) //替换为str

RPAD ( , ,pad) //在str后面添加pad,直到长度为

RTRIM() //去除后端空格

( , ) //逐个字符比较两个字符串的大小,

(str, [, ]) //从str开头,取一个字符,

注意:MySQL中处理字符串时,默认首字符下标为1,即参数必须大于等于1

('abcd',0,2);

结果:无

('abcd',1,2);

结果:ab

TRIM([[BOTH||] [] FROM]) //删除指定位置的指定字符

UCASE() //转换为大写

RIGHT(,) //获取最后一个字符

SPACE(count) //生成count个空格

数学

ABS() //绝对值

BIN() //将十进制转换为二进制

( ) //向上取整

CONV(,,) //十六进制转换

FLOOR () //向下取整

(, ) //保留小数位数

HEX() //转换为十六进制

注意:可以将字符串传递给 HEX(),并且将返回其 ASC-11 代码。 例如,HEX('DEF') 返回

还可以传入十进制整数并返回其十六进制代码,例如 HEX(25) 返回 19

LEAST ( , [,..]) //求最小值

MOD ( , ) //求余数

POWER (,power) //求指数

RAND([seed]) //随机数

ROUND([,]) //四舍五入到最接近的小数位] 注意:并非所有返回类型都是整数,例如:

回合(1.23);

回合(1.56);

#设置小数位数并返回浮点数据

回合(1.567,2);

1.57

SIGN ( ) // 正数返回 1,负数返回 -1

日期时间类

(date2, ) //将添加到date2

( , ,toTZ ) //转换时区

( ) //当前日期

( ) //当前时间

( ) //当前时间戳

DATE() //返回日期部分

(date2, ) //向date2添加日期或时间

( , ) //使用格式显示

(date2, ) //从date2中减去时间

(date1,date2) //两个日期之间的差异

DAY(日期) //返回日期中的第几天

(date) //英语周

(date) //周(1-7), 1是星期日

(date) //一年中的第几天

(FROM date) //从date中提取日期的指定部分

(year,day) //给定年份和年份中的日期,生成日期字符串

(hour, ,) //生成时间字符串

(date) //英文月份名称

NOW() //当前时间

( ) //将秒转换为时间

( , ) //将字符串转换为时间并以格式显示

( , ) //两个时间差

(time) //时间到秒]

周 ([, ]) //周

YEAR ( ) //年份

() //该月的第几天

HOUR() //小时

(date) //date月份的最后一个日期

() //微秒

MONTH() //月份

() //返回符号,正数或负数或0

SQRT() //平方根

标签: 存储 语句 变量

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码