mysql資料庫模式編寫入門指南

用一個文字編輯器和這個基本的結構大綱或“模式”建立你自己的mySQL資料庫...

在開發一個軟體專案時,最重要的、基本的和內在的方面之一是一個結構合理的資料庫模式。這相當於建造一所需要確保地基適當鋪設的房子,否則建造優質房屋的機會大大減少。

Create a mySQL database schema

令人驚訝的是,這比人們想象的要容易得多,讓我們學習一下用於編寫結構良好的資料庫模式的各個方面。

建立表語法

首先,開啟您喜愛的文字編輯器。建立資料庫架構只需要一個純文字檔案。資料庫由多個表組成,每個表由列組成,CREATE TABLE語法用於建立單個表。下面是一個基本示例:

CREATE TABLE users (id INT NOT NULL,is_active TINY INT NOT NULL,full_name VAR CHAR(100) NOT NULL,email VARCHAR(100) NOT NULL);

如您所見,這將建立一個名為users的資料庫表,該表由四列組成。這應該是一個相當直截了當的SQL語句,以CREATE TABLE開頭,後跟資料庫表的名稱,然後在括號內用逗號分隔表的列。

使用正確的列型別

如上所示,表中包含的列用逗號分隔。每個列定義由三個相同的部分組成:

COL_NAME TYPE [OPTIONS]

列的名稱,後跟列型別,然後是任何可選引數。稍後我們將討論可選引數,但重點是列型別,下面列出了可用的最常用列型別:

出於所有目的,上面的列型別都是編寫構造良好的mySQL資料庫模式所需要的。

定義列選項

定義列時,還可以指定各種選項。下面是CREATE TABLE語句的另一個示例:

CREATE TABLE users (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(100) NOT NULL UNIQUE,status ENUM('active','inactive') NOT NULL DEFAULT 'active',balance DECIMAL(8,2) NOT NULL DEFAULT 0,date_of_birth DATETIME,created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP);

上面這些看起來有點嚇人,但不用擔心,很簡單。分解一下,下面是在上面的陳述中發生的事情:

  • 您應該始終在所有可能的列上使用notnull,以幫助提高表的速度和效能。這只是指定**行時列不能為空/空。
  • 始終儘量保持列大小盡可能小,因為這有助於提高速度和效能。
  • id列是一個整數,也是表的主鍵,這意味著它是唯一的,並且每次**一條記錄時都會增加一個。這通常應用於您建立的所有表,以便您可以輕鬆地引用表中的任何一行。
  • 狀態列是列舉,必須具有“active”或“inactive”值。如果未指定值,則新行將以“活動”狀態開始。
  • 對於每一新行,“餘額”列從0開始,其格式為兩個小數點。
  • “出生日期”列只是一個日期,但也允許空值,因為在建立時可能不知道出生日期。
  • 最後,created_at列是一個時間戳,預設為**行的當前時間。

上面是一個結構良好的資料庫表的示例,應該用作以後的示例。

將表與外來鍵約束連結在一起

使用關係資料庫(如mySQL)的最大優點之一是它非常支援外來鍵約束和級聯。這是指透過列將兩個錶鏈接在一起,形成父子關係,因此刪除父行時,也會自動刪除必要的子行。

舉個例子:

CREATE TABLE users (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(100) NOT NULL UNIQUE,full_name VARCHAR(100) NOT NULL,created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP) engine=InnoDB;CREATE TABLE orders (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,userid INT NOT NULL,amount DECIMAL(8,2) NOT NULL,product_name VARCHAR(200) NOT NULL,FOREIGN KEY (userid) REFERENCES users (id) ON DELETE CASCADE) engine=InnoDB;

您將注意到外來鍵子句是最後一行。這一行只是說明這個表包含子行,這些子行由userid列連結到它們的父行,父行是users表的id列。這意味著,每當從users表中刪除一行時,mySQL都會自動從orders表中刪除所有相應的行,從而確保資料庫的結構完整性。

還要注意上面語句末尾的engine=InnoDB。儘管InnoDB現在是預設的mySQL表型別,但並不總是這樣,所以為了安全起見,應該新增它,因為級聯只適用於InnoDB表。

自信地設計

