Mysql學習筆記007

来源:http://www.cnblogs.com/zuosy/archive/2017/05/31/6915346.html
-Advertisement-
Play Games

計數行 直接上慄子:客戶想要知道有多少pet了, 腫麽辦?(需要用到一個COUNT(*)的函數) 操作如下: SELECT COUNT(*) FROM pet; mysql> SELECT COUNT(*) FROM pet;+ +| COUNT(*) |+ +| 9 |+ +1 row in se ...


 計數行

直接上慄子:客戶想要知道有多少pet了, 腫麽辦?(需要用到一個COUNT(*)的函數)

操作如下:

SELECT COUNT(*) FROM pet;

mysql> SELECT COUNT(*) FROM pet;
+----------+
| COUNT(*) |
+----------+
| 9 |
+----------+
1 row in set (0.09 sec)

mysql>

 

慄子:現在客戶知道了有多少pet, 客戶有想知道有多少人養這些pets。

操作如下:

SELECT owner, COUNT(*) FROM pet GROUP BY owner;

mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner;
+--------+----------+
| owner | COUNT(*) |
+--------+----------+
| Benny | 2 |
| Diane | 2 |
| Gwen | 3 |
| Harold | 2 |
+--------+----------+
4 rows in set (0.00 sec)

mysql>

 

NOTE:使用GROUP BY 對每一個owner進行了分組,沒有她,你自己看著辦吧。

mysql> SELECT owner, COUNT(*) FROM pet;
ERROR 1140 (42000): In aggregated query without GROUP BY, expression #1 of SELECT list con
tains nonaggregated column 'test.pet.owner'; this is incompatible with sql_mode=only_full_
group_by
mysql>

我的Mysql報的是這個錯。、。、

報出的錯誤都是錯的、、、、

 

 

繼續舉慄子(為了加深印象):每種動物的數量

操作如下:

SELECT species, COUNT(*) FROM pet GROUP BY species;

mysql> SELECT species, COUNT(*)
-> FROM pet
-> GROUP BY species;
+---------+----------+
| species | COUNT(*) |
+---------+----------+
| bird | 2 |
| cat | 2 |
| dog | 3 |
| hamster | 1 |
| snake | 1 |
+---------+----------+
5 rows in set (0.20 sec)

mysql>

 

 

慄子:每種性別的數量

操作如下:

SELECT sex, COUNT(*) FROM pet GROUP BY sex;

mysql> SELECT sex, COUNT(*)
-> FROM pet
-> GROUP BY sex;
+------+----------+
| sex | COUNT(*) |
+------+----------+
| NULL | 1 |
| f | 4 |
| m | 4 |
+------+----------+
3 rows in set (0.00 sec)

mysql>

 

慄子:按種類和性別查看數量

操作如下:

SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;

mysql> SELECT species, sex, COUNT(*)
-> FROM pet
-> GROUP BY species, sex;
+---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| bird | NULL | 1 |
| bird | f | 1 |
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
| hamster | f | 1 |
| snake | m | 1 |
+---------+------+----------+
8 rows in set (0.00 sec)

mysql>

 

我的現在的理解是先分組(GROUP BY)再計數(COUNT(*))嘛

 

慄子:只看貓狗的性別計數

操作如下:

SELECT species, sex, COUNT(*) FROM pet WHERE species = 'dog' OR species = 'cat' GROUP BY species, sex;

mysql> SELECT species, sex, COUNT(*)
-> FROM pet
-> WHERE species = 'dog' OR species = 'cat'
-> GROUP BY species, sex;
+---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
+---------+------+----------+
4 rows in set (0.00 sec)

mysql>

 

 

本小節最後一個慄子在舉就JJ痛:我想知道有性別的動物的種和性別計數

操作如下:

SELECT species, sex, COUNT(*) FROM pet WHERE sex IS NOT NULL GROUP BY species, sex;

mysql> SELECT species, sex, COUNT(*)
-> FROM pet
-> WHERE sex IS NOT NULL
-> GROUP BY species, sex;
+---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| bird | f | 1 |
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
| hamster | f | 1 |
| snake | m | 1 |
+---------+------+----------+
7 rows in set (0.00 sec)

mysql>

 

 

 

 

 

 

使用一個以上的表 

現在test數據路中只用一個pet表, 但是啊pets孤單寂寞啊, 他們需要另一張表來陪伴他們。這是腦殘的客戶們就有要求了。他們需要一張表記錄pets的時間(event表)。要搞事情!!!

 

 

 

創建(create)一張表(event) 需要有petの名字(name)、事情發生的日期(date)、事情描述(remark)、事情的類型(type)。

操作如下:

CREATE TABLE event(name VARCHAR(20), date DATE, type VARCHAR(15), remark VARCHAR(255));

mysql> CREATE TABLE event(
-> name VARCHAR(20),
-> date DATE,
-> type VARCHAR(15),
-> remark VARCHAR(255));
Query OK, 0 rows affected (0.74 sec)

mysql>

 

然後就要插入一些數據瞭如圖:

原諒我的滑鼠吧

 

 

