MySQL數(shù)據(jù)表的設(shè)計(jì)

數(shù)據(jù)表(Table)

數(shù)據(jù)表是數(shù)據(jù)庫(kù)的基本組成元素渺贤,以記錄(行)和字段(列)組成的二位結(jié)構(gòu)用于儲(chǔ)存數(shù)據(jù)九秀。數(shù)據(jù)庫(kù)由表結(jié)構(gòu)和表內(nèi)容組成,先建立表結(jié)構(gòu)掂林,然后才能輸入數(shù)據(jù)臣缀。數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)主要包括字段名稱(chēng),字段類(lèi)型和字段屬性的設(shè)置泻帮。在關(guān)系數(shù)據(jù)庫(kù)中精置,為了確保數(shù)據(jù)的一致性和完整性,在創(chuàng)建表時(shí)除了必須指定字段名稱(chēng)锣杂、字段類(lèi)型和字段屬性外脂倦,還需要使用約束(constraint)、索引(index)元莫、主鍵(primary key)和外鍵(foreign key)等功能屬性赖阻。

數(shù)據(jù)值和列類(lèi)型

對(duì)MuSQL中數(shù)據(jù)值的分類(lèi),有數(shù)值型踱蠢、字符型火欧、日期型和控制等,這和一般的編程語(yǔ)言的分類(lèi)差不多。另外苇侵,MySQL數(shù)據(jù)庫(kù)的表是一個(gè)二維表赶盔,由一個(gè)或多個(gè)數(shù)據(jù)列構(gòu)成。每個(gè)數(shù)據(jù)列都有它的特定類(lèi)型榆浓,該類(lèi)型決定了MySQL如何看待該列數(shù)據(jù)于未,我們可以把整形數(shù)值存放在字符型的列中,MySQL則會(huì)把它當(dāng)成字符串處理哀军。MySQL中的列類(lèi)型有三種:數(shù)值型沉眶、字符串類(lèi)和日期/時(shí)間類(lèi)。從大類(lèi)來(lái)看列類(lèi)型和數(shù)值類(lèi)型一樣杉适,都是只有三種谎倔,但每一種列類(lèi)型都還可細(xì)分。下面對(duì)各種列類(lèi)型進(jìn)行詳細(xì)介紹猿推。

數(shù)值類(lèi)的數(shù)據(jù)列類(lèi)型

| 數(shù)據(jù)列類(lèi)型 | 存儲(chǔ)空間 | 說(shuō)明 | 取值范圍 |
|: ----------------- |:-------------|: --------------------|----------------------|
| TINTINT | 1字節(jié) | 非常小的整數(shù) | 帶符號(hào)值: -128 ~ 127
無(wú)符號(hào)值:0 ~ 256|
|SMALLINT | 2字節(jié) | 較小的整數(shù) |帶符號(hào)值:-32 768 ~ 32768
無(wú)符號(hào)值:0 ~ 65535 |
| MEDIUMINT| 3字節(jié) | 中等大小的整數(shù) | 帶符號(hào)值:-8 388 608 ~ 8 388 607
無(wú)符號(hào)值:0 ~ 16 777 215|
| INT| 4字節(jié) | 標(biāo)準(zhǔn)整數(shù) | 帶符號(hào)值:-2 147 483 648 ~ 2 147 483 647
無(wú)符號(hào)值:0 ~ 4 294 967 295|
| BIGINT| 8字節(jié) | 大整數(shù) | 帶符號(hào)值:-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807
無(wú)符號(hào)值:0 ~ 18 446 744 073 709 551 615|
| FLOAT| 4 或 8字節(jié) | 單精度浮點(diǎn)數(shù) | 最小非零值:±1.175494351E-38
最大非零值:±3.402823466E+38|
| DOUBLE| 8字節(jié) | 雙精度浮點(diǎn)數(shù) | 最小非零值:±2.2250738585072014E-308
最大非零值:±1.7976931348623157E+308|
| DECIMAL| 自定義 | 以字符串形式表示的浮點(diǎn)數(shù) | 取決于儲(chǔ)存單元字節(jié)數(shù)|
為了節(jié)省存儲(chǔ)空間和提高數(shù)據(jù)庫(kù)處理效率片习,我們應(yīng)根據(jù)應(yīng)用數(shù)據(jù)的取值范圍來(lái)選擇一個(gè)最合適的數(shù)據(jù)列類(lèi)型。如果把一個(gè)超出數(shù)據(jù)列取值范圍的數(shù)存入該列蹬叭,則MySQL就會(huì)截?cái)嘣撝蹬河剑纾何覀儼?9999存入 SMALLINT(3)數(shù)據(jù)列里,因?yàn)镾AMLLINT(3)的取值范圍是-32 768 ~ 32768秽五,所以就會(huì)截?cái)喑?2767存儲(chǔ)孽查。顯示寬度3 不會(huì)影響數(shù)值的存儲(chǔ),只影響顯示坦喘。

字符串類(lèi)數(shù)據(jù)列類(lèi)型

字符串可以用老表示任何一種值盲再,所以它是最基本的類(lèi)型之一。

