SQL學習筆記-認識SQL(1)
學習目標
本次透過學習SQL基礎程式語法,達到能夠自主處理資料表且進行基礎的資料分析,亦能學習到資料庫儲存方式的概念。
SQL(Structured Query Language)
主要使用於管理與處理relational databases的程式語言,且SQL廣泛用於web frameworks與database applications。
Relational Database
在此先簡單介紹relational databases為何,為大家建立資料表的概念。
關聯數據庫是將資料訊息組成或組織到一張或多張表格中,其中Table(資料表),是由列與行所組成的表格。
此處先假設Table有三個欄位,即是列,欄位1是id,欄位2是name,欄位age。
- 第一列的ID欄位為1
- 第一列的name欄位為Justin Bieber
- 第一列的age欄位為22
資料儲存的格式介紹如下:
- INTEGER:a positive or negative whole number
- TEXT:a text string
- DATE:the date formatted as YYYY-MM-DD for the year, month, and day
- REAL:a decimal value
開始SQL語法介紹
CREATE TABLE
建立一張新的資料表格(table)
CREATE TABLE celebs (
id INTEGER,
name TEXT,
age INTEGER
);
- SQL中的語法習慣以英文大寫來表示,避免與其他變數名稱搞混,同時讓程式碼具有易讀性。
SQL程式碼解析:
- CREATE TABLE 資料表名稱
這個clause允許我們在資料庫中創建一個新的資料表(table)。
即當你想自創一張資料表時,使用CREATE TABLE celebs就能告訴SQL你要自創一個table且這個table名稱是celebs。 - (id INTEGER, name TEXT, age INTEGER)
給定資料表中每一個欄位的名稱與資料型態,eg. id INTEGER 就是說明欄位名稱為id,資料型態是INTEGER。
INSERT
在資料表中插入value
INSERT INTO celebs (id, name, age)
VALUES (1, ‘Justin Bieber’, 22);
- INSERT 可以新增一列新的資料插入表格中。
- 當你想新增一筆新的資料到資料表時,就可以使用INSERT。
SQL程式碼解析:
- INSERT INTO
這個clause可以新增一筆或多筆的資料到資料表中。 - (id, name, age)
欄位名稱,讓SQL可以識別並對應到資料表中的欄位。 - VALUES (1, ‘Justin Bieber’, 22)
VALUES是一個clause,可以指示新增一筆或多筆資料所對應欄位為名稱下的值,eq. 範例為新增一筆資料,id為1,name為’Justin Bieber’,age為22。
SELECT
篩選欄位
SELECT name FROM celebs;
SELECT * FROM celebs;
- SELECT可用來從資料庫中獲取數據,可能是欄位,可能是一筆或多筆資料。
SQL程式碼解析:
- SELECT
這個clause告訴SQL你要從資料庫中進行query的動作。 - name
通常是一個資料表中的某一個欄位。 - FROM celebs
告訴SQL是從資料庫中的哪一張資料表來取得資料。 - “*”
“*” 是SQL的特殊符號(special wildcard character)。
它會選取資料表中的所有欄位,並回傳顯示出來。
ALTER
新增欄位到資料表中
ALTER TABLE celebs
ADD COLUMN twitter_handle TEXT;
SELECT * FROM celebs;
- ALTER,可以新增一個新的欄位於新的資料表中。
- 當你想新增一個自創欄位到既有資料表中的話,可以使用ALTER。
SQL程式碼解析:
- ALTER TABLE
這個clause可以讓你做一些更改或調整的動作,此處是針對資料表celebs去進行更改。 - ADD COLUMN
這個clause可以新增一個新的欄位到資料表中,此處twitter_handle為新增的欄位名稱,而TEXT為欄位的型態。
UPDATE
更新或調整資料表中某一row的某欄位的內容
UPDATE celebs
SET twitter_handle = ‘@taylorswift13’
WHERE id = 4;
SELECT * FROM celebs;
- UPDATE,可以編輯資料表中的某一row。
- 當你想調整或編輯既有資料表中的某row紀錄,你可以使用UPDATE。
SQL程式碼解析:
- UPDATE
這個clause可以編輯資料表中的row,此處要去更改celebs的某一row。 - SET
這個clause可以去辨識你要編輯的是既有資料表中的哪一個欄位,此處要去編輯的欄位名稱是twitter_handle,編輯新增的內容為’@taylorswift13’。 - WHERE
這個clause是一個條件式,此處利用id = 4來辨識要去編輯資料表中的哪一row。
DELETE
刪除資料表中的某一row或多row
DELETE FROM celebs
WHERE twitter_handle IS NULL;
SELECT * FROM celebs;
- DELETE,可以刪除資料表中的紀錄(row)。
- 當你想刪除既有資料表中的紀錄(row)時,可以使用DELETE。
SQL程式碼解析:
- DELETE FROM
這個clause可以讓你從資料表中刪除row,此處要從celebs中刪除某些row。 - WHERE
這個clause是依據條件來挑選哪些row是你想刪除的,此處是當資料表中的欄位twitter_handle為空值時(IS NULL),則刪除。 - IS NULL
它是一個想回傳真假值的判斷式,當有值,則回傳TRUE,當無值,則回傳FALSE。
Constraints
限制資料表中的欄位設定
CREATE TABLE awards (
id INTEGER PRIMARY KEY,
recipient TEXT NOT NULL,
award_name TEXT DEFAULT ‘Grammy’
);
- 針對資料表中的欄位設定欄位型態外,同時加入限制。
- 當有不符合限制的資料要INSERT資料表時,資料表可以拒絕INSERT
SQL程式碼解析:
- PRIMARY KE
告訴資料表這個欄位是資料表中的唯一識別欄位,若有相同的識別要INSERT進資料的話,會被拒絕。 - NOT NULL
欄位的限制是不能為空值,若有new row是空值的話,會被拒絕。 - DEFAULT
欄位的預設內容,若要INSERT的row沒有特別設定值得話,則會預設為預設值。
學習小結
- SQL is a programming language designed to manipulate and manage data stored in relational databases.
- A relational database is a database that organizes information into one or more tables.
- A table is a collection of data organized into rows and columns.
- A statement is a string of characters that the database recognizes as a valid command.
CREATE TABLE :創造新的資料表。
INSERT INTO :新增new row到資料表。
SELECT :從資料表去query資料。
ALTER TABLE :編輯或調整既有的資料表。
UPDATE :編輯資料表中的row。
DELETE FROM :刪除資料表中的某一row。
Constraints add information about how a column can be used.
學習心得
透過本次學習,我們學習到SQL的概念與基本語法,包含新增表格(CREATE TABLE)、編輯或調整(INSERT INTO、ALTER TABLE、UPDATE)、刪除資料表row(DELETE FROM)。
其中,我們可以將這些基本語法分為三類,如下:
動作:CREATE TABLE、SELECT、INSERT INTO、ALTER TABLE、UPDATE等。
條件:WHERE、Constraints等。
來源:FROM,來源是哪一張資料表。
下一篇SQL學習筆記將會透過本次所學的指令來進行進階練習。