Rumah  >  Artikel  >  pangkalan data  >  Mari kita bincangkan tentang asas pembolehubah tersuai MySQL dan pembatas akhir pernyataan

Mari kita bincangkan tentang asas pembolehubah tersuai MySQL dan pembatas akhir pernyataan

WBOY
WBOYke hadapan
2022-01-18 18:00:502345semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang pembolehubah tersuai dan pembatas akhir pernyataan dalam mysql.

Mari kita bincangkan tentang asas pembolehubah tersuai MySQL dan pembatas akhir pernyataan

Program kedai

Kadangkala untuk melengkapkan fungsi biasa, banyak pernyataan perlu dilaksanakan dan setiap kali anda perlu memasukkan pernyataan ini satu demi satu satu dalam klien Pelbagai pernyataan menjengkelkan. Pakcik yang merancang MySQL dengan sangat teliti memberikan kami sesuatu yang dipanggil 存储程序 ini boleh merangkum beberapa kenyataan dan kemudian memberikan pengguna cara mudah untuk memanggil program yang disimpan ini, dengan itu melaksanakan pernyataan ini secara tidak langsung. Mengikut kaedah panggilan yang berbeza, kita boleh membahagikan 存储程序 kepada beberapa jenis: 存储程序, 存储例程 dan 触发器. Antaranya, 事件 boleh dibahagikan kepada 存储例程 dan 存储函数. Mari lukis gambar untuk menunjukkannya: 存储过程

Mari kita bincangkan tentang asas pembolehubah tersuai MySQL dan pembatas akhir pernyataan

Jangan takut terdapat banyak konsep yang tidak biasa Kami akan memecahkannya kemudian. Walau bagaimanapun, sebelum kami memperkenalkan

secara rasmi, kami perlu terlebih dahulu memahami konsep pembolehubah tersuai dan pembatas akhir pernyataan dalam 存储程序. MySQL

Pengenalan kepada pembolehubah tersuai

Dalam kehidupan kita sering menghadapi beberapa nilai tetap, seperti nombor

dan rentetan 100 Kami menetapkan nilai ini Dongdong memanggilnya '你好呀'. Tetapi kadangkala untuk kemudahan, kami akan menggunakan simbol tertentu untuk mewakili nilai, dan nilai yang diwakilinya boleh berubah. Sebagai contoh, kami menetapkan bahawa simbol 常量 mewakili nombor a, dan kemudian kami boleh membiarkan simbol 1 mewakili nombor a Kami memanggil perkara seperti ini yang nilainya boleh berubah 2, di mana simbol 变量 dipanggil a pembolehubah ini. Dalam 变量名, kita boleh menyesuaikan beberapa pembolehubah kita sendiri melalui penyataan MySQL, contohnya: SET

mysql> SET @a = 1;
Query OK, 0 rows affected (0.00 sec)

mysql>
Pernyataan di atas menunjukkan bahawa kita telah mentakrifkan pembolehubah yang dipanggil

pembolehubah dan tetapkan integer a kepada pembolehubah ini. Walau bagaimanapun, semua orang perlu memberi perhatian kepada hakikat bahawa bapa saudara yang mereka bentuk MySQL menetapkan bahawa kita mesti menambah simbol 1 di hadapan pembolehubah tersuai kami (walaupun ia agak pelik, ini adalah yang ditetapkan oleh orang lain, jadi semua orang boleh mematuhinya). @

Jika kita ingin menyemak nilai pembolehubah ini kemudian, hanya gunakan pernyataan

, tetapi kita masih perlu menambah simbol SELECT sebelum nama pembolehubah: @

mysql> SELECT @a;
+------+
| @a   |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

mysql>
Sama seperti Pembolehubah juga boleh menyimpan jenis nilai yang berbeza Sebagai contoh, kami menetapkan nilai rentetan kepada pembolehubah

: a

mysql> SET @a = '哈哈哈';
Query OK, 0 rows affected (0.01 sec)

mysql> SELECT @a;
+-----------+
| @a        |
+-----------+
| 哈哈哈    |
+-----------+
1 row in set (0.00 sec)

mysql>
Selain memberikan pemalar kepada pembolehubah, kita juga boleh. tetapkan Berikan pembolehubah kepada pembolehubah lain:

mysql> SET @b = @a;
Query OK, 0 rows affected (0.00 sec)