| 數(shù)據(jù)列類(lèi)型 | 存儲(chǔ)空間 | 說(shuō)明 | 最大長(zhǎng)度 |
|: ----------------------- |:-----------------|: --------------------|----------------------|
| CHAR[(M)] | M字節(jié) | 定長(zhǎng)字符串 | M字節(jié) |
| VARCHAR[(M)] | L + 1字節(jié) | 可變字符串 | M字節(jié) |
| TINYBLOD,TINYTEXT | L + 1字節(jié) | 非常小的BLOB(二進(jìn)制大對(duì)象) 和文本串 | 2^6 - 1字節(jié) |
| BLOB,TEXT | L + 2字節(jié) | 小BLOB和文本串 | 2^16 - 1字節(jié) |
| MEDIUMBLOB,DEDIUMTEXT | L + 3字節(jié) | 中等BLOB和文本串 | 2^24 - 1字節(jié) |
| LONGBLOB,LONGTEXT | L + 4字節(jié) | 大BLOB和文本串 | 2^32 - 1字節(jié) |
| ENUM('value1','value2',....) | 1或2 字節(jié) | 枚舉:可賦予某個(gè)枚舉成員 | 65535個(gè)成員 |
| SET('value1','value2',....) | 1,2,3,4,8, 字節(jié) |集合:可賦予某個(gè)集合成員 | 64個(gè)成員 |

字符串類(lèi)數(shù)據(jù)列類(lèi)型

| 數(shù)據(jù)列類(lèi)型 | 存儲(chǔ)空間 | 說(shuō)明 | 最大長(zhǎng)度 |
|: ----------------------- |:-----------------|: --------------------|----------------------|
| DATE | 3字節(jié) | "YYYY-MM-DD"格式表示的日期值 | 1000-01-01 ~ 9999-12-31 |
| TIME | 3字節(jié) | "hh:mm:ss"格式表示的時(shí)間值 | 1000-01-01 00:00:00 到 9999-12-31 23:59:59 |
| TIMESTAMP | 4字節(jié) | "YYYYMMDDhhmmss"格式表示的時(shí)間戳 | 19700101000000 ~ 2037年的某個(gè)時(shí)刻 |
| YEAR | 1字節(jié) | "YYYY"格式的年份值 | 1901 ~ 2155 |

NULL值

NULL 值可能使你感到奇怪瓣铣,直到你習(xí)慣它答朋。概念上,NULL意味著沒(méi)有值或未知值棠笑,且它被看成與眾不同的值梦碗。可以將NULL值插入到數(shù)據(jù)表中并從表中檢索它們蓖救,也可以測(cè)試某個(gè)值是否為NULL洪规,但不能對(duì)NULL值金像算術(shù)運(yùn)算,如果對(duì)NULL值進(jìn)行算數(shù)運(yùn)算循捺,其結(jié)果仍舊是NULL淹冰。在MySQL中,0或NULL都意味著假而其他意味著真巨柒。布爾運(yùn)算的默認(rèn)真值是1.

數(shù)據(jù)字段屬性

1.UNSIGNED
該屬性只能修飾數(shù)值類(lèi)型,不允許數(shù)列出現(xiàn)負(fù)數(shù)。

2.ZEROFILL
該屬性也只能用于設(shè)置數(shù)值類(lèi)型洋满,在數(shù)值類(lèi)型前自動(dòng)用0補(bǔ)足位數(shù)晶乔。

3.AUTO_INCREMENT
該屬性用于設(shè)置字段的自動(dòng)增量屬性,當(dāng)數(shù)值類(lèi)型的字段設(shè)置為自增量屬性時(shí)牺勾,每增加一條新的記錄正罢,該字段的值就自動(dòng)加1,而且此字段的值不允許重復(fù)

4.NULL和NOT NULL
默認(rèn)為NULL驻民,即插入值時(shí)沒(méi)有在此字段插入值翻具,默認(rèn)為NULL值,如果指定了NOT NULL , 則必須在插入值在此字段填入值回还。

5.DEFAULT
可以通過(guò)此屬性來(lái)指定一個(gè)默認(rèn)值裆泳,如果沒(méi)有在此列添加值,那么默認(rèn)添加此值柠硕。例如工禾,在用戶表user中可以將性別字段默認(rèn)設(shè)置成“男”。

數(shù)據(jù)表對(duì)象管理

創(chuàng)建表

創(chuàng)建數(shù)據(jù)表的主要是定義表結(jié)構(gòu)蝗柔,包括數(shù)據(jù)表的名稱(chēng)闻葵,字段名,字段類(lèi)型癣丧,約束和索引等槽畔。其基本語(yǔ)法如下

CREATE TABLE [IF NOT EXISTS] 表名稱(chēng)(
        字段名1  列類(lèi)型  [屬性]  [索引]  
        字段名2  列類(lèi)型  [屬性]  [索引]  
)[表類(lèi)型] [表字符集]

修改表

