天天看點

PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

主要内容:

  • MySQL的啟動
  • MySQL資料庫操作
  • 資料庫表設計
  • 建立和檢視表
  • 修改表結構
  • MySQL語句操作
  • 資料庫備份與恢複
  • PHP操作MySQL資料庫
  • 面向對象的資料庫操作

MySQL資料庫是目前最流行的資料庫之一,因為他是自由的開源的軟體,可以免費的使用,功能強大,跨平台,安全性高,成本低(完全免費),存儲量大。

 點選MySQL的start即可,綠色為正常啟動

PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

按住win+r,打開指令視窗,輸入cmd,使用dos連接配接和退出

PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作
PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

 MySQL資料庫操作

建立資料庫

CREATE DATABASE db_name

注意:

  • 資料庫名db_name在windows不區分大小寫,而linux是區分的,為了程式的移植,建議使用小寫字母名稱。
  • 不能與其他資料庫同名,否則發生錯誤。
  • 名稱可以包含字母,數字,下劃線,美元符号($),但是不能以數字開頭,也不能使用MySQL關鍵字。
  • 名稱最長64個字元。
  • 每條指令以分号;結束,按enter送出,也可以将一條指令分為多行寫,分号結束。
PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

檢視資料庫

SHOW DATABASES

PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

選擇資料庫

USE db_name

PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

删除資料庫

DROP DATABASE db_name

PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

資料類型

數值類型

  • 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);
      

  

PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

檢視表結構

  • SHOW COLUMNS FROM tb_name;
  • DESCRIBE tb_name [col_name];
  • DESC tb_name [col_name];
PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作
PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

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;更改表名稱
PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

重命名表

PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

删除表

DROP TABLE tb_name;

删除表需要謹慎,因為删除後資料表無法恢複的。

PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

 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');
      
PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

查詢記錄

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有一點點不同,其他幾乎一樣的。      
PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

修改記錄

UPDATE tb_name SET col_name=expression WHERE condition

PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

删除記錄

DELETE FROM tb_name WHERE condition

PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

備份資料庫

備份資料的操作需要用到mysqldump.exe程式

這裡将test資料庫備份到D:/test.txt檔案中,-p 後面沒有密碼。

PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作
PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

資料庫恢複

先退出資料庫,回到根目錄bin下,

注意恢複資料庫語句不要分号;

PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作
PHP學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

通路資料庫的步驟PHP通路資料庫和使用MySQL用戶端的操作類似:

  1. 打開資料庫連接配接
  2. 對資料庫操作
  3. 關閉結果集
  4. 關閉資料庫連接配接

連接配接資料庫

<?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學習9——MySQL資料庫MySQL的啟動 MySQL資料庫操作資料庫表設計修改表結構 MySQL語句操作資料庫備份與恢複PHP操作MySQL資料庫面向對象的資料庫操作

建立資料表

<?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,就到這裡。