熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

MySQL 5權威指南:創建數據表

2013-11-23 21:07:01  來源: MySQL 

    ——此文章摘自《MySQL 權威指南(第版)》定價元 特價元 購買>>

    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命令創建出了一個新的數據表這數據表有idchoice和ts 個數據列如果把一些數據(網上問卷調查結果)填入這個數據表這個數據表的內容就將顯示為如下所示的樣子
   

    這些數據的含義是第一個回答問卷問題的人選擇的程序設計語言是PHP第二個人選擇的是VB第三個人選擇的又是PHP接下來的幾個人分別選擇了PerlOtherPerl和C那個名為id的數據列包含著一個遞增的標識編號這使每行數據(它們被統稱為數據集)都有一個獨一無二的編號名為choice的數據列保存著人們在回答調查問卷時做出的選擇(經過了編碼)數字分別對應著CJavaPerlPHPVB等幾種程序設計語言和Other(其他名為ts的數據列記錄著人們回答調查問卷的時刻(比如說第一個回答問卷問題的人是在秒填寫好votehtml頁面的)

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

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

    這條命令將把id列的數據類型聲明為INT把choice列的數據類型聲明為TINYINT這些聲明意味著從理論上講在超出整數變量id的表示范圍之前最多可以有(即 )個人參與問卷調查(如果把id列聲明為UNSIGNED INT類型這個數字將翻一番)再看choice列它可以提供種選擇(本書將在第章對INTTINYINT以及其他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字段定義為主鍵)


From:http://tw.wingwit.com/Article/program/MySQL/201311/29614.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.