日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql数据库约束无符号,MySQL所支持的数据类型与表字段约束类型的学习教程

發布時間:2024/10/6 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql数据库约束无符号,MySQL所支持的数据类型与表字段约束类型的学习教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL 數據(字段)類型

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

數值類型

數值類型說明:

補充說明

在 int(integer) 系列中,只能存儲整型值,且可以在后面用括號指定顯示的尺寸(M),如果不指定則會默認分配。如果實際值的顯示寬度大于設定值,將會顯示實際值而不會截斷以適應顯示尺寸。如 smallint(3) 中的 3 即為顯示尺寸,即顯示三位的數值(不包括 - 號)

int 類型可以指定 UNSIGNED 屬性,即無符號(非負),所以存儲范圍有兩種

在 float、double 及 decimal 類型中,不能指定 UNSIGNED 屬性,其顯示尺寸包含了小數點精度(D),即 float(3,1) 保存范圍為 -99.9 至 99.9

decimal 必須指定顯示尺寸(M)和小數點精度(D),float 和 double 都是可選的

在可能涵蓋取值范圍的基礎上,盡可能選擇較小的類型以提高效率和節約存儲空間,如年齡,就選擇 tinyint(3) 。該原則對于字符類型同樣適用

字符串(文本)類型

字符串(文本)類型說明:

補充說明

char 和 varcha 需要指定長度,不同的是,char 存儲時總是按照指定的長度儲存,而 varchar 則根據實際字符串長度再加上一個字節分配空間。

時間日期類型

時間日期類型說明:

提示

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

MySQL 表字段屬性

主鍵

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

語法:

PRIMARY KEY (column_name)

在這個表中,uid 這個字段就是該表的主鍵。

建立主鍵應該遵循的一般原則

主鍵應當是對用戶沒有意義的

永遠也不要更新主鍵,如果主鍵需要更新,則說明主鍵應對用戶無意義的原則被違反了

主鍵不應包含動態變化的數據,如時間戳、創建時間等

主鍵應當由系統自動生成

外鍵

在兩個表的關系中,當一張表(如表A )的主關鍵字被包含在另一張表(如表B)中時,A 表中的主關鍵字便成為 B 表的外鍵(外關鍵字)。B 表稱為主表,A 表稱為從表。

外鍵主要用于保持數據一致性,完整性,避免冗余數據,使兩張或多張表形成關聯。

在這個文章評論表 comment 樣例中,uid 便是外鍵,它是 user 表的主鍵。在該表中記錄了用戶對文章的評論,關于用戶信息,只需對應 user 表的主鍵 uid 即可。在數據一致性方面,比如當 comment 表沒有 uid 為 3 的評論后,才可以刪除 user 表中 uid = 3 的記錄。

自動遞增

在 MySQL 數據庫中,提供了字段的自動遞增(AUTO_INCREMENT)屬性,即將該字段設置為 int 類的數據類型,每向數據表添加一條記錄,該字段的值會自動加1 。設置了自動遞增后,該列不用再設置默認值和唯一性約束。

例子:

?

非空

因為邏輯上的一些要求,有時候需要把字段屬性設置為非空(NOT NULL),如記錄用戶名、密碼等非空值的字段。

設置為非空的列,雖然不是必須,但最好設定一個默認值,以防止意外的錯誤和減少增加數據時的 SQL 語句復雜度。當向數據表增加數據記錄時,如果設置為非空的字段不寫入數據,系統將會以默認值寫入。

例子:

?

提示

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

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

將NULL 改為 NOT NULL:

?

唯一性約束

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

語法:

?

主鍵(PRIMARY KEY)會強制性的擁有自動定義的唯一性約束,不用額外定義 UNIQUE 。

索引

數據庫索引(index)是為了增加查詢速度而對字段附加的一種標識。我們對表的某些可能需要經常查詢的字段建立適當的索引,那么在查詢該字段數據時,便會顯著的加快查詢速度。

語法:

KEY key_name (column_name)

KEY 后面的字符為索引名稱,括號內為建立索引的字段名。

改進后的建表 SQL

?

補充說明

在建表語句正文后面還附加了建表的其它幾個屬性:

ENGINE:表示存儲引擎類型,分為 MyISAM 和 InnoDB 兩種類型。MyISAM 不支持事務處理等高級處理,強調表的性能,執行也比 InnoDB 快。而 InnoDB 提供事務支持已經外部鍵等高級數據庫功能,性能上比 MyISAM 差。默認為 MyISAM 類型

CHARSET:表示數據表表字符集,一般為 gbk 或 utf8 以及 big5 等,為了兼容性考慮,我們設置為 utf8 字符集

AUTO_INCREMENT:設置主鍵默認增長的開始數

總結

以上是生活随笔為你收集整理的mysql数据库约束无符号,MySQL所支持的数据类型与表字段约束类型的学习教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。