mysql> select @b;
+-----------+
| @b        |
+-----------+
| 哈哈哈    |
+-----------+
1 row in set (0.00 sec)

mysql>
supaya pembolehubah

dan a mempunyai nilai yang sama b! '哇哈哈'

Kami juga boleh menetapkan hasil pertanyaan tertentu kepada pembolehubah, dengan syarat hasil pertanyaan ini hanya mempunyai satu nilai:

mysql> SET @a = (SELECT m1 FROM t1 LIMIT 1);
Query OK, 0 rows affected (0.00 sec)

mysql>
Kami juga boleh menggunakan bentuk pernyataan lain untuk Hasil pertanyaan diberikan kepada pembolehubah:

mysql> SELECT n1 FROM t1 LIMIT 1 INTO @b;
Query OK, 1 row affected (0.00 sec)

mysql>
Oleh kerana hasil pertanyaan pernyataan

dan SELECT m1 FROM t1 LIMIT 1 hanya mempunyai satu nilai, mereka boleh ditugaskan terus kepada pembolehubah SELECT n1 FROM t1 LIMIT 1 atau a . Mari semak nilai kedua-dua pembolehubah ini: b

mysql> SELECT @a, @b;
+------+------+
| @a   | @b   |
+------+------+
|    1 | a    |
+------+------+
1 row in set (0.00 sec)

mysql>
Jika hasil pertanyaan kami ialah rekod dengan berbilang nilai lajur, kami ingin menetapkan nilai ini kepada yang berbeza Dalam pembolehubah, hanya

pernyataan boleh digunakan: INTO

mysql> SELECT m1, n1 FROM t1 LIMIT 1 INTO @a, @b;
Query OK, 1 row affected (0.00 sec)

mysql>
Set hasil pernyataan pertanyaan ini hanya mengandungi satu rekod Kami menetapkan nilai lajur

rekod ini kepada pembolehubah , nilai. daripada lajur m1 diperuntukkan kepada pembolehubah a. n1bPenghalang akhir pernyataan

Pada antara muka interaktif klien

, apabila kami melengkapkan input papan kekunci dan menekan kekunci Enter, klien

akan mengesan perkara yang kami masukkan Adakah ia mengandungi salah satu daripada tiga simbol MySQL, MySQL atau ;? Jika ya, kandungan yang kami masukkan akan dihantar ke pelayan. Dengan cara ini, jika kami ingin menghantar berbilang mesej ke pelayan sekaligus, kami perlu menulis pernyataan ini dalam satu baris, seperti ini: gG

Sebab kesulitan ini ialah
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>
klien Simbol yang digunakan untuk menamatkan input pengesanan terminal adalah sama dengan simbol yang memisahkan setiap pernyataan! Malah, kita juga boleh menggunakan perintah

untuk menyesuaikan simbol pada penghujung input pernyataan pengesanan MySQL, iaitu apa yang dipanggil delimiter, contohnya: MySQL

mysql> delimiter $
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>

delimiter $命令意味着修改语句结束分隔符为$,也就是说之后MySQL客户端检测用户语句输入结束的符号为$。上边例子中我们虽然连续输入了3个以分号;结尾的查询语句并且按了回车键,但是输入的内容并没有被提交,直到敲下$符号并回车,MySQL客户端才会将我们输入的内容提交到服务器,此时我们输入的内容里已经包含了3个独立的查询语句了,所以返回了3个结果集。

我们也可以将语句结束分隔符重新定义为$以外的其他包含单个或多个字符的字符串,比方说这样:

mysql> delimiter EOF
mysql> SELECT * FROM t1 LIMIT 1;
    -> SELECT * FROM t2 LIMIT 1;
    -> SELECT * FROM t3 LIMIT 1;
    -> EOF
+------+------+
| 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>

我们这里采用了EOF作为MySQL客户端检测输入结束的符号,是不是很easy啊!当然,这个只是为了方便我们一次性输入多个语句,在输入完成之后最好还是改回我们常用的分号;吧:

mysql> delimiter ;

小贴士: 我们应该避免使用反斜杠(\)字符作为语句结束分隔符,因为这是MySQL的转义字符。

推荐学习:mysql视频教程

Atas ialah kandungan terperinci Mari kita bincangkan tentang asas pembolehubah tersuai MySQL dan pembatas akhir pernyataan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam