sql 显示百分比_轻松搞定数据分析之SQL——简单查询
每天早起或者睡前聽一首溫柔而美好的音樂,是一件很幸福的事情,無論你是否懂音樂,它都能帶你發現生活中的隱藏的那些美好,今天我們先來一起欣賞Mindy Gledhill的單曲《California》California (@網易云音樂),每次我聽到這首歌,都有一種吃了彩虹蛋糕一樣的感覺,仿佛真的聽見歌手輕輕在問:你曾去過加利福尼亞州嗎?見過那里獨特的景致和友好的人們嗎?置身在寧靜的海邊小鎮,吹拂著淡淡清甜的海風。閉眼又如飛馳在漫漫花海,徜徉于童話般的琉璃夢境。車內盈滿了花香,盈滿了夕陽,閃灼著鎏金色的輕柔的光。我曾經很想做的是,和你在從容閑適的旅行中度過白駒過隙的一生。聽完了,你有沒有感覺很愉悅,放松?放松過后,我們一起來開始今天的學習吧!
在上一文章里,我們學習了SQL的書寫規則,以及用insert語法往表中插入數據,你還記得嗎?我們一起再來回顧一下:
書寫規則:
- SQL語句以英文分號(;)結尾;
- 輸入列名時不能加單引號,列名間也不能有空格;
- SQL語句不區分關鍵字的大小寫(如SELECT=select,INSERT=insert等);
- SQL語句輸入符號時只能在英文狀態下。
insert語句:
INSERT INTO tablename(列名…) VALUES(列值);- 數字類型的值不需要用單引號引起來
- 字符和日期類型數據需要用單引號引起來
- 輸入值的順序必須與在表中定義的順序或者在表名后列出的列的順序相同
今天我們將學習如何用select語句實現簡單查詢,現在打開你的Navicat客戶端,按照昨天說的方法,在“school”數據庫中新建一個查詢,準備好了嗎?Ready go!
1.基本的查詢語句
select:
Select 列名1,列名2,…… -- select子句,用來查詢指定要顯示的字段;如果是要查看所有的列,則用*表示 From 表名 -- from 子句,選擇要查詢的表例如:老板要求你從學生表中查詢出“姓名”,和“性別”2列數據,按照上面說的規則,我們用select查詢指定字段:
Select 姓名,性別 -- 查詢指定要顯示的字段,如果是要查看所有的列,則用*表示 FROM student; -- 選擇要查詢的表運行,查詢結果:
而如果我們把列名用*表示,則顯示所有列。
as:
那如果老板讓你在查詢結果中給列設定一個別名,要怎么做呢?這里,我們用as設定別名,如我們把上面查詢結果里面的“姓名”字段設定別名為“name”,性別字段設定別名為“人類性別”,則:
Select 姓名 as name ,性別 as '人類性別' -- 用as設定別名 FROM student;distinct:
假設老板有點奇葩,說我想要看學生里一共有多少個不同的名字?那我們就要用distinct來刪除重復數據了。
Select DISTINCT 姓名 -- 用distinct刪除重復數據 FROM student;數據出來,老板也覺得自己有點奇葩,于是讓你刪除姓名和學號都重復的數據。此時,我們就是把distinct用在多列之間,用來刪除多列信息完全重復的數據。
Select DISTINCT 學號,姓名 -- 用distinct刪除兩列信息完全重復的數據 FROM student;由于兩名名為“猴子”的學生,學號不一樣,所以我們可以看到這兩條信息并沒有被去重。
2.指定查詢條件的查詢
where:
現在,老板讓你選取“姓名”列里值為“猴子”的行,用select的字段篩選就解決不了了,這時,我們就要用where語句進行條件查詢:
Select 姓名,學號 -- 用distinct刪除兩列信息完全重復的數據 FROM student where 姓名='猴子'; -- 限制條件,用于各種過濾條件,例如:大于,小于等這次我們運行了3條語句,我們來看一下上面語句的運行順序,要注意在SQL中,實際運行順序和你的輸入順序是不一樣,像這三語句就是按如下順序進行的:
- from student -- 從那張表中查找數據;
- where 姓名='猴子'; -- 用where查詢出符合條件的行(記錄);
- select 姓名,學號 -- 從查詢出的行中篩選出select語句指出的列,一般是最后運行,返回查詢結果
3.注釋和SQL語句的注意事項
你可能會問,前面那么多條語句后面都寫了語句的注釋,是怎么做的呢?很簡單,注釋分為單行注釋和多行注釋:
單行注釋:
就像我前面寫的,在語句后面輸入“--”+空格”,后面就可以添加注釋內容了,注意:一定不要忘了在小橫線后面加空格哦!
多行注釋:
注釋用“/*”開始,用“*/”結尾。
學會了注釋,以后在寫復雜的SQL語句時,要養成添加注釋的好習慣哦,方便自己回顧,也方便其他需要看你的語句的同事,你好我好大家好!
SQL語句的注意事項:用英文符號,子句之間不要空行,要和前面的書寫規則一起記住了哦!
4.運算符
我們在做條件查詢時,常會用“大于”,“等于”,“包含”“或者”等等查詢條件,這時就要用到運算符了,常用的運算符包括以下三種:
算術運算符:四則運算所使用的運算符(+、-、 *、 /)稱為算術運算符。 就是使用其兩邊的值進行四則運算或者字符串拼接、數值大小比較等運算,并返回結果的符號(注:和null進行算術運算返回結果全部為null),例如,老板要你算出每名學生的百分比成績
-- 算出每名學生的百分比成績 Select 學號,成績, 成績/100 as '百分比成績' FROM score比較運算符:
注意:
- 比較運算符也可以對日期進行比較,
- 不能對NULL使用比較運算符, 因此, SQL提供了專門用來判斷是否為 NULL 的 IS NULL 運算符。 反之, 希望選取不是 NULL 的記錄時,需要使用 IS NOT NULL 運算符
例如老板要你查找出成績低于60分的學生:
-- 成績低于60分的學生 Select 學號,成績 FROM score WHERE 成績<60;接下來,查找出生日期早于1990-01-01的學生:
-- 成績低于60分的學生 Select 姓名,出生日期 FROM student WHERE 出生日期<'1990-01-01';對于字符串的比較,從左向右 根據asc碼比較,不是先轉成數字后比較的,所以會出現'10'<'2'的情況,這時候我們就要先檢查這一列數值是不是字符串類型。
對于空值的判斷如:分別選出“教師姓名”為null和不是null的數據:
-- 選出教師姓名是null的數據 Select 教師號,教師姓名 FROM teacher WHERE 教師姓名 is null;-- 選出教師姓名是null的數據 Select 教師號,教師姓名 FROM teacher WHERE 教師姓名 is not null;邏輯運算符:
例如在score表中找出成績小于60的學生,就可以有如下兩種方法:
-- 運用算術運算符查找出成績小于60的數據 Select 學號,成績 FROM score WHERE 成績<60; -- 運用邏輯運算符查找出成績小于60的數據 Select 學號,成績 FROM score WHERE NOT 成績>=60;同樣的查找出成績>=60且成績<=90的學生,如下:
-- 用and查找出成績>=60且成績<=90的數據 Select 學號,成績 FROM score WHERE 成績>=60 and 成績<=90; -- 用between查找出成績>=60且成績<=90的數據 Select 學號,成績 FROM score WHERE 成績 BETWEEN 60 AND 90;查找出成績小于60或大于90的學生數據:
-- 用or查找出成績小于60或大于90的學生數據 SELECT 學號,成績 FROM score WHERE 成績<60 or 成績>90;查找出性別是“男”并且姓名是“猴子”或者“馬云”的數據:
-- 用or查找出性別是“男”并且姓名是“猴子”或者“馬云”的數據 Select 姓名,性別 FROM student WHERE 性別='男' AND (姓名='猴子'or 姓名='馬云');查找出姓名是(不是)“猴子”和“馬云”的數據:
-- 用in查找出姓名為“猴子”和“馬云”的數據 SELECT * FROM student WHERE 姓名 in('猴子','馬云'); -- 用not in查找出姓名不是“猴子”和“馬云”的數據 SELECT * FROM student WHERE 姓名 not in('猴子','馬云');從這里我們可以看出:in實際上可以看成是or的簡便寫法。
5.字符串模糊查詢
我們使用like語句運用通配符進行模糊查詢:
- % :表示任意長度的字符串,長度可以為0;例如:like ‘a%b’,以a開頭,b結尾任意長度的內容;
- _:一個下劃線就表示一個字符;例如:like ‘a_b’,以a開頭,b結尾任意長度為3個字符的內容。
查詢姓“猴”的學生名單:
-- 查找姓"猴"的學生名單 SELECT * FROM student WHERE 姓名 LIKE '猴%';查詢姓名中最后一個字是“猴”的學生名單(返回結果為沒有符合條件的):
-- 查詢姓名中最后一個字是“猴”的學生名單 SELECT * FROM student WHERE 姓名 LIKE '%猴';查詢姓名中帶“猴”的學生名單:
-- 查詢姓名中帶“猴”的學生名單 SELECT * FROM student WHERE 姓名 LIKE '%猴%';查詢姓“王”的學生名單,并且姓名為3個字的:
-- 查詢姓“王”的學生名單,并且姓名為3個字的 SELECT * FROM student WHERE 姓名 LIKE '王__';好啦,今天的主要知識就學習到這里了,你學會了嗎?下面,讓我們一起去SQLZOO完成一些練習題吧! 網址:SQLZOO
select basics:
select from world:
其中用到了ROUND() 函數,ROUND 函數用于把數值字段舍入為指定的小數位數,語句如下
SELECT ROUND(column_name,decimals) FROM table_name -- column_name為要舍入的字段,decimals為規定要返回的小數位數。- ROUND(7253.86, 0) -> 7254
- ROUND(7253.86, 1) -> 7253.9
- ROUND(7253.86,-3) -> 7000
length(str):查詢字符串長度
left(a,b)函數表示的是從字符表達式最左邊一個字符開始返回指定數目的字符.若 b 的值大于 a 的長度,則返回字符表達式的全部字符a.如果 b 為負值或 0,則返回空字符串.
這么多練習題終于做完啦,里面涉及到了一些函數,后面還會再詳細講,最后,看一張思維導圖,我們一起回顧一下今天學習的內容:
好啦,記得多加練習,下一次我們將學習如何利用SQL進行匯總分析,see you next time!
往期精彩:
何書365:輕松搞定數據分析之MySQL——零基礎入門?zhuanlan.zhihu.com總結
以上是生活随笔為你收集整理的sql 显示百分比_轻松搞定数据分析之SQL——简单查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vscode php插件_JS之 提高开
- 下一篇: 计算机控制z反变换公式,第三章 计算机控