未分類
Mac 更新 Node
每次使用 npm 包裝 js、css 時都出現以下訊息。(我都眼不見為淨)

今天打算來處理它,但不知道更新會不會有問題,我這台 Mac 已經買很久了,使用 Homebrew 安裝Nodel.js 它應該是Mac上比較常見的套件管理工具之一,如果以前使用 brew install node
安裝,可以通過以下指令另一個升級到最新的Node.js版本。
brew update
brew upgrade node
後來遇到以下類似的錯誤
CompilerSelectionError: ruby-build cannot be built with any available compilers.
Install GNU's GCC
brew install gcc
看到以上類似的錯誤,一直照著指示下指令,開始有點迷惘,但執行到以下命令,終於可以用了!
xcode-select --install
重複資料 UNION
MySQL UNION 操作符用於連接兩個以上的SELECT 語句的結果組合到一個結果集合中。多個SELECT 語句會刪除重複的數據。
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
參數
- expression1, expression2, … expression_n :要檢索的列。
- tables:要檢索的數據表。
- WHERE conditions:可選,檢索條件。
- DISTINCT:可選,刪除結果集中重複的數據。默認情況下UNION操作符已經刪除了重複數據,所以DISTINCT修飾符對結果沒啥影響。
- ALL:可選,返回所有結果集,包含重複數據。
分組資料 GROUP BY
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
GROUP BY 語句根據一個或多個列對結果集進行分組。
在分組的列上我們可以使用COUNT, SUM, AVG,等函數。
排序資料 ORDER BY
SELECT field1, field2,...fieldN FROM table_name1, table_name2..., field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]][ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
- 你可以使用任何字段來作為排序的條件,從而返回排序後的查詢結果。
- 你可以設定多個字段來排序。
- 你可以使用ASC 或DESC 關鍵字來設置查詢結果是按升序或降序排列。默認情況下,它是按升序排列。
- 你可以添加WHERE…LIKE 子句來設置條件。
更新資料 UPDATE
UPDATE table_name SET field1=new-value1, field2=new-value2=new-value1, field2=new-value2
[WHERE Clause][WHERE Clause]
- 你可以同時更新一個或多個字段。
- 你可以在WHERE 子句中指定任何條件。
- 你可以在一個單獨表中同時更新數據。
當你需要更新數據表中指定行的數據時WHERE 子句是非常有用的。
DELETE
DELETE FROM table_name [WHERE Clause]
- 如果沒有指定WHERE 子句,MySQL 表中的所有記錄將被刪除。
- 你可以在WHERE 子句中指定任何條件
- 您可以在單個表中一次性刪除記錄。
當你想刪除數據表中指定的記錄時WHERE 子句是非常有用的。
DELETE FROM animals WHERE id=1;
INSERT INTO
以下為MySQL資料表插入資料關鍵字INSERT INTO SQL語法
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
一次插入多筆資料
INSERT INTO table_name (field1, field2,...fieldN) VALUES (valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN),(valueC1,valueC2,...valueCN)......;
查詢資料 SELECT
資料庫真正的價值來了!在茫茫大海的有用資料中,查詢資料找出自己想要的結果。
以下就是查詢的方法主要格式,有很多可選參數。
SELECT column_name,column_name, column_name
FROM table_name
[WHERE Clause][ WHERE Clause ]
[LIMIT N][ OFFSET M][ LIMIT N ][ OFFSET M ]
最簡單的實作開始查詢所有資料,如下所示這就是從animals 資料表中拿出「所有」的資料。
SELECT * FROM animals;
「*」星號這個通配符號,可以到表所有欄位,如上簡單的範例表示將所有animals欄位撈出來,亦可指讀取某些欄位就好,假設有很多欄位中,我只需要 name 名稱、age 年齡的話,SQL語法如下
SELECT name, age FROM animals;
LIMIT 限制條件
非常重要,如果animals資料表中沒有什麼資料全部印出來沒有關係,但建議盡可能養成習慣,減少直接撈出所有。
SELECT * FROM animals LIMIT 100
如上所示加上LIMIT關鍵字,並且街上一個數字100,表示從資料表animals中撈出資料最多100筆。
OFFSET 略過
所有的資料裡面假設前幾筆資料不想要撈出來可以使用這個關鍵字,有以下兩種設定方法,都代表animals 資料表中前10筆資料略過以後最多撈出100資料。
SELECT *
FROM animals
LIMIT 10, 100
以下寫法也是相同效果。
SELECT *
FROM animals
LIMIT 100 OFFSET 10
Delete vs Truncate vs Drop
這幾個關鍵字都是只要刪除、清空的意思差別在此釐清一下。
- drop 資料表完成刪除,包含結構跟內容,如果你想要資料表時可以使用。
- truncate 保留資料表的欄位結構,但清空裡面的資料。
- delete 保留資料表的欄位結構,一樣可以刪除全部資料(與truncate有一些不同)或部分符合你設定條件的資料。
舉例:
刪除 animals 資料表,執行以後資料庫裡面將不再看到animals資料表
drop table animals;
delete 比較常使用在刪除部分符合條件的資料,執行後資料庫一樣會有animals 資料表,但符合where篩選條件的資料會刪除。如下所示animals 資料表 id 欄位小於等於 500刪除掉。
delete from animals where id <= 500;
DELETE 亦可用於清空資料表,但效能方面比下面要介紹的truncate差,如下所示不加入 WHERE 篩選條件即可,清空資料表資料,如好所示使用DELETE 清空 animals 資料表。
delete from animals;
truncate 清除表內資料,保留資料表的結構,如下範例一樣是清空資料表。
truncate table animals;
詳細比較truncate、delete清空資料。
資料表內如果有自動遞增ID(插入資料時id欄位自動加1的欄位),該欄位使用truncate 清空以後再重新插入資料將重新開始id再由1開始慢慢遞增,如果使用delete 原本最後的ID是1000的話,使用delete 清空完資料以後再次插入資料,ID會由1001開始,不會重新由1開始。
可以知道的是truncate 完整釋放硬碟空間,delete 則視底層版本不同,會釋放或不會釋放硬碟空間,也就是使用Delete 如果是用在MySQL這個資料庫有可能會有兩種情況發生。