MySQL
easily use MySQL
Vasiliy
MySQL Introduction
- 建立多個關係資料表來存入資訊
- 可以通過多表關係來查詢資料
- 將系統自身的資訊也提供為一個表或目錄,稱為系統表,用於互動查詢。
MySQL資料庫
--建立資料庫 並選擇語系
create database 資料庫名稱 character set 語系
--刪除資料庫
drop database 資料庫名稱
--建立資料庫test並選擇語系utf8
create database test character set utf8
--刪除資料庫test
drop database test
MySQL資料表
--新建資料表
CREATE TABLE 資料表名稱(
欄位名稱1 變數型態 欄位1額外條件,
欄位名稱2 變數型態 欄位2額外條件,
......
--其他設定條件
PRIMARY KEY (欄位)
)
--刪除資料表
DROP TABLE 資料表名稱
--清空資料
TRUNCATE 資料表名稱--新建資料表test
--test_id 為int型態並且為遞增
--test_name 為text型態
--test_id 為主鍵
CREATE TABLE test(
test_id int AUTO_INCREMENT,
test_name text,
PRIMARY KEY (test_id)
)
--刪除資料表test
DROP TABLE test
--清空資料表test的所有資料
TRUNCATE test練習
1.新增一個名為easylearn的資料庫
2.新增一個名為easylearn的資料表
3.欄位資訊為:
test_id int型態 auto_increase(遞增)
test_name text型態
test_body text型態
PDO(PHP Data Objects)
use PDO to connect MySQL
不要用舊的方法mysqli
之後的新版本將被捨棄使用
而且安全率非常的低
$db = new PDO(
'資料庫類型:host:資料庫IP;dbname=資料庫名稱',
'資料庫使用者',
'資料庫使用者密碼'
//下面為其他參數條件
);$db = new PDO(
'mysql:host=localhost;dbname=test',
'root',
''
//下面為其他參數條件
);利用PDO對MySQL下指令
//串接PDO並與MySQL資料庫連線
$db = new PDO(
'mysql:host=localhost;dbname=test',
'root',
''
);
//對MySQL下指令
$stmt=$db->prepare('資料庫指令');
//把資料庫指令的輸入數值以陣列方式丟進來,做數值過濾
//並且執行指令
$stmt->execute('陣列數值');新增(INSERT)
INSERT INTO `資料表`(`欄位1`,`欄位2`,......)
VALUES ('數值1','數值2',......),
('數值1','數值2',......),
......--搜尋 test_id=1 的資料並且只有顯示test_id與test_name兩種資訊
INSERT INTO `test`(`test_name`)
VALUES ('test1'),('test2')
/*-------新增-------*/
//串接PDO並連接MySQL
$db = new PDO(
'mysql:host=localhost;dbname=test',
'root',
''
);
//執行新增指令
$stmt=$db->prepare('INSERT INTO `test`(`test_name`) VALUES (:test_name_0),(:test_name_1)');
//把參數丟進去
$stmt->execute(
array(
':test_name_0' => 'test1',
':test_name_1' => 'test2',
)
);INSERT In PHP
練習
1.創建一個form表單把test_name用GET方法給
insert.php
2.在insert.php
新增test_name = $GET['test_name']
刪除(DELETE)
DELETE FROM `資料表`
WHERE 條件式
--刪除test資料表 test_id = 1的值
DELETE FROM `test` WHERE 'test_id' = 1
/*-------刪除-------*/
//串接PDO並連接MySQL
$db = new PDO(
'mysql:host=localhost;dbname=test',
'root',
''
);
//執行刪除指令
$stmt=$db->prepare('DELETE FROM `test` WHERE `test_id` = :test_id');
//把參數丟進去
$stmt->execute(
array(
':test_id' => '1'
)
);DELETE In PHP
練習
1.創建一個form表單把test_id用GET方法給
delete.php
2.在delete.php
刪除test_id = $GET['test_id ']的所有資訊
更新(UPDATE)
UPDATE `資料表`
SET `欄位1`='數值',`欄位2`='數值',......
WHERE 條件式
--更新test資料表
--test_id = 2的 test_name 都變成Hello World!!
UPDATE `test`
SET `test_name`='Hello World!!'
WHERE `test_id` = 2
/*-------更新-------*/
//串接PDO並連接MySQL
$db = new PDO(
'mysql:host=localhost;dbname=test',
'root',
''
);
//執行更新指令
$stmt=$db->prepare('UPDATE `test` SET `test_name`=:test_name WHERE `test_id` = :test_id');
//把參數丟進去
$stmt->execute(
array(
':test_name' => 'Hello World!!',
':test_id' => '2'
)
);UPDATE In PHP
練習
1.創建一個form表單把test_id,test_name用GET方法給update.php
2.在update.php
在test_id = $GET['test_id ']
更新test_name = $GET['test_name']
查詢(search)
SELECT `欄位1`,`欄位2`,......(*)
FROM `資料表`
WHERE 條件式--搜尋 test_id=1 的資料並且只有顯示test_id與test_name兩種資訊
SELECT `test_id`,`test_name`
FROM `test`
WHERE `test_id` = '1'
--搜尋test表所有資訊
SELECT * FROM `test` WHERE 1//串接PDO並連接MySQL
$db = new PDO(
'mysql:host=localhost;dbname=test',
'root',
''
);
//執行搜尋指令
$stmt=$db->prepare('SELECT `test_id`,`test_name` FROM `test` WHERE `test_id` = :test_id');
//把輸入數值:test_id 變為 1
$stmt->execute(
array(
':test_id' => 1
)
);
//顯示執行結果
$result=$stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($result);search In PHP
練習
1.創建一個form表單把test_id用GET方法給search.php
2.在search.php
如果$GET['test_id '] == all 印出全部資料
反之印出test_id = $GET['test_id ']
排序(order by)
--生冪 ASC
--降冪 DESC
ORDER BY `欄位1` 生冪或降冪 ,
`欄位2` 生冪或降冪 ,
......--把test_id生冪的印出來
SELECT * FROM `test` WHERE 1 ORDER BY `test_id` ASC
限制(limit)
LIMIT 想取出多少筆資料
OFFSET 從第幾筆開始(0為第一筆資料)--列出兩筆資料
SELECT * FROM `test` WHERE 1 LIMIT 2
--列處兩筆資料 從第三筆資料開始算起
SELECT * FROM `test` WHERE 1 LIMIT 2 OFFSET 2練習
1.創建一個form表單把type,limit,offset用GET方法給search.php
2.在search.php
印出資料
if type ==0 則 以生冪顯示
else 則以降冪顯示
limit 為 顯示多少筆資料
offset從第幾筆開始
加入(JOIN)
這個只有在關聯式資料庫才有,
意思就是把多個資料表加在一起
Select 資料表1.資料欄位, 資料表2.資料欄位,......
FROM 資料表1
INNER JOIN 資料表2 ON 條件式SELECT `test1`.`test_name`, `test2`.`test2_type`
FROM `test1`
INNER JOIN `test2` ON `test1`.`test_id` = `test2`.`test_id`自製 simpleSQL
//設置資料表
$SQL->setDateTable(資料表str);
//清空暫存指令
$SQL->fresh();
//新增
$SQL->insert(欄位一維陣列)
->value(數值二維陣列)
->execute();
//刪除
$SQL->delete()
->where(條件二維陣列)
->execute();
//更新
$SQL->update(欄位一維陣列)
->set(數值一維陣列)
->where(條件二維陣列)
->execute();
//搜尋
$SQL->select(欄位一維陣列)
->where(條件二維陣列)
->order(二維陣列)
->limit(limit參數1,offset參數2)
->execute();
//客製化(自己輸入指令的)
$SQL->customsize(query字串,陣列)
->execute();下載
MySQL
By andy26283
MySQL
- 129