存储程序
自定义变量
变量定义符号:**@**
- 设置变量,并赋值 ```sql mysql> SET @a = 1; Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @a; +———+ | @a | +———+ | 1 | +———+ 1 row in set (0.00 sec)
- 变量可以存储不同类型的值
```sql
mysql> SET @a = '哈哈哈';
Query OK, 0 rows affected (0.01 sec)
mysql> SELECT @a;
+-----------+
| @a |
+-----------+
| 哈哈哈 |
+-----------+
1 row in set (0.00 sec)
- 变量 a 的值,赋值给 变量 b ```sql mysql> SET @b = @a; Query OK, 0 rows affected (0.00 sec)
mysql> select @b; +—————-+ | @b | +—————-+ | 哈哈哈 | +—————-+ 1 row in set (0.00 sec)
- 将查询结果赋值给变量
- 前提是该查询结果只有一个**值**,注意:这是一个值,不是一条记录。
方式一:该方式只能存储只有一个值的一条记录。
```sql
mysql> SET @a = (SELECT m1 FROM t1 LIMIT 1);
Query OK, 0 rows affected (0.00 sec)
方式二:
mysql> SELECT n1 FROM t1 LIMIT 1 INTO @b;
Query OK, 1 row affected (0.00 sec)
方式二可以用来将一条查询记录中的多个值赋值到多个变量上
mysql> SELECT m1, n1 FROM t1 LIMIT 1 INTO @a, @b;
Query OK, 1 row affected (0.00 sec)
语句结束分隔符
在默认情况下,当我们完成键盘输入并按下回车键时,MySQL客户端会检测我们输入的内容中是否包含 ;
、\g
或者 \G
这三个符号之一,如果有的话,会把我们输入的内容发送到服务器。这样一来,如果我们想一次性给服务器发送多条的话,就需要把这些语句写到一行中,比如这样:
mysql> SELECT * FROM t1 LIMIT 1;SELECT * FROM t2 LIMIT 1;SELECT * FROM t3 LIMIT 1;
+------+------+
| m1 | n1 |
+------+------+
| 1 | a |
+------+------+
1 row in set (0.00 sec)
+------+------+
| m2 | n2 |
+------+------+
| 2 | b |
+------+------+
1 row in set (0.00 sec)
+------+------+
| m3 | n3 |
+------+------+
| 3 | c |
+------+------+
1 row in set (0.00 sec)
mysql>