數據庫Ⅸ——MySQL中的運算符(算術、比較、邏輯)

一、算術運算符

1.總結

image

2.測試

- 加、減、乘、除(DIV)

mysql>  SELECT 1+1,1-1,2*4,3/8;
+-----+-----+-----+--------+
| 1+1 | 1-1 | 2*4 | 3/8    |
+-----+-----+-----+--------+
|   2 |   0 |   8 | 0.3750 |
+-----+-----+-----+--------+

#數字和字符串相加會有警告

mysql> SELECT 1+'3MAIZI';
+------------+
| 1+'3MAIZI' |
+------------+
|          4 |
+------------+
1 row in set, 1 warning (0.03 sec)
mysql> SHOW WARNINGS;
+---------+------+--------------------------------------------+
| Level   | Code | Message                                    |
+---------+------+--------------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: '3MAIZI' |
+---------+------+--------------------------------------------+

- 取餘:% 、MOD

mysql> SELECT 3%8;
+------+
| 3%8  |
+------+
|    3 |
+------+
1 row in set (0.00 sec)

#也可以表達爲:SELECT MOD(3,8);
注意:除法用 DIV()的形式不行,必須: X1 DIV X2

mysql> SELECT 3 MOD 8; 
+---------+
| 3 MOD 8 |
+---------+
|       3 |
+---------+
1 row in set (0.00 sec)

-NULL參加運算

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

二、比較運算符

1.總結

image

2.測試

- <,>,=,!=

  • 結果真爲1,結果假爲0,數字可以和字符串比較
mysql> SELECT 1=1,1='1',1=2;
+-----+-------+-----+
| 1=1 | 1='1' | 1=2 |
+-----+-------+-----+
|   1 |     1 |   0 |
+-----+-------+-----+
1 row in set (0.00 sec)

調出學生表

mysql> SELECT * FROM student;
+----+----------+-------+
| id | username | score |
+----+----------+-------+
|  1 | king     |    95 |
|  2 | king1    |    35 |
|  3 | king2    |    45 |
|  4 | king3    |    55 |
|  5 | king4    |    65 |
|  6 | king5    |    75 |
|  7 | king6    |    80 |
|  8 | king7    |    90 |
|  9 | king8    |    25 |
+----+----------+-------+
  • 判斷表中是否有相同用戶名
mysql> SELECT username,username='king' FROM student;
+----------+-----------------+
| username | username='king' |
+----------+-----------------+
| king     |               1 |
| king1    |               0 |
| king2    |               0 |
| king3    |               0 |
| king4    |               0 |
| king5    |               0 |
| king6    |               0 |
| king7    |               0 |
| king8    |               0 |
+----------+-----------------+

SELECT username,username!='king' FROM student;

- 判斷 NULL 必須用 <=> 或IS

創建一個新表,插入一條值爲NULL的數據

CREATE TABLE abc (id TINYINT);
INSERT abc VALUE(NULL);
mysql> SELECT * FROM abc;
+------+
| id   |
+------+
| NULL |
+------+
  • 判斷 NULL 必須用 <=>
mysql> SELECT id<=>null FROM abc;
+-----------+
| id<=>null |
+-----------+
|         1 |
+-----------+

mysql> SELECT id=null FROM abc;
+---------+
| id=null |
+---------+
|    NULL |
+---------+
  • 判斷 NULL 也可以用 IS
mysql> SELECT id IS null FROM abc;
+------------+
| id IS null |
+------------+
|          1 |
+------------+

- BETWEEN AND

  • 查詢之前user表中年齡在10到30之間的人
SELECT id,username,age,age BETWEEN 10 AND 30 FROM cms_user;

包括10和30

- LIKE/NOT LIKE

  • 一個字符與一個‘_’匹配,結果爲真
mysql> SELECT 's' LIKE '_';
+--------------+
| 's' LIKE '_' |
+--------------+
|            1 |
+--------------+
  • 一個漢字也算一個‘_’
    匹配兩個字符
SELECT id,username,username LIKE '__' FROM cms_user;

結果,只有張三匹配結果爲1

- REGEXP正則匹配

SELECT id,username,username REGEXP '^t' FROM cms_user;

只有t/T開頭的匹配結果爲1

三、邏輯運算符

1.總結

image
注意:非是!或NOT,上圖編輯有誤

2.測試

- &&、||

mysql> SELECT 2&&2,2&&0,2&&NULL,1||1,1||0,1||NULL,0||NULL;
+------+------+---------+------+------+---------+---------+
| 2&&2 | 2&&0 | 2&&NULL | 1||1 | 1||0 | 1||NULL | 0||NULL |
+------+------+---------+------+------+---------+---------+
|    1 |    0 |    NULL |    1 |    1 |       1 |    NULL |
+------+------+---------+------+------+---------+---------+

注意有NULL參與的情況

- !/NOT

mysql> SELECT !1,!0,!NULL;
+----+----+-------+
| !1 | !0 | !NULL |
+----+----+-------+
|  0 |  1 |  NULL |
+----+----+-------+

注意有NULL的情況

- XOR 異或

不同爲真,相同爲假

mysql> SELECT 1 XOR 0,0 XOR 1 ,1 XOR 1,0 XOR 0;
+---------+---------+---------+---------+
| 1 XOR 0 | 0 XOR 1 | 1 XOR 1 | 0 XOR 0 |
+---------+---------+---------+---------+
|       1 |       1 |       0 |       0 |
+---------+---------+---------+---------+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章