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

MySQL中文參考手冊-- 創造並使用一個數據庫

2013-11-23 21:03:46  來源: MySQL 

  既然你知道怎樣輸入命令現在是存取一個數據庫的時候了
  
  假定在你的家(你的動物園)中有很多寵物並且你想追蹤關於他們各種各樣類型的信息你可以通過創建表來保存你的數據並根據所需要的信息裝載他們做到然後你可以通過從表中檢索數據來回答關於你的動物不同種類的問題本節顯示如何做到所有這些事情
  
  怎樣創建一個數據庫
  怎樣創建一個數據庫表
  怎樣裝載數據到數據庫表
  怎樣以各種方法從表中檢索數據
  怎樣使用多個表
  動物園數據庫將會是簡單的(故意的)但是不難把它想象成可能用到相似類型數據庫的真實世界情況例如這樣的一個數據庫能被一個農夫用來追蹤家畜或由一個獸醫追蹤病畜記錄
  
  使用SHOW語句找出在服務器上當前存在什麼數據庫
  
  mysql> SHOW DATABASES;
  ++
  | Database |
  ++
  | mysql  |
  | test   |
  | tmp   |
  ++
  
  數據庫列表可能在你的機器上是不同的但是mysql和test數據庫很可能的在其間mysql是必需的因為它描述用戶存取權限test數據庫經常作為一個工作區提供給用戶試試身手
  
  如果test數據庫存在嘗試存取它
  
  mysql> USE test
  Database changed
  
  注意USE類似QUIT不需要一個分號(如果你喜歡你可以用一個分號終止這樣的語句這無礙)USE語句在使用上也有另外一個特殊的地方它必須在一個單行上給出
  
  你可列在後面的例子中使用test數據庫(如果你能訪問它)但是你在該數據庫創建的任何東西可以被與訪問它的其他人刪除為了這個原因你可能應該詢問你的MySQL管理員許可你自己使用的一個數據庫假定你想要調用你的menagerie管理員需要執行一個這樣的命令
  
  mysql> GRANT ALL ON menagerie* TO your_mysql_name;
  
  這裡your_mysql_name是分配給你的MySQL用戶名
  
   創建並選用一個數據庫
  如果在設置你的權限時管理員為你創建了數據庫你可以開始使用它否則你需要自己創建它
  
  mysql> CREATE DATABASE menagerie;
  
  在Unix下數據庫名字是區分大小寫的(不像SQL關鍵詞)因此你必須總是以menagerie引用你的數據庫不是MenagerieMENAGERIE或一些其他變種對表名也是這樣的(在Windows下該限制不適用盡管你必須在一個給定的查詢中使用同樣的大小寫來引用數據庫和表
  
  創建了一個數據庫並不選定以使用它你必須明確地做這件事為了使menagerie稱為當前的數據庫使用這個命令
  
  mysql> USE menagerie
  Database changed
  
  你的數據庫只需要創建一次但是你必須在每次啟動一個mysql會話時為使用而選擇它你可以由發出上面一個USE語句做到另外當你調用時mysql你可在命令行上選擇數據庫就在你可能需要提供的任何連接參數之後指定其名字例如
  
  shell> mysql h host u user p menagerie
  Enter password: ********
  
  注意menagerie不是你在剛才所示命令的口令如果你想要在命令行上在p選項後提供你的口令你必須做到沒有多余的空格(例如pmypassword不是p mypassword)然而不建議把你的口令放在命令行上因為這樣做把它暴露出來能被在你的機器上登錄的其他用戶窺探到
  
   創建一個數據庫表
  創建數據庫是容易的部分但是在這時它是空的正如SHOW TABLES將告訴你
  
  mysql> SHOW TABLES;
  Empty set ( sec)
  
  較難的部分是決定你的數據庫結構應該是什麼你將需要什麼數據庫表和在他們中有什麼樣的列
  
  你將需要一個包含你每個寵物的記錄的表它可稱為pet表並且它應該包含最少每個動物的名字因為名字本身不是很有趣表應該包含另外的信息例如如果在你豢養寵物的家庭有超過一個人你可能想要列出每個動物的主人你可能也想要記錄例如種類和性別的一些基本的描述信息
  
  年齡呢?那可能有趣但是在一個數據庫中存儲不是一件好事情年齡隨著時間流逝而變化這意味著你將要不斷地更新你的記錄相反 存儲一個固定值例如生日比較好那麼無論何時你需要年齡你可以以當前日期和出生日期之間的差別來計算它MySQL為日期運算提供了函數因此這並不困難存儲出生日期而非年齡也有其他優點
  
  你可以將數據庫用於這樣的任務例如生成即將到來的寵物生日的提示(如果你認為這類查詢是點蠢注意這與在一個商務數據庫來標示你不久要給它發出生日祝賀的客戶的環境中是同一個問題因為計算機幫助私人聯絡
  你可以相對於日期而不止是當前日期來計算年齡例如如果你在數據庫存儲死亡日期你能容易計算一只寵物是何時多大死的
  你可能想到pet表中其他有用的其他類型信息但是到目前為止這些現在是足夠了名字主人種類性別出生和死亡日期
  
  使用一個CREATE TABLE語句指定你的數據庫表的布局
  
  mysql> CREATE TABLE pet (name VARCHAR() owner VARCHAR()
    > species VARCHAR() sex CHAR() birth DATE death DATE);
  
  VARCHAR對nameowner和species列是個好的選擇因為列值將會是變長的這些列的長度都不必是相同的而且不必是你可以挑選從的任何長度無論哪個對你來說好象最合理(如果你做了較差的選擇以後會變得你需要一個更長的字段MySQL提供一個ALTER TABLE語句
  
  動物性表可以用許多方法表示例如mf或也許malefemale使用單個字符mf是最簡單的
  
  為birth和death列使用DATE數據類型是相當明顯的選擇
  
  既然你創建了一個表SHOW TABLES應該產生一些輸出
  
  mysql> SHOW TABLES;
  ++
  | Tables in menagerie |
  ++
  | pet         |
  ++
  
  為了驗證你的表是按你期望的方式被創建使用一個DESCRIBE語句
  
  mysql> DESCRIBE pet;
  +++++++
  | Field  | Type    | Null | Key | Default | Extra |
  +++++++
  | name  | varchar() | YES |   | NULL  |    |
  | owner  | varchar() | YES |   | NULL  |    |
  | species | varchar() | YES |   | NULL  |    |
  | sex   | char()   | YES |   | NULL  |    |
  | birth  | date    | YES |   | NULL  |    |
  | death  | date    | YES |   | NULL  |    |
  +++++++
  
  你能隨時DESCRIBE例如如果你忘記在你表中的列的名字或他們是什麼類型
  
   將數據裝入一個數據庫表
  在你創建表後你需要充實它LOAD DATA和INSERT語句用於此
  
  假定你的寵物紀錄描述如下(觀察到MySQL期望日期時以YYYYMMDD格式這可能與你習慣的不同
  
  name owner species sex birth death 
  Fluffy Harold cat f   
  Claws Gwen cat m   
  Buffy Harold dog f   
  Fang Benny dog m   
  Bowser Diane dog m   
  Chirpy Gwen bird f   
  Whistler Gwen bird     
  Slim Benny snake m   
  
  因為你是從一張空表開始的充實它的一個容易方法是創建包含為你的動物各一行一個文本文件然後用一個單個語句裝載文件的內容到表中
  
  你可以創建一個文本文件pettxt每行包含一個記錄用定位符(tab)把值分開並且以在CREATE TABLE語句中列出的列次序給出對於丟失的值(例如未知的性別或仍然活著的動物的死亡日期)你可以使用NULL值為了在你的文本文件表示這些使用\N例如對Whistler鳥的記錄看起來像這樣的(這裡在值之間的空白是一個單個的定位字符)
  
  Whistler Gwen bird \N  \N 
  
  為了裝載文本文件pettxt到pet表中使用這個命令
  
  mysql> LOAD DATA LOCAL INFILE pettxt INTO TABLE pet;
  
  如果你願意你能明確地在LOAD DATA語句中指出列值的分隔符和行尾標記但是缺省是定位符和換行符這些對爭取讀入文件pettxt的語句是足夠的
  
  當你想要一次增加一個新記錄時INSERT語句是有用的在它最簡單的形式你為每一列提供值以列在CREATE TABLE語句被列出的順序假定Diane把一只新倉鼠命名為Puffball你可以使用一個這樣INSERT語句增加一條新記錄
  
  mysql> INSERT INTO pet
    > VALUES (PuffballDianehamsterfNULL);
  
  注意這裡字符串和日期值被指定為引號擴起來的字符串另外用INSERT你能直接插入NULL代表不存在的值你不能使用\N就像你用LOAD DATA做
From:http://tw.wingwit.com/Article/program/MySQL/201311/29518.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.