最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

MySQL所支持的數(shù)據(jù)類型與表字段約束類型的學習教程

來源:懂視網(wǎng) 責編:小采 時間:2020-11-09 20:53:03
文檔

MySQL所支持的數(shù)據(jù)類型與表字段約束類型的學習教程

MySQL所支持的數(shù)據(jù)類型與表字段約束類型的學習教程:MySQL 數(shù)據(jù)(字段)類型 在創(chuàng)建表的時候,要明確定義字段對應的數(shù)據(jù)類型。MySQL 主要的數(shù)據(jù)類型分為數(shù)值類型、字符串(文本)類型、時間日期類型和其他類型幾類。 數(shù)值類型 數(shù)值類型說明: 補充說明 在 int(integer) 系列中,只能存儲整型值,且可以在后
推薦度:
導讀MySQL所支持的數(shù)據(jù)類型與表字段約束類型的學習教程:MySQL 數(shù)據(jù)(字段)類型 在創(chuàng)建表的時候,要明確定義字段對應的數(shù)據(jù)類型。MySQL 主要的數(shù)據(jù)類型分為數(shù)值類型、字符串(文本)類型、時間日期類型和其他類型幾類。 數(shù)值類型 數(shù)值類型說明: 補充說明 在 int(integer) 系列中,只能存儲整型值,且可以在后

MySQL 數(shù)據(jù)(字段)類型
在創(chuàng)建表的時候,要明確定義字段對應的數(shù)據(jù)類型。MySQL 主要的數(shù)據(jù)類型分為數(shù)值類型、字符串(文本)類型、時間日期類型和其他類型幾類。
數(shù)值類型
數(shù)值類型說明:

20151216143742150.png (653×259)

補充說明
在 int(integer) 系列中,只能存儲整型值,且可以在后面用括號指定顯示的尺寸(M),如果不指定則會默認分配。如果實際值的顯示寬度大于設定值,將會顯示實際值而不會截斷以適應顯示尺寸。如 smallint(3) 中的 3 即為顯示尺寸,即顯示三位的數(shù)值(不包括 - 號)
int 類型可以指定 UNSIGNED 屬性,即無符號(非負),所以存儲范圍有兩種
在 float、double 及 decimal 類型中,不能指定 UNSIGNED 屬性,其顯示尺寸包含了小數(shù)點精度(D),即 float(3,1) 保存范圍為 -99.9 至 99.9
decimal 必須指定顯示尺寸(M)和小數(shù)點精度(D),float 和 double 都是可選的
在可能涵蓋取值范圍的基礎上,盡可能選擇較小的類型以提高效率和節(jié)約存儲空間,如年齡,就選擇 tinyint(3) 。該原則對于字符類型同樣適用
字符串(文本)類型
字符串(文本)類型說明:

20151216143801648.png (647×296)

補充說明
char 和 varcha 需要指定長度,不同的是,char 存儲時總是按照指定的長度儲存,而 varchar 則根據(jù)實際字符串長度再加上一個字節(jié)分配空間。
時間日期類型
時間日期類型說明:

20151216143817755.png (651×153)

提示
在 PHP 中,一般情況下對于時間都是按照 UNIX 時間戳以 int 類型存儲于表中,再根據(jù)實際需要用 PHP 的時間函數(shù)進行處理,但不完全都是這樣。

MySQL 表字段屬性
主鍵
表的主鍵(primary key,主關鍵字)是表中的一個或多個字段,它的值用于惟一地標識表中的某一條記錄。一個表不能有多個主關鍵字,并且主關鍵字的列不能包含空值和重復值。主關鍵字是可選的,并且可在 CREATE TABLE 或 ALTER TABLE 語句中定義。
語法:
PRIMARY KEY (column_name)

20151216143834718.png (658×105)

在這個表中,uid 這個字段就是該表的主鍵。
建立主鍵應該遵循的一般原則
主鍵應當是對用戶沒有意義的
永遠也不要更新主鍵,如果主鍵需要更新,則說明主鍵應對用戶無意義的原則被違反了
主鍵不應包含動態(tài)變化的數(shù)據(jù),如時間戳、創(chuàng)建時間等
主鍵應當由系統(tǒng)自動生成
外鍵
在兩個表的關系中,當一張表(如表A )的主關鍵字被包含在另一張表(如表B)中時,A 表中的主關鍵字便成為 B 表的外鍵(外關鍵字)。B 表稱為主表,A 表稱為從表。
外鍵主要用于保持數(shù)據(jù)一致性,完整性,避免冗余數(shù)據(jù),使兩張或多張表形成關聯(lián)。

20151216143851575.png (673×107)

在這個文章評論表 comment 樣例中,uid 便是外鍵,它是 user 表的主鍵。在該表中記錄了用戶對文章的評論,關于用戶信息,只需對應 user 表的主鍵 uid 即可。在數(shù)據(jù)一致性方面,比如當 comment 表沒有 uid 為 3 的評論后,才可以刪除 user 表中 uid = 3 的記錄。
自動遞增
在 MySQL 數(shù)據(jù)庫中,提供了字段的自動遞增(AUTO_INCREMENT)屬性,即將該字段設置為 int 類的數(shù)據(jù)類型,每向數(shù)據(jù)表添加一條記錄,該字段的值會自動加1 。設置了自動遞增后,該列不用再設置默認值和唯一性約束。
例子:

