第十六章:MySql數據庫基礎
1:MySql概述
1)功能強大:提供了多種數據庫存儲引擎,支持事務、視圖、存儲過程和觸發器
2)支持跨平臺
3)運行速度快:在Mysql中,使用了B樹磁盤表(MyISAM)和索引壓縮;
4)支持各種開發語言:php、asp.net、java、python、ruby、c、c++、perl等
5)數據庫存儲容量大:mysql數據庫的最大有效表尺寸是由操作系統對文件大小的限制決定的。表空間最大容量64TB
2:啟動、連接、斷開和停止MySql服務器(windows平臺)
1)啟動:net start mysql
2)連接:mysql -u root -h 127.0.0.1 -p password (用戶名、MySql服務器所在地址、用戶密碼。服務器地址可不寫)
3)斷開:exit、quit
4)停止:net stop mysql
3:MySql數據庫操作
1)創建數據庫: CREATE DATABASE 數據庫名;
2)查看數據庫: SHOW DATABASES;
3)選擇數據庫:USE DATABASE
4)刪除數據庫:DROP DATABASE
4:MySql數據表操作
1)創建數據表:CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 數據表名 [(create_difinition,...)][table_options][select_statement]
TEMPORARY:如果使用該關鍵字,表示創建一個臨時表。
create_difinition: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [PRIMARY KEY] [reference_definition]。如:
create table table_name (列名1 屬性, 列名2 屬性...);
2)查看表結構 SHOW COLUMNS 或 DESCRIBE
SHOW [FULL] COLUMNS FROM 數據表名 [FROM 數據庫名]; 或 SHOW [FULL] COLUMNS FROM 數據表名.數據庫名
DESCRIBE 數據表名(可簡寫成DES)
查看某列: DES 數據表名 列名;
3)修改表結構:ALTER TABLE
ALTER[IGNORE] TABLE 數據表名 alter_spec [,alter_spec]... (如果指定 IGNORE 時,如果出現重復關鍵的行,則只執行一行,其他重復的唄刪除)
alter table tb_admin add email varchar(50) not null, modify user varchar(40); (modify是用來修改字句定義字段)
說明:通過alter修改表列,其前提是必須將表中數據全部刪除,然后才可以修改表列
4)重命名表:RENAME TABLE
5)刪除表:DROP TABLE
5:MySQL 語句操作
1)插入記錄 insert:insert into 數據表名(column_name,......)values(v1,v2.....)
2)查詢數據庫記錄 : select selection_list from 數據表名 where ... group by ... order by ... having ... limit...
(group by:對結果進行分組;order by:對結果進行排序;having:查詢時滿足的第二條件;limit:限定輸出的結果)
多表查詢:select 字段名 from 表1,表2...... where 表1.字段=表2.字段 and 其他查詢條件
3)修改、刪除記錄:update、delete
6:MySQL數據庫備份和恢復
要在命令行模式下操作MySQL數據庫,必須要對電腦的環境變量進行設置,右擊“我的電腦”,選擇“屬性”,選擇“高級”,然后選擇“環境變量”。在用戶變量的文本框中找到變量PATH并選中,在PATH的變量值文本框中添加:“D:\webpage\AppServ\MySQL\bin”(MySql中bin文件夾的安裝路徑)
1)備份:使用MYSQLDUMP命令
mysqldump -uroot -proot db_databasename>F:\db_databasename.txt
其中-uroot中的root是用戶名,而-proot中的root是密碼,db_dabataname 是數據庫名。F:\db_databasename.txt 是備份存儲的位置
注意:“-uroot”中是沒有空格的,在該命令的結尾處也沒有任何的結束符
2)恢復:mysql -uroot -proot db_database < F:\db_databasename.txt
第十七章:phpMyAdmin 圖形化管理工具
第十八章:PHP操作MySQL數據庫
1:連接mysql服務器:使用 mysql_connect() 函數
mysql_connect('hostname', 'username', 'password');?
hostname是mysql服務器的主機名(或IP),如果省略端口號,默認為3306
$link = mysql_connect("localhost","root","root") or die ("不能連接到數據庫服務器".mysql_error() );
if ($link) {
echo "連接成功";
}
技巧:在mysql_connect()函數前面添加符號“@”;用于限制這個命令的出錯信息的顯示
2:選擇mysql數據庫:使用 mysql_select_db() 函數 選擇mysql數據庫服務器上的數據庫,并與數據庫建立連接
mysql_select_db ( string 數據庫名 [, resource link_identifier] ) ?或 mysql_query ("use 數據庫名"[, resource link_identifier]);
link_identifier是MySQL服務器的連接標識。如果沒有指定連接標識符,則使用上一個打開的連接。如果沒有打開的連接,本函數將無參數調用mysql_connect()函數來嘗試打開一個并使用。
$link = mysql_connect ("localhost", "root", "root") or die ("不能連接到數據庫服務器".mysql_error() );
//選擇數據庫db_database18
$db_selected = mysql_select_db("db_database18", $link);
if ($db_selected){
echo "數據庫選擇成功";
}
也可以使用$db_selected = mysql_query ("use db_database18", $link);
3:執行SQL語句:在選擇的數據庫中使用 mysql_query() 函數執行sql語句
1)mysql_query ( string query [, resource link_identifier] )
注意:在mysql_query() 函數中執行的sql語句不應以分號 “;” 結尾
$result = mysql_query ("insert into tb_member values('tm','111','tm@tmsoft.com' ", $link);
$result = mysql_query ("update tb_member set user = '純凈水', pwd='1025' where user = 'tm' ", $link);
$result = mysql_query ("delete from tb_member where user = '純凈水' ", $link);
$result = mysql_query (" select * from tb_member ", $link);
//顯示表結構
$result = mysql_query (" DESC tb_member ", $link);
2)使用 mysql_fetch_array() 函數從數組結果集中獲取信息
array mysql_fetch_array ( resource result [, int result_type] )
result:資源類型的參數,要傳入的是由mysql_query()函數返回的數據指針
result_type:可選項,整數型參數,要傳入的是MYSQL_ASSOC(關聯索引)、MYSQL_NUM(數字索引)、MYSQL_BOTH(包含以上2種,默認)
注意:本函數返回的字段名區分大小寫
View Code
$sql
=
mysql_query
("select * from tb_book"
);
$info
=
mysql_fetch_array
(
$sql
);
if
(
$_POST
[submit] == "查詢"
){
$txt_book
=
$_POST
[txt_book];
$sql
=
mysql_query
("select * from tb_book where bookname like '%".
trim
(
$txt_book
)."%' "
);
$info
=
mysql_fetch_array
(
$sql
);
}
3)使用 mysql_fetch_object() 函數從結果集中獲取一行作為對象
object mysql_fetch_object ( resource result )——返回的是一個對象而不是數組,通過字段名訪問數組: $row -> col_name?
注意:本函數區分大小寫
4)使用 mysql_fetch_row() 函數逐行獲取結果集中的每條記錄
array mysql_fetch_row ( resource result )
與mysql_fetch_array()函數區別是:使用從0開始的數字下標。
區分大小寫
5)使用 mysql_num_rows() 函數獲取查詢結果集中的記錄數
int mysql_num_rows ( resource result )
PHP分頁:
View Code
<html>
<head>
<title>公告信息管理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="css/style.css" rel="stylesheet">
</head>
<body>
<table width="828" height="522" border="0" align="center" cellpadding="0" cellspacing="0" id="__01">
<tr>
<td background="images/image_01.gif"> </td>
<td height="140" background="images/image_02.gif"> </td>
</tr>
<tr>
<td width="202" rowspan="3" valign="top"><table width="202" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><?php
include
("menu.php");?></td>
</tr>
</table></td>
<td height="34" background="images/image_04.gif"> </td>
</tr>
<tr>
<td height="38" background="images/image_06.gif"> </td>
</tr>
<tr>
<td height="270" valign="top">
<table width="626" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="257" align="center" valign="top" background="images/image_08.gif"><table width="600" height="271" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="22" align="center" valign="top"
class
="word_orange"><strong>公告信息<strong>分頁顯示</strong></strong></td>
</tr>
<tr>
<td height="249" align="center" valign="top">
<table width="550" border="1" cellpadding="1" cellspacing="1" bordercolor="#FFFFFF" bgcolor="#999999">
<tr align="center" bgcolor="#f0f0f0">
<td width="221">公告標題</td>
<td width="329">公告內容</td>
</tr>
<?
php
$conn
=
mysql_connect
("localhost","root","root") or
die
("數據庫服務器連接錯誤".
mysql_error
());
mysql_select_db
("db_database18",
$conn
) or
die
("數據庫訪問錯誤".
mysql_error
());
mysql_query
("set names gb2312"
);
/*
$page為當前頁,如果$page為空,則初始化為1
*/
if
(
$page
==""
){
$page
=1
;}
if
(
is_numeric
(
$page
)){
$page_size
=4;
//
每頁顯示4條記錄
$query
="select count(*) as total from tb_affiche order by id desc"
;
$result
=
mysql_query
(
$query
);
//
查詢符合條件的記錄總條數
$message_count
=
mysql_result
(
$result
,0,"total");
//
要顯示的總記錄數
$page_count
=
ceil
(
$message_count
/
$page_size
);
//
根據記錄總數除以每頁顯示的記錄數求出所分的頁數
$offset
=(
$page
-1)*
$page_size
;
//
計算下一頁從第幾條數據開始循環
$sql
=
mysql_query
("select * from tb_affiche order by id desc limit
$offset
,
$page_size
"
);
$row
=
mysql_fetch_object
(
$sql
);
if
(!
$row
){
echo
"<font color='red'>暫無公告信息!</font>"
;
}
do
{
?>
<tr bgcolor="#FFFFFF">
<td><?php
echo
$row
->title;?></td>
<td><?php
echo
$row
->content;?></td>
</tr>
<?
php
}
while
(
$row
=
mysql_fetch_object
(
$sql
));
}
?>
</table>
<br>
<table width="550" border="0" cellspacing="0" cellpadding="0">
<tr>
<!-- 翻頁條 -->
<td width="37%"> 頁次:<?php
echo
$page
;?>/<?php
echo
$page_count
;?>頁 記錄:<?php
echo
$message_count
;?> 條 </td>
<td width="63%" align="right">
<?
php
/*
如果當前頁不是首頁
*/
if
(
$page
!=1
){
/*
顯示“首頁”超鏈接
*/
echo
"<a href=page_affiche.php?page=1>首頁</a> "
;
/*
顯示“上一頁”超鏈接
*/
echo
"<a href=page_affiche.php?page=".(
$page
-1).">上一頁</a> "
;
}
/*
如果當前頁不是尾頁
*/
if
(
$page
<
$page_count
){
/*
顯示“下一頁”超鏈接
*/
echo
"<a href=page_affiche.php?page=".(
$page
+1).">下一頁</a> "
;
/*
顯示“尾頁”超鏈接
*/
echo
"<a href=page_affiche.php?page=".
$page_count
.">尾頁</a>"
;
}
mysql_free_result
(
$sql
);
mysql_close
(
$conn
);
?>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table> </td>
</tr>
<tr>
<td bgcolor="#F0F0F0"></td>
<td height="43" background="images/image_12.gif"></td>
</tr>
</table>
</body>
</html>
注意:在連接數據庫時,一定要使用 mysql_query("set names gb2312")函數設置數據庫的編碼格式(也可以設置為其他編碼)。通過該設置可以避免在輸出中文字符串時出現亂碼。
4:關閉結果集:數據庫操作完成后,需要關閉結果集以釋放資源—— mysql_free_result ($result);
技巧:如果在多個網頁中都要頻繁進行數據庫訪問,則可以建立與數據庫服務器的持續連接來提高效率。因為每次與數據庫服務器的連接需要較長的時間和較大的開銷。建立持續連接的方法:調用 mysql_pconnect() 代替 myslq_connect()。建立的持續連接在本程序結束時,不需要調用 mysql_close()來關閉。下次程序再次執行 mysql_pconnect() 函數時,系統自動直接返回已經建立的持續連接的ID號,而不再去真的連接數據庫。
5:關閉MySQL服務器——完成數據庫操作后,應該使用 mysql_close() 函數關閉與MySQL服務器的連接: mysql_close ($Link);
說明:PHP與數據庫的連接是非持久連接,系統會自動回收,一般不用設置關閉。但如果一次性返回的結果集比較大,或網站訪問量比較多,則最好使用mysql_close() 函數手動進行釋放。
?
第十九章:ADODB類庫
1:概述——ADODB:Active Data Objects Data Base,它是存取數據庫所用到的一組函數,此函數庫用來隱藏不同數據庫函數間的差異,讓開發者可以很簡單地去切換數據庫。要使用ADODB來操作數據庫,首先下載ADODB類庫包,將其解壓到Web服務器目錄下,然后調用ADODB中的文件即可
2:使用ADODB操作MySQL
View Code
/*
(1)載入(include)adodb.inc.php文件
要使用ADODB類庫,首先是要啟動ADODB,啟動ADODB的方法就是載入adodb.ini.php文件.
*/
include_once
('../adodb5/adodb.inc.php'
);
/*
(2)建立連接
建立連接使用到的函數為:ADONewConnection()和NewADOConnection()。
*/
$conn
= ADONewConnection('mysql'
);
/*
(3)連接數據庫
第二步的建立連接,并沒有真正的連接上數據庫,需要使用Connect()或PConnect()成員方法來完成最后的鏈接步驟。Connect()和PConnect()方法的格式是一樣的,不同的是:PConnect()方法為持續性鏈接,而Connect()方法為非持續性鏈接。
Connect($host,[$user],[$password],[$database])
參數含義:
$host:數據庫服務器地址。
$user:數據庫帳號。
$password:帳號密碼。
$database:連接的數據庫。
在本實例中,要鏈接數據庫tb_database21,服務器為本機,用戶名密碼都為root。
*/
$conn
-> PConnect('localhost','root','root','db_database21'
);
//
設置編碼
$conn
-> execute('set names gb2312'
);
/*
/*(4)執行SQL語句
成功連接數據庫后,就可以執行SQL語句對數據庫進行操作了。執行SQL語句的方法是Execute()。該方法返回執行SQL語句后的記錄集。如果發生錯誤,則返回false。Execute()方法的格式為:
Execute($sql,$inputarr=false)
*/
$rst
=
$conn
-> Execute('select * from tb_object') or
die
('執行錯誤'
);
/*
(5)判斷結果,并對結果處理
第4步執行后,就需要對返回的記錄集進行處理了。一般處理結果集時,首先判斷EOF屬性表明當前的記錄指針已經指向了記錄集的最后一筆。movenext()方法的作用是將記錄指針向下移動一位。
*/
while
(!
$rst
-> EOF){
//
如果沒有錯誤,則配合wihle語句循環輸出結果
echo
$rst
-> fields['bigclass'].' '
;
$rst
-> movenext();
//
指針下移
}
/*
(6)關閉連接
當對數據庫的操作結束后,需要關閉連接,釋放內存。關閉連接的方法是close()。
*/
$rst
->
close();
$conn
-> close();
也可以通過數據源名稱(DSN)的方式進行連接,代碼如下:
include_once
('../adbdb5/dbodb.inc.php'
);
$conn
= ADONewConnection('mysql://root:root@localhost/db_database19');
使用ODBC連接MSSQL數據庫
include_once
('../adodb5/adodb.inc.php'
);
$conn
= ADONewConnection('odbc_mssql'
);
$conn
->PConnect("Driver={SQL Server};Server=localhost;Database=mydb; ", 'username', 'password');
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

