軟件測試開發技術MySQL 5權威指南:創建數據表

發表于:2009-09-15來源:作者:點擊數: 標簽:軟件測試mySQLMySQLMysqlmysql
軟件測試 開發 技術 MySQL 5權威指南:創建數據表 軟件測試方法 關鍵字: 數據庫 test_vote數據庫創建好了,但它現在還不能保存任何信息。信息需要用數據表來保存。如果想在test_vote數據庫里創建一個新的數據表,還需要再執行一條CREATE TABLE命令。 在執行

軟件測試開發技術MySQL 5權威指南:創建數據表   軟件測試方法

關鍵字:數據庫  test_vote數據庫創建好了,但它現在還不能保存任何信息。信息需要用數據表來保存。如果想在test_vote數據庫里創建一個新的數據表,還需要再執行一條CREATE TABLE命令。

    在執行CREATE TABLE命令的時候,必須告訴它想讓它在哪個數據庫里創建新的數據表,這項工作要用USE命令來完成。USE命令的用途是為后續命令指定一個默認數據庫,讓它們知道應該對哪個數據庫進行處理或操作。(要知道,除了剛剛創建的test_vote數據庫,MySQL服務器很可能還管理著許多其他的數據庫。)
   

    從未接觸過數據庫系統的讀者可能會對CREATE TABLE命令感到有些陌生。別管它,先把上面給出的黑體字命令輸入進去。(可以用回車鍵來斷開那些命令行,在最后一行用分號結束整個命令。分號的作用是告訴mysql程序“整個命令已輸入完畢”。)

    如果在輸入命令的時候打錯了字,MySQL會立刻發現它并用一條出錯消息通知用戶。如果真的遇到這種情況,將需要重新輸入整個命令。使用上、下箭頭鍵可以迅速到達出錯位置去做出修改。

    如果打錯了字但MySQL還是接受了輸入的CREATE TABLE命令(出現這種情況的原因是,雖然打錯了字或者說犯了一個語義錯誤,但它在語法上仍是正確的),使用DROP TABLE votelanguage命令刪除定義有誤的數據表,然后重新輸入正確的CREATE TABLE命令。

    用CREATE TABLE命令來創建votelanguage數據表只是辦法之一,完全可以使用其他的數據庫管理工具,如MySQL Administrator或phpMyAdmin,來完成這項工作。當然,那么做的先決條件是已經把那些工具安裝在了計算機里,并且知道它們的使用方法。mysql程序的易用性比較差是人所共知的事實,但它的好處是可以把曾經執行過的步驟詳細地記錄下來,讓用戶有機會改正錯誤。

    現在來解釋一下實際發生了哪些事情。剛才輸入和執行的CREATE TABLE命令創建出了一個新的數據表,這數據表有id、choice和ts 3個數據列。如果把一些數據(網上問卷調查結果)填入這個數據表,這個數據表的內容就將顯示為如下所示的樣子:
   

    這些數據的含義是:第一個回答問卷問題的人選擇的程序設計語言是PHP,第二個人選擇的是VB,第三個人選擇的又是PHP。接下來的幾個人分別選擇了Perl、Other、Perl和C。那個名為id的數據列包含著一個遞增的標識編號,這使每行數據(它們被統稱為“數據集”)都有一個獨一無二的編號。名為choice的數據列保存著人們在回答調查問卷時做出的選擇(經過了編碼),數字1-6分別對應著C、Java、Perl、PHP、VB等幾種程序設計語言和Other(“其他”)。名為ts的數據列記錄著人們回答調查問卷的時刻(比如說,第一個回答問卷問題的人是在2005年1月14日15點46分18秒填寫好vote.html頁面的)。

    注解   與其他專業領域一樣,數據庫領域也有自己的術語。比如說,數據庫專業人員會把上面數據表里的每一行稱為一條數據記錄(data record),把它的每一列(例如id和choice列)稱為一個字段(field)。

    如果只是為了生成一個由id和choice兩個數據列構成的數據表,下面這條命令就已經足夠了:
   

    這條命令將把id列的數據類型聲明為INT,把choice列的數據類型聲明為TINYINT。這些聲明意味著,從理論上講,在超出整數變量id的表示范圍之前,最多可以有231(即2 147 483 648)個人參與問卷調查(如果把id列聲明為UNSIGNED INT類型,這個數字將翻一番)。再看choice列,它可以提供216種選擇。(本書將在第8章對INT、TINYINT以及其他MySQL數據類型進行討論。)

    看到這兒,或許會有一些讀者對本章的內容安排提出質疑:既然有這么簡單的辦法可以得到同樣的結果,為什么不先介紹它而是讓大家使用那么復雜的CREATE TABLE命令呢?是這樣的,這種復雜與簡單之間的區別正是好的和壞的數據庫設計方案之間的區別。

    在前一個CREATE TABLE命令里,為id數據列定義了AUTO_INCREMENT屬性。這么做的效果是MySQL會在每一條新記錄里自動插入一個正確的id值。這樣一來,在保存問卷調查結果的時候,只要處理好choice字段即可,id字段有MySQL替我們照料。這個屬性將確保數據記錄的編號是遞增的和獨一無二的,而這一點對數據表的使用和管理工作有著非常重要的意義。

    在前一個CREATE TABLE命令里,還為id和choice數據列定義了NOT NULL屬性。這個屬性的作用是確保id和choice這兩個字段的取值有實際意義。具體到這個案例,首先,空數據記錄(NULL)將不允許存入數據表;其次,choice字段沒有取值的數據記錄也不允許存入數據表(id字段由MySQL負責處理,它肯定會有取值)??傊?,這個屬性可以防止非法或無效的數據記錄被存入數據表。(讀者不妨試試看能不能讓MySQL接受一個非法的數據記錄,它肯定會拒絕接受并顯示一條出錯信息。)

    PRIMARY KEY屬性(見id數據列)的效果是讓MySQL使用id數據列來標識各條數據記錄。這其實是最先定義id數據列的原因,但因為MySQL還沒有聰明到可以猜出人類思想的地步,所以還需要通過PRIMARY KEY屬性把我們想讓它做的事情精確無誤地告訴它。(從現在起,將在討論這個案例的時候把id字段改稱為主鍵(primary key)。)一個數據表是否有主鍵對MySQL訪問這個數據表里的數據記錄的速度有著決定性的影響,對那些相互關聯的數據表來說就更是如此。作為一個原則,應該為自己的每一個數據表定義一個唯一的主鍵(在這樣做的時候,要盡可能地把含有AUTO_INCREMENT屬性的INT字段定義為主鍵)。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97