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语句,对于参数使用 ? 进行占位。使用时直接填充参数即可。
具体步骤:
- 使用PREPARE语句准备执行语句,使用问号(?)作为参数占位符。
- 使用EXECUTE语句来执行PREPARE代码。
作用:
- 提高查询的速度,访问时只需要提交数据,不需要提交sql语句。
- 使查询更安全,防止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)