網站開發筆記

記錄網站開發時的一些知識

HTTP

網站大多數時候都需要 HTTP 傳送資料

HTTP

CORS

此篇內容尚不完整,可能還會有很大的變動
僅供參考,若要查看完整版本,建議去看 MDN Web Docs 會比較好

CORS 為「跨來源資源分享」的縮寫,旨在控制不同網域來源的資源存取控制(Access Control)

一般來說,JavaScript 的 Fetch API 和 XMLHttpRequest 遵守同源政策(Same origin policy),意味著這些 API 只能存取相同網域來源的資源,這是避免 CSRF(跨站點請求偽造)的做法。

如果有不同網域的資源需要存取,則該資源需要加入一系列 CORS HTTP Header。

一般來說,經由上述 API 進行的 HTTP 請求(如 GET、POST)都會在 HTTP Header 附上 Origin 這個 Header,代表該 HTTP Request 的來源。

此時伺服器可能會回傳以下這些 Header,以下代表該 Header 的意思:

以下是簡單請求、複雜請求都會有的必要 Header:

以下是複雜請求的所需條件,像是 GET、POST、HEAD 以外的方法之外,或是滿足以下任意 Header 的請求:

如果有需要,也可以建立預檢請求,檢視伺服器的 CORS 要求

伺服器則必須回應

CSS

前端苦手學 CSS be like:

CSS

Flex 速記

對某個 Selector 套用 Flex

須把 display 屬性設成 flex,如下:

display: flex;

沒了,就這麼簡單。

似乎只要套用 Flex 後連該 element (其實已經變成 Flex container了)底下的子 element (item)也會跟著套用,所以如果確定父子關係的話,那其實只要在最上層套用 Flex 屬性就好。

基本的方向調整

對齊

Space 相關

Item 相關

綜合體

 

 

 

資料庫系統

老師教不好,只好想辦法自學 D:

資料庫系統

SQL 語法筆記

來自 W3School 的學習筆記

用 SQL 管理資料庫

部份 SQL 管理指令需要有相關的權限才可以進行操作

Database

建立

CREATE DATABASE <database_name>;

刪除(請小心操作)

DROP DATABASE <database_name>;

查詢所有 Database

SHOW DATABASES;

完整備份

BACKUP DATABASE <database_name>
TO DISK = <filepath>;

增量備份(只備份有新增的部份)

BACKUP DATABASE <database_name>
TO DISK = <filepath>
WITH DIFFERENTIAL;

資料表

資料型態

我覺得就邊做邊去 W3School 看就好了。

你說面試會考怎麼辦?我...我不知道...。

但可以用程式語言的想法去記,例如常見的 intfloatdoubledecimal,有些東西可以注意:

建立

CREATE TABLE <table_name>(
    <column1> <datatype>,
    <column2> <datatype>,
    ...
);

移除或清空

DROP TABLE <table_name>;

只是要清空資料表,但資料表本身不想刪除的話:

TRUNCATE TABLE <table_name>;

修改一張表

新增欄位
ALTER TABLE <table_name>
ADD <column_name> <datatype>;
移除欄位
ALTER TABLE <table_name>
DROP COLUMN <column_name>;
重新命名欄位
ALTER TABLE <table_name>
RENAME COLUMN <old_column_name> to <new_column_name>;

SQL Server:

EXEC sp_rename "table_name.old", "new_name", "COLUMN";

修改一個欄位資料型態

--- MS 系列
ALTER TABLE <table_name>
ALTER COLUMN <column_name> <datatype>;

--- MySQL, 舊版 Oracle
ALTER TABLE <table_name>
MODIFY COLUMN <column_name> <datatype>;

--- 新版 Oracle
ALTER TABLE <table_name>
MODIFY <column_name> <datatype>;

選擇、查詢及條件

一般選擇

SELECT <column_name>, <column_name2>, ... FROM <table_name>;

不重複選擇

SELECT DISTINCT <column_name>, <column_name2>, ... FROM <table_name>;
# 通用寫法
SELECT COUNT(*) AS <CustomName> FROM (SELECT DISTINCT <column_name>, <column_name2>, ... FROM <table_name>);

# 非Access才可以用的寫法
SELECT COUNT(DISTINCT <column_name>, <column_name2>, ...) FROM <table_name>;

過濾結果

使用 WHERE

SELECT  <column_name> FROM <table_name> WHERE <condition>;

e.g:

SELECT * FROM Customers
WHERE CustomerID > 80;

使用 AS

可以使用 AS 替某些計算結果的 Column 命名,例如:

SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather;

在這裡 (temp_hi+temp_lo)/2 的 Column 名稱會被命名為 temp_avg

排序

SELECT <column_name>, <column_name2>, ... FROM  <table_name>
ORDER BY <column_name>, <column_name2>, ... ASC|DESC;

限制筆數(很 RDBMS specify)

資料操作(插入、更新、移除)

插入資料

INSERT INTO <table_name>(<column_name>, <column_name2> ...)
VALUES (<value1>, <value2>, ...);
INSERT INTO <table_name>(<column_name>, <column_name2> ...)
VALUES
(<value1>, <value2>, ...),
(<value1>, <value2>, ...),
...;

NULL

如果資料插入後,有些欄位沒有資料,那該欄上的資料會變成 NULL

如果要查詢的話,可以用 IS NULLIS NOT NULL 來做條件篩選,例如:

SELECT <column_name>
FROM <table_name>
WHERE <column_name> IS NULL | IS NOT NULL;

NULL 不是空白,也不是空格,NULL 就是空,完全沒有資料的意思

更新資料

UPDATE <table_name>
SET <column1> = <value1>, <column2> = <value2>, ...
WHERE <condition>

刪除資料

DELETE FROM <table_name> WHERE <condition>

SQL Functions

最大最小值

MAX()MIN() ,具體用法如下:

SELECT MAX(<column_name>) | MIN(<column_name>) FROM <table_name> WHERE <condition>;
SELECT MAX(<column_name>) AS <CustomName> FROM ...;
SELECT MAX(<column1>) AS <CustomName>, <column2>
FROM <table_name>
GROUP BY <column2>;

數資料總數

COUNT() 可以幫你解決這個問題:

SELECT COUNT(<column_name>) FROM <table_name> WHERE <condition>;

數資料總和

SUM() 可以用

SELECT SUM(<column_name>) FROM <table_name> WHERE <condition>;

取平均數

AVG() 可以用

SELECT AVG(<column_name>) FROM <table_name> WHERE <condition>;
SELECT * FROM <table_name> WHERE <column1> > (SELECT AVG(<column1>) FROM <table_name>)

進階查詢

找出 Pattern (LIKE)

使用 LIKE:

SELECT <column> FROM <table_name> WHERE <column> LIKE <pattern>;

萬用字元

通用萬用字元:

字元 意義
% 匹配 0 個或多個字元
_ 匹配 1 個字元

非通用萬用字元(RDBMS specify):

字元 意義
[] 匹配任意單一字元(沒有先後順序)
^ 匹配任意沒有包含該字元
- 範圍匹配,如 a-z
{} 匹配任意跳脫字元