iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
0
Modern Web

把前後分離製作的網站組起來系列 第 14

這篇是要建變數~

  • 分享至 

  • xImage
  •  

因為太多篇都是拖延文/images/emoticon/emoticon06.gif

所以決定以這篇為斷點~先寫好變數的命名~
然後再往前往後繼續寫/images/emoticon/emoticon05.gif

這篇是第9篇的mysql的延續~

創建數據庫-才能創建表

創建數據庫的語法有

CREATE SCHEMA 數據庫;
USE 數據庫 ;

或CREATE database 數據庫;
USE 數據庫 ;

創建表的語法有
CREATE TABLE 表


另外如果創建的資料庫/表 太多 忘記有沒有建過.../images/emoticon/emoticon04.gif
可以使用這個語法
CREATE TABLE IF NOT EXISTS 數據庫.
先判斷表是否存在,如果存在,相當於執行insert into select...;如果不存在,則相當於create table select ...。

當然如果堅持想創數據庫的話也可以用
DROP SCHEMA IF EXISTS 數據庫;

CREATE SCHEMA 數據庫;
USE 數據庫 ;

開始創建表裡面的數據:
CREATE TABLE IF NOT EXISTS 數據庫. (
數據打在裡面
)


先來解釋變數的意思(取名字是很重要的)
id 排第幾個
sku 通常表示規格、顏色、款式
name ,名字
description描述
unit_price 價格
image_url 照片放的位置
active 這邊基本上都打1/images/emoticon/emoticon06.gif

如果產品在我們的應用程序中處於“活動”狀態或未處於活動狀態,則可以使用該標誌。例如,如果我們不再決定在商店中銷售產品,則可以將“ active”設置為0。然後我們可以更新問題以僅顯示有效產品。

units_in_stock 庫存數
date_created 被創建的日期
last_updated 最後更新時間

EX:表裡一個記錄的名稱
參考這個語法

  1. INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

INSERT INTO PRODUCT (SKU, NAME, DESCRIPTION, IMAGE_URL, ACTIVE, UNITS_IN_STOCK,
UNIT_PRICE, CATEGORY_ID,DATE_CREATED)
VALUES ('BOOK-TECH-1000', 'JavaScript - The Fun Parts', 'Learn JavaScript',
'assets/images/products/placeholder.png'
,1,100,19.99,1, NOW());


解釋mysql語法的意思
/images/emoticon/emoticon28.gif
BIGINT(20) 20指的是該欄位下能輸入的最大數字長度。

NOT NULL 建議列屬性儘量為NOT NULL/NOT NULL 的欄位是不能插入“NULL”的,只能插入“空值”

AUTO_INCREMENT ID號是唯一的,是可以唯一標識資料庫裡面的一項資料的,而這種ID號並不需要自己動手去一個個輸入,直接通過設置AUTO_INCREMENT就可以從小到大自動生成了

VARCHAR(255)的()內是指字數,若設為utf8mb4來儲存中文字,也就是每個UTF-8字元需要佔用4 bytes的空間,則單一個VARCHAR欄位最多可儲存16,383個字。

DEFAULT NULL如果列定義不包含任何顯式的DEFAULT值,則MySQL按以下方式確定默認值:如果該列可以採用NULL作為值,則使用顯式的DEFAULT NULL子句定義該列。

DECIMAL(13,2)具有固定有效位數和小數位數的數值資料類型.decimal[ ( p[ , s] ) ]p (有效位數)
要儲存的最大小數位數總數。 此數目包括小數點的左右兩側。 有效位數必須是從 1 到最大有效位數 38 的值。 預設有效位數是 18。s (小數位數)
小數點右側所能儲存的小數位數。 這個數字會從 p 中減去,以判斷小數點左邊的最大位數。 小數位數必須是介於 0 到 p 間的值,且只能在已指定有效位數時指定。 預設小數位數是 0,因此 0 <= s <= p。 最大儲存體大小會隨著有效位數而不同。

INT(11)=tinyint(4),smallint(6),mediumint(9),int(11),bigint(20),這些默認的寬度是跟該類型的取值範圍長度相關。

DATETIME(6)YYYY 是代表年份的四位數,範圍介於 1753 至 9999 之間。

MM 是代表指定年份中某個月份的兩位數,範圍介於 01 至 12 之間。

DD 是代表指定月份中某個日期的兩位數,範圍介於 01 至 31 之間 (視月份而定)。

hh 是代表小時的兩位數,範圍介於 00 至 23 之間。

mm 是代表分鐘的兩位數,範圍介於 00 至 59 之間。

ss 是代表秒鐘的兩位數,範圍介於 00 至 59 之間。

n* 是代表小數秒數的零至三位數,範圍介於 0 至 999 之間。


解釋其他mysql語法的意思

ENGINE=InnoDB MySQL 在 5.5 以後的版本大膽將 InnoDB 儲存引擎,建立資料表不用再加上 ENGINE=InnoDB,但是大家可以發現 MySQL 安裝好後,內建 mysql 和 information_schema 資料庫還是用 InnoDB 儲存引擎

AUTO_INCREMENT = 1欄位會自動遞增資料行的值,因為每次新增資料時欄位值都會自動遞增也就是說 AUTO INCREMENT 欄位值會是唯一的,該欄位用途就像是一個識別碼或流水號,而 AUTO INCREMENT 常與 Primary Key 一起搭配使用。

Constraint 用來有條件地限制哪些資料才可以被存入資料表中,也就是對欄位作約束。這些限制可以在建立資料表時 CREATE TABLE 指定條件,或是之後再修改 ALTER TABLE 指定。

FOREIGN KEY外鍵是一個 (或多個) 指向其它資料表中主鍵的欄位,它限制欄位值只能來自另一個資料表的主鍵欄位,用來確定資料的參考完整性 (Referential Integrity)。

如果想在 MySQL 資料庫中使用外鍵限制,必需讓資料表使用 InnoDB 儲存引擎。

REFERENCES外來鍵的用法


IDENTIFIED BY訪問許可權
GRANT ALL PRIVILEGES ON 訪問許可權
ALTER USER修改User與Login的關聯
IDENTIFIED WITH mysql_native_password BY檢視現有使用者,密碼及允許連線的主機


因為這篇是購物網站!~所以命名當然跟購物網站有關
id BIGINT(20) NOT NULL AUTO_INCREMENT,
sku VARCHAR(255) DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
description VARCHAR(255) DEFAULT NULL,
unit_price DECIMAL(13,2) DEFAULT NULL,
image_url VARCHAR(255) DEFAULT NULL,
active BIT DEFAULT 1,
units_in_stock INT(11) DEFAULT NULL,
date_created DATETIME(6) DEFAULT NULL,
last_updated DATETIME(6) DEFAULT NULL,
category_id BIGINT(20) NOT NULL,


另外想要說一個關於user的語法~
我覺得這個很特別~一般的書沒寫到
/images/emoticon/emoticon07.gif
CREATE USER 'ecommerceapp'@'localhost' IDENTIFIED BY 'ecommerceapp';訪問許可權

GRANT ALL PRIVILEGES ON * . * TO 'ecommerceapp'@'localhost';檢視現有使用者,密碼及允許連線的主機


ALTER USER 'ecommerceapp'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ecommerceapp';
修改User與Login的關聯


按mysql旁邊的User可以看到新增
https://ithelp.ithome.com.tw/upload/images/20200914/201190354stGOdiL6A.png

DEAR ALL 我們明天見 /images/emoticon/emoticon08.gif


上一篇
繼續建-3
下一篇
然後~準備到REST APIs
系列文
把前後分離製作的網站組起來30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言