修改表是指修改表的結(jié)構(gòu),在實(shí)際的應(yīng)用中胁编,當(dāng)發(fā)現(xiàn)某個(gè)表的結(jié)構(gòu)不滿足要求時(shí)厢钧,可以用ALTER TABLE 語(yǔ)句來(lái)修改表的結(jié)構(gòu),包括添加新的字段掏呼、刪除原有的字段坏快、修改列的類(lèi)型、屬性憎夷、及索引莽鸿,甚至可以修改表的目名稱(chēng)等。修改表的語(yǔ)法如下:

ALTER TABLE 表名 ACTION; ------------ #修改表的語(yǔ)法格式

ALTER TABLE 表名 ADD 字段名 <建表語(yǔ)句> [FIRST | AFTER 列名] #為指定的表添加新列

mysql> ALTER TABLE users ADD name VARCHAR(30) NOT NULL FIRST;
mysql> ALTER TABLE users ADD height DOUBLE NOT NULL  AFTER userpass;


為指定的數(shù)據(jù)表為了更改原有字段的類(lèi)型拾给,可使用CHANGE或MODIFY 子句祥得。如果原列的名字和新列的名字相同,則change和Modify的作用相同蒋得。語(yǔ)法格式如下
>```
ALTER TABLE 表名CHANGE(MODIFY) 列表  <建表語(yǔ)句>      #為指定的表修改列類(lèi)型
 mysql> ALTER TABLE users CHANGE telno phone INT UNSIGNED DEFAULT '0';

修改表名

ALTER TABLE 舊表名 RENAME AS 新表名       #為指定的數(shù)據(jù)表重新命名

刪除表

DROP TABLE 舊表名 RENAME AS 新表名 #刪除不再使用的數(shù)據(jù)表

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末级及,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子额衙,更是在濱河造成了極大的恐慌饮焦,老刑警劉巖怕吴,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異县踢,居然都是意外死亡转绷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)硼啤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)议经,“玉大人,你說(shuō)我怎么就攤上這事谴返∩飞觯” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵嗓袱,是天一觀的道長(zhǎng)籍救。 經(jīng)常有香客問(wèn)我,道長(zhǎng)索抓,這世上最難降的妖魔是什么钧忽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮逼肯,結(jié)果婚禮上耸黑,老公的妹妹穿的比我還像新娘。我一直安慰自己篮幢,他們只是感情好大刊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著三椿,像睡著了一般缺菌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搜锰,一...
    開(kāi)封第一講書(shū)人閱讀 50,021評(píng)論 1 291
  • 那天伴郁,我揣著相機(jī)與錄音,去河邊找鬼蛋叼。 笑死焊傅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狈涮。 我是一名探鬼主播狐胎,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼歌馍!你這毒婦竟也來(lái)了握巢?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤松却,失蹤者是張志新(化名)和其女友劉穎暴浦,沒(méi)想到半個(gè)月后溅话,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肉渴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年公荧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片同规。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖窟社,靈堂內(nèi)的尸體忽然破棺而出券勺,到底是詐尸還是另有隱情,我是刑警寧澤灿里,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布关炼,位于F島的核電站,受9級(jí)特大地震影響匣吊,放射性物質(zhì)發(fā)生泄漏儒拂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一色鸳、第九天 我趴在偏房一處隱蔽的房頂上張望社痛。 院中可真熱鬧,春花似錦命雀、人聲如沸蒜哀。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)撵儿。三九已至,卻和暖如春狐血,著一層夾襖步出監(jiān)牢的瞬間淀歇,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工匈织, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浪默,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓报亩,卻偏偏與公主長(zhǎng)得像浴鸿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子弦追,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 什么是數(shù)據(jù)庫(kù)岳链? 數(shù)據(jù)庫(kù)是存儲(chǔ)數(shù)據(jù)的集合的單獨(dú)的應(yīng)用程序。每個(gè)數(shù)據(jù)庫(kù)具有一個(gè)或多個(gè)不同的API劲件,用于創(chuàng)建掸哑,訪問(wèn)约急,管理...
    chen_000閱讀 4,033評(píng)論 0 19
  • MySQL5.6從零開(kāi)始學(xué) 第一章 初始mysql 1.1數(shù)據(jù)庫(kù)基礎(chǔ) 數(shù)據(jù)庫(kù)是由一批數(shù)據(jù)構(gòu)成的有序的集合,這些數(shù)據(jù)...
    星期四晚八點(diǎn)閱讀 1,137評(píng)論 0 4
  • SQL SELECT 語(yǔ)句 一苗分、查詢SQL SELECT 語(yǔ)法 (1)SELECT 列名稱(chēng) FROM 表名稱(chēng) (2...
    有錢(qián)且幸福閱讀 5,440評(píng)論 0 33
  • MySQL 數(shù)據(jù)庫(kù)常用命令 1厌蔽、MySQL常用命令 create database name; 創(chuàng)建數(shù)據(jù)庫(kù) use...
    55lover閱讀 4,781評(píng)論 1 57
  • 開(kāi)營(yíng)儀式 如何一開(kāi)口就擁有好人緣-課后感悟 Jenny+18 【干貨整理記錄】 一、怎樣成為聲音高手摔癣? 1.理解講...
    秦悠然閱讀 433評(píng)論 0 2