mysql實現條件限制語句的實例(一)

1.between語句:

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)

由這兩個例子我們可以看出between子句執行時取值范圍時是包括它的邊界值的。

2.or語句:

mysql&gt;?select?*?from?4a?where?score=78?or?score=88?or?score&gt;88?or?score<p>通過這個例子我們可以看出:一個<a style="color:#f60; text-decoration:underline;" title="mysql" href="https://www.php.cn/zt/15713.html" target="_blank">mysql</a>語句中可以有許多個or子句。</p><p>3.in語句:</p><pre class="brush:sql;toolbar:false">mysql&gt;?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&gt;?select?*?from?4a?where?score?in?(score&gt;60);  Empty?set?(0.00?sec)

看來in語句只能對括號內的具體的某條或某幾條記錄進行匹配,而無法對其進行邏輯匹配。

mysql&gt;?select?*?from?4a?where?score&gt;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)

顯然where的功能要比in強大得多,因此where的命令優先級也比高一些。而相同條件下where的搜尋范圍也比in要大一點—畢竟功能多了,要搜尋的東西就多了。所以,相同的查詢條件下where的效率會比in稍微差一點點,當然也僅僅是一點點而已。當然由于in的命令優先級較where低,所以用in的話SQL語句也更容易報錯。

and語句:

mysql&gt;?select?*?from?4a?where?(score&gt;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)

通過這個例子我們可以看出:一個mysql語句中可以有許多個and子句。

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享