iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0

前言

今天要開始練習SQLite基本的語法
介紹內容有

  1. SELECT 從資料庫中選取特定資料
  2. 數值運算
  3. 文字運算

這裡使用到的資料是Kaggle上關於Spotify音樂榜單的資料庫
kaggle

基礎語法 SQL

先來看SQL查詢資料的基本形式,

接下來幾天會詳細介紹要怎麼從資料庫中利用這些語法找出指定資料

SELECT query
SELECT column, another_column, …
FROM mytable
WHERE condition(s)
ORDER BY column ASC/DESC
LIMIT num_limit OFFSET num_offset;

要注意的是SQL需要按照上述的寫作順序排!

先來看一段例子

1. SELECT & FROM

SELECT *
 FROM top50
 LIMIT 5;


來解釋每個語法的意思

  • select 選取的欄位
  • from 『從』哪個資料表查詢資料
  • limit 限定顯示的資料列數
    • 資料表的「所有」欄位(方便查看欄位)
  • ; 表示一段SQL的結束

因此這段話的意思就是從top50這張資料表上選擇所有欄位的資料
但是限制顯示的資料列數在第5列

保留字大小寫不會影響執行結果的對錯。
寫作一段 SQL 可以單行或者換行並搭配縮排。

  • 若想指定多個欄位,就用逗號 , 將多個欄位名稱隔開
SELECT trackname, artistname, genre
  FROM top50
 LIMIT 5;


可以看到只會出現想要的三個欄位的數據

2.AS

用來改變變數名稱,使用AS為查詢結果中的變數取別名:
先來看原本的欄位變數名稱的樣子

現在來改變變數名稱
假如想讓Trackname跟Artistname分別變成
track_name, artist_name
可以輸入下列式子

SELECT Trackname AS track_name,  --AS後面接的是變數的別名
       Artistname AS artist_name,
       
  FROM top50
 LIMIT 5;


輸出的會是選擇的欄位,並且顯示改變過後的欄位變數名稱
要注意的是只會改變在查詢後顯示的結果,並不會改變到原始資料表中的欄位名稱

3. DISTINCT

使用 DISTINCT 省略查詢結果中重複的資料

  • 原本出現很多的重複資料,使用DISTINCT之後只會顯示獨一值

先看原本Genre欄位裡,資料原本的樣子

SELECT genre
  FROM top50
  LIMIT 14;  


可以看到資料裡會出現重複的
此時使用DISTICT會只讓該欄位的獨一值出現
可以用來查看總共有多少種音樂類型
記得將選出的新欄位用AS取新的名稱

SELECT DISTINCT genre AS ditinct_genre
  FROM top50;


從輸出的結果可以看出所有的資料類型分成21種

數值運算

運用數值運算將BPM跟Energy相加

假如現在想利用兩個數值相加來判斷歌曲

SELECT BPM,
       energy,
       BPM + energy AS evaluation
  FROM top50
 LIMIT 10;


可以看到新增的evalutaion欄位,是由左邊兩欄的數值相加而成

文字運算

針對文字(TEXT)可以使用文字運算符計算衍生欄位

假設現在想將Trackname和Artistname兩個欄位的文字合併
並且取名新的欄位名稱singer_record

基礎文字運算符

使用 ||:兩個垂直線能夠連接文字。

SELECT Trackname,
       Artistname,
       Trackname|| ' ' || Artistname AS singer_record
  FROM top50
 LIMIT 10;


可以看到兩個欄位的文字成功的合併在一起

小結

今天的練習就到這裡~
明天會有更進階的查詢語法介紹


上一篇
{DAY 7} SQL 資料表的處理:Deleting, Altering & Dropping
下一篇
{DAY9} SQL查詢語法1
系列文
從資料庫到資料分析視覺化30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
copemoe
iT邦研究生 1 級 ‧ 2021-11-19 08:47:08

免空的圖片不見了/images/emoticon/emoticon02.gif

我要留言

立即登入留言