uid mediumint(8) NOT NULL auto_increment

非空
因為邏輯上的一些要求,有時候需要把字段屬性設置為非空(NOT NULL),如記錄用戶名、密碼等非空值的字段。
設置為非空的列,雖然不是必須,但最好設定一個默認值,以防止意外的錯誤和減少增加數(shù)據(jù)時的 SQL 語句復雜度。當向數(shù)據(jù)表增加數(shù)據(jù)記錄時,如果設置為非空的字段不寫入數(shù)據(jù),系統(tǒng)將會以默認值寫入。
例子:

username char(20) NOT NULL default ''
//將NOT NULL 改為 NULL
ALTER TABLE user CHANGE username username char(20) NULL

提示
在上面的例子中 CHANGE 后面 username username ,前者表示更改的字段名,后者表示新字段名。在本例中,只更改了字段屬性為 NULL ,不涉及到字段名稱的更改,因此二者一致。

與非空相反,可以將字段屬性設置為空,如果字段屬性沒有設置為非空(NOT NULL)屬性,那么系統(tǒng)默認就是可以為空(NULL)值的。
將NULL 改為 NOT NULL:

ALTER TABLE user CHANGE username username char(20) NOT NULL DEFAULT ''

唯一性約束
有時候某些字段數(shù)據(jù)不允許重復,如用戶名,這時候就需要增加唯一性約束(UNIQUE)。
語法:

UNIQUE (column_name)
//給表字段增加 UNIQUE
ALTER TABLE tb_name ADD UNIQUE (column_name)
//去掉 UNIQUE
ALTER TABLE tb_name DROP INDEX column_name

主鍵(PRIMARY KEY)會強制性的擁有自動定義的唯一性約束,不用額外定義 UNIQUE 。
索引
數(shù)據(jù)庫索引(index)是為了增加查詢速度而對字段附加的一種標識。我們對表的某些可能需要經(jīng)常查詢的字段建立適當?shù)乃饕?,那么在查詢該字段?shù)據(jù)時,便會顯著的加快查詢速度。
語法:
KEY key_name (column_name)
KEY 后面的字符為索引名稱,括號內(nèi)為建立索引的字段名。
改進后的建表 SQL

CREATE TABLE user (
 uid mediumint(8) unsigned NOT NULL auto_increment,
 username char(15) NOT NULL default '',
 password char(32) NOT NULL default '',
 email varchar(40) NOT NULL default '',
 regdate int(10) unsigned NOT NULL default '0',
 PRIMARY KEY (uid),
 UNIQUE KEY username (username),
 KEY email (email)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

補充說明
在建表語句正文后面還附加了建表的其它幾個屬性:
ENGINE:表示存儲引擎類型,分為 MyISAM 和 InnoDB 兩種類型。MyISAM 不支持事務處理等高級處理,強調(diào)表的性能,執(zhí)行也比 InnoDB 快。而 InnoDB 提供事務支持已經(jīng)外部鍵等高級數(shù)據(jù)庫功能,性能上比 MyISAM 差。默認為 MyISAM 類型
CHARSET:表示數(shù)據(jù)表表字符集,一般為 gbk 或 utf8 以及 big5 等,為了兼容性考慮,我們設置為 utf8 字符集
AUTO_INCREMENT:設置主鍵默認增長的開始數(shù)

您可能感興趣的文章:

  • MySQL中主鍵為0與主鍵自排約束的關系詳解(細節(jié))
  • MySQL外鍵約束常見操作方法示例【查看、添加、修改、刪除】
  • MySQL刪除有外鍵約束的表數(shù)據(jù)方法介紹
  • MySQL中的唯一性約束與NULL詳解
  • MySQL刪除表的時候忽略外鍵約束的簡單實現(xiàn)
  • MySQL 關閉子表的外鍵約束檢察方法
  • MySQL學習筆記之數(shù)據(jù)定義表約束,分頁方法總結
  • 詳解MySQL中的外鍵約束問題
  • MySQL導出所有Index和約束的方法
  • MySQL 添加、修改、刪除表的列及約束等表的定義
  • MySQL學習筆記4:完整性約束限制字段
  • mysql創(chuàng)建Bitmap_Join_Indexes中的約束與索引
  • MySQL約束類型及舉例介紹
  • 聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    MySQL所支持的數(shù)據(jù)類型與表字段約束類型的學習教程

    MySQL所支持的數(shù)據(jù)類型與表字段約束類型的學習教程:MySQL 數(shù)據(jù)(字段)類型 在創(chuàng)建表的時候,要明確定義字段對應的數(shù)據(jù)類型。MySQL 主要的數(shù)據(jù)類型分為數(shù)值類型、字符串(文本)類型、時間日期類型和其他類型幾類。 數(shù)值類型 數(shù)值類型說明: 補充說明 在 int(integer) 系列中,只能存儲整型值,且可以在后
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top