mysql 基本操作二
阿新 • • 發佈:2019-02-11
小明 class rom cti 刪除 sum 更新 gone 學習
1.查詢數據
MariaDB [jason]> select * from runoob_tbl limit 2 offset 2;
默認是從偏移量為0 處開始查村數據,通過指定offset 可以從offset 處開始取數
2.where 語句
MariaDB [jason]> select * from runoob_tbl where runoob_title like ‘%python%‘; +-----------+--------------+---------------+-----------------+ | runoob_id | runoob_title | runoob_author | submission_date | +-----------+--------------+---------------+-----------------+ | 2| 學習python | 菜鳥教程 | 2019-02-10 | | 4 | 學習python | 菜鳥教程 | 2019-02-10 | +-----------+--------------+---------------+-----------------+ 2 rows in set (0.00 sec) MariaDB [jason]> select * from runoob_tbl where runoob_title like ‘%Python%‘; +-----------+--------------+---------------+-----------------+ | runoob_id | runoob_title | runoob_author | submission_date | +-----------+--------------+---------------+-----------------+ | 2| 學習python | 菜鳥教程 | 2019-02-10 | | 4 | 學習python | 菜鳥教程 | 2019-02-10 | +-----------+--------------+---------------+-----------------+ 2 rows in set (0.00 sec)
mysql where 條件不區分大小寫,若要區分大小寫則采用下面的寫法
MariaDB [jason]> select * from runoob_tbl where binary runoob_title like ‘%Python%‘; Empty set (0.00 sec) MariaDB [jason]> select * from runoob_tbl where binary runoob_title like ‘%python%‘; +-----------+--------------+---------------+-----------------+ | runoob_id | runoob_title | runoob_author | submission_date | +-----------+--------------+---------------+-----------------+ | 2 | 學習python | 菜鳥教程 | 2019-02-10 | | 4 | 學習python | 菜鳥教程 | 2019-02-10 | +-----------+--------------+---------------+-----------------+ 2 rows in set (0.00 sec)
3.update 更新表記錄
MariaDB [jason]> update runoob_tbl set runoob_title=‘java‘, runoob_author =‘jason‘ where runoob_id = 2; ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 33 Current database: jason Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [jason]> select * from runoob_tbl; +-----------+--------------+---------------+-----------------+ | runoob_id | runoob_title | runoob_author | submission_date | +-----------+--------------+---------------+-----------------+ | 2 | java | jason | 2019-02-10 | | 3 | 學習scala | 菜鳥教程 | 2019-02-10 | | 4 | 學習python | 菜鳥教程 | 2019-02-10 | | 5 | 學習scala | 菜鳥教程 | 2019-02-10 | +-----------+--------------+---------------+-----------------+
4.刪除表記錄 delete
delete 語句如果不指定where 條件則會刪除表內所有數據
MariaDB [jason]> delete from runoob_tbl where runoob_id = 2; Query OK, 1 row affected (0.00 sec) MariaDB [jason]> select * from runoob_tbl; +-----------+--------------+---------------+-----------------+ | runoob_id | runoob_title | runoob_author | submission_date | +-----------+--------------+---------------+-----------------+ | 3 | 學習scala | 菜鳥教程 | 2019-02-10 | | 4 | 學習python | 菜鳥教程 | 2019-02-10 | | 5 | 學習scala | 菜鳥教程 | 2019-02-10 | +-----------+--------------+---------------+-----------------+ 3 rows in set (0.00 sec) MariaDB [jason]> delete from runoob_tbl; Query OK, 3 rows affected (0.00 sec) MariaDB [jason]> select * from runoob_tbl; Empty set (0.00 sec)
5.like 語句
MariaDB [jason]> select * from runoob_tbl where runoob_title like ‘%python‘; +-----------+--------------+---------------+-----------------+ | runoob_id | runoob_title | runoob_author | submission_date | +-----------+--------------+---------------+-----------------+ | 1 | 學習python | 菜鳥教程 | 2019-02-11 | +-----------+--------------+---------------+-----------------+
6.union and union all
MariaDB [jason]> select runoob_title as a from runoob_tbl union all select runoob_author as a from runoob_tbl order by a; +--------------+ | a | +--------------+ | dong | | jason | | 學習java | | 學習linux | | 學習python | | 學習scala | | 菜鳥教程 | | 菜鳥教程 | +--------------+ 8 rows in set (0.00 sec) MariaDB [jason]> select runoob_title from runoob_tbl union all select runoob_author from runoob_tbl; +--------------+ | runoob_title | +--------------+ | 學習python | | 學習scala | | 學習java | | 學習linux | | 菜鳥教程 | | 菜鳥教程 | | jason | | dong | +--------------+ 8 rows in set (0.00 sec) MariaDB [jason]> select runoob_title from runoob_tbl union select runoob_author from runoob_tbl; +--------------+ | runoob_title | +--------------+ | 學習python | | 學習scala | | 學習java | | 學習linux | | 菜鳥教程 | | jason | | dong | +--------------+ 7 rows in set (0.00 sec) MariaDB [jason]> select runoob_title from runoob_tbl union distinct select runoob_author from runoob_tbl; +--------------+ | runoob_title | +--------------+ | 學習python | | 學習scala | | 學習java | | 學習linux | | 菜鳥教程 | | jason | | dong | +--------------+ 7 rows in set (0.00 sec)
union 與 union distinct 功能相同,會把union 後的結果去重,union all 則不去重。
如果有order 則order 是對全局結果的排序
MariaDB [jason]> select runoob_title from runoob_tbl union all select runoob_author from runoob_tbl order by runoob_author; ERROR 1054 (42S22): Unknown column ‘runoob_author‘ in ‘order clause‘ MariaDB [jason]> select runoob_title as a from runoob_tbl union all select runoob_author as a from runoob_tbl order by a; +--------------+ | a | +--------------+ | dong | | jason | | 學習java | | 學習linux | | 學習python | | 學習scala | | 菜鳥教程 | | 菜鳥教程 | +--------------+ 8 rows in set (0.00 sec)
7.排序 order by
MariaDB [jason]> select * from runoob_tbl order by runoob_id asc; +-----------+--------------+---------------+-----------------+ | runoob_id | runoob_title | runoob_author | submission_date | +-----------+--------------+---------------+-----------------+ | 1 | 學習python | 菜鳥教程 | 2019-02-11 | | 2 | 學習scala | 菜鳥教程 | 2019-02-11 | | 3 | 學習java | jason | 2019-02-11 | | 4 | 學習linux | dong | 2019-02-11 | +-----------+--------------+---------------+-----------------+ 4 rows in set (0.01 sec) MariaDB [jason]> select * from runoob_tbl order by runoob_id desc; +-----------+--------------+---------------+-----------------+ | runoob_id | runoob_title | runoob_author | submission_date | +-----------+--------------+---------------+-----------------+ | 4 | 學習linux | dong | 2019-02-11 | | 3 | 學習java | jason | 2019-02-11 | | 2 | 學習scala | 菜鳥教程 | 2019-02-11 | | 1 | 學習python | 菜鳥教程 | 2019-02-11 | +-----------+--------------+---------------+-----------------+ 4 rows in set (0.00 sec)
8.group by
group by 可以用於sum,count,avg 等聚合函數
首先看一下要操作的表中的數據
MariaDB [jason]> select * from employee_tbl; +----+--------+---------------------+--------+ | id | name | date | singin | +----+--------+---------------------+--------+ | 1 | 小明 | 2016-04-22 15:25:33 | 1 | | 2 | 小王 | 2016-04-20 15:25:47 | 3 | | 3 | 小麗 | 2016-04-19 15:26:02 | 2 | | 4 | 小王 | 2016-04-07 15:26:14 | 4 | | 5 | 小明 | 2016-04-11 15:26:40 | 4 | | 6 | 小明 | 2016-04-04 15:26:54 | 2 | +----+--------+---------------------+--------+ 6 rows in set (0.00 sec)
MariaDB [jason]> select name,count(*) from employee_tbl group by name; +--------+----------+ | name | count(*) | +--------+----------+ | 小麗 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.00 sec)
with rollup 可以實現再分組統計數據的基礎之上再進行相同的統計
MariaDB [jason]> select name,sum(singin) from employee_tbl group by name with rollup; +--------+-------------+ | name | sum(singin) | +--------+-------------+ | 小麗 | 2 | | 小明 | 7 | | 小王 | 7 | | NULL | 16 | +--------+-------------+ 4 rows in set (0.00 sec)
但是最後一行的name 為null ,我們可以用coalesce 為其賦值,
coalesce(name,‘總數‘),如果name 為null 則用 ‘總數’ 來命名
MariaDB [jason]> select coalesce(name,‘總數‘),sum(singin) from employee_tbl group by name with rollup; +-------------------------+-------------+ | coalesce(name,‘總數‘) | sum(singin) | +-------------------------+-------------+ | 小麗 | 2 | | 小明 | 7 | | 小王 | 7 | | 總數 | 16 | +-------------------------+-------------+ 4 rows in set (0.00 sec)
9.join
MariaDB [jason]> select * from runoob_tbl a join employee_tbl b on a.runoob_id=b.id; +-----------+--------------+---------------+-----------------+----+--------+---------------------+--------+ | runoob_id | runoob_title | runoob_author | submission_date | id | name | date | singin | +-----------+--------------+---------------+-----------------+----+--------+---------------------+--------+ | 1 | 學習python | 菜鳥教程 | 2019-02-11 | 1 | 小明 | 2016-04-22 15:25:33 | 1 | | 2 | 學習scala | 菜鳥教程 | 2019-02-11 | 2 | 小王 | 2016-04-20 15:25:47 | 3 | | 3 | 學習java | jason | 2019-02-11 | 3 | 小麗 | 2016-04-19 15:26:02 | 2 | | 4 | 學習linux | dong | 2019-02-11 | 4 | 小王 | 2016-04-07 15:26:14 | 4 | +-----------+--------------+---------------+-----------------+----+--------+---------------------+--------+ 4 rows in set (0.00 sec)
MariaDB [jason]> select * from runoob_tbl a left join employee_tbl b on a.runoob_id=b.id; +-----------+--------------+---------------+-----------------+------+--------+---------------------+--------+ | runoob_id | runoob_title | runoob_author | submission_date | id | name | date | singin | +-----------+--------------+---------------+-----------------+------+--------+---------------------+--------+ | 1 | 學習python | 菜鳥教程 | 2019-02-11 | 1 | 小明 | 2016-04-22 15:25:33 | 1 | | 2 | 學習scala | 菜鳥教程 | 2019-02-11 | 2 | 小王 | 2016-04-20 15:25:47 | 3 | | 3 | 學習java | jason | 2019-02-11 | 3 | 小麗 | 2016-04-19 15:26:02 | 2 | | 4 | 學習linux | dong | 2019-02-11 | 4 | 小王 | 2016-04-07 15:26:14 | 4 | +-----------+--------------+---------------+-----------------+------+--------+---------------------+--------+ 4 rows in set (0.00 sec)
MariaDB [jason]> select * from runoob_tbl a right join employee_tbl b on a.runoob_id=b.id; +-----------+--------------+---------------+-----------------+----+--------+---------------------+--------+ | runoob_id | runoob_title | runoob_author | submission_date | id | name | date | singin | +-----------+--------------+---------------+-----------------+----+--------+---------------------+--------+ | 1 | 學習python | 菜鳥教程 | 2019-02-11 | 1 | 小明 | 2016-04-22 15:25:33 | 1 | | 2 | 學習scala | 菜鳥教程 | 2019-02-11 | 2 | 小王 | 2016-04-20 15:25:47 | 3 | | 3 | 學習java | jason | 2019-02-11 | 3 | 小麗 | 2016-04-19 15:26:02 | 2 | | 4 | 學習linux | dong | 2019-02-11 | 4 | 小王 | 2016-04-07 15:26:14 | 4 | | NULL | NULL | NULL | NULL | 5 | 小明 | 2016-04-11 15:26:40 | 4 | | NULL | NULL | NULL | NULL | 6 | 小明 | 2016-04-04 15:26:54 | 2 | +-----------+--------------+---------------+-----------------+----+--------+---------------------+--------+ 6 rows in set (0.00 sec)
10. null 值的處理
mysql 中判斷值是否為null 不能用 = null,<> null, 要用 is null 或者is not null, null = null 返回false ,null 與任何值的比較都是false,null 值的比較要用 <=>,null <=> null返回true
11.
mysql 基本操作二