1. 程式人生 > 其它 >【資料分析師_02_SQL+MySQL】007_MySQL的建表_01理論部分

【資料分析師_02_SQL+MySQL】007_MySQL的建表_01理論部分

技術標籤:資料分析師資料分析mysql

MySQL的建表_01

概念:

  • MySQL是“廠區”
  • DB庫是“廠房”
  • Table庫是“樓層”
    在這裡插入圖片描述
    利用CREATE TABLE建立表,必須給出下列資訊:
  • 新表的名字
  • 表列的名字和定義,用逗號分隔

輸入程式碼:

CREATE TABLE customers
(
	cust_id			int			NOT NULL AUTO_INCREMENT ,
	cust_name		char(50)	NOT NULL ,
	cust_address	char(50)	NULL ,
	cust_city		char(50)	NULL ,
	cust_state		char(5)		NULL ,
	cust_zip		char(50)	NULL ,
	cust_country	char(50)	NULL ,
	cust_contact	char(50)	NULL ,
	cust_email		char(255)	NULL ,
	PRIMARY KEY (cust_id)
)	ENGINE = InnoDB ;
  • 以上程式碼和EXCEL中的格式類似,包括:欄位名 / 欄位型別或長度 / 是否為空是否自動填充
  • 還包括:主鍵是哪個欄位、

1 PRIMARY KEY主鍵的設定

  • 主鍵值必須唯一
  • PRIMARY KEY (cust_id)為本表Table的 “主鍵” 即本表以哪一個欄位來進行索引
  • 表中的每個行必須具有唯一的主鍵值。
  • 如果主鍵使用單個列,則它的值必須唯一。
  • 如果使用多個列,則這些列的組合值必須唯一
  1. PRIMARY KEY (cust_id)是用單個列作為主鍵
  2. PRIMARY KEY (cust_id ,cust_name)則是用兩個列作為主鍵

2 AUTO_INCREMENT自動編號

  • customers表中的顧客由列cust_id
    唯一標識,每個顧客有一個唯一編號。
  • 使用的最簡單的編號是:下一個編號 = 上一個編號 + 1
  • AUTO_INCREMENT的作用是在MySQL每增加一行時,即每次執行一個INSERT操作時,讓MySQL自動對該列增量
  • (話外:這是一個 “計數器” ,也就是Counter,它記錄了表單裡最大的 id 編號,這樣就不用每次增加時都去查一遍表單裡最大的 id 了。)

3 DEFAULT預設值

  • 一般在需要填充一個值,但是沒有內容可以錄入時使用。
  • 如果在插入行時沒有給出值,MySQL允許指定此時使用的預設值。
  • 預設值用CREATE TABLE語句的列定義中的DEFAULT關鍵字指定。
  • DEFAULT的值可以預先設定好。

4 儲存引擎

儲存引擎解決的問題:以什麼檔案格式儲存在電腦硬碟上。
與其他DBMS一樣,MySQL有一個具體管理和處理資料的內部引擎。在使用CREATE TABLE語句時,該引擎具體建立表,而在你使用SELECT語句或進行其他資料庫處理時,該引擎在內部處理你的請求。多數時候,此引擎都隱藏在DBMS內,不需要過多關注它。

以下是幾個需要知道的引擎:

  • InnoDB是一個可靠的事務處理引擎,不支援全文字搜尋。(其有一個TRANS模組,可以讓諸如 花錢/拿錢 的動作同步進行,而不會同一時間只執行一個。商業用途廣泛
  • MEMORY在功能等同於MyISAM,但由於資料儲存在記憶體中,速度很快(特別適合於臨時表,正常情況下用不到)。
  • MyISAM是一個效能極高的引擎,它支援全文字搜尋但不支援事務處理

5 ALTER TABLE插入資料

為更新表定義,可使用ALTER TABLE語句。但是,理想狀態下,當表中儲存資料以後,該表就不應該再被更新。在表的設計過程中需要花費大量時間來考慮,以便後期不對該表進行大的改動

為了使用ALTER TABLE更改表結構,必須給出下面的資訊:

  • ALTER TABLE之後給出要更改的表名(該表必須存在,否則將出錯)。
  • 所做更改的列表。

(注意:建議在一個很大的表中插入資料時,新建一張表進行操作,否則電腦在舊錶格中插入新內容時卡死會丟失資料!)

6 複雜表的更改

一般需要手動刪除過程,它涉及以下步驟

  1. 用新的列布局建立一個新表(新建一個空表)
  2. 使用INSERT SELECT語句從舊錶複製資料到新表。如果有必要,可使用轉換函式和計算欄位(舊錶內容複製黏貼到空表中)
  3. 檢驗包含所需資料的新表(檢查)
  4. 重新命名舊錶(舊錶備份)
  5. 用舊錶原來的名字重新命名新表(新表改名)