Mysql - 会话变量

Mysql - Set 命令

作用:
设置一个变量,将数据赋给变量,以后就可以用变量代替数据。
使用:

mysql> set @a=5;

设置之后,就可以用a代替5了。
自然设置的变量可以通过查询语句设置
比如:

mysql> set @sname =(select sname from student where studentno ='18122210009' );
Query OK, 0 rows affected (0.00 sec)

mysql> select studentno ,sname ,birthdate
    -> from student where sname=@sname;
+-------------+-------+------------+
| studentno   | sname | birthdate  |
+-------------+-------+------------+
| 18122210009 | 李健     | 1999-11-05 |
+-------------+-------+------------+
1 row in set (0.01 sec)

Prepared

直接先看例子更容易理解:

mysql> set @a=5;
Query OK, 0 rows affected (0.00 sec)
mysql> prepare STMT
    -> from "select courseno ,cname,type ,period from course limit?";
Query OK, 0 rows affected (0.01 sec)
Statement prepared

mysql> execute STMT using @a;
+----------+--------+------+--------+
| courseno | cname  | type | period |
+----------+--------+------+--------+
| c05109   | C++    | 必修     |     48 |
| c05127   | python | 选修    |     64 |
| c08126   | JAVA   | 必修     |     64 |
+----------+--------+------+--------+
3 rows in set (0.01 sec)

看完例子应该就对这个语句有了大致理解:
事先准备好select语句,对于参数使用 进行占位。使用时直接填充参数即可。
具体步骤:

  1. 使用PREPARE语句准备执行语句,使用问号(?)作为参数占位符。
  2. 使用EXECUTE语句来执行PREPARE代码。

作用:

  1. 提高查询的速度,访问时只需要提交数据,不需要提交sql语句。
  2. 使查询更安全,防止sql注入。

自定义函数function

使用:

mysql> delimiter &&

mysql> create function f_course(c_no varchar(6))
    -> returns char(6)
    -> begin return (select cname from course where courseno =c_no);
    -> end &&
Query OK, 0 rows affected (0.02 sec)

mysql> delimiter ;

mysql> select f_course ('c05109');
+---------------------+
| f_course ('c05109') |
+---------------------+
| C++                 |
+---------------------+
1 row in set (0.01 sec)
posted @ 2022-05-11 11:25  kingwzun  阅读(289)  评论(0编辑  收藏  举报