數據庫基礎
數據庫
定義:數據庫(database) 保存有組織的數據的容器(通常是一個文件或一組文件)
注釋:人們通常用“數據庫”來代表他們使用的數據庫軟件(這是錯誤的),正確描述為 [數據庫管理系統](DBMS)。數據庫是通過DBMS創建和操作的容器。
表
定義:表(table)某種特定類型數據的結構化清單
表名:每個數據庫中表名唯一,表名的唯一性取決于多個因素。如數據庫和表名等的結合。不同的數據庫中卻可以使用相同的表名
特性:不同表的特性,定義了數據在表中如何存儲,例如:存在怎樣的數據,數據如何分解,各部分信息如何命名等等。描述表的這組信息就是所謂的模式,模式可以用來描述數據庫中特定的表以及整個數據庫(和其中表的關系)
模式
定義:關于數據庫和表的布局及特性的信息
列
定義:列(column)表中的一個字段。所有表都是由一個或者多個列組成
注釋:分解數據:正確地將數據分解為多個列極為重要。例如,城市、州、郵政編碼應該總是獨立的列。通過把它分解開,才有可能利用特定的列對數據進行排序和過濾(如,找出特定州或特定城市的所有顧客)。如果城市和州組合在一個列中,則按州進行排序或過濾會很困難。
數據類型(datatype)
定義:所容許的數據類型。每個表列都有相應的數據類型,它限制(或容許)該列中存儲的數據。
數據類型限制可存儲在列中數據種類(例如:防止在數值字段存儲錄入字符值)。數據類型還幫助正確地排序數據,并在優化磁盤使用方面起重要的作用。
行(row)表中的一個記錄。
定義:表中的數據按行存儲,所保存的每個記錄存儲在自己的行內。網格中垂直的列為表列,水平行為表行
例如:顧客表可以每行存儲一個顧客。表中的行數為記錄的總數
主鍵
定義:一列(或一組列),其值能夠唯一區分表中每個行
注釋:
- 表中每一行都應該有可以唯一標識自己的一列(或一組列)。例如 顧客表可以使用顧客編號列,訂單使用訂單ID,雇員表可以使用雇員id
- 應該總是定義主鍵 雖然并不總是都需要主鍵,但大多數數據庫設計人員都應把庫存他們創建的每個表具有一個主鍵,以便于以后的數據操縱和管理
成為主鍵的條件
- 任意兩行都不具有相同的主鍵值
- 每個行都必須具有一個主鍵值(主鍵值不允許為NULL)
- 不更新主鍵列中的值
- 不重用主鍵列的值
- 不在主鍵列中使用可以會更改的值
SQL
定義: SQL是結構化查詢語言(Structured Query Language),SQL是一種專門用來與數據庫通信的語言
SQL特點:
- SQL 不是某個特定數據庫供應商專有的語言。幾乎所有重要的DBMS都支持SQL,所以學習此語言使你幾乎能與所有數據庫打交道
- SQL簡單易學。它的語句全都是由描述性很強英語單詞組成,而且單詞數目不多
- SQL盡管看上去很簡單,但他實際是一種強有力的語言,靈活使用其語言元素,可以進行非常復雜和高級的數據庫操作