第十六章: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種,默認)
注意:本函數返回的字段名區分大小寫

$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分頁:

<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

/* (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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
