# 2. 建立自己的web資料庫 {%hackmd QnyEFBdERZebn4iQDXNPnA %} ## 本章重點:MySQL前置設定 ## 01 使用MySQL Monitor - 每一個指令結尾都要有分號(;) - SQL**陳述式**不區分大小寫 - 但資料庫與資料表名稱區分大小寫 ## 02 登入MySQL - CLI介面 ```sql= mysql -h [hostname] -u [username] -p ``` ## 03 建立資料庫 - 建立資料庫 ```sql= create database [dbname]; ``` ## 04 MySQL權限系統介紹 - 權限是**特定使用者**對**特定物件**執行**特定動作**的**權利** ### 最小權限原則 - 用戶應該使用**完成工作**所需的**最小權限**來工作 ### 設定使用者:CREATE USER與GRANT指令 - GRANT 與 REVOKE可以讓你對MySQL使用者**授予&收回**以下六個等級的權利 - 全域 - 資料庫 - 資料表 - 欄位 - 預存程序 - 代理伺服器使用者 - CREATE USER - 可建立一個使用者 - GRANT - 可以授予使用者權限 ### 權限類型與等級(參考Chp.9 , p.240-p.242) - 授權給一班使用者 - 授權給管理員的權限 - 特殊權限 ### REVOKE 指令 - GRANT的相反 - 用來取消使用者的權限 ```sql= GRANT與REVOKE --範例: mysql > grant all -> on *.* -> to 'fred' identified by 'mnb123' -> with grant option --給fred所有資料庫的權限,讓他可以從任何主機連線 --撤銷他的所有權限 mysql > revoke all -> on books.* -> from 'fred'@'localhost'; ``` ## 05 使用正確的資料庫 - 指定要使用的料庫 ```sql= use [dbname]; --登入時指定資料庫 mysql -D [dbname] -h hostname -u username -p ``` ## 06 建立資料庫的資料表 - 使用CREATE ```c= CREATE TABLE tablename(columns); //使用,分開Columns //透過MySQL執行既有的SQL檔案 mysql -h host -u bookorama -D books -p < bookorama.sql ``` - 了解其關鍵字 ```sql= CREATE TABLE Customers ( CustomerID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Name CHAR(50) NOT NULL, Address CHAR(100) NOT NULL, City CHAR(30) NOT NULL, ); -- NOT NULL: 代表每一列的屬性都必須有一個值 -- AUTO_INCREMENT: MySQL自動產生獨有的識別值 -- PRIMARY KEY: 指定此欄位是該資料表的主鍵 -- 注意欄位型態: INT, UNSIGNED, CHAR() -- 建立任何資料表的時候,你必須決定欄位型態 ``` ## 07 使用SHOW與DESCRIBE來查看資料表 - 查看 ```sql= --顯示所有資料表清單 show tables; --查看資料庫清單 show databases; --看特定資料表的schema describe books; ``` ### 建立索引 - FULLTEXT - 用來索引文字欄位 - UNIQUE - 可以確保多欄位索引裡面的每一個值或值的組合一定是獨特的 ## 08 選擇欄位資料型態 - 四種 - 數值型態 - 日期與時間型態 - 字串型態 - 空間型態(特殊案例)