什么是資料庫
資料庫這個術語的用法很多,但就本書而言,資料庫是一個以某種
有組織的方式存盤的資料集合,理解資料庫的一種最簡單的辦法是將其
想象為一個檔案柜,此檔案柜是一個存放資料的物理位置,不管資料是
什么以及如何組織的
資料庫(database) 保存有組織的資料的容器(通常是一個文
件或一組檔案
人們通常用資料庫這個術語來代表他們使用
的資料庫軟體,這是不正確的,它是引起混淆的根源,確切
地說,資料庫軟體應稱為DBMS(資料庫管理系統),資料庫
是通過DBMS創建和操縱的容器,資料庫可以是保存在硬設備
上的檔案,但也可以不是,在很大程度上說,資料庫究竟是
檔案還是別的什么東西并不重要,因為你并不直接訪問資料
庫;你使用的是DBMS,它替你訪問資料庫
表
表(table) 某種特定型別資料的結構化清單,
這里關鍵的一點在于,存盤在表中的資料是一種型別的資料或一個
清單,決不應該將顧客的清單與訂單的清單存盤在同一個資料庫表中,這
樣做將使以后的檢索和訪問很困難,應該創建兩個表,每個清單一個表,
資料庫中的每個表都有一個名字,用來標識自己,此名字是唯一的,
這表示資料庫中沒有其他表具有相同的名字
表名 表名的唯一性取決于多個因素,如資料庫名和表名等的
結合,這表示,雖然在相同資料庫中不能兩次使用相同的表名,
但在不同的資料庫中卻可以使用相同的表名,
模式(schema) 關于資料庫和表的布局及特性的資訊
是模式還是資料庫? 有時,模式用作資料庫的同義詞,遺憾
的是,模式的含義通常在背景關系中并不是很清晰,本書中,模
式指的是上面給出的定義
列和資料型別
列(column) 表中的一個欄位,所有表都是由一個或多個列組
成的
解列的最好辦法是將資料庫表想象為一個網格,網格中每一列存
儲著一條特定的資訊,例如,在顧客表中,一個列存盤著顧客編號,另
一個列存盤著顧客名,而地址、城市、州以及郵政編碼全都存盤在各自
的列中,
正確地將資料分解為多個列極為重要,例如,城市、
州、郵政編碼應該總是獨立的列,通過把它分解開,才有可能
利用特定的列對資料進行排序和過濾(如,找出特定州或特定
城市的所有顧客),如果城市和州組合在一個列中,則按州進
行排序或過濾會很困難
資料庫中每個列都有相應的資料型別,資料型別定義列可以存盤的
資料種類,例如,如果列中存盤的為數字(或許是訂單中的物品數),則
相應的資料型別應該為數值型別,如果列中存盤的是日期、文本、注釋、
金額等,則應該用恰當的資料型別規定出來
資料型別(datatype) 所容許的資料的型別,每個表列都有相
應的資料型別,它限制(或容許)該列中存盤的資料,
資料型別限制可存盤在列中的資料種類(例如,防止在數值欄位中
錄入字符值),資料型別還幫助正確地排序資料,并在優化磁盤使用方面
起重要的作用,因此,在創建表時必須對資料型別給予特別的關注
行
表中的資料是按行存盤的,所保存的每個記錄存盤在自己的行內,
如果將表想象為網格,網格中垂直的列為表列,水平行為表行
行(row) 表中的一個記錄
是記錄還是行? 你可能聽到用戶在提到行(row)時稱其為
資料庫記錄(record),在很大程度上,這兩個術語是可以互相
替代的,但從技術上說,行才是正確的術語,
主鍵
表中每一行都應該有可以唯一標識自己的一列(或一組列),一個顧
客表可以使用顧客編號列,而訂單表可以使用訂單ID,雇員表可以使用
雇員ID或雇員社會保險號,
主鍵(primary key)一一列(或一組列),其值能夠唯一區分表
中每個行,
唯一標識表中每行的這個列(或這組列)稱為主鍵,主鍵用來表示
一個特定的行,沒有主鍵,更新或洗掉表中特定行很困難,因為沒有安
全的方法保證只涉及相關的行
應該總是定義主鍵 雖然并不總是都需要主鍵,但大多數資料
庫設計人員都應保證他們創建的每個表具有一個主鍵,以便于
以后的資料操縱和管理,
表中的任何列都可以作為主鍵,只要它滿足以下條件:
- 任意兩行都不具有相同的主鍵值;
- 每個行都必須具有一個主鍵值(主鍵列不允許NULL值)
主鍵值規則 這里列出的規則是MySQL本身強制實施的
主鍵通常定義在表的一列上,但這并不是必需的,也可以一起使用
多個列作為主鍵,在使用多列作為主鍵時,上述條件必須應用到構成主
鍵的所有列,所有列值的組合必須是唯一的(但單個列的值可以不唯一)
主鍵的最好習慣 除MySQL強制實施的規則外,應該堅持的
幾個普遍認可的最好習慣為:
- 不更新主鍵列中的值;
- 不重用主鍵列的值;
- 不在主鍵列中使用可能會更改的值,(例如,如果使用一個
名字作為主鍵以標識某個供應商,當該供應商合并和更改其
名字時,必須更改這個主鍵,)
什么是SQL
SQL(發音為字母S-Q-L或sequel)是結構化查詢語言(Structured Query
Language)的縮寫,SQL是一種專門用來與資料庫通信的語言,
與其他語言(如,英語以及Java和Visual Basic這樣的程式設計語言)
不一樣,SQL由很少的詞構成,這是有意而為的,設計SQL的目的是很好
地完成一項任務,即提供一種從資料庫中讀寫資料的簡單有效的方法,
SQL有如下的優點,
- SQL不是某個特定資料庫供應商專有的語言,幾乎所有重要的
DBMS都支持SQL,所以,學習此語言使你幾乎能與所有資料庫
打交道, - SQL簡單易學,它的陳述句全都是由描述性很強的英語單詞組成,
而且這些單詞的數目不多, - SQL盡管看上去很簡單,但它實際上是一種強有力的語言,靈活
使用其語言元素,可以進行非常復雜和高級的資料庫操作,
DBMS專用的SQL SQL不是一種專利語言,而且存在一個標
準委員會,他們試圖定義可供所有DBMS使用的SQL語法,但
事實上任意兩個DBMS實作的SQL都不完全相同,本書講授的
SQL是專門針對MySQL的,雖然書中所講授的多數語法也適
用于其他DBMS,但不要認為這些SQL語法是完全可移植的
這一章介紹了什么是SQL以及它為什么很有用,因為SQL是用來與數
據庫打交道的,所以,我們也復習了一些基本的資料庫術語
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/86035.html
標籤:MySQL
上一篇:MySQL8.0.19安裝
