主要内容:
- MySQL的啟動
- MySQL資料庫操作
- 資料庫表設計
- 建立和檢視表
- 修改表結構
- MySQL語句操作
- 資料庫備份與恢複
- PHP操作MySQL資料庫
- 面向對象的資料庫操作
MySQL資料庫是目前最流行的資料庫之一,因為他是自由的開源的軟體,可以免費的使用,功能強大,跨平台,安全性高,成本低(完全免費),存儲量大。
點選MySQL的start即可,綠色為正常啟動

按住win+r,打開指令視窗,輸入cmd,使用dos連接配接和退出
MySQL資料庫操作
建立資料庫
CREATE DATABASE db_name
注意:
- 資料庫名db_name在windows不區分大小寫,而linux是區分的,為了程式的移植,建議使用小寫字母名稱。
- 不能與其他資料庫同名,否則發生錯誤。
- 名稱可以包含字母,數字,下劃線,美元符号($),但是不能以數字開頭,也不能使用MySQL關鍵字。
- 名稱最長64個字元。
- 每條指令以分号;結束,按enter送出,也可以将一條指令分為多行寫,分号結束。
檢視資料庫
SHOW DATABASES
選擇資料庫
USE db_name
删除資料庫
DROP DATABASE db_name
資料類型
數值類型
- tinyint,1位元組
- smallint,2位元組
- mediumint,3位元組
- int,4位元組
- bigint,8位元組
- float,4位元組
- double,8位元組
- decimal(m,d),m+2位元組
字元串類型
- char
- varchar
- binyblob,tinytext
- blob,text
- mediumblob,mediumtext
- longblob,longtext
- enum("value1","value2")
- set("value1","value2")
日期類型
- date,1000-01-01到9999-12-31,3位元組
- time,-838:59:59到838:59:59,3位元組
- datetime,1000-01-01 00:00:00到9999-12-31 23:59:59,8位元組
- timestamp,1970-01-01 00:00:00到2037年的某個時刻,4位元組
- Year,1901到2155,1位元組
資料字段屬性
某些情況,定義資料類型是不夠的,還有一些附加屬性,比如自動增加,自動補0,設定預設值。
字段屬性:
- UNSIGNED,隻能設定數值類型,資料不能出現負值
- ZEROFILL,隻能設定數值類型,不足補0,比如INT(3) ZEROFILL,将5插入輸出005
- AUTO_INCREMENT,隻能修飾整數類型,每增加一條,該字段值自動加1
- NULL/NOT NULL,資料預設為NULL,允許為空值,如果指定為NOT NULL資料不能為空值
- DEFAULT,指定預設值
建立和檢視表資料
建立表
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tb_name (col_name1 type, col_name2 type...... );
檢視表
SHOW TABLES;
輸入多行指令以分号結束,例如
CREATE TABLE test_tb(
id int(8) AUTO_INCREMENT PRIMARY KEY,
user varchar(40) NOT NULL,
psw varchar(20) NOT NULL,
createtime date NOT NULL DEFAULT 0);
檢視表結構
- SHOW COLUMNS FROM tb_name;
- DESCRIBE tb_name [col_name];
- DESC tb_name [col_name];
ALTER [IGNORE] TABLE tb_name alter_specification;
alter_specification是詳細要修改的内容
- ALTER TABLE tb_name ADD email varchar(40) NOT NULL;增加新字段
- ALTER TABLE tb_name ALTER psw int(8) NOT NULL;修改字段類型
- ALTER TABLE tb_name CHANGE old_col_name new_col_name type;修改字段名稱
- ALTER TABLE tb_name MODIFY col_name type;修改字句定義字段
- ALTER TABLE tb_name DROP col_name;删除字段
- ALTER TABLE tb_name DROP PRIMARY KEY;删除主鍵
- ALTER TABLE tb_name DROP INDEX index_name;删除索引
- ALTER TABLE tb_name RENAME new_tablename;更改表名稱
重命名表
删除表
DROP TABLE tb_name;
删除表需要謹慎,因為删除後資料表無法恢複的。
MySQL語句操作
插入記錄
insert into cartoon (name,sex,age,country)values ('Tom','boy',10,'usa');
insert into cartoon (name,sex,age,country)values ('Jerry','boy',9,'usa');
insert into cartoon (name,sex,age,country)values ('Jim','girl',15,'Canada');
insert into cartoon (name,sex,age,country)values ('Mario','boy',20,'France');
注意字元串資料要加單引号,标準SQL一次隻可以插入一條資料,是以需要執行4次語句插入4條資料,而MySQL中可以一次插入多資料,例如:
insert into cartoon (name,sex,age,country)values ('Tom','boy',10,'usa'),
('Jerry','boy',9,'usa'),
('Jim','girl',15,'Canada'),
('Mario','boy',20,'France');
查詢記錄
SELECT * FROM tb_name;
SELECT * FROM tb_name
[WHERE condition(查詢條件)]
[GROUP BY col_name(進行分組)]
[HAVING condition(滿足的第二條件)]
[ORDER BY col_name(排序)]
[LIMIT row_count(顯示查詢結果條數)]——也即是這一個和SQL SERVER有一點點不同,其他幾乎一樣的。
修改記錄
UPDATE tb_name SET col_name=expression WHERE condition
删除記錄
DELETE FROM tb_name WHERE condition
備份資料庫
備份資料的操作需要用到mysqldump.exe程式
這裡将test資料庫備份到D:/test.txt檔案中,-p 後面沒有密碼。
資料庫恢複
先退出資料庫,回到根目錄bin下,
注意恢複資料庫語句不要分号;
通路資料庫的步驟PHP通路資料庫和使用MySQL用戶端的操作類似:
- 打開資料庫連接配接
- 對資料庫操作
- 關閉結果集
- 關閉資料庫連接配接
連接配接資料庫
<?php
//連接配接資料庫
mysqli_connect($server,$username,$password) or die('資料庫連接配接失敗!');
echo "資料庫連接配接成功!";
?>
或者
<?php
$servername = "localhost";
$username = "root";
$password = "";
// 建立連接配接
$conn = new mysqli($servername, $username, $password);
// 檢測連接配接
if ($conn->connect_error) {
die("連接配接失敗: " . $conn->connect_error);
}
echo "資料庫連接配接成功<br/>";
?>
另外我們可以通過配置檔案,來設定連接配接資料庫的參數
使用函數 parse_ini_file() 解析配置檔案 config.ini 來獲得資料庫連接配接參數,然後使用 new 關鍵字對 mysqli 類進行執行個體化,最後使用函數 mysqli_connect_errno() 來判斷是否成功連接配接上了 MySQL 資料庫,實作該過程的代碼如下所示:
try{
//解析config.ini檔案
$config = parse_ini_file(realpath(dirname(__FILE__) . '/config/config.ini'));
//對mysqli類進行執行個體化
$mysqli = new mysqli($config['host'], $config['username'], $config['password'], $config['dbname']);
if(mysqli_connect_errno()){ //判斷是否成功連接配接上MySQL資料庫
throw new Exception('資料庫連接配接錯誤!'); //如果連接配接錯誤,則抛出異常
}else{
echo '資料庫連接配接成功!'; //列印連接配接成功的提示
}
}catch (Exception $e){ //捕獲異常
echo $e->getMessage(); //列印異常資訊
}
案例:
<?php
//連接配接資料庫
$server='localhost';
$username='root';
$password='';
$database='test';
$conn=mysqli_connect($server,$username,$password,$database) or die('資料庫連接配接失敗!');
if (mysqli_connect_errno($conn))
{
echo "連接配接 MySQL 失敗: " . mysqli_connect_error();
}else{
echo "資料庫連接配接成功!<br/>";
}
//選擇資料庫
$ch=mysqli_select_db($conn,$database);
if($ch){
echo "成功選擇資料庫<br/>";
}else{
echo "資料庫可能不存在<br/>";
}
//1、操作資料庫
$sql='select * from cartoon';
$result=mysqli_query($conn,$sql);
if($result){
echo "SQL查詢發送成功!<br/>";
}
//2、取結果集中的一行作為數組,如果要輸出全部可以使用while循環
$arr=mysqli_fetch_assoc($result);
//輸出傳回的數組資訊
print_r($arr);
//3、取結果集中的一行作為對象,使用對象while循環輸出
while($obj=mysqli_fetch_assoc($result)){
echo '<br/>'.$obj['name']."現在".$obj['age']."歲了。<br/>";
}
//4、取結果集中的一行作為枚舉數組
$result=mysqli_query($conn,$sql);
while($arr=mysqli_fetch_row($result)){
echo '<br/>'.$arr[1]."是一個".$arr[2]."。<br/>";
}
//5、取結果集中的行數,僅僅對select語句有效
$num=mysqli_num_rows($result);
echo "查詢到的結果有:".$num."行<br/>";
//6、取受影響的行數,對插入,修改,删除語句有效
$num=mysqli_affected_rows($conn);
echo "本次操作受影響行數為:".$num."行<br/>";
//斷開資料庫連接配接
mysqli_close($conn);
?>
簡單版本
<?php
//連接配接資料庫
$conn=mysqli_connect('localhost','root','','test') or die('資料庫連接配接失敗!');
//操作資料庫
$sql='select * from cartoon';
$result=mysqli_query($conn,$sql);
//取結果集中的一行作為對象,使用對象while循環輸出
while($obj=mysqli_fetch_assoc($result)){
echo '<br/>'.$obj['name']."現在".$obj['age']."歲了。<br/>";
}
//斷開資料庫連接配接
mysqli_close($conn);
?>
這裡主要是學習MySQL的基本知識,介紹了MySQL資料庫的使用、資料類型,常用的指令,為後面PHP連接配接做好基礎準備。
後面介紹了PHP操作資料庫的知識,PHP大多數時候是用來查詢資料的。
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname='my';
// 建立連接配接
$conn = new mysqli($servername, $username, $password);
// 檢測連接配接
if ($conn->connect_error) {
die("連接配接失敗: " . $conn->connect_error);
}else{
echo "連接配接成功<br/>";
}
//操作資料庫
$sql='CREATE DATABASE my_db';
if($conn->query($sql)==TRUE){
echo '資料庫建立成功<br/>';
}else{
echo "資料庫建立失敗:$conn->error<br/>";
}
//關閉連接配接
$conn->close();
?>
建立資料表
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname='my_db';
// 建立連接配接
$conn = new mysqli($servername, $username, $password,$dbname);
// 檢測連接配接
if ($conn->connect_error) {
die("連接配接失敗: " . $conn->connect_error);
}else{
echo "連接配接成功<br/>";
}
//操作資料庫
// 使用 sql 建立資料表
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)";
if($conn->query($sql)==TRUE){
echo '執行成功<br/>';
}else{
echo '執行失敗<br/>';
}
//關閉連接配接
$conn->close();
?>
插入資料
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname='my_db';
// 建立連接配接
$conn = new mysqli($servername, $username, $password,$dbname);
// 檢測連接配接
if ($conn->connect_error) {
die("連接配接失敗: " . $conn->connect_error);
}else{
echo "連接配接成功<br/>";
}
//操作資料庫
// 使用 sql 資料插入
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', '[email protected]')";
if ($conn->query($sql) === TRUE) {
echo "新記錄插入成功";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
//關閉連接配接
$conn->close();
?>
查詢資料
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname='my_db';
// 建立連接配接
$conn = new mysqli($servername, $username, $password,$dbname);
// 檢測連接配接
if ($conn->connect_error) {
die("連接配接失敗: " . $conn->connect_error);
}else{
echo "連接配接成功<br/>";
}
//操作資料庫
// 使用 sql 資料查詢
$sql = "SELECT * FROM myguests;";
$result=$conn->query($sql);
if ($result->num_rows>0) {
//輸出資料
while($row=$result->fetch_assoc()){
echo "id:".$row['id']."-name:".$row['firstname']."<br/>";
}
} else {
echo "0 結果<br/>";
}
//關閉連接配接
$conn->close();
?>
<?php
// 建立連接配接
$conn = new mysqli('localhost', 'root', '','my_db')or die("連接配接失敗: " . $conn->connect_error);;
//操作資料庫
$sql = "SELECT * FROM myguests;";
$result=$conn->query($sql);
while($row=$result->fetch_assoc()){
echo "id:".$row['id']."-name:".$row['firstname']."<br/>";
}
//關閉連接配接
$conn->close();
?>
ok,就到這裡。