数据库高级查询
文章目錄
- 數據庫高級查詢
- 按關鍵字排序
- 對結果進行分組
- 對字段進行數字統計
- 限制結果條目
- 設置別名
- 通配符
- 子查詢
- EXIST關鍵字查詢
- 數據庫null的用法
- 正則表達式查詢表中信息
- “*”匹配前面字符的任意多次
- 算數運算符
- 大于、大于等于、小于、小于等于運算符
- **IS NULL、IS NOT NULL**
- **LEAST、GREATEST運用**
- **IN、NOT IN**
- **LIKE、NOT LIKE**
- 邏輯運算符
- 邏輯非
- 邏輯與
- 邏輯或
- 邏輯異或
- 位運算符
- 連接查詢
數據庫高級查詢
對 MySQL 數據庫的查詢,除了基本的查詢外,有時候需要對查詢的結果集進行處理。例如只取 10 條數據、對查詢結果進行排序或分組等等,這些內容就是接下來要講解的知識。
按關鍵字排序
order by 升序order by 字段 desc 降序使用 SELECT 語句可以將需要的數據從 MySQL 數據庫中查詢出來,如果對查詢的結果進行排序
select name,score from make where score>=70 order by score; 升序 +--------+-------+ | name | score | +--------+-------+ | wangwu | 77.00 | | zhang | 84.10 | | lisi | 84.10 | | limei | 90.00 | +--------+-------+并以 level 降序排列和 id 降序排列
select name,score from make where score>=70 order by score desc; 降序 +--------+-------+ | name | score | +--------+-------+ | limei | 90.00 | | zhang | 84.10 | | lisi | 84.10 | | wangwu | 77.00 | +--------+-------+對結果進行分組
group by 字段 可以按一個或多個字段對結果進行分組處理。 GROUP BY 通常都是結合聚合函數一起使用的,常用的聚合函數包括 select count(name),score from make where score >=70 group by score; +-------------+-------+ | count(name) | score | +-------------+-------+ | 2 | 77.00 | | 2 | 84.10 | | 1 | 90.00 | +-------------+-------+ ps分數77的人數有2個對字段進行數字統計
avg平均成績 count(字段) 計數 sum(字段)求和 max (字段)最大值 min(字段) 最小值 mysql> select avg(score)from make; +------------+ | avg(score) | +------------+ | 78.700000 | +------------+ 1 row in set (0.00 sec)限制結果條目
在使用 MySQL SELECT 語句進行查詢時,結果集返回的是所有匹配的記錄。有時候僅需要返回第一行或者前幾行,這時候就需要用到 LIMIT 子句。
SELECT column1, column2, ... FROM table_name LIMIT [offset,] number mysql> select * from make limit 3; 查看3行 +----+--------+-------+----------+ | id | name | score | address | +----+--------+-------+----------+ | 1 | zhang | 84.10 | shanghai | | 2 | lisi | 84.10 | shanghai | | 3 | wangwu | 77.00 | biejing | +----+--------+-------+----------+ 3 rows in set (0.00 sec)查看345行 mysql> select * from make limit 2,3; +----+---------+-------+---------+ | id | name | score | address | +----+---------+-------+---------+ | 3 | wangwu| 77.00 | biejing | | 4 | zhaoliu | 60.00 | nanjing | | 5 | limei | 90.00 | wuxi | +----+---------+-------+---------+ 3 rows in set (0.00 sec)結合升序降序使用
IMIT 子句的使用也可以結合 ORDER BY:先進行排序,然后再 LIMIT 限制固定的記錄。也就是說 LIMIT 是放在最后的,將處理好的結果集按要求選出幾行來
查看前三名 mysql> select * from make order by score desc limit 3; +----+---------+-------+----------+ | id | name | score | address | +----+---------+-------+----------+ | 5 | limei | 90.00 | wuxi | | 7 | tanshan | 87.00 | anhui | | 1 | zhang | 84.10 | shanghai | +----+---------+-------+----------+ 查看后三名 mysql> select * from make order by score limit 3; +----+---------+-------+---------+ | id | name | score | address | +----+---------+-------+---------+ | 4 | zhaoliu | 60.00 | nanjing | | 6 | heiba | 77.00 | wuhu | | 3 | wangwu | 77.00 | biejing | +----+---------+-------+---------+設置別名
在 MySQL 查詢時,當表的名字比較長或者表內某些字段比較長時,為了方便書寫或者多次使用相同的表,可以給字段列或表設置別名。
SELECT 字段名 AS 別名 FROM 表名; 設置別名 mysql> select count(*) from make; +----------+ | count(*) | +----------+ | 7 | +----------+在使用 AS 后,可以用 alias_name 代替 table_name,其中 AS 語句是可選的。
mysql> select count(*) as 數量 from make; +--------+ | 數量 | +--------+ | 7 | +--------+通配符
%表示零個多個
_ 表示單個字符
舉例子:
mysql> select name,score from make where name like 'z%'; +---------+-------+ | name | score | +---------+-------+ | zhang | 84.10 | | zhaoliu | 60.00 | +---------+-------+ 2 rows in set (0.00 sec)mysql> select name,score from make where name like 'z______'; +---------+-------+ | name | score | +---------+-------+ | zhaoliu | 60.00 | +---------+-------+ 1 row in set (0.00 sec)mysql> select name,score from make where name like 'z_ao%'; +---------+-------+ | name | score | +---------+-------+ | zhaoliu | 60.00 | +---------+-------+ 1 row in set (0.00 sec)子查詢
1:子查詢也被稱作內查詢或者嵌套查詢,是指在一個查詢語句里面還嵌套著另一個查詢語 句。
2:子查詢語句是先于主查詢語句被執行的。
3:子查詢不僅可以在 SELECT 語句中使用,在 INERT、UPDATE、DELETE 中也同樣適用。
4:在嵌套的時候,子查詢內部還可以再次嵌套新的子查詢,也就是說可以多層嵌套。
格式
<表達式> [NOT] IN <子查詢> 查看云計算興趣的人select name,hobby from make where hobby in (select id from info where name='云計算'); +---------+-------+ | name | hobby | +---------+-------+ | zhang | 1 | | lisi | 1 | | limei | 1 | | tanshan | 1 | +---------+-------+ 4 rows in set (0.00 sec) 方法二:除了以上所列舉的 IN 操作符,在 IN 前面還可以添加 NOT,其作用與 IN 相反,表示否定(即不在子查詢的結果集里面)。例如,執行以下操作即可查詢用戶等級不小于 45 級的用戶。
mysql> insert into tmp select * from make where id not in (select id from info where address='shanghai');子查詢上也可以使用比較運算符(=、<、>、>=、<=)
mysql> select name,hobby from make where hobby=(select id from info where name='云計算'); +---------+-------+ | name | hobby | +---------+-------+ | zhang | 1 | | lisi | 1 | | limei | 1 | | tanshan | 1 | +---------+-------+ 4 rows in set (0.00 sec)EXIST關鍵字查詢
EXIST 這個關鍵字在子查詢時,主要用于判斷子查詢的結果集是否為空。如果不為空, 則返回 TRUE;反之,則返回 FALSE。
EXISTS 子查詢 if 判斷語句 》》后面如何成功前面執行mysql> select name,score from make where exists (select id from info where name='大數據'); +---------+-------+ | name | score | +---------+-------+ | zhang | 84.10 | | lisi | 84.10 | | wangwu | 82.00 | | zhaoliu | 65.00 | | limei | 90.00 | | heiba | 82.00 | | tanshan | 87.00 | +---------+-------+數據庫null的用法
NULL值和空值的區別
1count不對null進行計算
mysql> insert into nun (id) values (2); Query OK, 1 row affected (0.03 sec)mysql> select * from nun; +----+------+ | id | name | +----+------+ | 2 | NULL | +----+------+ 1 row in set (0.00 sec)mysql> select count(name) from nun; +-------------+ | count(name) | +-------------+ | 0 | +-------------+ 1 row in set (0.00 sec)count()計算會對空值計算
mysql> insert into nun (id,name) values (3,''); Query OK, 1 row affected (0.00 sec)mysql> select * from nun; +----+------+ | id | name | +----+------+ | 2 | NULL | | 3 | | +----+------+ 2 rows in set (0.00 sec)mysql> select count(name) from nun; +-------------+ | count(name) | +-------------+ | 1 | +-------------+ 1 row in set (0.00 sec)過濾篩選null的值
null表示0或者空白沒有儲存空間,空值是存在有儲存空間
mysql> select * from nun where name is not null; +----+------+ | id | name | +----+------+ | 1 | tom | | 3 | | +----+------+ 2 rows in set (0.00 sec)mysql> select * from nun where name is null; +----+------+ | id | name | +----+------+ | 2 | NULL | +----+------+ 1 row in set (0.00 sec)正則表達式查詢表中信息
^匹配開始字符 p1/p2匹配p1或p2 [...]匹配字符集中的任意一個S $匹配結束字符 [^...]匹配不在中括號內的任何 .匹配任意單個字符 *匹配任意個前面的字符 {n}匹配前面的字符串n次 +匹配前面字符至少1次 {n,m}匹配前面的字符串至少r至多m次1. 以特定字符串開頭的記錄
mysql> select * from info where name regexp'^wa'; +----+--------+-------+----------+ | id | name | score | address | +----+--------+-------+----------+ | 3 | wangwu | 70.00 | shanghai | +----+--------+-------+----------+ 1 row in set (0.00 sec)1. 以特定字符串結尾的記錄
mysql> select * from make where name regexp 'n$'; +----+----------+-------+----------+-------+ | ip | name | score | adderss | hobby | +----+----------+-------+----------+-------+ | 1 | zhangsan | 65.00 | shanghai | 2 | +----+----------+-------+----------+-------+ 1 row in set (0.00 sec)包含指定字符串的記錄
找出包含 ‘an’的連續字符 mysql> select * from make where name regexp 'an'; +----+----------+-------+----------+-------+ | ip | name | score | adderss | hobby | +----+----------+-------+----------+-------+ | 1 | zhangsan | 65.00 | shanghai | 2 | | 3 | wangwu | 75.00 | nanjing | 2 | +----+----------+-------+----------+-------+模糊查詢
mysql> select * from make where name regexp 'z..'; +----+----------+-------+----------+-------+ | ip | name | score | adderss | hobby | +----+----------+-------+----------+-------+ | 1 | zhangsan | 65.00 | shanghai | 2 | | 4 | zhaoliu | 90.00 | biejing | 1 | +----+----------+-------+----------+-------+ 2 rows in set (0.00 sec)匹配包含或者關系的記錄
player 表中查詢包含字符串 zh 或者 ni 的 name 字段并打印對應的 name
和 level 記錄,具體操作如下所示
mysql> select * from make where name regexp 'zh|ni'; +----+----------+-------+----------+-------+ | ip | name | score | adderss | hobby | +----+----------+-------+----------+-------+ | 1 | zhangsan | 65.00 | shanghai | 2 | | 4 | zhaoliu | 90.00 | biejing | 1 | | 5 | nilei | 75.00 | hangzou | 2 | +----+----------+-------+----------+-------+ 3 rows in set (0.00 sec)“*”匹配前面字符的任意多次
在 player 表中查詢包含三個或者更多個連續的 o 的 name 字段并打印對應的 id、name 和 level 記錄,具體操作如下所示。
mysql> select * from make where name regexp 'oo*'; +----+---------+-------+---------+-------+ | ip | name | score | adderss | hobby | +----+---------+-------+---------+-------+ | 4 | zhaoliu | 90.00 | biejing | 1 | | 7 | oooo | 66.00 | bj | 3 | | 8 | ooooo | 66.00 | bj | 3 | +----+---------+-------+---------+-------+ 3 rows in set (0.00 sec)mysql> select * from make where name regexp 'o*' 或mysql> select * from make where name regexp '.*';(O*he.*都可以輸出全表) +----+----------+-------+----------+-------+ | ip | name | score | adderss | hobby | +----+----------+-------+----------+-------+ | 1 | zhangsan | 65.00 | shanghai | 2 | | 2 | lisi | 80.00 | shanghai | 1 | | 3 | wangwu | 75.00 | nanjing | 2 | | 4 | zhaoliu | 90.00 | biejing | 1 | | 5 | nilei | 75.00 | hangzou | 2 | | 6 | malik | 80.00 | hangzou | 1 | | 7 | oooo | 66.00 | bj | 3 | | 8 | ooooo | 66.00 | bj | 3 | +----+----------+-------+----------+-------+ 8 rows in set (0.00 sec)查詢d,e,f開頭的name字段
查詢d,e,f開頭的name字段 mysql> select * from make where name regexp '^[w-z]'; +----+----------+-------+----------+-------+ | ip | name | score | adderss | hobby | +----+----------+-------+----------+-------+ | 1 | zhangsan | 65.00 | shanghai | 2 | | 3 | wangwu | 75.00 | nanjing | 2 | | 4 | zhaoliu | 90.00 | biejing | 1 | +----+----------+-------+----------+-------+算數運算符
| + | 加法 |
| - | 減法 |
| * | 乘法 |
| / | 除法 |
| % | 取余數 |
舉例:
mysql> select 1+2,5*2,5-4,7%2,7/2; +-----+-----+-----+------+--------+ | 1+2 | 5*2 | 5-4 | 7%2 | 7/2 | +-----+-----+-----+------+--------+ | 3 | 10 | 1 | 1 | 3.5000 | +-----+-----+-----+------+--------+ 1 row in set (0.00 sec)| = | 等于 | IS NOT NULL | 判斷一個值是否不為 NULL |
| > | 大于 | BETWEEN AND | 兩者之間 |
| < | 小于 | IN | 在集合中 |
| >= | 大于等于 | LIKE | 通配符匹配 |
| <= | 小于等于 | GREATEST | 兩個或多個參數時返回最大值 |
| !=或<> | 不等于 | LEAST | 兩個或多個參數時返回最小值 |
| IS NULL | 判斷一個值是否為 NULL | REGEXP | 正則表達式 |
舉例:
mysql> mysql> 2=4,2='2','e'='e',(2+2)=(3+1),'a'=NULL; +-----+-------+---------+-------------+----------+ | 2=4 | 2='2' | 'e'='e' | (2+2)=(3+1) | 'a'=NULL | +-----+-------+---------+-------------+----------+ | 0 | 1 | 1 | 1 | NULL | +-----+-------+---------+-------------+----------+ 1 row in set (0.00 sec)大于、大于等于、小于、小于等于運算符
? 大于(>)運算符用來判斷左側的操作數是否大于右側的操作數,若大于返回 1,否則返回 0,同樣不能用于判斷 NULL
? 小于(<)運算符用來判斷左側的操作數是否小于右側的操作數,若小于返回 1,否則返回 0,同樣不能用于判斷 NULL
? 大于等于(>=)判斷左側的操作數是否大于等于右側的操作數,若大于等于返回 1,否則返回 0,不能用于判斷 NULL
? 小于等于(<=)判斷左側的操作數是否小于等于右側的操作數,若小于等于返回 1,否則返回 0,不能用于判斷 NULL
mysql> select 'benat'!='kfc',12<>13,NULL<>NULL; +----------------+--------+------------+ | 'benat'!='kfc' | 12<>13 | NULL<>NULL | +----------------+--------+------------+ | 1 | 1 | NULL | +----------------+--------+------------+ 1 row in set (0.00 sec)IS NULL、IS NOT NULL
IS NULL 判斷一個值是否為 NULL,如果為 NULL 返回 1,否則返回 0。
IS NOT NULL 判斷一個值是否不為 NULL,如果不為 NULL 返回 1,否則返回 0。
mysql> select 2 is NULL,'f' is not NULL,NULL is NULL; +-----------+-----------------+--------------+ | 2 is NULL | 'f' is not NULL | NULL is NULL | +-----------+-----------------+--------------+ | 0 | 1 | 1 | +-----------+-----------------+--------------+BETWEEN AND
BETWEEN AND 比較運算通常用于判斷一個值是否落在某兩個值之間
mysql> select 4 between 3 and 7,9 between 5 and 12,'f' between 'a' and 'z'; 4在3到7之間 9在5到12之間 f在a到z之間 +-------------------+--------------------+-------------------------+ | 4 between 3 and 7 | 9 between 5 and 12 | 'f' between 'a' and 'z' | +-------------------+--------------------+-------------------------+ | 1 | 1 | 1 | +-------------------+--------------------+-------------------------+ 1 row in set (0.00 sec)LEAST、GREATEST運用
? LEAST:當有兩個或者多個參數時,返回其中的最小值。如果其中一個值為 NULL,則返回結果就為 NULL。
? GREATEST:當有兩個或者多個參數時,返回其中的最大值。如果其中一個值為 NULL, 則返回結果就為 NULL。
具體操作如下
返回最小值 erver version for the right syntax to use near 'select0 least(10,20,30),least('a','b','c')' at line 1 mysql> select least(10,20,30),least('a','b','c'); +-----------------+--------------------+ | least(10,20,30) | least('a','b','c') | +-----------------+--------------------+ | 10 | a | +-----------------+--------------------+ 1 row in set (0.00 sec 返回最大值 mysql> select greatest(10,20,30),greatest('a','b','c'); +--------------------+-----------------------+ | greatest(10,20,30) | greatest('a','b','c') | +--------------------+-----------------------+ | 30 | c | +--------------------+-----------------------+ 1 row in set (0.00 sec)IN、NOT IN
? IN 判斷一個值是否在對應的列表中,如果是返回 1,否則返回 0。
? NOT IN 判斷一個值是否不在對應的列表中,如果不是返回 1,否則返回 0。
具體操作如下
mysql> select 2 in (2,3,4,5),'c'not in ('d','e','f'); +----------------+-------------------------+ | 2 in (2,3,4,5) | 'c'not in ('d','e','f') | +----------------+-------------------------+ | 1 | 1 | +----------------+-------------------------+ 1 row in set (0.00 sec)LIKE、NOT LIKE
LIKE 用來匹配字符串,如果匹配成功則返回 1,反之返回 0。LIKE 支持兩種通配符:’%’ 用于匹配任意數目的字符,而’_’只能匹配一個字符。NOT LIKE 正好跟 LIKE 相反,如果沒有匹配成功則返回 1,反之返回 0。
mysql> select 'bdqn' like 'bdq_','kgc' like '%c','tom' not like '%j'; +--------------------+-----------------+---------------------+ | 'bdqn' like 'bdq_' | 'kgc' like '%c' | 'tom' not like '%j' | +--------------------+-----------------+---------------------+ | 1 | 1 | 1 | +--------------------+-----------------+---------------------+ 1 row in set (0.00 sec邏輯運算符
邏輯運算符又被稱為布爾運算符,通常用來判斷表達式的真假,如果為真返回 1,否則返回 0,真和假也可以用 TRUE 和 FALSE 表示。MySQL 中支持使用的邏輯運算符有四種, 具體如表 5-4 所示
| NOT 或 ! | 邏輯非 |
| AND 或 && | 邏輯與 |
| OR 或 || | 邏輯或 |
| XOR | 邏輯異或 |
邏輯非
邏輯運算符中最簡單的運算符就是邏輯非,邏輯非使用 NOT 或!表示。邏輯非將跟在它后面的邏輯測試取反,把真變為假,把假變為真。如果 NOT 后面的操作數為 0 時,所得值為 1;如果操作數為非 0 時,所得值為 0;如果操作數為 NULL 時,所得值為 NULL。例如,對非 0 值和 0 值分別作邏輯非運算,具體操作如下所示。
mysql> select !3,not 2,!0; +----+-------+----+ | !3 | not 2 | !0 | +----+-------+----+ | 0 | 0 | 1 | +----+-------+----+ 1 row in set (0.00 sec)邏輯與
邏輯與通常用于判斷兩個值或多個值的有效性,如果所有值都是真返回 1,否則返回 0。邏輯與使用 AND 或者&&表示。例如,對非 0 值、0 值和 NULL 值分別作邏輯與運算,具體操作如下所示。
邏輯 and mysql> select 2 and 3,0 and 1,0 and NULL,1 and NULL; +---------+---------+------------+------------+ | 2 and 3 | 0 and 1 | 0 and NULL | 1 and NULL | +---------+---------+------------+------------+ | 1 | 0 | 0 | NULL | +---------+---------+------------+------------+ 1 row in set (0.00 sec)邏輯或
邏輯或表示包含的操作數,任意一個為非零值并且不是 NULL 值時,返回 1,否則返回0。邏輯或通常使用 OR 或者||來表示。例如,對非 0 值、0 值和 NULL 值分別作邏輯或運算, 具體操作如下所示。
邏輯或 OR mysql> select 2 OR 3,0 OR 1,0 OR NULL,1 OR NULL; +--------+--------+-----------+-----------+ | 2 OR 3 | 0 OR 1 | 0 OR NULL | 1 OR NULL | +--------+--------+-----------+-----------+ | 1 | 1 | NULL | 1 | +--------+--------+-----------+-----------+邏輯異或
兩個非 NULL 值的操作數,如果兩者都是 0 或者都是非 0,則返回 0;如果一個為 0, 另一個為非 0,則返回結果為 1;當任意一個值為 NULL 時,返回值為 NULL。例如,對非0 值、0 值和 NULL 值分別作邏輯異或運算,具體操作如下所示。
mysql> select 2 XOR 3,0 XOR 1,0 XOR NULL,1 XOR NULL; +---------+---------+------------+------------+ | 2 XOR 3 | 0 XOR 1 | 0 XOR NULL | 1 XOR NULL | +---------+---------+------------+------------+ | 0 | 1 | NULL | NULL | +---------+---------+------------+------------+ 1 row in set (0.00 sec)位運算符
位運算符實際上是對二進制數進行計算的運算符。MySQL 內位運算會先將操作數變成二進制格式,然后進行位運算,最后在將計算結果從二進制變回到十進制格式,方便用戶查看
? 按位與運算(&),是對應的二進制位都是 1 的,它們的運算結果為 1,否則為 0,所以 10 & 15 的結果為 10。
? 按位或運算(|),是對應的二進制位有一個或兩個為 1 的,運算結果為 1,否則為 0, 所以 10 | 15 的結果為 15。
? 按位異或運算(^),是對應的二進制位不相同時,運算結果 1,否則為 0,所以 10 ^ 15
的結果為 5。
? 按位取反(~),是對應的二進制數逐位反轉,即 1 取反后變為 0, 0 取反后變為 1。數字 1 的二進制是 0001,取反后變為 1110, 數字 5 的二進制是 0101,將 1110 和 0101
且 0&&0=0 1&&0=0 0&&1=0 1&&1=1 或 0||0=0 1||0=1 0||1=1 1||1=1異或 0^0=0 1^0=1 0^1=1 1^1=0與運算 1010 10 1111 15 1010 10位運算符 ~取反 ^按位取反
mysql> select 10&15; +-------+ | 10&15 | +-------+ | 10 | +-------+ mysql> select 5&~1; +------+ | 5&~1 | +------+ | 4 | +------+右移>>位運算 向右移動位數,多余的位數直接刪除
mysql> select 15>>2; +-------+ | 15>>2 | +-------+ | 3 | +-------+ 1 row in set (0.00 sec)位運算 << 左移位運算 空缺處補0
mysql> select 10<<3; +-------+ | 10<<3 | +-------+ | 80 | +-------+ 1 row in set (0.00 sec)連接查詢
MySQL 的連接查詢,通常都是將來自兩個或多個表的行結合起來,基于這些表之間的共同字段,進行數據的拼接。首先,要確定一個主表作為結果集,然后將其他表的行有選擇 性的連接到選定的主表結果集上。使用較多的連接查詢包括:內連接、左連接和右連接。
內連接
mysql> select i.name,h.name from make i inner join info h on i.hobby=h.id; +----------+--------------+ | name | name | +----------+--------------+ | zhangsan | 大數據 | | lisi | 云計算 | | wangwu | 大數據 | | zhaoliu | 云計算 | | nilei | 大數據 | | malik | 云計算 | | oooo | 人工智能 | | ooooo | 人工智能 | +----------+--------------+ 8 rows in set (0.00 sec)左連接
MySQL 除了內連接,還可以使用外連接。區別于 MySQL 外連接是將表分為基礎表和參考表,再依據基礎表返回滿足條件或不滿足條件的記錄。外連接按照連接時表的順序來分, 有左連接和右連接之分。
左表連接 left mysql> select i.name,h.name from make i left join info h on i.hobby=h.id; +----------+--------------+ | name | name | +----------+--------------+ | lisi | 云計算 | | zhaoliu | 云計算 | | malik | 云計算 | | zhangsan | 大數據 | | wangwu | 大數據 | | nilei | 大數據 | | oooo | 人工智能 | | ooooo | 人工智能 | | aaa | NULL | | bbb | NULL | +----------+--------------+ 10 rows in set (0.00 sec)右表連接 right
右連接也被稱為右外連接,在 FROM 子句中使用 RIGHT JOIN 或者 RIGHT OUTER JOIN 關鍵字來表示。右連接跟左連接正好相反,它是以右表為基礎表,用于接收右表中的所有行,并用這些記錄與左表中的行進行匹配。
mysql> select i.name,h.name from make i right join info h on i.hobby=h.id; +----------+--------------+ | name | name | +----------+--------------+ | zhangsan | 大數據 | | lisi | 云計算 | | wangwu | 大數據 | | zhaoliu | 云計算 | | nilei | 大數據 | | malik | 云計算 | | oooo | 人工智能 | | ooooo | 人工智能 | | NULL | 區塊鏈 | +----------+--------------+ 9 rows in set (0.00 sec) 超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
- 上一篇: 内存VS显存:你了解吗?
- 下一篇: Mysql数据库函数(数字,字符串,日期