上一篇文章中,我們最後完成了一個簡單的網頁留言版,主要是使用php的GET方法來進行資料的抓取與傳遞,但是由於我們沒有給他一個用來儲存資料的地方,所以每當我們重新整理這個網站就會發現前一次的留言不見了,也就是說這個留言版沒辦法真正起作用。
那我們接下來幾天的目標就是將php和Mysql這個資料庫搭上線,讓我們可以儲存每個訪客留下的資料,完成一個真正的留言版!
SQL( Structured Query Language )的中文就是「結構化查詢語言」,誕生於 1970 年代後期,是專門用於關聯式資料庫的一種查詢語言,其可以定義資料庫結構、建立表格、指定欄位型態與長度,也能新增、異動或查詢資料。
也就是說,SQL 是一種用來從資料庫讀取與儲存資料的電腦語言,讓使用者可以順利達到資料庫之間的溝通,且更有組織的管理資料。且由於是共同的語法,不論在 MS-SQL、ORACLE、DB2、ACCESS、MySQL、T-SQL、NoSQL 等資料庫系統中,都可以通用。
而今天因為我們先前裝的xampp內建的資料庫系統是Mysql,所以我們就以Mysql為主,來做更進一步的介紹。
要打開電腦裡的mysql其實有個很快的方法,就是先開啟之前提到的XAMPP control panel,之後在mysql右邊的按鍵選admin。
像這樣:
之後應該會自動跳出一個叫phpMyAdmin的東西:
接下來我們點開資料庫旁邊的SQL按鈕:
在裡面就可以輸入SQL指令了哦!
在介紹一些常用指令前,這裡阿森先來講解一下Mysql的大致結構,首先最外層會是你的database,也就是資料庫,再來每一個資料庫中可以有很多個資料表(table),而這些資料表中又可以存放很多變數,可以想像成自己設定行名稱的excel,如果畫出來大概是長這樣:
來源:https://lucidar.me/fr/web-dev-class/lesson-5-01-introduction-to-mysql/
再來使用SQL時會有幾個比較常用到的指令,而這些指令其實非常直觀,這裡阿森就先介紹幾個之後可能會用到的語法,讓大家比較好理解。
//新增一個資料庫,這裡取名為ithelps
create database ithelps;
//使用資料庫
use ithelps;
//新增一個含有以下元素的資料表,我們叫做msg好了:
//會自動增加(auto_increment)的id
//字串最多長度20的name
//字串最多長度50的mail
//字串最多長度250的messages
create table msg(
id integer auto_increment primary key,
name VARCHAR(20),
email VARCHAR(50),
messages VARCHAR(250)
);
//這裡只是舉例,不要真的刪除阿!!
Drop Table `msg`;
//接著我們來新增一筆資料
INSERT INTO `msg`(`name`, `mail`, `msg`) VALUES
('Sen','senchao0930@gmail.com','test test hello~');
//這裡沒有寫id,但因為他是auto increment,所以系統會自動從1開始計
//當要查詢一筆或多筆資料時我們會用以下指令:
SELECT `name`, `mail`, `msg` FROM `msg` WHERE id = 1;
//或是今天我們要查同一個email留過的所有言並以先後順去排序我們會用:
SELECT `name`, `msg` FROM `msg` WHERE email = `mail` ORDER BY id ASC;
//此時資料就會由id小到id大排序,如果要大到小就須使用DESC代替ASC
//如果要限制資料的比數可以使用limit這個指令:
SELECT `name`, `msg` FROM `msg` WHERE email = `mail` ORDER BY id ASC Limit 5;
//這樣就只會顯示前五筆資料囉!
而當牽扯到多個資料庫的時候,再使用select語句時可能還會用到JOIN等指令,但因為目前還不會那麼複雜,之後有用到再介紹吧!
//接著來把上一筆資料刪除
DELETE FROM `msg` WHERE id = 1;
//這裡是透過選id的方式來刪除,當然也可以透過選name或是mail等table內資料的方式來刪除!
//透過下面的指令我們可以對id=1的資料做任意更改。
UPDATE `msg` SET `name`='Alu',`mail`='test@gmail.com',`msg`='test2 test2' WHERE id = 1
如果大家都跟著阿森的步伐現在應該已經創好一個資料庫叫ithelps,並且裡面有一個叫msg的資料表,而這資料表中又含有id, name, mail, msg等資料格,這同時就表示我們的資料庫已經建立好啦。
這樣一個資料庫算是最簡單架構的資料庫,主要也是因為這次留言版的製作不太複雜,在之後可能會有更複雜的資料架構,需要用到像是foreign key等連結方式,如果有興趣可以在網路上找找看資料,我相信在不久的將來應該也會介紹到這一塊,但舊今天的進度而言我相信這樣就夠了!
接下來會介紹如何透過php中的pdo將網頁和資料庫做連線,達成一個完整功能的留言版。
那今天就先這樣,我們明天見!