從零開始學資料庫(二)——select顯示、where、%、排序、limit、distinct、count、max等、刪和改
(十一)使用select顯示
輸入:
select * fromsales_rep where commission>1;
顯示:
mysql>select * from sales_rep where commission>1;
+—————–+———+————+————+
|employes_number | surname | first_name | commission |
+—————–+———+————+————+
| 1 | Rive | Sol | 10 |
| 2 | John | char | 11 |
| 3 | Jop | Peter | 12 |
| 4 | dong | wang | 20 |
| 6 | bbb | BB | 2 |
| 7 | ccc | CC | 3 |
| 8 | ddd | DDD | 4 |
| 9 | ee | EEEE | 5 |
| 10 | ff | FFF | 6 |
+—————–+———+————+————+
9rows in set (0.00 sec)
解釋:
①select:表示使用select語句
②*:表示萬用字元(顯示所有的)。可以用某一項替換,如surname,則只顯示surname這一項;
③from sales_rep:指從表名為sales_rep的這一張表讀取內容;
④where commission>1:指的是,讀取表內commission這一個屬性大於1的所有項;
也可以改為:where first_name=`cc` :那麼就只顯示first_name的值是cc的項了(注意需要加引號)(並且不區分大小寫,注意,mysql幾乎是不區分大小寫的)
⑤;:以分號為結尾。
(十二)where從句
基於(十一)
輸入:
select * fromsales_rep where first_name!=`cc` or first_name=”cc”;
顯示:
mysql>select * from sales_rep where first_name!=`cc` or first_name=”cc”;
+—————–+———+————+————+
|employes_number | surname | first_name | commission |
+—————–+———+————+————+
| 1 | Rive | Sol | 10 |
| 2 | John | char | 11 |
| 3 | Jop | Peter | 12 |
| 4 | dong | wang | 20 |
| 5 | aaa | AAA | 1 |
| 6 | bbb | BB | 2 |
| 7 | ccc | CC | 3 |
| 8 | ddd | DDD | 4 |
| 9 | ee | EEEE | 5 |
| 10 | ff | FFF | 6 |
+—————–+———+————+————+
10rows in set (0.00 sec)
解釋:
①or:前後各有一條語句first_name!=`cc`和first_name=”cc”,
②or的效果是兩條語句只要有一條成立,便符合條件。由於一個內容要麼是cc,要麼不是cc(必然的),所以每一項都會成立(因此相當於顯示除了null的)。
③and:也可以用and來連線,表示兩條語句都符合的才行。(有一條不符合就不成立)。
④多個or和and聯用:支援聯用。
or的聯用:mysql> select * fromsales_rep where first_name=`bb`or first_name=”cc”orfirst_name=”aaa”;
三者符合一個的就可以。
and聯用:由此可推,可以多個and聯用。
也可以or和and混合使用,但為了避免理解出錯,請使用括號來區分層級。
(十三)萬用字元%
%是一個萬用字元,類似*,表示0個或者多個字元。
輸入:
select * fromsales_rep where first_name like “%c%”;
顯示:
mysql>select * from sales_rep where first_name like “%c%”;
+—————–+———+————+————+
|employes_number | surname | first_name | commission |
+—————–+———+————+————+
| 2 | John | char | 11 |
| 7 | ccc | CC | 3 |
+—————–+———+————+————+
2rows in set (0.00 sec)
效果:
first_name屬性裡有c字母的項,全部都是符合條件的。
(十四)分類
排序:(正序)
輸入:
select * fromsales_rep order by first_name;
顯示:
mysql>select * from sales_rep order by first_name;
+—————–+———+————+————+
|employes_number | surname | first_name | commission |
+—————–+———+————+————+
| 0 | NULL | NULL | NULL |
| 8 | NULL | NULL | NULL |
| 5 | aaa | AAA | 1 |
| 6 | bbb | BB | 2 |
| 7 | ccc | CC | 3 |
| 2 | John | char | 11 |
| 8 | ddd | DDD | 4 |
| 9 | ee | EEEE | 5 |
| 10 | ff | FFF | 6 |
| 3 | Jop | Peter | 12 |
| 1 | Rive | Sol | 10 |
| 4 | dong | wang | 20 |
+—————–+———+————+————+
15rows in set (0.00 sec)
效果:
在first_name項,以字母順序進行排序(會顯示null項);
排序:(多重排序)
輸入:
select * fromsales_rep order by surname,first_name;
顯示:
+—————–+———+————+————+
|employes_number | surname | first_name | commission |
+—————–+———+————+————+
| 0 | NULL | NULL | NULL |
| 8 | NULL | NULL | NULL |
| 5 | aaa | AAA | 1 |
| 5 | bbb | AAA | 5 |
| 6 | bbb | BB | 2 |
| 7 | ccc | CC | 3 |
| 8 | ddd | DDD | 4 |
| 4 | dong | wang | 20 |
| 9 | ee | EEEE | 5 |
| 10 | ff | FFF | 6 |
| 2 | John | char | 11 |
| 3 | Jop | Peter | 12 |
| 1 | Rive | Sol | 10 |
+—————–+———+————+————+
16 rows in set (0.00 sec)
效果說明:
①多了一個surname作為引數。效果是,先以第一個引數所在的項為順序進行排序顯示,假如第一個一樣,以第二個引數進行排序;
②由此類推,可以有更多項。
排序:(倒序)
輸入:
select * fromsales_rep order by first_name desc;
顯示:
mysql>select * from sales_rep order by first_name desc;
+—————–+———+————+————+
|employes_number | surname | first_name | commission |
+—————–+———+————+————+
| 4 | dong | wang | 20 |
| 1 | Rive | Sol | 10 |
| 3 | Jop | Peter | 12 |
| 10 | ff | FFF | 6 |
| 9 | ee | EEEE | 5 |
| 8 | ddd | DDD | 4 |
| 2 | John | char | 11 |
| 7 | ccc | CC | 3 |
| 6 | bbb | BB | 2 |
| 5 | bbb | AAA | 5 |
| 5 | aaa | AAA | 1 |
| 0 | NULL | NULL | NULL |
| 8 | NULL | NULL | NULL |
+—————–+———+————+————+
16rows in set (0.00 sec)
區別:
在正序的命令後面加一個desc即可。
排序:(正序關鍵字)
假如需要第一個引數按正序,相同的情況下,第二個引數按反序進行排列。
輸入:
select * fromsales_rep order by surname asc, employes_number desc;
顯示:
mysql>select * from sales_rep order by surname asc, employes_number desc;
+—————–+———+————+————+
|employes_number | surname | first_name | commission |
+—————–+———+————+————+
| 10 | NULL | NULL | NULL |
| 9 | NULL | NULL | NULL |
| 8 | NULL | NULL | NULL |
| 0 | NULL | NULL | NULL |
| 0 | NULL | NULL | NULL |
| 5 | aaa | AAA | 1 |
| 6 | bbb | BB | 2 |
| 5 | bbb | AAA | 5 |
| 7 | ccc | CC | 3 |
| 8 | ddd | DDD | 4 |
| 4 | dong | wang | 20 |
| 9 | ee | EEEE | 5 |
| 10 | ff | FFF | 6 |
| 2 | John | char | 11 |
| 3 | Jop | Peter | 12 |
| 1 | Rive | Sol | 10 |
+—————–+———+————+————+
16rows in set (0.00 sec)
(十五)限制返回的項數LIMIT
輸出行數限制:
輸入:(在排序:(正序關鍵字)基礎上修改)
select * from sales_rep order by surname asc, employes_number desclimit 1;
顯示:
mysql>select * from sales_rep order by surname asc, employes_number desc limit
1;
+—————–+———+————+————+
|employes_number | surname | first_name | commission |
+—————–+———+————+————+
| 10 | NULL | NULL | NULL |
+—————–+———+————+————+
1row in set (0.00 sec)
解釋:
①limit可以設定為0(雖然不顯示內容,但是可以用於在大的資料庫中進行測試查詢);
②limit後面的數字決定了返回的行數;
輸出行數限制+偏移限制:
輸入:
select * fromsales_rep order by surname asc, employes_number desc limit 1,2;
顯示:
mysql>select * from sales_rep order by surname asc, employes_number desc limit
1,2;
+—————–+———+————+————+
|employes_number | surname | first_name | commission |
+—————–+———+————+————+
| 9 | NULL | NULL | NULL |
| 8 | NULL | NULL | NULL |
+—————–+———+————+————+
2rows in set (0.00 sec)
解釋:
①引數1表示從開始偏移幾行(即從理論應該顯示的結果的第幾行開始顯示);
②引數2表示顯示幾行。
③1,2表示從第2行(偏移1)開始顯示,顯示2行
(十六)返回最大值MAX()
輸入:
selectmax(commission) from sales_rep;
顯示:
mysql>select max(commission) from sales_rep;
+—————–+
|max(commission) |
+—————–+
| 20 |
+—————–+
1row in set (0.00 sec)
效果:
返回commission這一項中最大的值。(對字母也有效)
(十七)防止顯示重複記錄distinct
輸入:
selectdistinct first_name from sales_rep;
顯示:
mysql>select distinct first_name from sales_rep;
+————+
|first_name |
+————+
|Sol |
|char |
|Peter |
|wang |
|AAA |
|BB |
|CC |
|NULL |
|DDD |
|EEEE |
|FFF |
+————+
11rows in set (0.00 sec)
效果:
①原本都個NULL,這裡只顯示一個了;
②原本2個AAA,這裡只顯示一個了;
(十八)計數count()
顯示有效資料的行數(不顯示null):
輸入:
selectcount(first_name) from sales_rep;
顯示:
mysql>select count(first_name) from sales_rep;
+——————-+
|count(first_name) |
+——————-+
| 11 |
+——————-+
1row in set (0.00 sec)
效果:
①除了null都顯示;
顯示所有資料的行數(貌似除非都是null,否則就顯示):
輸入:
selectcount(*) from sales_rep;
顯示:
mysql>select count(*) from sales_rep;
+———-+
|count(*) |
+———-+
| 16 |
+———-+
1row in set (0.00 sec)
效果:
①即使有一項是null(其他項不是),也被計算在內;
顯示行數:(重複項算一項,使用distinct)
輸入:
selectcount(distinct first_name) from sales_rep;
顯示:
mysql>select count(distinct first_name) from sales_rep;
+—————————-+
|count(distinct first_name) |
+—————————-+
| 10 |
+—————————-+
1row in set (0.00 sec)
效果:
①該項(first_name)中如果有重複的,記作一項。
(十九)平均、最小、總和
平均:avg()
最小:min()
總和:sum()
輸入:
selectsum(commission) from sales_rep;
顯示:
mysql>select sum(commission) from sales_rep;
+—————–+
|sum(commission) |
+—————–+
| 79 |
+—————–+
1row in set (0.00 sec)
效果:
①三個方法類似,結果不同;
②對字串無效
(二十)對計算結果修改(不影響原資料)
輸入:
selectemployes_number ,surname, commission+100 from sales_rep;
顯示:
mysql>select employes_number ,surname, commission+100 from sales_rep;
+—————–+———+—————-+
|employes_number | surname | commission+100 |
+—————–+———+—————-+
| 1 | Rive | 110 |
| 2 | John | 111 |
| 3 | Jop | 112 |
| 4 | dong | 120 |
| 5 | aaa | 101 |
| 6 | bbb | 102 |
| 7 | ccc | 103 |
| 8 | NULL | NULL |
| 9 | NULL | NULL |
| 10 | NULL | NULL |
| 0 | NULL | NULL |
| 8 | ddd | 104 |
| 9 | ee | 105 |
| 10 | ff | 106 |
| 0 | NULL | NULL |
| 5 | bbb | 105 |
+—————–+———+—————-+
16rows in set (0.00 sec)
效果:
①指定項顯示結果 + 100,(commission+100);
②顯示選擇的項(employes_number ,surname,commission);
③不影響原資料;
(二十一)刪除記錄
輸入:
delete fromsales_rep where surname=”aaa”;
顯示:
mysql> delete from sales_rep where surname=”aaa”;
Query OK, 1 row affected (0.06 sec)
效果:
①刪除值為null的項:delete fromsales_rep where surname is null;
②刪除記錄將刪除所有符合要求的(所以儘量使用唯一項,例如類似id的東西);
③假如輸入delete from sales_rep 將刪除所有項。
(二十二)修改記錄
輸入:
updatesales_rep set commission = 20 where employes_number=1;
顯示:
mysql> update sales_rep set commission = 20 where employes_number=1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 0
效果:
①employes_number的值是1的項,其commission的值被更改為20。
相關文章
- 【從零開始學習Oracle資料庫】(4)建立表與增刪改和資料庫事務Oracle資料庫
- 大資料下的Distinct Count(二):Bitmap篇大資料
- 從零開始學資料結構和演算法 (五) 分治法 (二分查詢、快速排序、歸併排序)資料結構演算法排序
- 【從零開始學習 MySql 資料庫】(2) 函式MySql資料庫函式
- 【從零開始學習Oracle資料庫】(2)函式Oracle資料庫函式
- 從零開始學資料結構和演算法(一)冒泡與選擇排序資料結構演算法排序
- 從零開始學Electron筆記(二)筆記
- Android之怎麼使用SQLite資料庫(增、刪、改、查、分頁等)以及ListView顯示資料AndroidSQLite資料庫View
- 從零開始學機器學習——準備和視覺化資料機器學習視覺化
- 從零開始認識堆排序排序
- 學用計算機從零開始 G.盲人資料庫(轉)計算機資料庫
- 資料分析從零開始實戰 | 基礎篇(二)
- 【從零開始學習Oracle資料庫】(5)約束檢視與索引Oracle資料庫索引
- 【從零開始學習 MySql 資料庫】(5) 約束檢視與索引MySql資料庫索引
- 從零開始學爬蟲(3):通過MongoDB資料庫獲取爬蟲資料爬蟲MongoDB資料庫
- 幾何庫從零開始
- 大資料學習路線(自己制定,從零開始)大資料
- 從顯示一張圖片開始學習OpenGL ES
- 從零開始學Java,如何拿高工資?Java
- 從零開始寫JavaScript框架(二)JavaScript框架
- python Scrapy 從零開始學習筆記(二)Python筆記
- ?從零開始學習webpack系列二(配置檔案)Web
- PHP從零開始系列二(學習筆記):序言PHP筆記
- 從零開始的Unity個人學習日記(二)Unity
- 從零開始學習KafkaKafka
- 從零開始學習機器學習機器學習
- 【ROS】從零開始學ROSROS
- 從零開始學習laravelLaravel
- 從零開始學PythonPython
- 【從零開始學習 MySql 資料庫】(1) 建表與簡單查詢MySql資料庫
- 【從零開始學習Oracle資料庫】(1)建表與簡單查詢Oracle資料庫
- 從零開始使用JavaScript編寫資料表格控制元件(二)JavaScript控制元件
- 資料視覺化Seaborn從零開始學習教程(二) 顏色調控篇視覺化
- 【從零開始學習Oracle資料庫】(3)函式與子查詢和連線查詢Oracle資料庫函式
- 【從零開始學習 MySql 資料庫】(3) 函式與子查詢和連線查詢MySql資料庫函式
- 從零開始學習時空資料視覺化(序)視覺化
- 從零開始JAVA資料結構學習筆記(一)Java資料結構筆記
- 從零開始學Spring Boot系列-返回json資料Spring BootJSON