INSERT INTO event VALUES('Fluffy','1995-05-15','litter','4 kittens, 3 female, 1 mal
e');

INSERT INTO event VALUES
('Buffy','1993-06-23','litter','5 puppies, 2 female, 3 male'),
('Buffy','1994-06-19','litter','3 puppies, 3 female');


INSERT INTO event VALUES
('Chirpy','1999-03-21','vet','needed beak straightened'),
('Slim','1997-08-03','vet','broken rib'),
('Bowser','1991-10-12','kennel',NULL),
('Fang','1991-10-12','kennel',NULL),
('Fang','1998-08-28','birthday','Gave him a new chew toy'),
('Claws','1998-03-17','birthday','Gave him a new flea collar'),
('Whistler','1998-12-09','birthday','Fitst birthday');

為了方便,我把我寫的插入語句貼在上面了。(上面的洋文,我一個都不認識不知道敲的對不對)

 

 

 

不多墨跡了直接上操作:

SELECT pet.name, (YEAR(date) - YEAR(birth)) - (RIGHT(date, 5)<RIGHT(birth,5)) AS age, remark FROM pet, event WHERE pet.name = event.name AND event.type = 'litter';

mysql> SELECT pet.name,
-> (YEAR(date) - YEAR(birth)) - (RIGHT(date,5)<RIGHT(birth,5)) AS age,
-> remark
-> FROM pet, event
-> WHERE pet.name = event.name AND event.type = 'litter';
+--------+------+-----------------------------+
| name | age | remark |
+--------+------+-----------------------------+
| Fluffy | 2 | 4 kittens, 3 female, 1 male |
| Buffy | 4 | 5 puppies, 2 female, 3 male |
| Buffy | 5 | 3 puppies, 3 female |
+--------+------+-----------------------------+
3 rows in set (0.13 sec)

mysql>

 

反正就是pets幾歲的時候當的母親,生了啥啥啥之類的。

NOTE:對於兩個表中有相同名字的欄位要寫成   表明.欄位名(pet.name   event.name);兩個表的連接是靠pet.name = event.name 連接的。(後面會有高級的操作的這裡就不多說)

 

還有一種操作就是將一個表分成兩個表。。。。。

直接上慄子:pets交配, 同種,一公一母。

操作如下:

SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species FROM pet AS p1, pet AS p2 WHERE p1.species = p2.species AND p1.sex = 'f' AND p2.sex = 'm';

mysql> SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species
-> FROM pet AS p1, pet AS p2
-> WHERE p1.species = p2.species AND p1.sex = 'f' AND p2.sex = 'm';
+--------+------+--------+------+---------+
| name | sex | name | sex | species |
+--------+------+--------+------+---------+
| Fluffy | f | Claws | m | cat |
| Buffy | f | Fang | m | dog |
| Buffy | f | Bowser | m | dog |
+--------+------+--------+------+---------+
3 rows in set (0.00 sec)

mysql>

 

總感覺這個方法比直接找更麻煩呢(* ̄rǒ ̄)

 

to be continued


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. iOS兩種自適應佈局方式:(修正說明:) -AutoLayout(自動佈局) + SizeClasses(尺寸類別) -Autoresizing (自動調整尺寸/彈簧式調整尺寸) 前者 AutoLayout 是從iOS6出現,通過創建視圖約束實現自適應,SizeClasses是iOS8 開始出 ...
  • 一、基本介紹 WebView是一個顯示頁面的組件。 二、基本使用 訪問網頁需要網路,所以在AndroidManifest.xml文件中添加網路許可權。 可以使用Intent跳轉網頁,使用如下: 使用Intent跳轉網頁,會調用本地的瀏覽器來查看網頁信息。 在onCreate()方法中將contentV ...
  • FragmentActivity + Fragment(通過hide和show來顯示fragment) + Fragment(通過viewpager來顯示fragment) 在Activity中 在佈局中 然後在fragment中會添加一個viewpager來再添加幾個fragment ...
  • 本節引言: 本節帶來的是Android基本UI控制項中的第十個:ScrollView(滾動條),或者我們應該叫他 豎直滾動條,對應的另外一個水平方向上的滾動條:HorizontalScrollView,先來一發官方文檔 的鏈接:ScrollView,我們可以看到類的結構如下: 嘿嘿,原來是一個Fram ...
  • /Users/longyongping/Desktop/WX20170531-114430.png ...
  • 說到Picasso,相信Android開發人員絕不陌生,它是Square公司開發的一款圖片載入神器。使用過它的coder絕對是愛不釋手:對它本身而言,輕量安全,有效載入圖片並防止OOM;對我們開發者來說,簡單方便,一行代碼搞定圖片載入。因此它備受Android開發人員的鐘愛,那麼今天我們就從源碼的角... ...
  • K-Means演算法是一種基於距離的聚類演算法,採用迭代的方法,計算出K個聚類中心,把若幹個點聚成K類。 用Spark實現K-Means演算法,首先修改pom文件,引入機器學習MLlib包: 代碼: 使用textFile()方法裝載數據集,獲得RDD,再使用KMeans.train()方法根據RDD、K值 ...
  • 介紹 使用 zabbix 的 low-level 自動發現功能完成單主機多埠的監控, 詳見low_level_discovery, 整體上監控類似 percona 的 zabbix 監控插件, 不過使用 mymonitor.pl 替換了腳本 ss_get_mysql_stats.php, 而且配置 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...