建立一個數據庫php
CREATE DATABASE publicationmysql
建立用戶linux
GRANT PRIVILEGES ON database.object TO 'username'@'hostname' IDENTIFIED BY 'password'sql
添加自增型ID列數據庫
ALTER TABLE classics ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT KEYwindows
刪除列數據庫設計
ALTER TABLE classics DROP pages;fetch
刪除表設計
DROP TABLE classics;server
添加新列
ALTER TABLE classics ADD pages SMALLINT UNSIGNED
添加索引
ALTER TABLE classics ADD INDEX(author(20));
ALTER TABLE classics ADD INDEX(title(20));
ALTER TABLE classics ADD INDEX(category(4));
ALTER TABLE classics ADD INDEX(year);
另外一種添加索引的方法
CREATE INDEX author ON classics (author(20));
建立主鍵
ALTER TABLE classics ADD isbn CHAR(13) PRIMARY KEY;
或者:
ALTER TABLE classics ADD isbn CHAR(13);
...
ALTER TABLE classics ADD PRIMARY KEY(isbn)
建立全文索引: 容許超快速檢索文本中的全部列.
在每一個數據字符串中存儲做爲專用索引的單詞, 以實現用"天然語言"進行檢索.
注意:
ALTER TABLE classics ADD FULLTEXT(author, title)
使用FULLTEXT索引: MATCH ... AGAINST.
MATCH...AGAINST
容許在一個查詢中輸入多個單詞, 並對fulltext列中的全部單詞進行覈對. fulltext索引不區分大小寫, 因此查詢中所使用的大小寫沒有區別
SELECT author,title FROM classics WHERE MATCH(author, title) AGAINST('and') 返回空集. 由於and是一個無用詞, 會被忽略. 無論這些列中存儲了什麼
SELECT author,title FROM classics WHERE MATCH(author, title) AGAINST('old shop')
布爾模式
MATCH...AGAINST...IN BOOLEAN MODE
改變了標準fulltext查詢的做用, 使其能夠搜索任意組合的搜索詞, 而不要求全部的搜索詞都在文本中. 一列中只有惟一一個詞的話, 檢索會返回該詞所在的行
布爾模式還能夠在檢索詞前用+或-來表示是否必須包含或排除.
數據庫查詢
SELECT * FROM classics
SELECT author, title FROM classics
SELECT COUNT(*) FROM classics 獲取表的行數
SELECT DISTINCT author FROM classics 清除包含相同數據的多重輸入
DELETE
DELETE FROM classics WHERE title='Little Dorrit';
WHERE
=
like %匹配任意字符
LIMIT
限定選擇在一次查詢中返回的行數, 以及從表中的什麼位置開始返回
若是傳遞一個參數, 則通知mysql從結果的頭部開始, 並返回參數指定的行數
若是傳的是兩個參數, 那麼第一個參數表示從開始顯示點算起的偏移量, 第二個參數表示返回的數量.
偏移量從0開始, 而返回的行數從1開始
SELECT author,title FROM classics LIMIT 1,3 從第二行開始返回三行
SELECT author,title FROM classics LIMIT 3 返回表的前3行
UPDATE....SET
更新字段內容
ORDER BY
經過一個或多個列按升序(ASC, 默認)或降序(DESC)形式將返回的結果進行排序
SELECT author, title, year FROM classics ORDER BY author ASC, year DESC
GROUP BY
組織查詢返回的結果
SELECT category, COUNT(author) FROM classics GROUP BY category;
兩個錶鏈接成一個單一的\SELECT
SELECT name, author, titile from customers, classics WHERE customers.isbn=classics.isbn
NATURAL JOIN(天然鏈接)
SELECT name, author, title FROM customers NATURAL JOIN classics
JOIN...ON
指定一個列將兩個錶鏈接在一塊兒
SELECT name, author, title FROM customers JOIN classics ON customers.isbn=classics.isbn;
AS建立別名:
在表名後面加AS和別名
SELECT name, author, title FROM customers AS cust, classics, AS class WHERE cust.isbn=class.isbn;
使用邏輯運算符
AND OR NOT
第一範式: 處理多列間的重複數據(或冗餘)
第二範式: 處理多行間的冗餘
第三範式: 數據不直接依賴於主鍵, 但根據相關性, 也要將依賴於表中其餘值的數據移到其餘單獨的表中
使用begin或start transaction語句開始
commit命令把全部的更改提交到數據庫. 在收到commit命令以前,數據庫認爲所作的任何更改都是暫時的. 這個功能提供了撤銷事務的機會, 不發送commit而是發出rollback命令即可撤銷
使用rollback命令, 能夠告訴mysql取消一個事務開始以來作過的全部查詢, 並結束該事務.
explain 可獲得任何查詢快照, 來肯定是否能以更好或更有效的方式發出查詢.
EXPLAIN SELECT * FROM accounts WHERE number='123454';
備份前要關閉數據庫或鎖定: LOCK TABLES database.tablename READ;(運行中的mysql仍然可讀,但不能寫入)
mysqldump -u username -ppassword database> database.sql
mysqldump -u username -ppassword database tablename > tablename.sql 只備份一張表
mysqldump -u username -ppassword --all-databases > all_databases.sql 一次性備份全部的mysql數據庫
從備份文件中恢復數據庫
mysql -u username -ppassword < all_databases.sql
恢復單個數據庫:
mysql -u username -ppassword -D database < database.sql
將一張表恢復到一個數據庫中
mysql -u username -ppassword -D database < tablename.sql
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
選擇數據庫:
mysql_select_db($db_database)
建立並執行命令:
$query = "SELECT * FROM classics";
$result = mysql_query($query);
獲取結果:
$rows = mysql_num_rows($result); //查詢到的行數
for ($j=0; $j<$rows; ++$j){
echo mysql_result($result, $j, 'author');
}
更快的方法: mysql_fetch_row
獲取一行數據:
for(.....){
$row = mysql_fetch_row($result);
echo $row[0];
}
關閉鏈接:
mysql_close($db_server);