欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2015年12月16日 14:40:30   投稿:goldensun  
這篇文章主要介紹了MySQL所支持的數(shù)據(jù)類型與表字段約束類型的學(xué)習(xí)教程,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下

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

20151216143742150.png (653×259)

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

20151216143801648.png (647×296)

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

20151216143817755.png (651×153)

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

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

20151216143834718.png (658×105)

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

20151216143851575.png (673×107)

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

uid mediumint(8) NOT NULL auto_increment

非空
因?yàn)檫壿嬌系囊恍┮?,有時(shí)候需要把字段屬性設(shè)置為非空(NOT NULL),如記錄用戶名、密碼等非空值的字段。
設(shè)置為非空的列,雖然不是必須,但最好設(shè)定一個(gè)默認(rèn)值,以防止意外的錯(cuò)誤和減少增加數(shù)據(jù)時(shí)的 SQL 語句復(fù)雜度。當(dāng)向數(shù)據(jù)表增加數(shù)據(jù)記錄時(shí),如果設(shè)置為非空的字段不寫入數(shù)據(jù),系統(tǒng)將會(huì)以默認(rèn)值寫入。
例子:

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

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

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

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

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

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

主鍵(PRIMARY KEY)會(huì)強(qiáng)制性的擁有自動(dòng)定義的唯一性約束,不用額外定義 UNIQUE 。
索引
數(shù)據(jù)庫索引(index)是為了增加查詢速度而對(duì)字段附加的一種標(biāo)識(shí)。我們對(duì)表的某些可能需要經(jīng)常查詢的字段建立適當(dāng)?shù)乃饕敲丛诓樵冊(cè)撟侄螖?shù)據(jù)時(shí),便會(huì)顯著的加快查詢速度。
語法:
KEY key_name (column_name)
KEY 后面的字符為索引名稱,括號(hào)內(nèi)為建立索引的字段名。
改進(jìn)后的建表 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 ;

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

相關(guān)文章

  • 分享MySQL的自動(dòng)化安裝部署的方法

    分享MySQL的自動(dòng)化安裝部署的方法

    線上的MySQL一般都采用源碼編譯,雖然MySQL的源碼編譯挺簡(jiǎn)單的,但是試想一下,如果你有幾百臺(tái)服務(wù)器同時(shí)要安裝MySQL,難道你還一臺(tái)臺(tái)去手動(dòng)編譯、編寫配置文件嗎?這顯然太低效了,本文討論MySQL的自動(dòng)化安裝部署。
    2014-07-07
  • mysql存儲(chǔ)過程之游標(biāo)(DECLARE)原理與用法詳解

    mysql存儲(chǔ)過程之游標(biāo)(DECLARE)原理與用法詳解

    這篇文章主要介紹了mysql存儲(chǔ)過程之游標(biāo)(DECLARE)原理與用法,結(jié)合實(shí)例形式詳細(xì)分析了mysql存儲(chǔ)過程游標(biāo)(DECLARE)的基本功能、原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • SQL中的開窗函數(shù)(窗口函數(shù))

    SQL中的開窗函數(shù)(窗口函數(shù))

    這篇文章主要介紹了SQL中的開窗函數(shù)(窗口函數(shù))使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 解讀索引列中有null值會(huì)不會(huì)使索引失效

    解讀索引列中有null值會(huì)不會(huì)使索引失效

    這篇文章主要介紹了解讀索引列中有null值會(huì)不會(huì)使索引失效問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 詳解MySQL 表中非主鍵列溢出情況監(jiān)控

    詳解MySQL 表中非主鍵列溢出情況監(jiān)控

    這篇文章主要介紹了詳解MySQL 表中非主鍵列溢出情況監(jiān)控,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • MySQL?varchar(n)能存儲(chǔ)幾個(gè)漢字

    MySQL?varchar(n)能存儲(chǔ)幾個(gè)漢字

    這篇文章主要介紹了MySQL varchar(n)能存儲(chǔ)幾個(gè)漢字,MySQL中varchar(n)表示n個(gè)字符,無論漢字和英文,Mysql都能存入n個(gè)字符,僅是實(shí)際字節(jié)長(zhǎng)度有所區(qū)別,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • centos 6.4下使用rpm離線安裝mysql

    centos 6.4下使用rpm離線安裝mysql

    這篇文章主要為大家詳細(xì)介紹了centos 6.4下使用rpm離線安裝mysql的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 如何使用MySQL查詢一年中每月的記錄數(shù)

    如何使用MySQL查詢一年中每月的記錄數(shù)

    這篇文章主要給大家介紹了關(guān)于如何使用MySQL查詢一年中每月的記錄數(shù)的相關(guān)資料,文中通過實(shí)例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-09-09
  • mysql如何按照中文排序解決方案

    mysql如何按照中文排序解決方案

    本文將詳細(xì)介紹mysql如何按照中文排序解決方案,需要的朋友可以參考下
    2012-11-11
  • linux采用binary方式安裝mysql

    linux采用binary方式安裝mysql

    這篇文章主要為大家詳細(xì)介紹了linux采用binary方式安裝mysql步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評(píng)論