1.between-Anweisung:
mysql> select * from 4a where score between 76 and 89; +--------+------+--------+------+--------+------+------+-------+ | sname | sage | tname | t | cname | s | c | score | +--------+------+--------+------+--------+------+------+-------+ | 刘一 | 18 | 贺高 | 2 | 数学 | 1 | 2 | 78 | | 钱二 | 19 | 叶平 | 1 | 语文 | 2 | 1 | 79 | | 钱二 | 19 | 贺高 | 2 | 数学 | 2 | 2 | 81 | | 张三 | 17 | 杨艳 | 3 | 英语 | 3 | 3 | 88 | | 李四 | 18 | 贺高 | 2 | 数学 | 4 | 2 | 88 | | 王五 | 17 | 杨艳 | 3 | 英语 | 5 | 3 | 78 | +--------+------+--------+------+--------+------+------+-------+ 6 rows in set (0.02 sec)
mysql> select * from 4a where score between 78 and 88; +--------+------+--------+------+--------+------+------+-------+ | sname | sage | tname | t | cname | s | c | score | +--------+------+--------+------+--------+------+------+-------+ | 刘一 | 18 | 贺高 | 2 | 数学 | 1 | 2 | 78 | | 钱二 | 19 | 叶平 | 1 | 语文 | 2 | 1 | 79 | | 钱二 | 19 | 贺高 | 2 | 数学 | 2 | 2 | 81 | | 张三 | 17 | 杨艳 | 3 | 英语 | 3 | 3 | 88 | | 李四 | 18 | 贺高 | 2 | 数学 | 4 | 2 | 88 | | 王五 | 17 | 杨艳 | 3 | 英语 | 5 | 3 | 78 | +--------+------+--------+------+--------+------+------+-------+ 6 rows in set (0.00 sec)
Aus diesen beiden Beispielen können wir ersehen, dass der Wertebereich der between-Klausel bei der Ausführung ihren Grenzwert einschließt.
2.or-Anweisung:
mysql> select * from 4a where score=78 or score=88 or score>88 or score<60; +--------+------+--------+------+--------+------+------+-------+ | sname | sage | tname | t | cname | s | c | score | +--------+------+--------+------+--------+------+------+-------+ | 刘一 | 18 | 叶平 | 1 | 语文 | 1 | 1 | 56 | | 刘一 | 18 | 贺高 | 2 | 数学 | 1 | 2 | 78 | | 刘一 | 18 | 周磊 | 4 | 物理 | 1 | 4 | 58 | | 钱二 | 19 | 杨艳 | 3 | 英语 | 2 | 3 | 92 | | 张三 | 17 | 叶平 | 1 | 语文 | 3 | 1 | 91 | | 张三 | 17 | 贺高 | 2 | 数学 | 3 | 2 | 47 | | 张三 | 17 | 杨艳 | 3 | 英语 | 3 | 3 | 88 | | 张三 | 17 | 周磊 | 4 | 物理 | 3 | 4 | 56 | | 李四 | 18 | 贺高 | 2 | 数学 | 4 | 2 | 88 | | 李四 | 18 | 杨艳 | 3 | 英语 | 4 | 3 | 90 | | 李四 | 18 | 周磊 | 4 | 物理 | 4 | 4 | 93 | | 王五 | 17 | 叶平 | 1 | 语文 | 5 | 1 | 46 | | 王五 | 17 | 杨艳 | 3 | 英语 | 5 | 3 | 78 | | 王五 | 17 | 周磊 | 4 | 物理 | 5 | 4 | 53 | | 赵六 | 19 | 叶平 | 1 | 语文 | 6 | 1 | 35 | | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 93 | +--------+------+--------+------+--------+------+------+-------+ 16 rows in set (0.00 sec)
Anhand dieses Beispiels können wir sehen, dass eine MySQL-Anweisung viele or-Klauseln enthalten kann.
3.in-Anweisung:
mysql> select * from 4a where score in (78,93); +--------+------+--------+------+--------+------+------+-------+ | sname | sage | tname | t | cname | s | c | score | +--------+------+--------+------+--------+------+------+-------+ | 刘一 | 18 | 贺高 | 2 | 数学 | 1 | 2 | 78 | | 李四 | 18 | 周磊 | 4 | 物理 | 4 | 4 | 93 | | 王五 | 17 | 杨艳 | 3 | 英语 | 5 | 3 | 78 | | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 93 | +--------+------+--------+------+--------+------+------+-------+ 4 rows in set (0.00 sec)
mysql> select * from 4a where score in (score>60); Empty set (0.00 sec)
Es scheint, dass die in-Anweisung nur mit einem oder mehreren bestimmten Datensätzen innerhalb der Klammern übereinstimmen kann, nicht jedoch mit ihnen.
mysql> select * from 4a where score>85; +--------+------+--------+------+--------+------+------+-------+ | sname | sage | tname | t | cname | s | c | score | +--------+------+--------+------+--------+------+------+-------+ | 钱二 | 19 | 杨艳 | 3 | 英语 | 2 | 3 | 92 | | 张三 | 17 | 叶平 | 1 | 语文 | 3 | 1 | 91 | | 张三 | 17 | 杨艳 | 3 | 英语 | 3 | 3 | 88 | | 李四 | 18 | 贺高 | 2 | 数学 | 4 | 2 | 88 | | 李四 | 18 | 杨艳 | 3 | 英语 | 4 | 3 | 90 | | 李四 | 18 | 周磊 | 4 | 物理 | 4 | 4 | 93 | | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 93 | +--------+------+--------+------+--------+------+------+-------+ 7 rows in set (0.00 sec)
Offensichtlich ist die Funktion „wo“ viel leistungsfähiger als „in“, daher ist auch die Befehlspriorität von „wo“ höher. Unter den gleichen Bedingungen ist der Suchbereich von where etwas größer als der von in – schließlich gibt es mit mehr Funktionen auch mehr Dinge zu suchen. Daher ist unter den gleichen Abfragebedingungen die Effizienz von where etwas schlechter als die von in, natürlich nur geringfügig. Da die Befehlspriorität von in niedriger ist als die von where, ist es natürlich wahrscheinlicher, dass SQL-Anweisungen Fehler melden, wenn sie in verwendet werden.
and-Anweisung:
mysql> select * from 4a where (score>85 and sage=18) and t=2; +--------+------+--------+------+--------+------+------+-------+ | sname | sage | tname | t | cname | s | c | score | +--------+------+--------+------+--------+------+------+-------+ | 李四 | 18 | 贺高 | 2 | 数学 | 4 | 2 | 88 | +--------+------+--------+------+--------+------+------+-------+ 1 row in set (0.00 sec)
Anhand dieses Beispiels können wir sehen, dass eine MySQL-Anweisung viele und-Klauseln enthalten kann.
Das obige ist der detaillierte Inhalt vonBeispiele für die Implementierung bedingter Einschränkungsanweisungen in MySQL (1). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!