?? manual_introduction.html
字號:
<li>沒有內存漏洞。用一個商用內存漏洞監(jiān)測程序測試過(<code>purify</code>)。</li>
<li>包括<code>myisamchk</code>,一個檢查、優(yōu)化和修復數(shù)據(jù)庫表的快速實用程序,詳見<a
HREF="manual_Maintenance.html#Maintenance">13 維護 MySQL安裝</a>。 </li>
<li>全面支持ISO-8859-1 Latin1 字符集。例如,斯堪的納維亞的字符
@ringaccent{a}, @"a and @"o 在表和列名字被允許。</li>
<li>所有數(shù)據(jù)以 ISO-8859-1 Latin1 格式保存。所有正常的字符串比較是忽略大小寫的。</li>
<li>根據(jù) ISO-8859-1 Latin1 字符集進行排序(目前瑞典語的方式)。通過在源代碼中增加排序順序數(shù)組可以改變它。為了理解一個更高級的排序例子,看一看捷克語的排序代碼。<strong>MySQL</strong>支持可在編譯時指定的很多不同的字符集。</li>
<li>表和列的別名符合 SQL92 標準。</li>
<li><code>DELETE</code>、<code>INSERT</code>、<code>REPLACE</code>和<code>UPDATE </code>返回有多少行被改變(受影響)。</li>
<li>函數(shù)名不會與表或列名沖突。例如<code>ABS</code>是一個有效的列名字。對函數(shù)調用的唯一限制是函數(shù)名與隨后的<samp>“(”</samp>不能有空格。詳見<a
HREF="manual_Reference.html#Reserved_words">7.31 MySQL對保留字很挑剔嗎?</a>。 </li>
<li>所有<strong>MySQL</strong>程序可以用選項<code>--help</code>或<code>-?</code>獲得聯(lián)機幫助。</li>
<li>服務器能為客戶提供多種語言的出錯消息,詳見<a
HREF="manual_Server.html#Languages">9.1 MySQL支持哪些語言?</a>。 </li>
<li>客戶端使用TCP/IP 連接或Unix套接字(socket)或NT下的命名管道連接<strong>MySQL</strong>。</li>
<li><strong>MySQL</strong>特有的<code>SHOW</code>命令可用來檢索數(shù)據(jù)庫、表和索引的信息<code>,EXPLAIN</code>命令可用來確定優(yōu)化器如何解決一個查詢。</li>
</ul>
<p> </p>
<h2><a NAME="Stability" HREF="manual_toc.html#Stability">1.5 MySQL的穩(wěn)定性?</a></h2>
<p>本小節(jié)回答這樣的問題:“<strong>MySQL</strong>的穩(wěn)定程度?”和
“我能在本項目中依賴<strong>MySQL</strong>嗎?”。這里我們將試圖澄清一些問題并且回答似乎很多人關心的更重要的問題。本節(jié)已經與從郵件列表(它在報導錯誤是很活躍的)收集了的信息綜合在一起。</p>
<p>對TcX,<strong>MySQL</strong>在我們自1996中期開始的計劃中運行沒有發(fā)生任何問題。當<strong>MySQL</strong>被更公開地發(fā)布時,我們注意到了有一些 “未測試代碼”片斷很快地被不同于我們的查詢方式的新用戶發(fā)現(xiàn)。每個新版本比前一個都有更少的可移植性問題(盡管每個發(fā)行有許多新功能),并且我們希望有可能把下一個版本之一標記為“穩(wěn)定”的。</p>
<p>每個<strong>MySQL</strong>的發(fā)行都是可用的,并且只有當用戶使用從“灰色地帶”來的代碼時才有問題,當然,不知情的用戶不能知道灰色地帶是什么;本小節(jié)嘗試揭示我們目前已知的東西。這里的描述涉及<strong>MySQL</strong>
3. 22.x 版本。所有已知和報告的錯誤都會在最新的版本被更正,除了在錯誤小節(jié)中列出的與“設計n”有關的錯誤。詳見<a
HREF="manual_Bugs.html#Bugs">E MySQL已知的錯誤和設計缺陷</a>。</p>
<p><strong>MySQL</strong>以多層結構和不同的獨立模塊編寫,這些模塊列舉在下面以表明它們中的每一個是如何很好地被測試過:
<dl COMPACT>
<dt><strong>ISAM表處理器--穩(wěn)定</strong></dt>
<dd>它管理所有在<strong>MySQL</strong> 3.22和早期版本中的數(shù)據(jù)的存儲和檢索。在所有<strong>MySQL</strong>版本中,代碼中已經沒有一個單獨(報告的)錯誤。得到一個損壞的數(shù)據(jù)庫表的唯一已知方法是在一個更新中途殺死服務器,即使這樣也不大可能破壞任何數(shù)據(jù)而不能挽救,因為所有數(shù)據(jù)在每個查詢之間被倒入(flush)到磁盤,而且從來沒有一個有關由于<strong>MySQL</strong>中的錯誤而丟失數(shù)據(jù)的錯誤報告。</dd>
<dt><strong>MyISAM 表處理器-- Beta </strong></dt>
<dd>這是<strong> MySQL </strong>3.23的新功能,它大部分是基于ISAM表代碼但有很多新的有用的功能。</dd>
<dt><strong>語法處理器和詞法分析器 --穩(wěn)定</strong></dt>
<dd>很長時間沒有一個在這個系統(tǒng)中的錯誤報告。</dd>
<dt><strong>C 客戶代碼--穩(wěn)定</strong></dt>
<dd>沒有已知的問題。在早期的 3. 20版本中,在發(fā)送/接收緩沖器的大小上有一些限制。 3.21.x后,現(xiàn)在緩沖器的大小是動態(tài)的,可到一個24M的缺省值。</dd>
<dt><strong>標準客戶程序--穩(wěn)定</strong></dt>
<dd>這些包括<code>mysql</code>、<code>mysqladmin</code>和<code>mysqlshow</code>、<code>mysqldump</code>及<code>mysqlimport</code>。
</dd>
<dt><strong>基本結構式查詢語言--穩(wěn)定</strong></dt>
<dd>基本SQL函數(shù)系統(tǒng)、字符串類和動態(tài)內存處理,本系統(tǒng)中未見單獨報告的錯誤。</dd>
<dt><strong>查詢優(yōu)化程序--穩(wěn)定</strong></dt>
<dd> </dd>
<dt><strong>范圍優(yōu)化程序-- Gamma </strong></dt>
<dd> </dd>
<dt><strong>Join優(yōu)化器--穩(wěn)定</strong></dt>
<dd> </dd>
<dt><strong>鎖定-- Gamma </strong></dt>
<dd>這是非常依賴于系統(tǒng)的,在某些系統(tǒng)上,用標準操作系統(tǒng)鎖定(<code>fcntl()</code>)有很大問題,在這些情況下,你應該用選項<code>--skip-locking</code>運行<strong>MySQL</strong>守護程序。當使用NFS掛載的文件系統(tǒng),已知在一些 Linux 系統(tǒng)上和SunOS上出現(xiàn)問題。</dd>
<dt><strong>Linux 線程-- Gamma </strong></dt>
<dd>唯一發(fā)現(xiàn)的問題式<code>fcntl()</code>調用,它通過使用<code>mysqld</code>的<code>--skip-locking</code>選項解決。一些人已經報告了0.5版中的鎖定問題。</dd>
<dt><strong>Solaris 2.5 + pthreads --穩(wěn)定</strong></dt>
<dd>我們在我們的開發(fā)工作中使用。</dd>
<dt><strong>MIT-pthreads (其他系統(tǒng))-- Gamma </strong></dt>
<dd>自從 3.20.15版以來,沒有報告的錯誤,而且從3.20.16開始沒有已知的錯誤。在一些系統(tǒng)上,在一些操作是相當慢時(在每查詢之間有 1/20秒的睡眠 )有一個“功能失效”。當然,MIT-pthreads 可能使任何事情慢一點,但是基于索引<code>的SELECT</code>語句通常在一個時幀內完成,因此不應該有一個mutex 鎖定/線程的把戲。</dd>
<dt><strong>其他線程實現(xiàn) -- Alpha - Beta </strong></dt>
<dd>移植到其他系統(tǒng)仍然是很新的并且可能有錯誤,可能是在<strong>MySQL</strong>中,但是最通常的是線程實現(xiàn)本身。</dd>
<dt><strong><code>LOAD DATA ... </code>,<code>INSERT ... SELECT </code>--穩(wěn)定</strong></dt>
<dd>一些人已經認為他們在這里發(fā)現(xiàn)了錯誤,但是這些經常多是誤解。請在報告問題前檢查手冊!</dd>
<dt><strong><code>ALTER TABLE </code>--穩(wěn)定</strong></dt>
<dd>在 3.22.12中有小的改變。</dd>
<dt><strong>DBD --穩(wěn)定</strong></dt>
<dd>現(xiàn)在由 Jochen Wiedmann 維護了。</dd>
<dt><strong><code>mysqlaccess</code> --穩(wěn)定</strong></dt>
<dd>由 Yves Carlier 編寫并維護。</dd>
<dt><strong><code>GRANT </code>-- Gamma </strong></dt>
<dd><strong>MySQL </strong>3.22.12.做了很大改變。</dd>
<dt><strong><strong>MyODBC </strong>(使用 ODBC SDK 2.5 )-- Gamma </strong></dt>
<dd>它與一些程序似乎工作得很好。</dd>
</dl>
<p>TcX 為付費客戶提供電子郵件的支持,但是<strong>MySQL</strong>郵件列表通常提供常見問題的答案,錯誤通常馬上用一個補丁修補,對嚴重的錯誤,幾乎總是有新的版本發(fā)行。</p>
<p><a NAME="IDX7"></a></p>
<h2><a NAME="Year_2000_compliance" HREF="manual_toc.html#Year_2000_compliance">1.6 順應2000年(Year
2000 compliance)</a></h2>
<p><strong>MySQL</strong>本身己沒有2000年有問題( Y2K ):
<ul>
<li><strong>MySQL</strong>使用Unix時間函數(shù)并且在<code>2069</code>年前沒有日期問題,
所有2位年份被認為在<code>1970</code>年到<code>2069</code>年的范圍,這意味著如果在一個<code>year</code>類型的列中存儲的01,<strong>MySQL</strong>把它當作<code>2001</code>。
</li>
<li>所有<strong>MySQL</strong>日期函數(shù)存儲在一個文件<tt>'sql/time.cc'中</tt>,并且很仔細地編碼保證是2000年安全的 。</li>
<li><strong>MySQL</strong> 3.22 和以后的版本,新的<code>YEAR</code>類型的列能在一個字節(jié)中存儲0年和<code>1901年</code>到<code>2155年</code>,并用使用2或4位顯示它們。</li>
</ul>
<p>你可以用一種不是Y2K-safe的方式使用<strong> MySQL</strong>應用程序來深入該問題。例如,許多老的應用程序使用2位數(shù)字(它有二義性)而非4位數(shù)字存儲或操作年份,這個問題可能與使用諸如<code>00</code>或<code>99</code>作為“丟失的”值的提示的應用程序混淆起來。</p>
<p>很不幸,這些問題可能很難修復,因為不同的應用程序可能由不同程序員編寫,其中每一個可能使用了不同的約定和日期處理函數(shù)。</p>
<p>這里是簡單的示范,顯示<strong>MySQL</strong>在 2030 年之前沒有任何日期問題。</p>
<pre>mysql> DROP TABLE IF EXISTS y2k;
mysql> CREATE TABLE y2k (date date, date_time datetime, time_stamp timestamp);
mysql> INSERT INTO y2k VALUES ("1998-12-31","1998-12-31 23:59:59",19981231235959);
mysql> INSERT INTO y2k VALUES ("1999-01-01","1999-01-01 00:00:00",19990101000000);
mysql> INSERT INTO y2k VALUES ("1999-09-09","1999-09-09 23:59:59",19990909235959);
mysql> INSERT INTO y2k VALUES ("2000-01-01","2000-01-01 00:00:00",20000101000000);
mysql> INSERT INTO y2k VALUES ("2000-02-28","2000-02-28 00:00:00",20000228000000);
mysql> INSERT INTO y2k VALUES ("2000-02-29","2000-02-29 00:00:00",20000229000000);
mysql> INSERT INTO y2k VALUES ("2000-03-01","2000-03-01 00:00:00",20000301000000);
mysql> INSERT INTO y2k VALUES ("2000-12-31","2000-12-31 23:59:59",20001231235959);
mysql> INSERT INTO y2k VALUES ("2001-01-01","2001-01-01 00:00:00",20010101000000);
mysql> INSERT INTO y2k VALUES ("2004-12-31","2004-12-31 23:59:59",20041231235959);
mysql> INSERT INTO y2k VALUES ("2005-01-01","2005-01-01 00:00:00",20050101000000);
mysql> INSERT INTO y2k VALUES ("2030-01-01","2030-01-01 00:00:00",20300101000000);
mysql> INSERT INTO y2k VALUES ("2050-01-01","2050-01-01 00:00:00",20500101000000);
mysql> SELECT * FROM y2k;
+------------+---------------------+----------------+
| date | date_time | time_stamp |
+------------+---------------------+----------------+
| 1998-12-31 | 1998-12-31 23:59:59 | 19981231235959 |
| 1999-01-01 | 1999-01-01 00:00:00 | 19990101000000 |
| 1999-09-09 | 1999-09-09 23:59:59 | 19990909235959 |
| 2000-01-01 | 2000-01-01 00:00:00 | 20000101000000 |
| 2000-02-28 | 2000-02-28 00:00:00 | 20000228000000 |
| 2000-02-29 | 2000-02-29 00:00:00 | 20000229000000 |
| 2000-03-01 | 2000-03-01 00:00:00 | 20000301000000 |
| 2000-12-31 | 2000-12-31 23:59:59 | 20001231235959 |
| 2001-01-01 | 2001-01-01 00:00:00 | 20010101000000 |
| 2004-12-31 | 2004-12-31 23:59:59 | 20041231235959 |
| 2005-01-01 | 2005-01-01 00:00:00 | 20050101000000 |
| 2030-01-01 | 2030-01-01 00:00:00 | 20300101000000 |
| 2050-01-01 | 2050-01-01 00:00:00 | 00000000000000 |
+------------+---------------------+----------------+
13 rows in set (0.00 sec)
</pre>
<p>這表示<code>DATE</code>和<code>DATETIME</code>類型將不會有未來日期的任何問題(它們處理日期到 9999 )。</p>
<p><code>TIMESTAMP</code>類型被用來存儲當前時間,有一個僅<code>2030-01-01</code>的上限。<code>TIMESTAMP</code>在32位的機器上(有符號值)有一個從<code>1970</code>到<code>2030</code>的范圍,在64位機器上它處理時間可達<code>2106</code>(無符號值)。</p>
<p>盡管<strong>MySQL</strong>是順應Y2K的,但提供無二義性的輸入是你的責任。對于<strong>MySQL</strong>處理二義性日期的輸入(包含2位數(shù)字年份)的規(guī)則,詳見<a
HREF="manual_Reference.html#Y2K_issues">7.3.6.1 Y2K 問題和日期類型</a>。</p>
<a NAME="General-SQL" HREF="manual_toc.html#General-SQL">
<h2>1.7 SQL一般信息和教程</a></h2>
<p>在<strong>MySQL</strong>郵件列表上,這本書被多人推薦:</p>
<pre>Judith S. Bowman, Sandra L. Emerson and Marcy Darnovsky
The Practical SQL Handbook: Using Structured Query Language
Second Edition
Addison-Wesley
ISBN 0-201-62623-3
http://www.awl.com</pre>
<p>這本書也接受了 MySQL 用戶的一些建議:</p>
<pre>Martin Gruber
Understanding SQL
ISBN 0-89588-644-8
Publisher Sybex 510 523 8233
Alameda, CA USA
</pre>
<p>一本SQL語言教程可在 http://www.geocities.com/SiliconValley/Vista/2207/sql1.html 找到。</p>
<p>SQL in 21 Tagen (用德語寫的網(wǎng)上書籍) http://www.mut.de/leseecke/buecher/sql/inhalt.htm 。</p>
<a NAME="Useful_Links" HREF="manual_toc.html#Useful_Links">
<h2>1.8 有用的MySQL相關鏈接</a> </h2>
<h3>1.8.1 教程</h3>
<ul>
<li><a href="http://www.devshed.com/resource/advanced/mysql/index.html">A beginner's tutoral
of how to start using <strong> MySQL </strong></a></li>
<li><a href="http://www.analysisandsolutions.com/code/mybasic.htm">http://www.analysisandsolutions.com/code/mybasic.htm
</a>新手如何在一臺Windows 機器上安裝和設置<strong>MySQL</strong>。</li>
<li><a href="http://www.devshed.com/Server_Side/MySQL/default.htm">很多<strong>MySQL</strong>教程</a></li>
<li><a href="http://www.linuxplanet.com/linuxplanet/tutorials/1046/1/default.htm">建立一個基于 MySQL的網(wǎng)站</a></li>
<li><a href="http://www.hotwired.com/webmonkey/backend/tutorials/tutorial1.html"><strong>MySQL</strong>- perl 教程</a></li>
<li><a href="http://www.hotwired.com/webmonkey/databases/tutorials/tutorial4.html">PHP/MySQL 教程</a></li>
</ul>
<h3>1.8.2 Perl相關鏈接</h3>
<ul>
<li><a href="http://haven.e-cactus.com/dbi_mysql">MySQL 的Perl DBI FAQ </a></li>
</ul>
<h3>1.8.3 MySQL 討論論壇</h3>
<ul>
<li><a href="http://webdev.weberdev.com/default.htm">使用<strong>MySQL</strong>實例
(check Top 20)</a></li>
</ul>
<h3>1.8.4 支持 MySQL 的商業(yè)應用</h3>
<ul>
<li><a href="http://www.supportwizard.com/default.htm">SupportWizard; Interactive helpdesk
on the web (This product includes a licensed copy of MySQL)</a></li>
<li><a href="http://www.rightnowtech.com/default.htm">Right Now Web; Web automation for
customer service</a></li>
<li><a href="http://www.icaap.org/Bazaar/default.htm">Bazaar; Interactive Discussion Forums
with web interface</a></li>
<li><a href="http://www.phonesweep.com/default.htm">PhoneSweepT </a>
是世界的第一個商業(yè)電話掃描儀.近年來的很多侵入不是通過因特網(wǎng),而是通過非法的撥號調制解調器. PhoneSweep 讓你通過循環(huán)地將電話發(fā)到你的公司控制的每個號碼上來發(fā)現(xiàn)這些調制解調器, PhoneSweep有一個內置的專家系統(tǒng),能識別出超過 250 種不同類型的遙遠存取程序,包括Carbon
CopyT 、pcANYWHERET 和 Windows NT RAS .所有信息保存在SQL數(shù)據(jù)庫,最后產生一份詳細易懂的報告,說明你公司內那個撥號調制解調器的那項服務被刺探。</li>
</ul>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -