###### tags: `MySQL` # 0328 MySQL ## 名詞 資料庫管理系統: DBMS=DateBase Management System 資料庫管理者: DBA=Database administrator ![](https://i.imgur.com/LDOo5Wh.png) ## 關聯式資料庫(RDBMS) 關聯式資料庫管理系統 .資料庫的物件: 1.表格 2.索引 3.使用者 .資料庫的運算 .資料庫的限制條件 .支援結構化查詢語言:  (Structured Query Language,SQL) *與其他資料庫差別在與關連式資料庫皆由表格(table)方式存取,關聯式資料庫由多個表格組成 一般的資料結構: Bit>>Byte>>Field>>Record>>File>>Database 關聯式的資料結構: Bit>>Byte>>column>>Row>>Table>>Datebase Column=直欄 Fiel=欄位 Row=橫列 Record=紀錄 Primary Key(PK)=主鍵 : 1.必填,不能為空值 2.唯一性 Foreign Key (FK) =外來鍵 : 1.欄位所輸入的值須出現參照之表格的值 2.建立不同資料表間的關係 3.只能參考一個主鍵或為一鍵 4.欄位可為空值 ## SQL ### SQL特性 1.屬於自然語言,非程序語言 2.不需要瞭解資料存放方式,只需列表出需要的資料 3.不同底層的資料庫亦可使用相同SQL語法 ### SQL分類 1.查詢語法(DQL): select=查詢資料庫表格資料 2.定義語法(DDL): a.creat=新建資料物件 b.rename=變更資料物件名稱 c.truncate=清除資料物件 3.操作語法(DML): a.insert:新增資料庫表格資料 b.update:增加資料庫表格資料 c.delete:刪除資料庫表格資料 4.控制語法(DCL): a.grant:授予權限 b.revoke:移除權限 ![](https://i.imgur.com/0G4POU2.png) *MySQL上 Databases=Schemas 為同義字 在其他系統上則否 ![](https://i.imgur.com/sOJRssH.png) MySQL上註解為:"--" MySQL接續或結束後面需要加";" MySQL指令不分大小寫 關鍵字(keywords) 不可分割成多行 在WORKBENCH上 點選schemas 可看預覽表格: 粗體為:FK 粗體+底線:PK ![](https://i.imgur.com/aw7hUxA.png) 一般使用VARCHAR來當作字元資料的型態,除非有固定字元的需求才使用CHAR DATETIME 表示法為YYYY/MM/DD,mm:ss ex:2022/03/28,15:00.. ## SELECT語法 SELECT...(欄位) FROM...(資料表名稱) ![](https://i.imgur.com/GSViga9.png) ## WHERE 語法 置於 from 子句後 條件子句: 邏輯值:TRUE,FALSE,NULL 比較子句: 運算元可以是欄位,運算式,函數,常數 ![](https://i.imgur.com/lfAC6oY.png) ## between 語法 between and 查詢一個連續區間值 ex:expr BETWEEN x1 AND x2 ## ORDER BY 語法 置於SELECT敘述的最後一行, 排序方式: ASC:升冪 由小到大 DESC:降冪 由大到小 若有空值時,升冪在最前面,降冪在最下面 ## IN 語法 ex:where expr in (,) 括號內為or閘 (value1,value2,....) ![](https://i.imgur.com/o4LTYD2.png) ## LIKE 語法 expr LIKE'pattern' ESCAPE 'character' pattern: %:替代任意字元 _ :替代任意字元 ESCAPE'character' 定義跳脫字元:ESCAPE'&' &% = 跳脫"%" &_ = 跳脫"_"