數據庫這個術語的用法不少,但就本書而言,數據庫是一個以某種
有組織的方式存儲的數據集合。理解數據庫的一種最簡單的辦法是將其
想象爲一個文件櫃。此文件櫃是一個存放數據的物理位置,無論數據是
什麼以及如何組織的sql
數據庫(database) 保存有組織的數據的容器(一般是一個文
件或一組文件數據庫
人們一般用數據庫這個術語來表明他們使用
的數據庫軟件。這是不正確的,它是引發混淆的根源。確切
地說,數據庫軟件應稱爲DBMS(數據庫管理系統)。數據庫
是經過DBMS建立和操縱的容器。數據庫能夠是保存在硬設備
上的文件,但也能夠不是。在很大程度上說,數據庫到底是
文件仍是別的什麼東西並不重要,由於你並不直接訪問數據
庫;你使用的是DBMS,它替你訪問數據庫佈局
表(table) 某種特定類型數據的結構化清單。學習
這裏關鍵的一點在於,存儲在表中的數據是一種類型的數據或一個
清單。決不該該將顧客的清單與訂單的清單存儲在同一個數據庫表中。這
樣作將使之後的檢索和訪問很困難。應該建立兩個表,每一個清單一個表。
數據庫中的每一個表都有一個名字,用來標識本身。此名字是惟一的,
這表示數據庫中沒有其餘表具備相同的名字優化
表名 表名的惟一性取決於多個因素,如數據庫名和表名等的
結合。這表示,雖然在相同數據庫中不能兩次使用相同的表名,
但在不一樣的數據庫中卻可使用相同的表名。編碼
模式(schema) 關於數據庫和表的佈局及特性的信息設計
是模式仍是數據庫? 有時,模式用做數據庫的同義詞。遺憾
的是,模式的含義一般在上下文中並非很清晰。本書中,模
式指的是上面給出的定義排序
列(column) 表中的一個字段。全部表都是由一個或多個列組
成的table
解列的最好辦法是將數據庫表想象爲一個網格。網格中每一列存
儲着一條特定的信息。例如,在顧客表中,一個列存儲着顧客編號,另
一個列存儲着顧客名,而地址、城市、州以及郵政編碼全都存儲在各自
的列中。程序設計
正確地將數據分解爲多個列極爲重要。例如,城市、
州、郵政編碼應該老是獨立的列。經過把它分解開,纔有可能
利用特定的列對數據進行排序和過濾(如,找出特定州或特定
城市的全部顧客)。若是城市和州組合在一個列中,則按州進
行排序或過濾會很困難
數據庫中每一個列都有相應的數據類型。數據類型定義列能夠存儲的
數據種類。例如,若是列中存儲的爲數字(或許是訂單中的物品數),則
相應的數據類型應該爲數值類型。若是列中存儲的是日期、文本、註釋、
金額等,則應該用恰當的數據類型規定出來
數據類型(datatype) 所允許的數據的類型。每一個表列都有相
應的數據類型,它限制(或允許)該列中存儲的數據。
數據類型限制可存儲在列中的數據種類(例如,防止在數值字段中
錄入字符值)。數據類型還幫助正確地排序數據,並在優化磁盤使用方面
起重要的做用。所以,在建立表時必須對數據類型給予特別的關注
表中的數據是按行存儲的,所保存的每一個記錄存儲在本身的行內。
若是將表想象爲網格,網格中垂直的列爲表列,水平行爲錶行
行(row) 表中的一個記錄
是記錄仍是行? 你可能聽到用戶在提到行(row)時稱其爲
數據庫記錄(record)。在很大程度上,這兩個術語是能夠互相
替代的,但從技術上說,行纔是正確的術語。
表中每一行都應該有能夠惟一標識本身的一列(或一組列)。一個顧
客表可使用顧客編號列,而訂單表可使用訂單ID,僱員表可使用
僱員ID或僱員社會保險號。
主鍵(primary key)一一列(或一組列),其值可以惟一區分表
中每一個行。
惟一標識表中每行的這個列(或這組列)稱爲主鍵。主鍵用來表示
一個特定的行。沒有主鍵,更新或刪除表中特定行很困難,由於沒有安
全的方法保證只涉及相關的行
應該老是定義主鍵 雖然並不老是都須要主鍵,但大多數數據
庫設計人員都應保證他們建立的每一個表具備一個主鍵,以便於
之後的數據操縱和管理。
表中的任何列均可以做爲主鍵,只要它知足如下條件:
主鍵值規則 這裏列出的規則是MySQL自己強制實施的
主鍵一般定義在表的一列上,但這並非必需的,也能夠一塊兒使用
多個列做爲主鍵。在使用多列做爲主鍵時,上述條件必須應用到構成主
鍵的全部列,全部列值的組合必須是惟一的(但單個列的值能夠不惟一)
主鍵的最好習慣 除MySQL強制實施的規則外,應該堅持的
幾個廣泛承認的最好習慣爲:
SQL(發音爲字母S-Q-L或sequel)是結構化查詢語言(Structured Query
Language)的縮寫。SQL是一種專門用來與數據庫通訊的語言。
與其餘語言(如,英語以及Java和Visual Basic這樣的程序設計語言)
不同,SQL由不多的詞構成,這是有意而爲的。設計SQL的目的是很好
地完成一項任務,即提供一種從數據庫中讀寫數據的簡單有效的方法。
SQL有以下的優勢。
DBMS專用的SQL SQL不是一種專利語言,並且存在一個標
準委員會,他們試圖定義可供全部DBMS使用的SQL語法,但
事實上任意兩個DBMS實現的SQL都不徹底相同。本書講授的
SQL是專門針對MySQL的,雖然書中所講授的多數語法也適
用於其餘DBMS,但不要認爲這些SQL語法是徹底可移植的
這一章介紹了什麼是SQL以及它爲何頗有用。由於SQL是用來與數 據庫打交道的,因此,咱們也複習了一些基本的數據庫術語