SQL基礎語法

CREATE TABLE

CREATE TABLE 是我們在資料庫中用來建立一個新資料表的語法。

語法

CREATE TABLE table_name (
  column_name1 data_type,
  column_name2 data_type,
  column_name3 data_type,
  ···
  column_nameN data_type,
);

data_type 用來指定該欄位資料儲存的「資料型別」,不同廠牌的資料,資料型別會有差異。

參考:
PostgreSQL資料型別:https://docs.postgresql.tw/the-sql-language/data-types
MySQL資料型別:https://www.mysqltutorial.org/mysql-data-types.aspx/

範例

建立一個叫「google_trend」的Table,裡面有idtitleformattedTrafficrelatedQueriesimagearticlesshareUrldate欄位

CREATE TABLE google_trend (
  id serial PRIMARY KEY,
  title varchar(32),
  formattedTraffic varchar(32),
  relatedQueries text,
  imageUrl varchar(1024),
  articles text,
  shareUrl varchar(1024),
  fetch_date int
);

INSERT INTO

新增資料到資料表 (table)。

語法

INSERT INTO table_name (column1, column2, column3...)
VALUES (value1, value2, value3...);

也可以用精簡寫法:

INSERT INTO table_name
VALUES (value1, value2, value3...);

注意:

使用簡寫的方式每個欄位的值都必需要依照順序輸入。

範例

INSERT INTO google_trend (title, formattedTraffic, relatedQueries, imageUrl, articles, shareUrl, fetch_date) 
VALUES (侯昌明', '5000+', '[]', 'http://....', '[]', 'https://', 20210110);

SELECT

最常用到的 SQL 語句,用來從資料庫取得資料,這個動作通常稱為查詢(query),資料庫依 SELECT 查詢的要求會返回一個結果資料表(result table),通常稱之為資料集(result-set)。

語法

SELECT 敘述句主要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為 "從哪拿"。

SELECT table_column1, table_column2, table_column3...
FROM table_name;

範例

從google_trend資料表從查詢所有欄位資料。

SELECT * FROM google_trend;

從google_trend資料表從查詢title欄位資料。

SELECT title FROM google_trend;

WHERE

在 SELECT 查詢語句使用 WHERE 關鍵字搭配運算子來取出「符合條件」的資料。

語法

SELECT table_column1, table_column2...
FROM table_name
WHERE column_name operator value;

範例

從google_trend資料表中查詢date為20210110的資料。

SELECT * FROM google_trend WHERE fetch_date=20210110;

從google_trend資料表中查詢title為侯昌明的資料。

SELECT * FROM google_trend WHERE title='侯昌明';

ORDER BY

將 SELECT取得的資料集依照某欄位值得大小來作排序,方式為由小至大(預設ascending),或由大至小(descending)。

語法

SELECT table_column1, table_column2...
FROM table_name
ORDER BY column_name1 ASC|DESC, column_name2 ASC|DESC...

如果想要由小到大排序,可以不用寫ASC,因為是預設值。

範例

依照日期欄位(fetch_date)來排序google_trend資料表,由新到舊。

SELECT * FROM google_trend ORDER BY fetch_date DESC;

LIMIT/TOP

限制資料庫回傳的資料數量,LIMIT和TOP攻用一樣。

LIMIT:MySQL、PostgreSQL

TOP:MS-SQL Server

LIMIT 語法

SELECT table_column1, table_column2...
FROM table_name LIMIT number;

LIMIT範例

只選取兩筆資料。

SELECT * FROM customers LIMIT 2;

TOP 語法

SELECT TOP number|percent table_column1, table_column2...
FROM table_name;

TOP範例

選取第一筆資料。

SELECT TOP 1 * FROM google_trend;

選取前百分之十的資料。

SELECT TOP 10 PERCENT * FROM customers;

DELETE FROM

語法

DELETE FROM table_name
WHERE column_name operator value;

注意:
如果下WHERE 條件式,會刪除全部資料。

範例

從google_trend資料表中刪除2021年1月1日的全部資料。

DELETE FROM google_trend WHERE fetch_date=20210101;

DROP TABLE

完整刪除資料表(Table)。

語法

DROP TABLE table_name;

範例

刪除整個google_trend資料表。

DROP TABLE google_trend;