現在,您可以很好地構建可靠、結構良好的mySQL資料庫模式了。利用以上知識,您現在可以編寫組織良好的模式,同時提供效能和結構完整性。

在您的模式就位後,確保您知道如何將其與這些基本的SQL命令一起使用。

  • 發表於 2021-03-26 19:24
  • 閱讀 ( 56 )
  • 分類:程式設計

你可能感興趣的文章

sql語言(sql)和mysql資料庫(mysql)的區別

關鍵區別–sql與mysql 資料庫是資料的集合。有各種型別的資料庫。關係資料庫是以表的形式儲存資料的資料庫型別。這些表是相互關聯的,因為它們使用約束。MySQL是一個關係資料庫管理系統。用於對資料庫執行操作的語言稱...

  • 發佈於 2020-10-17 12:07
  • 閲讀 ( 51 )

菲律賓比索(php)和python(python)的區別

...言。PHP程式碼可以很容易地嵌入HTML程式碼。PHP中有各種資料型別,如整數、布林值、Null、字串、陣列和物件。PHP可用於檔案操作,如開啟、關閉、讀取和寫入檔案。可以處理資料收集和傳送電子郵件的表格。PHP支援HTTP cookies。C...

  • 發佈於 2020-10-18 23:19
  • 閲讀 ( 50 )

記憶體快取(memcached)和雷迪斯(redis)的區別

主要區別——memcached與redis 關係資料庫是一種常見的資料庫型別,但不適合儲存大量資料。因此,引入了NoSQL。它代表非關係或非SQL。Memcached和Redis屬於NoSQL。Memcached和Redis的主要區別在於,Memcached是一個開源的、高效能的分散...

  • 發佈於 2020-10-19 23:25
  • 閲讀 ( 44 )

領域(realm)和sqlite公司(sqlite)的區別

...te 現代應用程式需要快速高效的效能,一個常用的輕量級資料庫管理系統就是SQLite。儘管SQLite被廣泛使用,但它也有一些侷限性。SQLite查詢可能很慢,而且可能更難管理大量資料。當資料數量增加時,程式碼遷移也變得更加困難...

  • 發佈於 2020-10-19 23:53
  • 閲讀 ( 46 )

nosql(nosql)和資料庫(mongodb)的區別

關鍵區別–nosql與mongodb 關係資料庫管理系統(RDBMS)被許多組織使用。結構化查詢語言(SQL)用於儲存、檢索和修改關係資料庫中的資料。它們在儲存大量資料方面效率不高,而且很難進行橫向擴充套件。因此,引入了NoSQL。...

  • 發佈於 2020-10-20 01:00
  • 閲讀 ( 34 )

如何用java連線mysql資料庫

Java提供JDBC(Java資料庫連線),作為JavaSDK(軟體開發工具包)的一部分。使用這個API,很容易連線到關係資料庫,並執行查詢、**、更新和刪除記錄等常見操作。 ...

  • 發佈於 2021-03-11 17:39
  • 閲讀 ( 49 )

如何在windows上安裝mysql資料庫

如果您經常編寫連線到資料庫伺服器的應用程式,那麼如果您知道如何在Windows機器上安裝MySQL資料庫以進行測試,這會有所幫助。 ...

  • 發佈於 2021-03-11 21:33
  • 閲讀 ( 51 )

使用xampp在windows上免費託管和編輯網站

... MySQL——SQL允許資料庫和網站之間的通訊,允許使用者測試和儲存電子郵件、密碼和任何其他資料輸入。我們會將此用於您的本地WordPress帳戶。 ...

  • 發佈於 2021-03-14 07:36
  • 閲讀 ( 41 )

如何為您的網站建立登入保護區

...很多方法可以對網站進行密碼保護。你可以設定一個線上資料庫並編寫你自己的登入系統程式碼,也可以使用內容管理系統,比如Wordpress。 ...

  • 發佈於 2021-03-14 14:27
  • 閲讀 ( 54 )

如何在raspberry pi上託管wordpress站點

...態或***站(即,依賴於標準、預寫頁面的網站,或者使用資料庫填充頁面的網站)。 ...

  • 發佈於 2021-03-21 11:33
  • 閲讀 ( 43 )